Pourquoi certains ports signalés par nmap sont-ils filtrés et pas les autres?

38

Je l' analyse d' un serveur qui devrait avoir un pare - feu assez simple en utilisant iptables : par défaut tout est en plus laissiez tomber RELATEDet ESTABLISHEDpaquets. Les seuls types de NEWpaquets autorisés sont les paquets TCP sur les ports 22 et 80 et le tour est joué (pas de protocole HTTPS sur ce serveur).

Le résultat de nmap sur les 2048 premiers ports donne 22 et 80 aussi ouverts, comme je l’attendais. Cependant, quelques ports apparaissent comme "filtrés".

Ma question est la suivante: pourquoi les ports 21, 25 et 1863 apparaissent-ils comme "filtrés" et les 2043 autres ports n'apparaissent pas comme filtrés?

Je m'attendais à voir seulement 22 et 80 comme "ouvert".

S'il est normal de voir "filtré" 21,25 et 1863, pourquoi tous les autres ports n'apparaissent-ils pas aussi "filtrés"?

Voici la sortie 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

Je ne comprends vraiment pas pourquoi j'ai 2043 ports fermés:

Not shown: 2043 closed ports

et pas 2046 ports fermés.

Voici un lsof lancé sur le serveur:

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

(notez que Java / Tomcat écoute sur le port 8009, mais ce port est ignoré par le pare-feu)

Cedric Martin
la source
Obtenez-vous les mêmes résultats lorsque vous analysez d'autres hôtes?
Creek
@Creek: ah, je viens d'essayer slashdot.org et j'ai ouvert 80 et 443 mais filtré également par 25 / smtp . Mais ensuite vous m'avez donné l'idée d'essayer de nmap ce même serveur non pas de ma machine d'origine mais d'un autre serveur que je possède: je ne reçois pas les 3 ports filtrés mais je reçois alors 53 / domain / closed , 443 / https / closed et 953 / rndc / closed . (mes deux serveurs dédiés sont hébergés chez OVH / France).
Cedric Martin
1
Si vous voulez vraiment voir ce nmapque vous faites, vous devriez scanner en utilisant les droits root, en utilisant les fonctions SYN scan ( -sS) et --packet-trace. Prenez également quelques minutes et lisez la page de manuel, vous seriez surpris de voir quelles pierres précieuses se trouvent là
Creek
Je voudrais aussi ouvrir temporairement ces ports et voir si les paquets les acheminent.
Mark Hurd

Réponses:

25

La déclaration 'port filtré' de nmap diffère selon votre méthode de scan.

L'analyse standard (analyse TCP si utilisateur non privilégié ou analyse à demi-ouverte -sS si superutilisateur) repose sur le protocole TCP. (nommé hanshake à 3 voies)

  • Un client (vous) émet un SYN, si le serveur répond SYN / ACK: cela signifie que le port est ouvert !

  • Vous émettez un SYN, si le serveur répond RST: cela signifie que le port est proche !

  • Vous émettez un SYN, si le serveur ne répond pas, ou répond avec une erreur ICMP: cela signifie que le port est filtré . Probablement un pare-feu IDS / statefull bloquera votre demande)

Pour savoir quel est le statut réel du port, vous pouvez:

L'excellent livre " Nmap Network Discovery ", écrit par son créateur Fyodor, l'explique très bien. Je cite

