Naciśnij ESC, aby zamknąć

Synology: Odblokuj porty WWW dla Nginx Proxy Manager

Spis treści

Cześć!

Dzisiaj skoncentrujemy się na przygotowaniu przewodnika, który pokaże Ci, jak zmienić domyślne porty WWW (HTTP: 80 i HTTPS: 443) na serwerach plików Synology. Te porty są zazwyczaj zablokowane, ale z tym przewodnikiem będziesz w stanie je odblokować i dostosować do potrzeb Nginx Proxy Manager.

Wstęp do naszego projektu

Poradnik podzielę na kilka etapów – zaczniemy od konfiguracji w Synology DSM, a następnie przejdziemy do instalacji Nginx Proxy Manager w Docker Compose poprzez Portainera. Na koniec ustawię nazwę domeny z której będziemy mogli korzystać, aby zalogować się do systemu DSM w Synology (bez używania adresu IP). Przepisywanie DNSu skonfiguruję na już zainstalowanym lokalnym serwerze DNS AdGuard Home.

Ikona: Synology DSMCzym jest Synology DSM?

Synology DiskStation Manager to system operacyjny stworzony przez firmę Synology Inc. Specjalnie zaprojektowany do pracy na ich serwerach NAS. DSM oferuje intuicyjne i zintegrowane środowisko do zarządzania danymi, udostępniania plików, tworzenia kopii zapasowych, a także obsługi różnorodnych aplikacji.

 

Ikona: Nginx Proxy Manager

Czym jest Nginx Proxy Manager?

Nginx Proxy Manager to narzędzie służące do łatwego zarządzania i konfiguracji serwera proxy Nginx. Umożliwia użytkownikom konfigurowanie reguł przekierowań i zarządzanie ruchem HTTP. Jest szczególnie przydatne w kontekście obsługi wielu aplikacji na jednym serwerze. NPM dostarcza interfejs graficzny, dzięki czemu nawet osoby bez głębokiego doświadczenia w konfiguracji proxy mogą efektywnie korzystać z usług Nginx.

Przygotowanie

W celu przygotowania poradnika, przyjmiemy ustaloną nazwę domeny oraz określone nazwy konfiguracyjne, przedstawione poniżej. Dla dostosowania konfiguracji do własnych potrzeb, należy zastosować ustawienia według indywidualnych wymagań.

  • Pełna nazwa domeny (FQDN) Synology DSM: https://dsm.xyz.com,
  • Pełna nazwa domeny (FQDN) Nginx Proxy Manager: https://npm.xyz.com,
  • Pełna nazwa domeny (FQDN) AdGuard Home: https://dns.xyz.com,
  • Zainstalowany na Synology poprzez Docker: Portainer, AdGuard Home,
  • Zainstalowany na Synology poprzez Centrum pakietów: Container Manager,
  • Na serwerze DHCP routera, wskazany adres IP serwera DNS (AdGuard Home) zainstalowanego na Synology.

Krok 1 – Zmiana domyślnych portów na Synology DSM

Konfigurację portów WWW zaczniemy od modyfikacji domyślnych ustawień logowania do DiskStation Managera. Pozostawienie fabrycznie ustawionych portów, takich jak 5000 dla HTTP i 5001 dla HTTPS – powszechnie znanych i stanowiących potencjalne ryzyko bezpieczeństwa – jest krokiem, który warto poddać modyfikacji. Przeorganizowanie tych portów na bardziej niestandardowe wartości ma na celu podniesienie poziomu bezpieczeństwa Twojego serwera Synology, minimalizując potencjalne zagrożenia związane z używaniem powszechnie znanych numerów portów.

Aby to wykonać, postępuj zgodnie z poniższą instrukcją:
  • Zaloguj się do swojego Synology za pomocą konta administratora – korzystając jeszcze ze starego portu do DiskStation Managera,
  • Przejdź do Panelu Sterowania, a następnie z sekcji System wybierz Portal logowania,
  • Wprowadź następujące modyfikacje w sekcji Usługi WWW:
    • Port DSM (HTTP): np. 44444
    • Port DSM (HTTPS): np. 44445
    • Zaznacz Automatycznie przekieruj połączenia HTTP na HTTPS w wersji na pulpit w systemie DSM.

Synology, Panel sterowania Port DSM

  • Zapisz ustawienia przyciskiem zlokalizowanym w prawym dolnym rogu na niebieskim tle.
  • Po zastosowaniu zmian zaloguj się ponownie do DSMa, korzystając już z nowego portu w przeglądarce.

