Dlaczego niektóre porty są filtrowane przez nmap, a inne nie?

38

Mam skanowanie do serwera, który powinien mieć dość prosty firewall przy użyciu iptables : domyślnie wszystko jest odrzucany poza RELATEDi ESTABLISHEDpakiety. Jedynym NEWdozwolonym typem pakietów są pakiety TCP na portach 22 i 80 i to wszystko (bez HTTPS na tym serwerze).

Wynik nmap na pierwszych 2048 portach daje 22 i 80 tak otwarte, jak się spodziewam. Jednak niektóre porty są wyświetlane jako „filtrowane”.

Moje pytanie brzmi: dlaczego porty 21, 25 i 1863 są wyświetlane jako „filtrowane”, a pozostałe porty 2043 nie są wyświetlane jako filtrowane?

Spodziewałem się, że widzę tylko 22 i 80 jako „otwarte”.

Jeśli widzimy 21,25 i 1863 jako „filtrowane”, to dlaczego wszystkie inne porty też nie są wyświetlane jako „filtrowane” !?

Oto wyjście nmap :

# nmap -PN 94.xx.yy.zz -p1-2048

Starting Nmap 6.00 ( http://nmap.org ) at 2014-06-12 ...
Nmap scan report for ksXXXXXX.kimsufi.com (94.xx.yy.zz)
Host is up (0.0023s latency).
Not shown: 2043 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   open     ssh
25/tcp   filtered smtp
80/tcp   open     http
1863/tcp filtered msnp

Naprawdę nie rozumiem, dlaczego mam 2043 zamkniętych portów:

Not shown: 2043 closed ports

a nie 2046 zamkniętych portów.

Oto lsof uruchomiony na serwerze:

# lsof -i -n
COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME
named    3789 bind   20u  IPv4     7802       TCP 127.0.0.1:domain (LISTEN)
named    3789 bind   21u  IPv4     7803       TCP 127.0.0.1:953 (LISTEN)
named    3789 bind  512u  IPv4     7801       UDP 127.0.0.1:domain 
sshd     3804 root    3u  IPv4     7830       TCP *:ssh (LISTEN)
sshd     5408 root    3r  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
sshd     5411    b    3u  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
java    16589    t   42u  IPv4 88842753       TCP *:http-alt (LISTEN)
java    16589    t   50u  IPv4 88842759       TCP *:8009 (LISTEN)
java    16589    t   51u  IPv4 88842762       TCP 127.0.0.1:8005 (LISTEN)

(zwróć uwagę, że Java / Tomcat nasłuchuje na porcie 8009, ale ten port jest DROP-owany przez zaporę ogniową)

Cedric Martin
źródło
Czy otrzymujesz takie same wyniki, gdy skanujesz inne hosty?
Creek
@Creek: ah, właśnie wypróbowałem na slashdot.org i otworzyłem 80 i 443, ale przefiltrowałem również 25 / smtp . Ale potem podsunąłeś mi pomysł, aby spróbować nmapować ten sam serwer nie z mojego komputera domowego, ale z innego własnego serwera: nie otrzymuję 3 filtrowanych portów, ale potem dostaję 53 / domenę / zamknięte , 443 / https / zamknięte i 953 / rndc / closed . (oba moje serwery dedykowane są hostowane w OVH / Francja).
Cedric Martin
1
Jeśli naprawdę chcesz zobaczyć, co nmapsię dzieje, powinieneś skanować za pomocą uprawnień roota, skanów SYN ( -sS) i --packet-trace. Poświęć również kilka minut i przeczytaj stronę podręcznika, zdziwiłbyś się, jakie są tam klejnoty
Creek,
Tymczasowo też otworzę te porty i sprawdzę, czy do nich docierają pakiety.
Mark Hurd

Odpowiedzi:

25

Instrukcja „Filtrowany port” z nmap różni się w zależności od metody skanowania.

Skanowanie standardowe (skanowanie TCP w przypadku nieuprzywilejowanego użytkownika lub skanowanie w trybie półotwartym -sS w przypadku administratora) opiera się na protokole TCP. (o nazwie 3-drożny hanshake)

  • Klient (ty) wydaje SYN, jeśli serwer odpowiada SYN / ACK: oznacza to, że port jest otwarty !

  • Wydajesz SYN, jeśli serwer odpowiada RST: oznacza to, że port jest blisko !

  • Wydajesz SYN, jeśli serwer nie odpowiada lub odpowiada z błędem ICMP: oznacza to, że port jest filtrowany . Prawdopodobnie twoja prośba blokuje firewall IDS / statefull)

Aby ustalić, jaki jest prawdziwy status portu, możesz:

Doskonała książka „ Nmap Network Discovery ”, napisana przez jej twórcę Fiodora, bardzo dobrze to wyjaśnia. Cytuję

