follow me !

Introduction aux scans de port avec nmap

Nmap :: Introduction aux scans de ports

Nmap :: Introduction aux scans de ports

Edi Stojicevic

Ce document est publié sous la licence GNU FDL

Historique des versions
Version 0.12005ES
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 seconds
	
Des 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 seconds
	
Comme 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]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.120
	
Ici, 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.