Krok 2 – Dezaktywacja nasłuchu portów 80 i 443 przez Synology

Synology NAS (DSM) domyślnie nasłuchuje na portach 80 i 443 po każdym ponownym uruchomieniu – co oznacza, że zmiany które byśmy wprowadzili w konfiguracji zostaną utracone po każdym restarcie. Aby obejść ten problem, konieczne jest uruchamianie skryptu, który zwalnia te porty za każdym razem, gdy serwer się uruchamia.

Poniższa komenda realizuje to, zwalniając porty 80 i 443 na serwerze WWW Nginx w serwerze do momentu ponownego uruchomienia systemu. Usuwa porty z konfiguracji Nginx i restartuje usługę Nginx. 

sed -i -e 's/80/81/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache

synosystemctl restart nginx

Ten skrypt zamienia port 80 na 81 i port 443 na 444 w określonych plikach konfiguracyjnych Nginx. Po wykonaniu tej komendy Nginx zostanie ponownie uruchomiony, co zapewni, że zmiany będą obowiązywać do czasu kolejnego ponownego uruchomienia systemu.

Krok 3 – Utworzenie zaplanowanego zadania w Synology

Aby zachować wprowadzone zmiany, utworzymy zaplanowane zadanie, które uruchomi powyższy skrypt za każdym razem, gdy system będzie się uruchamiał.

  • Przejdź do Panelu sterowania, a następnie zjedź na dół aby odnaleźć Harmonogram zadań.
  • Kliknij Utwórz i wybierz Uruchamiane zadanieSkrypt zdefiniowany przez użytkownika,

Synology, Panel sterowania Harmonogram zadań

  • W zakładce Tworzenie zadaniaOgólne wprowadź następujące wartości:
    • Zadanie: Remaping 80/443 ports,
    • Użytkownik: root,
  • W zakładce Tworzenie zadania – Ustawienia zadania wprowadź następujące wartości:
    • Prześlij szczegóły uruchomienia w wiadomości email: Zaznacz i wprowadź swój adres mailowy,
    • Prześlij szczegóły uruchomienia tylko, gdy skrypt zostanie nieoczekiwanie zakończony: Zaznacz,
    • Uruchom polecenie: Wklej poniższy skrypt w edytor tekstu:
sed -i -e 's/80/82/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache

synosystemctl restart nginx
  • Po wprowadzeniu tych ustawień, kliknij OK, aby zapisać i aktywować nowe zaplanowane zadanie.

Synology, Tworzenie nowego zaplanowanego zadania

Teraz nasz skrypt będzie działał automatycznie po każdym restarcie systemu, dbając o to, aby porty 80 i 443 nie były aktywne na Twoim Synology NAS (DSM).

Aby zapewnić, że wprowadzone zmiany zadziałają jak należy, zachęcam do ponownego uruchomienia serwera Synology NAS (DSM). To proste działanie gwarantuje, że wszystkie modyfikacje związane z wyłączeniem nasłuchiwania na portach 80 i 443 zostaną skutecznie uwzględnione podczas ponownego uruchamiania systemu. Po tych przyjemnych krokach, nowe ustawienia powinny śmigać bez zarzutu po restarcie serwera.

Krok 4 – Utworzenie folderów w Synology

  • Zaloguj się na swoim serwerze plików i otwórz aplikację File Station.
  • W folderze współdzielonym o nazwie docker, utwórz nowy folder i nazwij go npm.
  • Wewnątrz folderu npm utwórz dwa dodatkowe foldery – data oraz letsencrypt

Synology, File Station folder dla NPM

Krok 5 – Instalacja Nginx Proxy Manager

Instalacja i konfiguracja po stronie Portainera

  • Zaloguj się na swoje konto i przejdź do interfejsu administracyjnego
  • Wybierz z dashboardu Stacks.

Przewodnik instalacji Traccar na Synology w Dockerze

  • Z prawego górnego rogu (pod twoim loginem) wybierz Add stack.

Przewodnik instalacji Traccar na Synology w Dockerze

  • Wypełnij tworzenie pliku Docker Compose przy użyciu następujących wartości:
    • Name: npm
    • Build method: Web editor
    • Web editor: skopiuj zawartość opisaną poniżej i wklej
