Jak sprawdzić, czy Twój domowy serwer jest wystawiony na Internet?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Domowy serwer jest wystawiony na internet, gdy urządzenie z zewnątrz może dotrzeć do jednej z jego usług przez twoje publiczne połączenie sieciowe. To wystawienie może być zamierzone, jak publiczna strona internetowa lub serwer gry, albo przypadkowe, jak stara reguła przekierowania portów, która nadal wskazuje na panel administracyjny.

Otwarty port nie oznacza automatycznie, że twój serwer został zhakowany. Oznacza, że coś jest dostępne i trzeba to zidentyfikować. Praktycznym testem jest spojrzenie na swoją sieć z zewnątrz, a następnie prześledzenie każdego dostępnego portu przez router, zaporę, system operacyjny i kontenery, aż dokładnie poznasz, która usługa odpowiada.

Co naprawdę oznacza „wystawiony na internet”

Załóżmy, że twój serwer multimediów, aplikacja plików, usługa SSH lub panel sterowania ładują się, gdy telefon korzysta z danych mobilnych. Nie oznacza to koniecznie, że cały domowy serwer jest publiczny. Zazwyczaj oznacza to, że konkretny publiczny adres IP i port mogą dotrzeć do jednej usługi działającej na tej maszynie.

Ryzyko zależy od tego, co jest wystawione. Utrzymywany serwis HTTPS na porcie 443 różni się od strony administracyjnej NAS, bazy danych, API Dockera czy usługi SSH opartej na haśle. Wystawienie oznacza dostępność; nie oznacza, czy usługa jest bezpieczna, podatna na ataki lub już naruszona.

Celem nie jest więc zamknięcie każdego portu bez zrozumienia go. Celem jest utrzymanie krótkiej listy zamierzonych publicznych usług i zbadanie wszystkiego, co nie należy do tej listy.

Wykonaj pierwszy test spoza swojej domowej sieci

Test wykonany z domowego Wi-Fi może nie pokazać tego, co widzi użytkownik z zewnątrz. Twój router może obsługiwać NAT loopback, twoja domena może rozwiązywać się do prywatnego adresu przez lokalny DNS, a aplikacja może cicho przełączyć się na połączenie LAN.

Wyłącz Wi-Fi w telefonie i użyj danych mobilnych. Spróbuj publicznej domeny, publicznego IP lub adresu usługi, który uważasz za wystawiony na zewnątrz. Możesz także testować z sieci biurowej, innego gospodarstwa domowego lub systemu w chmurze, którym zarządzasz. Testuj tylko systemy i adresy, które posiadasz lub masz uprawnienia do badania.

Jeśli usługa ładuje się z prawdziwej zewnętrznej sieci, jest dostępna z internetu przez jakąś ścieżkę. Jeśli się nie ładuje, nie oznacza to jeszcze, że wszystko jest zamknięte; usługa może korzystać z innego portu, adresu IPv6, VPN, przekaźnika lub tunelu.

Zidentyfikuj publiczny adres, który testujesz

Twój domowy serwer może mieć adres taki jak 192.168.1.50, podczas gdy twój router ma adres WAN, a twoje połączenie internetowe pojawia się pod innym publicznym adresem IP. Te adresy służą różnym celom.

Prywatny adres serwera jest używany wewnątrz sieci LAN. Zewnętrzny tester portów zwykle testuje publiczny adres IPv4 lub publiczną nazwę hosta, do której dociera ruch z zewnątrz. Jeśli adres WAN routera nie zgadza się z publicznym adresem pokazywanym przez zewnętrzną usługę IP, twój ISP może umieszczać połączenie za NAT klasy operatorskiej (carrier-grade NAT).

Zapisz adres LAN serwera, adres WAN routera, publiczny adres IPv4, publiczny adres IPv6 jeśli jest dostępny oraz wszelkie używane nazwy domen. To znacznie ułatwia powiązanie wyniku zewnętrznego skanu z odpowiednią regułą routera i urządzeniem wewnętrznym.

Użyj zewnętrznego testera portów, aby znaleźć dostępne usługi

Zewnętrzny tester portów próbuje połączyć się z konkretnym portem spoza twojej sieci LAN. Zacznij od portów, które wiesz, że są powiązane z twoimi usługami, zamiast skanować tysiące portów bez planu.

