¿Por qué algunos puertos informados por nmap se filtran y no otros?

38

Estoy escaneando un servidor que debe tener un simple bastante cortafuegos usando iptables : por defecto todo se cae aparte RELATEDy ESTABLISHEDpaquetes. El único tipo de NEWpaquetes permitidos son los paquetes TCP en los puertos 22 y 80 y eso es todo (no HTTPS en ese servidor).

El resultado de nmap en los primeros 2048 puertos da 22 y 80 tan abiertos, como espero. Sin embargo, algunos puertos aparecen como "filtrados".

Mi pregunta es: ¿por qué los puertos 21, 25 y 1863 aparecen como "filtrados" y los otros 2043 puertos no aparecen como filtrados?

Esperaba ver solo 22 y 80 como "abiertos".

Si es normal ver 21,25 y 1863 como "filtrado", ¿por qué no aparecen todos los otros puertos como "filtrados"?

Aquí está la salida de 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

Realmente no entiendo por qué tengo 2043 puertos cerrados:

Not shown: 2043 closed ports

y no 2046 puertos cerrados.

Aquí hay un lsof lanzado en el servidor:

# 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)

(tenga en cuenta que Java / Tomcat está escuchando en el puerto 8009 pero que el firewall deja caer ese puerto)

Cedric Martin
fuente
¿Obtiene los mismos resultados cuando escanea otros hosts?
Creek
@Creek: ah, acabo de probar en slashdot.org y obtuve 80 y 443 abiertos, pero también se filtraron 25 / smtp . Pero luego me diste la idea de tratar de asignar ese mismo servidor no desde mi máquina doméstica sino desde otro servidor que poseo: no obtengo los 3 puertos filtrados pero luego obtengo 53 / dominio / cerrado , 443 / https / cerrado y 953 / rndc / cerrado . (mis dos servidores dedicados están alojados en OVH / Francia).
Cedric Martin
1
Si realmente quiere ver lo que nmapestá haciendo, debería escanear usando privs raíz, usando el escaneo SYN ( -sS) y --packet-trace. También tómese un par de minutos y lea la página del manual, se sorprenderá de las gemas que hay allí
Creek
También abriría temporalmente esos puertos y vería si los paquetes llegan a ellos.
Mark Hurd

Respuestas:

25

La declaración de 'puerto filtrado' de nmap difiere según su método de escaneo.

El escaneo estándar (escaneo TCP si el usuario no tiene privilegios, o escaneo medio abierto -sS si el superusuario) se basa en el protocolo TCP. (llamado hanshake de 3 vías)

  • Un cliente (usted) emite un SYN, si el servidor responde SYN / ACK: ¡significa que el puerto está abierto !

  • Emite un SYN, si el servidor responde RST: ¡significa que el puerto está cerca !

  • Emite un SYN, si el servidor no responde, o responde con un error ICMP: significa que el puerto está filtrado . Probablemente un firewall IDS / statefull bloquee su solicitud)

Para determinar cuál es el estado real del puerto, puede:

El excelente libro " Nmap Network Discovery ", escrito por su creador Fyodor, lo explica muy bien. Yo cito

filtrado: Nmap no puede determinar si el puerto está abierto porque el filtrado de paquetes impide que sus sondas lleguen al puerto. El filtrado puede ser desde un dispositivo de firewall dedicado, reglas de enrutador o software de firewall basado en host. Estos puertos frustran a los atacantes porque proporcionan muy poca información. A veces responden con mensajes de error ICMP, como el código 13 de tipo 3 (destino inalcanzable: comunicación prohibida administrativamente), pero los filtros que simplemente dejan caer las sondas sin responder son mucho más comunes. Esto obliga a Nmap a volver a intentarlo varias veces en caso de que la sonda se haya caído debido a la congestión de la red en lugar de al filtrado. Este tipo de filtrado ralentiza los escaneos dramáticamente.