version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:2.10.2'
    container_name: nginxproxymanager
    restart: unless-stopped
    user: root
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP


    # Uncomment the next line if you uncomment anything in the section
    #environment:
      # Uncomment this if you want to change the location of 
      # the SQLite DB file within the container
     # DB_SQLITE_FILE: "/volume2/docker/npm/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - /volume1/docker/npm/data:/data
      - /volume1/docker/npm/letsencrypt:/etc/letsencrypt
  • Kliknij przycisk Deploy the stack i poczekaj, aż Portainer pobierze zawartość i utworzy kontener.
  • Jeśli wszystko przebiegnie pomyślnie, w prawym górnym rogu ekranu pojawi się komunikat Success: Stack successfully deployed, a nastepnie w liście kontenerów pojawi się jeden nowo utworzony kontener.

Portainer, Containers

Pierwsze uruchomienie kontenera

Po pierwszym uruchomieniu aplikacji Nginx Proxy Manager (NPM) zachodzą następujące kluczowe zdarzenia:

  • W pierwszym kroku, następuje generowanie kluczy GPG, których istotność polega na zapewnieniu bezpiecznej komunikacji i szyfrowania. Wygenerowane klucze są następnie zapisywane w folderze danych.
  • Następnie, aplikacja przechodzi do inicjalizacji bazy danych, tworząc niezbędne struktury tabel do przechowywania konfiguracji, informacji o użytkownikach i innych danych związanych z funkcjonalnością proxy.
  • W trzecim etapie, tworzony jest domyślny użytkownik administratora, który otrzymuje pełny dostęp do interfejsu graficznego oraz pełnej kontroli nad konfiguracją proxy.

Cały proces inicjalizacji może trwać kilka minut, w zależności od wydajności Twojego systemu. W tym czasie aplikacja przygotowuje się do sprawnej i poprawnej pracy, przygotowując niezbędne elementy do skutecznego działania.

Krok 6 – Logowanie do Proxy Managera