Możesz przetestować konkretny port zewnętrzny względem swojego publicznego adresu. To pozwala potwierdzić, czy reguła przekierowania portów działa lub czy zapora blokuje połączenie. Usługa zwykle musi być aktywna podczas testu; nieaktywna aplikacja może sprawić, że poprawna reguła przekierowania będzie wyglądać na zamkniętą.

Typowe porty to 22 dla SSH, 80 dla HTTP, 443 dla HTTPS, 445 dla SMB, 3389 dla Pulpitu zdalnego oraz porty specyficzne dla aplikacji multimedialnych, gier lub usług self-hosted. Nie zakładaj, że port o wysokim numerze jest bezpieczny tylko dlatego, że jest mniej znany.

Wynik Co to zwykle oznacza Co zrobić dalej
Otwarte Połączenie zewnętrzne dotarło do nasłuchującej usługi Zidentyfikuj aplikację i potwierdź, że wystawienie jest celowe
Zamknięte Adres odpowiedział, ale żadna usługa nie zaakceptowała tego połączenia Potwierdź, że to odpowiada twojej oczekiwanej konfiguracji
Filtrowane lub przekroczono limit czasu Zapora, ISP, warstwa CGNAT lub ścieżka sieciowa mogą blokować ruch Sprawdź router, ścieżkę ISP i zaporę serwera
Nieoczekiwana odpowiedź usługi Port może prowadzić do innej aplikacji niż oczekiwano Wyłącz regułę, dopóki usługa nie zostanie zidentyfikowana

Przejrzyj każdą regułę przekierowania portów na swoim routerze

Przekierowanie portów to jeden z najprostszych sposobów, dzięki którym usługa domowa staje się publiczna. Reguła mówi routerowi, aby akceptował ruch na zewnętrznym porcie i przesyłał go na określony wewnętrzny adres IP i port.

Sprawdź sekcje routera oznaczone jako Przekierowanie portów, Serwer wirtualny, Reguły NAT, Aplikacje lub Gry. Dla każdej reguły zanotuj port zewnętrzny, protokół, docelowy adres IP, port wewnętrzny oraz przeznaczoną usługę. Ważnym elementem jest mapowanie portów publicznych na prywatne, które umożliwia połączeniu z zewnątrz dotarcie do jednego urządzenia wewnętrznego.

Usuń reguły, które nie mają już jasnego celu. Zwróć szczególną uwagę na reguły przekierowania dotyczące administracji routerem, administracji NAS, SSH, pulpitu zdalnego, baz danych, interfejsów kamer lub starych aplikacji self-hosted, które nie są już utrzymywane.

Sprawdź, czy UPnP automatycznie otworzyło porty

Możesz znaleźć otwarty port, nawet jeśli nigdy nie utworzyłeś ręcznie reguły przekierowania. Serwery multimedialne, konsole do gier, aplikacje peer-to-peer, kamery i inne oprogramowanie czasem proszą router o automatyczne utworzenie mapowania.

To zachowanie jest zwykle realizowane przez Universal Plug and Play. Aplikacje mogą tworzyć automatyczne mapowania portów routera przez UPnP, co jest wygodne, ale utrudnia audyt ekspozycji, gdy użytkownicy nie wiedzą, która aplikacja zażądała każdej reguły.

Poszukaj statusu UPnP lub tabeli mapowania portów w interfejsie routera. Usuń niezrozumiałe mapowania i wyłącz UPnP, jeśli nie jest potrzebne w domu. Jeśli pozostawisz je włączone dla konkretnej aplikacji, okresowo przeglądaj jej mapowania, zamiast zakładać, że znikają po zamknięciu aplikacji.

Upewnij się, że serwer nie jest ustawiony jako host DMZ

Niektóre domowe routery mają ustawienie zwane Host DMZ, Host Eksponowany lub Serwer Domyślny. Pomimo nazwy, nie jest to to samo co starannie izolowana sieć DMZ w przedsiębiorstwie.

W wielu routerach konsumenckich to ustawienie kieruje niezamówiony ruch przychodzący, który nie pasuje do innej reguły, do wybranego urządzenia wewnętrznego. Jeśli wybrano serwer domowy, może być dostępnych znacznie więcej portów, niż użytkownik zamierzał.

