IP & Network

Sprawdzenie serwera banner-grab

Skanuj, jakie usługi (HTTP, FTP, SSH, SMTP) działają na hoście.

O tym narzędziu

Server check idzie krok dalej niż skan portów. Łączymy się ze stałą listą popularnych portów usług na Twoim hoście — HTTP, HTTPS, SSH, FTP, SMTP, IMAP, POP3, DNS, MySQL, PostgreSQL, Redis, RDP — i odczytujemy, co demon mówi jako pierwszy. Większość usług tekstowych ogłasza w pierwszej linii rozmowy swój produkt i wersję; otwarte porty wracają z prawdziwym odciskiem palca, zamknięte są szczere, a te za firewallem timeoutują po 3 sekundach.

Dla każdego otwartego portu zapisujemy surowy banner, naszą sparsowaną ocenę produktu (np. nginx/1.25.3, OpenSSH_8.9p1, vsFTPd 3.0.5) i czas połączenia. HTTP i HTTPS są sondowane prawdziwym żądaniem HEAD /, byśmy mogli przechwycić nagłówek Server, a nie zgadywać z numeru portu; HTTPS używa TLS bez walidacji certyfikatu, więc samopodpisane hosty developerskie nadal raportują.

Co można z tym zrobić

  • Zobacz, co naprawdę jest wyeksponowane. Port może być open w skanerze portów, ale server check mówi dokładnie, który demon nasłuchuje — co często stanowi różnicę między "oczekiwany" a "podejrzany".
  • Zauważ przestarzałe wersje w sekundach. Jeśli Twój nginx nadal odpowiada Server: nginx/1.18.0 po tym, jak czytałeś o lukach bezpieczeństwa, masz problem CI/CD do naprawienia.
  • Zweryfikuj zmianę utwardzającą. Zaostrzyłeś ServerTokens w Apache lub ustawiłeś server_tokens off w nginx? Ponowne uruchomienie powinno teraz raportować tylko nginx lub Apache bez wersji — dowód, że dyrektywa zadziałała.

Czytanie wyniku

"Open + banner" to złoty przypadek: usługa się odezwała i ją rozpoznaliśmy. "Open + no banner" jest normalny dla protokołów binarnych (RDP, handshake MySQL, startup PostgreSQL) — raportujemy, że port jest osiągalny, ale nie możemy go odcisnąć bez mówienia formatu wire. "Closed" oznacza, że jądro powiedziało RST — usługa nie działa. "Filtered" oznacza, że firewall zjadł SYN — wiele z nich celowo (zamknięty admin VPN), niektóre wskazują na błędną konfigurację. Wyniki są cache'owane na 15 minut na host, więc ponowne ładowania nie odpytują ponownie świata.

Najczęstsze pytania

Czym to się różni od port checkera?

Port checker tylko pyta "czy handshake TCP się kończy?". Server check idzie dalej: robi prawdziwy banner-grab — odczyt powitania, które SSH/FTP/SMTP/POP3/IMAP wysyłają przy połączeniu, plus prawdziwe żądanie HEAD dla HTTP/HTTPS — więc możemy nazwać produkt i (gdy nie został usunięty) wersję. Port checker jest szybszy dla długiej niestandardowej listy portów; server check to właściwe narzędzie, gdy chcesz wiedzieć co jest na każdym porcie, nie tylko że coś jest.

Dlaczego niektóre otwarte porty nie mają bannera?

Protokoły binarne — RDP, handshake MySQL pre-auth, startup PostgreSQL, surowy Redis bez powitania RESP — nie wysyłają czytelnej linii przy połączeniu. Oznaczamy je jako open bez odcisku palca. Aby zidentyfikować wersje tych usług, potrzebujesz klienta świadomego protokołu (np. mysqladmin, nmap -sV z odpowiednim skryptem). Konfiguracja ukrywająca bannery (Apache ServerTokens Prod, nginx server_tokens off) podobnie pojawia się jako "open, tylko produkt, brak wersji".

Czy prywatne IP są obsługiwane?

Nie. Prywatne zakresy RFC 1918, loopback, link-local (169.254/16), CGN (100.64/10) i punkty metadanych chmurowych są odrzucane — ta sama polityka SSRF co w innych naszych narzędziach. Server check jest dla hostów publicznie osiągalnych. Aby audytować host wewnętrzny, uruchom narzędzie do banner-grab z wnętrza swojej sieci.

Dlaczego HTTPS jest raportowany nawet z błędnym certyfikatem?

Świadomie wyłączamy walidację certyfikatu. Sensem sprawdzenia jest wykrycie, co jest na porcie, nie walidacja zaufania — wiele hostów developerskich i samopodpisanych nie ma poprawnego publicznego łańcucha, ale to nadal uzasadnione cele skanowania. Jeśli chcesz werdyktu zaufania, narzędzie SSL Checker wykonuje pełną walidację łańcucha, wygasanie i sprawdzenia wystawcy; to narzędzie tylko czyta nagłówek Server:.

Ile trwa skan?

Najgorszy przypadek to mniej więcej 45 sekund — 15 usług × 3-sekundowy timeout — gdy każdy port jest za firewallem. W praktyce typowe hosty odpowiadają na kilku portach w mniej niż 5 sekund łącznie. Wyniki strumieniują w miarę, jak każda usługa odpowiada, więc nie czekasz na te wolne, by poznać te szybkie; wynik jest cache'owany na 15 minut na host, więc odświeżenie jest natychmiastowe.