abierto | filtrado: Nmap coloca los puertos en este estado cuando no puede determinar si un puerto está abierto o filtrado. Esto ocurre para los tipos de exploración en los que los puertos abiertos no dan respuesta. La falta de respuesta también podría significar que un filtro de paquetes dejó caer la sonda o cualquier respuesta que provocó. Por lo tanto, Nmap no sabe con certeza si el puerto está abierto o se está filtrando. Los escaneos UDP, protocolo IP, FIN, NULL y Navidad clasifican los puertos de esta manera.

cerrado | filtrado: este estado se utiliza cuando Nmap no puede determinar si un puerto está cerrado o filtrado. Solo se usa para la exploración inactiva de la ID de IP que se trata en la Sección 5.10, "Exploración inactiva de TCP (-sl)

Florian Bidabe
fuente
Entonces, ¿cómo desfiltro el puerto 22? Supongamos que estoy usando Google Domains ...
IgorGanapolsky
"Sin filtro"? Bueno, no intercepta el tráfico que va a 22 en su firewall, por lo tanto, no se filtrará ... Luego, se "abrirá" o "cerrará" como respuesta a la sonda nmap
Florian Bidabe
¿Qué estás escaneando?
Florian Bidabe
Estoy usando este comando: sudo nmap -oG - -T4 -A -p22 -v pi.eazyigz.com | grep ssh
IgorGanapolsky
1
"-T4" es innecesario, ya especificado en "-A" ... con respecto a la sonda, sudo nmap implica que se utiliza un escaneo Syn (-sS). "-A" es una versión más corta de "-T4" + "- sV" + "- O". Si la detección de servicio (-sV) falla al sondear el servidor SSH, entonces el puerto probablemente esté cerrado (sin escucha ssh) de lo contrario DEBE haber algo entre su cliente y servidor que conecte la sonda y suelte los paquetes (un servidor de seguridad del host, un IDS, o dispositivos de red mal configurados)
Florian Bidabe
10

¿Por qué los puertos 21, 25 y 1863 aparecen como "filtrados" y los otros 2043 puertos no aparecen como filtrados?

Porque en su ISP, enrutador, su administrador de red, cualquier cosa entre ellos o usted mismo los está filtrando. Estos puertos tienen una historia bastante mala, el 1863 es el puerto utilizado por el protocolo de mensajería instantánea de Microsoft (también conocido como MSN y amigos) que creo que puede (o no) haber establecido una regla específica. El SMTP parece que su ISP es el culpable y el FTP me tiene totalmente estupefacto, ya que no tengo idea de lo que podría pasarles.

Braiam
fuente
1
¡gracias por la explicación! Así que "filtra" básicamente significa que hay el equivalente de un iptables s' REJECT en alguna parte (ISP, router, etc.)? ¿Y el ISP / enrutador o lo que sea que se RECHAZA en lugar de DROPping porque es más limpio? Con respecto al puerto 25: también está filtrado para mí, por ejemplo, slashdot.org (cuando lo asigno desde mi conexión doméstica, pero no cuando lo asigno desde mi servidor dedicado).
Cedric Martin
66
@CedricMartin, lo tienes exactamente al revés. "Filtrado" significa que el paquete se descarta (sin respuesta alguna), mientras que "cerrado" significa que el paquete se rechaza (se envía una respuesta ICMP "puerto inalcanzable").
Mark
@Mark: entonces, si lo entendí al revés, mi pregunta original es: en mi servidor, usando iptables , estoy descartando todo además del puerto 22 y 80. ¿Cómo es que solo 3 puertos aparecen como "filtrados"?
Cedric Martin
@CedricMartin edite su pregunta y agregue sus reglas de iptables.
Braiam
1

Por defecto, Nmap escanea solo los 1,000 puertos más comunes para cada protocolo (tcp, udp). Si su puerto está fuera de eso, entonces no lo escaneará y, por lo tanto, no lo informará. Sin embargo, puede especificar los puertos que desea escanear con la opción -p.

Angsuman Chakraborty
fuente