Jeśli nie masz konkretnego i dobrze zrozumianego powodu, serwer nie powinien być skonfigurowany jako host DMZ. Wyłącz to ustawienie i twórz wąskie reguły tylko dla poszczególnych usług, które naprawdę potrzebują dostępu publicznego.

Sprawdź, które usługi nasłuchują na serwerze

Zewnętrzne skanowanie informuje, że port odpowiada, ale nie zawsze mówi, który lokalny proces go używa. Kolejnym krokiem jest sprawdzenie samego serwera.

W systemie Linux polecenia takie jak ss -lntup może wyświetlić nasłuchujące gniazda TCP i UDP oraz powiązane z nimi procesy. W systemie Windows, netstat -ano a Monitor zasobów może pomóc powiązać nasłuchujący port z identyfikatorem procesu. Sprawdź, czy każda usługa nasłuchuje na 127.0.0.1konkretnym adresem LAN, 0.0.0.0lub adresem IPv6.

Usługa powiązana z 127.0.0.1 zwykle jest lokalny dla maszyny. Usługa powiązana z 0.0.0.0 lub :: nasłuchuje na wielu interfejsach i może stać się publicznie dostępny, gdy router i zapora na to pozwolą. Szerokie powiązanie nie jest automatycznie niebezpieczne, ale zwiększa znaczenie reguł zapory.

Nie zapomnij o zaporze serwera

Router to tylko jedna warstwa zabezpieczeń. Reguły zapory Linux, Zapora systemu Windows, zapora hypervisora lub kontrola dostępu na poziomie aplikacji mogą zezwalać lub blokować ostateczne połączenie.

Przejrzyj reguły przychodzące i ustal, czy dotyczą tylko LAN, wszystkich interfejsów, konkretnych adresów źródłowych, czy obu protokołów IPv4 i IPv6. Instalator aplikacji mógł automatycznie utworzyć regułę zezwalającą, a stara reguła może pozostać po usunięciu aplikacji.

Przydatną domyślną zasadą jest odrzucanie niezamówionego ruchu przychodzącego i dodawanie wąskich wyjątków tylko tam, gdzie jest to konieczne. Ogranicz usługi administracyjne do podsieci VPN lub zaufanych adresów źródłowych, gdy to możliwe.

Publikowanie portów Dockera może ujawnić więcej niż się spodziewasz

Kontenery tworzą kolejną warstwę między portem zewnętrznym a aplikacją. Wpis Compose taki jak 8080:80 publikuje port kontenera 80 przez port 8080 na hoście.

Gdy opublikowany port hosta jest dostępny przez zaporę i router, kontener może stać się widoczny z internetu. Przejrzyj docker ps, pliki Compose, sieć hosta, konfiguracja reverse-proxy oraz każdy kontener, który montuje gniazdo Dockera lub działa z podwyższonymi uprawnieniami.

Publikuj tylko porty, które muszą być dostępne spoza sieci kontenerów. Wewnętrzne bazy danych, pamięci podręczne, pulpity nawigacyjne i API usług powinny zazwyczaj pozostać w prywatnych sieciach Dockera, a nie być publikowane na każdym interfejsie hosta.

Sprawdź IPv6 osobno od IPv4

Serwer może być niedostępny przez publiczne IPv4, a jednocześnie dostępny przez IPv6. IPv6 zwykle nie zależy od tego samego modelu NAT z przekierowaniem portów, który jest używany w domowych połączeniach IPv4.

Jeśli twój ISP przydziela publiczne adresy IPv6 urządzeniom domowym, zapora routera staje się główną granicą. Usługa nasłuchująca na :: może mieć publiczny adres, nawet gdy narzędzie do sprawdzania portów IPv4 raportuje, że odpowiadający port jest zamknięty.

Sprawdź globalne adresy IPv6 serwera, reguły zapory IPv6 routera, publiczne rekordy DNS AAAA oraz powiązania usług. Testuj IPv4 i IPv6 niezależnie, aby zamknięty wynik IPv4 nie dawał fałszywego poczucia bezpieczeństwa.

Użyj Shodan jako narzędzia do sprawdzania widoczności historycznej