filtré: Nmap ne peut pas déterminer si le port est ouvert car le filtrage de paquets empêche ses sondes d'atteindre le port. Le filtrage peut provenir d'un dispositif de pare-feu dédié, de règles de routeur ou d'un logiciel de pare-feu basé sur l'hôte. Ces ports frustrent les attaquants car ils fournissent très peu d'informations. Parfois, ils répondent avec des messages d'erreur ICMP tels que le code de type 3 13 (destination inaccessible: communication interdite par l'administration), mais les filtres qui abandonnent simplement des sondes sans répondre sont beaucoup plus courants. Cela oblige Nmap à réessayer plusieurs fois au cas où la sonde serait abandonnée à cause de la congestion du réseau plutôt que du filtrage. Ce type de filtrage ralentit considérablement les analyses.

open | filter: Nmap place les ports dans cet état lorsqu'il est impossible de déterminer si un port est ouvert ou filtré. Cela se produit pour les types d'analyse dans lesquels les ports ouverts ne donnent aucune réponse. L'absence de réponse peut également signifier qu'un filtre de paquets a abandonné la sonde ou toute réponse qu'il a provoquée. Donc, Nmap ne sait pas avec certitude si le port est ouvert ou en cours de filtrage. Les analyses UDP, protocole IP, FIN, NULL et Xmas classifient les ports de cette manière.

fermé | filtré: Cet état est utilisé lorsque Nmap est incapable de déterminer si un port est fermé ou filtré. Il n’est utilisé que pour l’analyse d’identité IP ID décrite à la Section 5.10, "Analyse inactive TCP (-sl)

Florian Bidabe
la source
Alors, comment puis-je annuler le filtrage du port 22? Supposons que j'utilise des domaines Google ...
IgorGanapolsky
"Unfilter"? Eh bien, vous n'intercepterez pas le trafic allant à 22 sur votre pare-feu, il ne sera donc pas filtré ... Vous obtiendrez alors une réponse "ouverte" ou "fermée" en réponse à la sonde nmap
Florian Bidabe
Qu'est-ce que vous numérisez?
Florian Bidabe
J'utilise cette commande: sudo nmap -oG - -T4 -A -p22 -v pi.eazyigz.com | grep ssh
IgorGanapolsky
1
"-T4" n'est pas nécessaire, déjà spécifié dans "-A" ... en ce qui concerne la sonde, sudo nmap implique l'utilisation d'un Syn scan (-sS). "-A" est une version abrégée de "-T4" + "- sV" + "- O". Si la détection de service (-sV) échoue lors de la vérification du serveur SSH, le port est probablement fermé (aucune écoute SSH), sinon il DOIT y avoir quelque chose entre votre client et le serveur qui intercepte la sonde et supprime les paquets (un pare-feu hôte, réseau mal configuré ou mal configuré)
Florian Bidabe
10

pourquoi les ports 21, 25 et 1863 apparaissent-ils comme "filtrés" et les 2043 autres ports n'apparaissent pas comme filtrés?

Parce que chez votre FAI, votre routeur, votre administrateur réseau, quoi que ce soit entre eux ou vous-même, vous les filtrez. L’histoire de ces ports est assez mauvaise, le 1863 étant le port utilisé par le protocole de messagerie instantanée de Microsoft (alias MSN et ses amis), ce qui, j’estime que vous puissiez (ou non) avoir défini une règle spécifique. Le SMTP semble être la faute de votre FAI, et FTP me laisse totalement sidéré, car je ne sais absolument pas ce qui pourrait leur arriver.

Braiam
la source
1
Merci pour l'explication! Donc , « filtré » signifie essentiellement , il y a l'équivalent d'un iptables de s de REJETER quelque part (FAI, routeur, etc.)? Et le FAI / routeur ou tout ce qui est REJETANT au lieu de DROPping parce qu'il est plus propre? En ce qui concerne le port 25: il est filtré pour moi, par exemple, slashdot.org aussi (lorsque je le mappe depuis ma connexion à la maison, mais pas lorsque je le mappe depuis mon serveur dédié).
Cedric Martin
6
@ CedricMartin, vous l'avez exactement à l'envers. "Filtré" signifie que le paquet est supprimé (aucune réponse), alors que "fermé" signifie que le paquet est rejeté (une réponse ICMP "port inaccessible" est envoyée).
Mark
@Mark: alors si je comprends bien, ma question initiale reste la même: sur mon serveur, avec iptables , je laisse tout tomber sauf les ports 22 et 80. Comment se fait-il que 3 ports seulement apparaissent comme "filtrés"!?
Cedric Martin
@CedricMartin éditez votre question et ajoutez vos règles iptables.
Braiam
1

Par défaut, Nmap analyse uniquement les 1 000 ports les plus courants pour chaque protocole (tcp, udp). Si votre port est en dehors de cela, il ne le scannera pas et ne le signalera donc pas. Cependant, vous pouvez spécifier les ports que vous souhaitez analyser avec l'option -p.

Angsuman Chakraborty
la source