Introduction aux scans de port avec nmap
Copyright © 2001,2005
Ce document est publié sous la licence GNU FDL
| Historique des versions | ||
|---|---|---|
| Version 0.1 | 2005 | ES |
| Première version | ||
Lorsque vous voulez tester la sécurité de votre pare-feu ou plus généralement vérifier les services que vous mettez à disposition de la toile, un scan de port peut-être une chose utile afin de vérifier les services qui sont disponibles.
Un scan de port permet de voir tous les ports ouvert sur un système et nmap est le numéro un dans le domaine.
Un scanner de ports fonctionne de la façon suivante : il essaie de se connecter sur tous les ports d'une machine et fait un rapport ensuite de ce qu'il a pu observer.
Par exemple, un scanner peut se connecter à :
* port 1 - afin de voir si tcpmux tourne. * port 7 - voir si echo est lancé. * .. * port 22 - afin de voir si openssh est disponible. * etc...Afin d'avoir une liste des ports associés aux services, vous pouvez jeter un oeil au fichier /etc/services.
Après chaque connexion à chaque port, si une réponse est obtenue elle sera affichée. nmap permet également de faire beaucoup plus que juste le listing de chaque port ouvert :
Lorsque cela est possible, nmap va identifier la version de chaque service lancé sur la machine. Par exemple, sur le port 80, celui du serveur web, il essaiera de déterminer la version d'Apache si vous l'utilisez.
Il peut également identifier le système d'exploitation distant.
Une utilisation classique de nmap est de lancer la commande avec le nom de l'hôte ou l'adresse IP à scanner :
es@eden:~$ nmap 192.168.0.120 Interesting ports on mystery (192.168.0.120): (The 1657 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 743/tcp open unknown 2049/tcp open nfs 3632/tcp open distccd Nmap finished: 1 IP address (1 host up) scanned in 0.205 secondsDes exemples plus complèxes incluent l'identification des numéros de version des services tournant sur la machine distante à l'aide de l'option -sV (sV=software version). Testons la commande précedente avec l'option en question :
es@eden:~$ nmap -sV 192.168.0.120 Interesting ports on mystery (192.168.0.120): (The 1658 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.1p1 (protocol 2.0) 743/tcp open mountd 1-2 (rpc #100005) 2049/tcp open nfs 2 (rpc #100003) 3632/tcp open distccd? Nmap finished: 1 IP address (1 host up) scanned in 82.316 secondsComme vous pouvez le constater, cette fois-ci la commande à mis beaucoup plus de temps à se terminer.
Il existe de nombreuses options disponible et quelques unes d'entre-elles nécessittent les droits root pour être exécutées comme par exemple la détection du système d'exploitation.
Pour essayer d'identifier le système d'exploitation distant, en tant que root, il faut ajouter l'option -O :
root@eden:~# nmap -O localhost Interesting ports on localhost.localdomain (127.0.0.1): (The 1655 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 111/tcp open rpcbind 743/tcp open unknown 3306/tcp open mysql 3632/tcp open distccd Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Linux 2.6.3 - 2.6.8 Uptime 0.300 days (since Fri Jul 8 18:29:11 2005) Nmap finished: 1 IP address (1 host up) scanned in 2.390 seconds
La page de manuel donne de nombreux exemples que vous pouvez utiliser. Afin de consulter la page de manuel :
es@eden:~$ man nmap
![]() | Avertissement |
|---|---|
Les scans de port devraient être fait uniquement sur les systèmes que vous administrez. Les scans de ports peuvent être considérés comme des attaques. | |
Lorsqu'on se fait scanner, on peut s'en rendre compte dans les logs du système dans le fichier /var/log/auth.log :
hell sshd[6046]: Did not receive identification string from 192.168.1.120Ici, nous pouvons observer qu'une connexion à été faite au serveur OpenSSH sur la machine "hell" mais qu'aucune authentification n'a été faite. En fait, nmap s'est juste connecté au port, a enregistré la réponse et s'est immédiatement terminé.
En examinant vos logs, vous pouvez détecter ce type de connexions en utilisant des outils comme logcheck ou logwatch.
La meilleure défense contre les scans de ports ? Avoir un pare-feu pour s'assurer d'avoir uniquement que les services désirés d'accesible. Les services sensibles tels SSH devraient être restreints aux hôtes devant se connecter.
Une défense plus active serait d'utiliser d'autres outils tels que portsentry qui a la possibilité de déterminer et rejeter les scans de port. Un autre outil également disponible est scandetd.
- Ajouter un commentaire

![[Avertissement]](images/warning.png)