Skanowanie portów na żywo pokazuje, co odpowiada teraz. Możesz także chcieć wiedzieć, czy skaner internetowy wcześniej indeksował usługi pod twoim publicznym adresem.

Możesz przeglądać publicznie indeksowane usługi powiązane z adresem IP. Wyniki mogą zawierać porty, banery usług, certyfikaty, nazwy oprogramowania lub inne informacje zaobserwowane podczas wcześniejszego skanowania.

Traktuj to jako kontrolę wtórną. Dane mogą być nieaktualne, dynamiczny adres IP mógł wcześniej należeć do innego klienta, a nowo otwarty port może nie pojawić się od razu. Brak wyniku w Shodan nie dowodzi, że serwer jest niewidoczny lub bezpieczny.

Porównaj każdy otwarty port z listą zamierzonych usług

Gdy masz już wyniki zewnętrzne, reguły routera, nasłuchujące usługi i mapowania kontenerów, stwórz jedną listę, która wyjaśnia każdy dostępny port. To krok, który zamienia rozproszone kontrole w audyt ekspozycji.

Skategoryzuj każdą usługę jako publiczną z założenia, prywatny dostęp zdalny, tylko LAN lub nieznaną. Publiczna strona internetowa może należeć do pierwszej kategorii. Udostępnianie plików, panel administracyjny NAS lub usługa SSH powinny być za VPN. Bazy danych i interfejsy zarządzania Dockerem powinny zazwyczaj pozostać tylko w sieci LAN.

Wszystko oznaczone jako nieznane powinno zostać wyłączone lub zablokowane do czasu identyfikacji. Bezpieczniej jest tymczasowo przerwać niewyjaśnioną usługę niż pozostawić niezidentyfikowany publiczny punkt dostępu.

Element audytu Pytanie do odpowiedzi
Port publiczny Dlaczego ten port musi akceptować ruch z internetu?
Proces nasłuchujący Która aplikacja lub kontener jest właścicielem portu?
Uwierzytelnianie Czy usługa wymaga silnych poświadczeń lub MFA?
Szyfrowanie Czy ruch jest chroniony ważnym protokołem HTTPS lub innym bezpiecznym protokołem?
Status oprogramowania Czy aplikacja jest nadal utrzymywana i aktualizowana?
Mapowanie routera Czy reguła została utworzona ręcznie, przez UPnP czy inny system?
Konfiguracja kontenera Czy Docker publikuje port, który powinien pozostać wewnętrzny?
Ścieżka IPv6 Czy usługa jest dostępna przez publiczne IPv6?
Logi Czy występują nieznane próby logowania, żądania lub adresy źródłowe?
Odzyskiwanie Czy usługę i jej dane można przywrócić po incydencie?

Co zrobić, gdy znajdziesz nieoczekiwanie otwarty port

Jeśli zewnętrzne skanowanie wykryje usługę SSH, interfejs administracyjny, bazę danych, stronę kamery, API Dockera lub inną usługę, której nie zamierzałeś udostępniać, zmniejsz ekspozycję przed kontynuowaniem dochodzenia.

Wyłącz przekierowanie portów lub mapowanie UPnP, usuń urządzenie z ustawień DMZ, zatrzymaj niepotrzebną usługę i dodaj regułę zapory blokującą ten dostęp. Następnie zaktualizuj system operacyjny i aplikacje, przejrzyj ostatnie logi dostępu oraz zmień hasła lub klucze API, które mogły zostać ujawnione.

Otwarte samo w sobie porty nie są dowodem na naruszenie bezpieczeństwa. Jednak nieznane logowania, zmienione pliki, nieznane konta, niewyjaśnione procesy, nowe zaplanowane zadania lub podejrzany ruch wychodzący wymagają głębszej analizy incydentu, a nie tylko zmiany w zaporze sieciowej.

Wybierz metodę dostępu odpowiednią do usługi

Nie każda usługa zdalna musi być publiczna. Osobisty dostęp do plików, pulpity nawigacyjne, administracja serwerem, SSH, automatyka domowa i prywatne biblioteki multimediów są zwykle przeznaczone dla niewielkiego grona zaufanych użytkowników.

Typowe sposoby, w jakie usługi self-hosted stają się dostępne spoza sieci LAN to bezpośrednie przekierowanie portów, prywatny dostęp VPN, mesh VPN, reverse proxy i tunele. Metody te tworzą różne granice ekspozycji i zaufania.