Po pomyślnym wdrożeniu Nginx Proxy Manager (NPM), należy podjąć kilka istotnych kroków w celu skonfigurowania i zabezpieczenia aplikacji. Oto pierwsze czynności, które warto wykonać po zakończeniu procesu deploy:

  • Zaloguj się do menadżera:
    • Otwórz przeglądarkę internetową i przejdź pod adres na którym działa NPM (np. http://ADRES-IP-SYNOLOGY:81)
    • Zaloguj się używając domyślnego adresu e-mail: [email protected] oraz hasła changeme.

Nginx Proxy Manager, ekran logowania

Działający prawidłowo Proxy Manager pozwoli Ci zobaczyć taki komunikat, gdy przeglądasz go przez przeglądarkę internetową na porcie 80 lub 443.

Nginx Proxy Manager, Congratulations

Krok 7 – Ustawienie certyfikatu SSL dla domeny z wykorzystaniem Cloudflare

W świecie domowych laboratoriów (home labów) i zastosowań IT, gdzie nerdyzm i praktyki tech-samodzielności zazwyczaj królują, dodanie koloru bezpieczeństwa do swoich projektów staje się nie tylko przyjemną eksploracją, ale także praktycznym krokiem w kierunku „geekowego” doskonałego doświadczenia. Jednym z kluczowych elementów tego spektrum jest konfiguracja certyfikatu SSL/TLS dla Twojej domeny. W tym kontekście, używając Nginx Proxy Manager (NPM) oraz współpracując z Cloudflare, możesz skutecznie wdrożyć HTTPS, dzięki czemu Twoje usługi będą świeciły się własnym bezpiecznym blaskiem.

Generowanie Tokena API Użytkownika w Cloudflare

Upewnij się, że Twoja domena jest zarejestrowana i zarządzana przez Cloudflare. Jeśli jeszcze tego nie zrobiłeś, dodaj domenę do Cloudflare i skonfiguruj jej obsługę.

Nginx Proxy Manager będzie używał wygenerowanego Tokena API w Cloudflare do przeprowadzenia wyzwania DNS podczas wydawania certyfikatu Let’s Encrypt SSL.

  • Przejdź do menu tworzenia Tokena API użytkownika w Cloudflare:
    • Przejdź do strony głównej i wybierz nazwę swojej domeny,
    • W interfejsie zarządzania domeną (karta Overview), po prawej stronie wyszukaj i kliknij Get your API Token,

Cloudflare, API

    • W wykazie twoich Tokenów API, kliknij Create Token,
    • W menu tworzenia Tokena API, kliknij na Get Started przy Create Custom Token w sekcji Custom Token.

Cloudflare, Create token

    • Po przejściu do tworzenia Custom Tokena API, wypełnij formularz następującymi wartościami:
      • Token name: np. npm-xyzcom,
      • Permissions: Ustaw następująco Zone | DNS | Edit,
      • Zone Resources: Ustaw następująco Include | Specific zone | Twoja domena xyz.com,
      • Client IP Address Filtering: pozostaw bez uzupełniania,
      • TTL: pozostaw bez uzupełniania.

Cloudflare, User API Tokens Create

    • Podczas ostatniego etapu pojawi się podsumowanie tworzenia Tokena API. Jeśli wszystkie informacje są poprawne, kliknij Create Token.
    • Po utworzeniu Tokena API otrzymasz szczegółowe informacje o nim, wraz z opcją przetestowania go w terminalu.

Cloudflare, Created API Token

    • Skopiowany Token API zapisz w notatniku, ponieważ będzie Ci potrzebny podczas konfiguracji certyfikatu SSL w Proxy Managerze.

Utworzenie certyfikatu w Proxy Managerze

  • Zaloguj się do panelu administracyjnego i przejdź do zakładki SSL Certificates,
  • Kliknij przycisk Add SSL Certificate, a następnie Let’s Encrypt.Wypełnij formularz, podając następujące wartości:

Nginx Proxy Manager, SSL Certificates

    • Domain names: xyz.com, *.xyz.com
    • Email Address for Let’s Encrypt: wprowadź ten, który jest powiązany z kontem Cloudflare,
    • Use a DNS Challange: Zaznacz tą opcję,
    • DNS Provider: wybierz z listy Cloudflare,
    • Credintials File Content: uzupełnij zgodnie z poniższym schematem,
    • P{ropagation Seconds: pozostaw bez uzupełniania,
    • I Agree to the Let’s Encrypt Terms of Service:” Zaznacz tę opcję.
# Cloudflare API token
dns_cloudflare_api_token = TU WPROWADŹ SKOPIOWANY TOKEN API
  • Zapisz konfigurację przyciskiem Save i poczekaj na wygenerowanie certyfikatu SSL. Po zatwierdzeniu, Let’s Encrypt rozpocznie proces weryfikacji poprzez wyzwanie DNS-01, używając podanych informacji. Po pomyślnej weryfikacji certyfikat zostanie automatycznie dodany do Twojej konfiguracji SSL.

Utworzenie Proxy Host dla NPM

Po pomyślnym uzyskaniu certyfikatu SSL przy użyciu DNS-01 Challenge, możemy przejść do konfiguracji Proxy Hosta – dla przykładu zrobię najpierw dla Proxy Managera. 

  • Kliknij w Hosts, a następnie z menu Proxy Hosts,

Nginx Proxy Manager, Hosts

  • W prawym górnym rogu kliknij Add Proxy Hosts.

Add Proxy Host w Nginx Proxy Manager

  • Uzupełnij parametry następującymi wartościami:
    • Domain Names: npm.xyz.com
    • Scheme: https
    • Forward Hostname/IP: IP-ADRES-SYNOLOGY
    • Forward Port: 81
  • W oknie Edit Proxy Host na zakładce Details zaznacz:
    • Cache Assets,
    • Websockets Support,
    • oraz Block Common Exploits.

Edit Proxy Host w Nginx Proxy Manager

  • Następnie przejdź do zakładki SSL, wybierz swój certyfikat SSL i zaznacz wszystkie dostępne opcje dodatkowe:
    • Force SSL,
    • HTTP/2 Support,
    • HSTS Enabled,
    • oraz HSTS Subdomains.

Edit Proxy Host, SSL w Nginx Proxy Manager

Utworzenie Proxy Host dla Synology DSM

Aby skonfigurować proxy dla systemu operacyjnego Synology, podczas edycji Proxy Hosta należy w miejscu Forward Portu wprowadzić port 44445 jako HTTPS dla DSM.

Krok 7 – Konfiguracja w AdGuard Home

Aby uzyskać dostęp z naszego komputera do Nginx Proxy Managera poprzez zdefiniowaną nazwę domeny (np. npm.xyz.com) w naszej sieci lokalnej, konieczne jest skonfigurowanie serwera DNS, aby wskazywał na lokalizację tej strony.

AdGuard Home Pulpit

  • Zaloguj się do panelu administracyjnego AdGuard Home.
  • Przejdź do zakładki Filtry, a następnie z menu wybierz opcję Przepisywanie DNS.

Przepisywanie DNS

  • Kliknij Dodaj przepisywanie DNS, a następnie wypełnij pola z następującymi wartościami:
    • Wpisz nazwę domeny, który chcesz przepisać: npm.xyz.com
    • Adres IP: IP-ADRES-SYNOLOGY

Dodaj przepisywanie DNS

  • Gotowe! Poczekaj chwilę, aż konfiguracja zostanie zapisana. Po zakończeniu procesu, dostęp do serwera będzie możliwy pod adresem npm.xyz.com. 🚀

Krok 8 – Dostęp zewnętrzny i konfiguracja na routerze

Aby umożliwić dostęp z zewnątrz do Twojego serwera Synology, musisz skonfigurować przekierowanie portów na routerze. Oto ogólny przewodnik (na przykładzie MikroTika), zakładając, że korzystasz ze statycznego adresu IP:

Przekierowanie na routerze

Konfiguracja przekierowania portów (port forwarding) w MikroTiku w sekcji NAT (Network Address Translation) umożliwia przekierowanie ruchu z określonego portu zewnętrznego na port wewnętrzny na konkretnym urządzeniu w sieci lokalnej. 

  • Uruchom program WinBox i zaloguj się na swoje konto administratora,
  • Przejdź do zakładki IP, a następnie wybierz Firewall z menu.

Mikrotik WinBox

  • Kliknij zakładkę NAT,

Mikrotik WinBox, Firewall

  • Kliknij w lewym górnym rogu okna na znak + w celu dodania nowej polityki przekierowania.
  • W zakładce General ustaw parametry opisane poniżej:
    • Chain: dstnat
    • Protocol: 6 (tcp)
    • Dst. Port: 443
    • In. Interface List: WAN lub In. Interface: Wybierz swój interfejs WAN (zazwyczaj ether01)
  • Przejdź do zakładki Action i ustaw parametry opisane poniżej:
    • Action: dst-nat
    • To Addresses: IP-ADRES-SYNOLOGY
    • To Ports: 443

Po wykonaniu tych kroków, ruch z zewnątrz, kierując się do portu 443 (HTTPS), zostanie przekierowany na odpowiedni port Twojego serwera Synology. Dodatkowo, możesz dostosować inne reguły NAT według indywidualnych potrzeb i wymagań.

Ustawienie adresu IP w Cloudflare

Dokonaj aktualizacji rekordu DNS A w Cloudflare, aby wskazywał aktualny zewnętrzny adres IP Twojego routera. Dzięki temu ruch będzie kierowany poprzez Cloudflare, zwiększając poziom bezpieczeństwa Twojego serwera.

Przeczytaj także

  • Czy używasz już Authentik i Portainer? Dowiedz się, jak skonfigurować jednokrotne logowanie, aby łatwo i bezpiecznie zalogować się do Portainera. Przeczytaj prosty poradnik tutaj, aby zwiększyć wygodę korzystania z tych aplikacji.
  • Odkryj, jak łatwo zainstalować odbiornik ADS-B na Raspberry Pi i rozpocznij śledzenie lotów w czasie rzeczywistym. Zapoznaj się tutaj z prostym poradnikiem, który otworzy przed Tobą fascynujący świat obserwacji nieba!
  • Zanurz się w świecie monitorowania pojazdów dzięki Traccar na swoim Synology! Przewodnik krok po kroku wraz z użyciem Docker’a umożliwi Ci szybką i efektywną instalację. Śledź swoje pojazdy, analizuj dane i kontroluj trasę.

Dodatkowe źródła i informacje

W celu dalszego zgłębienia tematu i uzyskania szczegółowych informacji, polecam sprawdzenie poniższych linków. Są one wartościowymi źródłami, które zostały wykorzystane podczas opracowywania tego poradnika.

Filip Chochół

Filip Chochol runs two blogs: personal “chochol.io” and together with his girlfriend “Warsaw Travelers” about travel. He specializes in IT resource management and technical support, and has been active in the field of cyber security awareness for almost two years. A proponent of open-source technologies, he previously worked in the film and television industry in the camera division (2013-2021). After hours, he develops interests in smart homes and networking.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


This site uses Akismet to reduce spam. Learn how your comment data is processed.