filtrowane: Nmap nie może ustalić, czy port jest otwarty, ponieważ filtrowanie pakietów uniemożliwia jego próbkom dotarcie do portu. Filtrowanie może pochodzić z dedykowanego urządzenia zapory, reguł routera lub oprogramowania zapory opartego na hoście. Porty te frustrują atakujących, ponieważ dostarczają tak mało informacji. Czasami odpowiadają na komunikaty o błędach ICMP, takie jak kod typu 3 (cel nieosiągalny: komunikacja administracyjnie zabroniona), ale filtry, które po prostu upuszczają sondy bez odpowiedzi, są znacznie częstsze. To zmusza Nmapa do ponownej próby kilka razy na wypadek, gdyby sonda została upuszczona z powodu przeciążenia sieci, a nie filtrowania. Ten rodzaj filtrowania znacznie spowalnia skanowanie.

open | filter: Nmap umieszcza porty w tym stanie, gdy nie jest w stanie ustalić, czy port jest otwarty czy filtrowany. Dzieje się tak w przypadku typów skanowania, w których otwarte porty nie dają odpowiedzi. Brak odpowiedzi może również oznaczać, że filtr pakietów upuścił sondę lub jakąkolwiek wywołaną odpowiedź. Więc Nmap nie wie na pewno, czy port jest otwarty czy filtrowany. Skany UDP, protokołu IP, FIN, NULL i Xmas klasyfikują porty w ten sposób.

zamknięty | filtrowany: Ten stan jest używany, gdy Nmap nie jest w stanie ustalić, czy port jest zamknięty, czy filtrowany. Jest używany tylko do skanowania w trybie bezczynności adresu IP omówionego w rozdziale 5.10, „Skanowanie w trybie bezczynności protokołu TCP (-sl)

Florian Bidabe
źródło
Jak mogę odfiltrować port 22? Załóżmy, że korzystam z Domen Google ...
IgorGanapolsky
„Unfilter”? Cóż, nie przechwytujesz ruchu przechodzącego do 22 na twojej zaporze ogniowej, dlatego nie będzie filtrowany ... Otrzymasz wtedy „otwieranie” lub „zamykanie” jako odpowiedź na sondę nmap
Florian Bidabe
Co skanujesz
Florian Bidabe
Używam tego polecenia: sudo nmap -oG - -T4 -A -p22 -v pi.eazyigz.com | grep ssh
IgorGanapolsky
1
„-T4” jest niepotrzebne, zostało już określone w „-A” ... w odniesieniu do sondy, sudo nmap sugeruje, że używany jest skan Syn (-sS). „-A” to krótsza wersja „-T4” + „- sV” + „- O”. Jeśli wykrycie usługi (-sV) nie powiedzie się w przypadku sondowania serwera SSH, port prawdopodobnie zostanie zamknięty (brak nasłuchiwania ssh), w przeciwnym razie MUSI znajdować się coś pomiędzy twoim klientem a serwerem, które przeszkadza sondowaniu i upuszcza pakiety (zapora hosta, IDS, lub źle skonfigurowane urządzenia sieciowe)
Florian Bidabe
10

dlaczego porty 21, 25 i 1863 są wyświetlane jako „filtrowane”, a pozostałe 2043 inne porty nie są wyświetlane jako filtrowane?

Ponieważ u twojego dostawcy usług internetowych router, administrator sieci, wszystko między nimi lub ty sam je filtrujesz. Porty te mają dość złą historię, 1863 jest portem używanym przez protokół komunikatorów Microsoft (znany również jako MSN i przyjaciele), który, jak sądzę, mógł (lub nie) ustanowić określoną regułę. SMTP wydaje się, że to twój dostawca usług internetowych jest winowajcą, a FTP całkowicie mnie oszołomił, ponieważ nie mam pojęcia, co może się z nimi stać.

Braiam
źródło
1
Dziękuję za wyjaśnienie! Tak więc „filtrowane” zasadniczo oznacza, że jest odpowiednikiem iptables S” REJECT gdzieś (ISP, router, itd.)? I ISP / router lub cokolwiek to jest ODRZUCANIE zamiast DROPping, ponieważ jest czystsze? Jeśli chodzi o port 25: jest on dla mnie filtrowany dla, powiedzmy, slashdot.org (kiedy odwzorowuję go z mojego domowego połączenia, ale nie, kiedy odwzorowuję go z serwera dedykowanego).
Cedric Martin
6
@CedricMartin, masz dokładnie odwrotnie. „Filtrowany” oznacza, że ​​pakiet jest odrzucany (bez odpowiedzi), natomiast „zamknięty” oznacza, że ​​pakiet jest odrzucany (wysyłana jest odpowiedź „nieosiągalnego” portu ICMP).
Mark
@Mark: wtedy, gdy otrzymam je wstecz, moje oryginalne pytanie brzmi: na moim serwerze, używając iptables , upuszczam wszystko oprócz portów 22 i 80. Dlaczego tylko 3 porty są wyświetlane jako „filtrowane” !?
Cedric Martin
@CedricMartin edytuj swoje pytanie i dodaj swoje reguły iptables.
Braiam
1

Domyślnie Nmap skanuje tylko 1000 najczęściej używanych portów dla każdego protokołu (tcp, udp). Jeśli twój port jest poza tym, to nie skanuje go, a zatem nie zgłosi tego. Możesz jednak określić porty, które chcesz skanować, z opcją -p.

Angsuman Chakraborty
źródło