Utrzymuj publiczne strony internetowe publicznymi, jeśli taki jest ich cel, ale umieść usługi administracyjne i osobiste za VPN, mesh VPN, bramą dostępu z uwierzytelnianiem lub w wąsko skonfigurowanym tunelu. Zmniejszenie liczby bezpośrednio dostępnych aplikacji ułatwia zrozumienie i utrzymanie serwera.

Powtarzaj test po zmianach w sieci lub aplikacjach

Ekspozycja nie jest ustawieniem jednorazowym. Wymiana routera, aktualizacja Docker Compose, nowy serwer gry, aplikacja zdalnego dostępu, reset zapory, zmiana IPv6 u ISP lub ponowne włączenie funkcji UPnP mogą zmienić to, co jest widoczne w internecie.

Powtarzaj zewnętrzny test za każdym razem, gdy dodajesz usługę, modyfikujesz reguły routera, wymieniasz sprzęt sieciowy, włączasz IPv6 lub przebudowujesz stos kontenerów. Prowadź krótką dokumentację zatwierdzonych publicznych portów, aby nowe wyniki można było porównać z ustalonym stanem.

W typowym środowisku domowym wystarczy przegląd co miesiąc lub kwartał, chyba że serwer często się zmienia. Ważnym nawykiem jest sprawdzanie po zmianach konfiguracji, zamiast zakładania, że poprzedni audyt nadal obowiązuje.

Podsumowanie

Najpewniejszym sposobem sprawdzenia, czy Twój serwer domowy jest wystawiony na zewnątrz, jest zbadanie go spoza sieci domowej. Przetestuj publiczne ścieżki IPv4 i IPv6, zweryfikuj konkretne porty, a następnie powiąż każdy wynik z regułą routera, wyjątkiem zapory, procesem nasłuchującym lub mapowaniem kontenera.

Otwarty port oznacza, że usługa jest dostępna, ale niekoniecznie naruszona. Ryzyko wynika z niezrozumiałej lub słabo zabezpieczonej usługi. Udostępniaj tylko celowo publiczne usługi, usuń zapomniane przekierowania i mapowania UPnP oraz korzystaj z prywatnego zdalnego dostępu do administracji, usług plikowych i aplikacji osobistych.

FAQ

Czy otwarty port oznacza, że mój serwer domowy został zhakowany?

Nie. Otwarty port oznacza, że zewnętrzne połączenie może dotrzeć do nasłuchującej usługi. Nadal musisz zidentyfikować tę usługę, sprawdzić jej uwierzytelnianie i aktualizacje oraz przejrzeć logi pod kątem nieautoryzowanej aktywności.

Czy mój serwer może być dostępny przez IPv6 bez przekierowania portów?

Tak. Urządzenia IPv6 mogą otrzymać publicznie routowalne adresy, więc dostępność zależy głównie od zapór sieciowych routera i serwera, a nie od przekierowań NAT w stylu IPv4. Testuj IPv6 osobno.

Czy powinienem wyłączyć UPnP na moim routerze?

Wyłącz tę funkcję, gdy nie potrzebujesz, aby aplikacje automatycznie tworzyły mapowania portów. Jeśli pozostawisz ją włączoną dla gier lub aplikacji multimedialnych, regularnie przeglądaj aktywne mapowania i usuwaj te niezrozumiałe.

Czy wyszukiwanie w Shodan wystarczy, by udowodnić, że mój serwer jest bezpieczny?

Nie. Dane Shodan mogą być opóźnione lub nieaktualne, a brak wyników nie dowodzi, że żadna usługa nie jest dostępna. Użyj aktualnego zewnętrznego testu portów i bezpośrednio sprawdź konfigurację routera i serwera.

Które usługi serwera domowego nie powinny być bezpośrednio publiczne?

Strony administracyjne NAS i routera, bazy danych, API Dockera, konsole hyperwizora, udziały SMB oraz osobiste pulpity nawigacyjne powinny zazwyczaj pozostać prywatne. Uzyskuj do nich dostęp przez VPN, mesh VPN lub inną uwierzytelnioną, prywatną ścieżkę.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.