{"id":37,"date":"2008-03-16T17:01:06","date_gmt":"2008-03-16T16:01:06","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=37"},"modified":"2008-03-16T17:01:06","modified_gmt":"2008-03-16T16:01:06","slug":"ping-traceroute-et-nmap","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2008\/03\/ping-traceroute-et-nmap\/","title":{"rendered":"ping, traceroute et nmap"},"content":{"rendered":"<p>Lorsque vous devez tester un r\u00e9seau, il y a plusieurs commandes que vous pouvez utiliser.<\/p>\n<h3>Ping<\/h3>\n<p>La plus simple des commandes mais sans doute aussi la plus utile pour tester si une connexion existe entre deux machines. ping vous dira si la connexion est \u00e9tablie pour autant que la machine que vous pingez soit configur\u00e9e pour y r\u00e9pondre.<\/p>\n<pre class=\"codesource\">$ ping 192.168.8.1\r\nPING 192.168.8.1 (192.168.8.1) 56(84) bytes of data.\r\n64 bytes from 192.168.8.1: icmp_seq=1 ttl=64 time=0.733 ms\r\n64 bytes from 192.168.8.1: icmp_seq=2 ttl=64 time=0.719 ms\r\n...<\/pre>\n<h3>Traceroute<\/h3>\n<p>Une deuxi\u00e8me possibilit\u00e9 est d&rsquo;utiliser la commande traceroute qui vous donne le chemin parcouru pour arriver jusqu&rsquo;\u00e0 une machine ou adresse. Cela correspond \u00e0 une liste de machine, routeurs par o\u00f9 on passe pour arriver \u00e0 la machine demand\u00e9e. Par exemple voici le r\u00e9sultat d&rsquo;un traceroute sur www.ubuntu-fr.org:<\/p>\n<pre class=\"codesource\">$ traceroute www.ubuntu-fr.org\r\ntraceroute to www.ubuntu-fr.org (213.95.41.13), 30 hops max, 40 byte packets\r\n1  192.168.8.1 (192.168.8.1)  1.755 ms  2.491 ms  3.158 ms\r\n2  1.114-67-87.adsl-dyn.isp.belgacom.be (87.67.114.1)  10.724 ms  12.454 ms  14.002 ms\r\n3  93.251-244-81.adsl-static.isp.belgacom.be (81.244.251.93)  17.766 ms  19.006 ms  20.737 ms\r\n4  ge0-0.intlstr1.isp.belgacom.be (194.78.0.46)  23.415 ms ge1-0.intlstr1.isp.belgacom.be (194.78.0.146)  23.968 ms  25.596 ms\r\n5  80.84.20.34 (80.84.20.34)  28.274 ms  29.891 ms  31.404 ms\r\n6  80.84.18.26 (80.84.18.26)  38.934 ms  15.355 ms  15.928 ms\r\n7  80.84.18.24 (80.84.18.24)  23.469 ms  24.521 ms  25.561 ms\r\n8  gec1-rt1-ffm2.core.noris.net (80.81.192.88)  28.011 ms  29.210 ms  31.862 ms\r\n9  vl604-rt3-nbg3.core.noris.net (213.95.0.197)  36.367 ms  39.095 ms  39.801 ms\r\n10  vl31-rt1-nbg3.access.noris.net (62.128.25.137)  41.825 ms  43.582 ms  44.712 ms\r\n11  lisa.ubuntu-eu.org (213.95.41.13)  46.736 ms  50.008 ms  51.416 ms<\/pre>\n<p>On part de mon PC pour arriver d&rsquo;abord sur mon routeur (192.168.8.1). Ensuite on a un ensemble de machines appartenant \u00e0 mon FAI, d&rsquo;autres encore pour finalement arriver sur lisa qui est la machine h\u00e9bergeant le serveur web de Ubuntu-fr.org.<\/p>\n<p>Traceroute donne des renseignements int\u00e9ressants dans ce sens que si la connexion est coup\u00e9e, il nous indique o\u00f9.<\/p>\n<h3>Nmap<\/h3>\n<p>Il y a une autre commande moins connue mais tr\u00e8s int\u00e9ressante, nmap. C&rsquo;est un scanner de ports. il est capable d&rsquo;utiliser plusieurs m\u00e9thodes pour cela. Il vous dira quels sont les ports ouverts sur quelle machine et peut m\u00eame vous dire le syst\u00e8me d&rsquo;exploitation utilis\u00e9. Mais tout d&rsquo;abord, il faut l&rsquo;installer parce que cet outil ne l&rsquo;est pas par d\u00e9faut dans <em>Ubuntu<\/em>:<\/p>\n<pre class=\"codesource\">$ sudo aptitude install nmap<\/pre>\n<p>Pour faire son scan des ports c&rsquo;est \u00e0 dire d\u00e9tecter les ports qui sont ouverts qur une machine, nmap utilise les caract\u00e9ristiques des connexions TCP. TCP \u00e9tant orient\u00e9 connexion, un \u00e9change est entam\u00e9 avec le serveur chaque fois qu&rsquo;on d\u00e9sire se connecter sur ce serveur.<\/p>\n<p><a href=\"http:\/\/linux.leunen.com\/wp-content\/uploads\/2008\/03\/nmap1.png\" title=\"Connexion TCP\"><img src=\"http:\/\/linux.leunen.com\/wp-content\/uploads\/2008\/03\/nmap1.png\" alt=\"Connexion TCP\" class=\"center\" \/><\/a><\/p>\n<p>Pour d\u00e9buter la connexion, le client envoie au serveur un paquet IP contenant le flag SYN. Le serveur lui r\u00e9pond en renvoyant un paquet IP et mettant \u00e0 1 les flags SYN et ACK de ce paquet. ACK signifie qu&rsquo;il a compris la demande. Il indique toujours une confirmation. Le client ensuite envoie lui-aussi un ACK et l&rsquo;\u00e9change de donn\u00e9es peut commencer avec le serveur. Lorsque le client en a termin\u00e9 et veut arr\u00eater la connexion avec le serveur, il envoie un paquet au serveur contenant les flags FIN et ACK. Le serveur r\u00e9pond par un ACK disant qu&rsquo;il a compris et envoie \u00e0 son tour la demande de de fin de la connexion en envoyant au client un paquet contenant les flag FIN et ACK. Le client lui r\u00e9pond par un ACK et la connexion est termin\u00e9e.<\/p>\n<p>nmap se base sur cet \u00e9change pour proposer plusieurs type de scan:<\/p>\n<ul>\n<li> scan complet avec \u00e9tablissement de la connexion<\/li>\n<li>scan SYN, seul un paquet contenant le flag SYN est envoy\u00e9 au serveurscan FIN, un paquet est envoy\u00e9 au serveur. La norme sp\u00e9cifie qu&rsquo;un port ferm\u00e9 doit r\u00e9pondre \u00e0 ce paquet alors que les ports ouverts l&rsquo;ignorent.<\/li>\n<li>scan ACK, m\u00eame principe que pour le scan FIN<\/li>\n<li>&#8230;<\/li>\n<\/ul>\n<p>La commande nmap accepte un certain nombre de switches dont les principaux sont les suivants:<\/p>\n<ul>\n<li> -sP  ping scan<\/li>\n<li>-sL n&rsquo;envoie rien, fait juste un reverse DNS sur l&rsquo;adresse sp\u00e9cifi\u00e9e<\/li>\n<li>-sS SYN scan<\/li>\n<li>-sT TCP connect scan. Etablit une connexion compl\u00e8te avec le serveur<\/li>\n<li>-sA ACK scan<\/li>\n<li>-sO protocol scan<\/li>\n<li>-sU scan en UDP<\/li>\n<li>-O d\u00e9tection du syst\u00e8me d&rsquo;exploitation<\/li>\n<li>-Tx timing. La valeur x (de 1 \u00e0 5) d\u00e9termine le temps de r\u00e9ponse accept\u00e9<\/li>\n<li>-A d\u00e9tection du syst\u00e8me d&rsquo;exploitation de la version et traceroute<\/li>\n<li>-p x sp\u00e9cifie le port<\/li>\n<\/ul>\n<p>Il y a bien d&rsquo;autres possibilit\u00e9s. Je vous renvoie \u00e0 la man page de nmap pour une description de toutes les possibilit\u00e9s de nmap.<\/p>\n<p>A titre d&rsquo;exemple voici le r\u00e9sultat de la commande suivante appliqu\u00e9e \u00e0 mon r\u00e9seau chez oi (scan des adresses 192.168.8.1 \u00e0 192.168.8.20):<\/p>\n<pre class=\"codesource\">$ sudo nmap -A -T4 192.168.8.1-20\r\n\r\nStarting Nmap 4.53 ( http:\/\/insecure.org ) at 2008-03-08 13:22 CET\r\nSCRIPT ENGINE: rpcinfo.nse is not a file.\r\nSCRIPT ENGINE: Aborting script scan.\r\nInteresting ports on 192.168.8.1:\r\nNot shown: 1712 filtered ports\r\nPORT   STATE SERVICE VERSION\r\n23\/tcp open  telnet  Cisco or Edge-core switch telnetd\r\n80\/tcp open  http    Apache httpd 0.6.5\r\nMAC Address: 00:xx:xx:xx:xx:xx (Aceex)\r\nWarning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port\r\nDevice type: broadband router\r\nRunning: Aceex embedded\r\nOS details: Aceex BR41 broadband router\r\nNetwork Distance: 1 hop\r\nService Info: Device: switch\r\n\r\nInteresting ports on 192.168.8.2:\r\nNot shown: 1712 filtered ports\r\nPORT    STATE SERVICE      VERSION\r\n139\/tcp open  netbios-ssn\r\n445\/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds\r\nMAC Address: 00:xx:xx:xx:xx:xx (Asustek Computer)\r\nWarning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port\r\nDevice type: general purpose\r\nRunning: Microsoft Windows XP\r\nOS details: Microsoft Windows XP SP2\r\nNetwork Distance: 1 hop\r\nService Info: OS: Windows\r\n\r\nSCRIPT ENGINE: rpcinfo.nse is not a file.\r\nSCRIPT ENGINE: Aborting script scan.\r\nInteresting ports on 192.168.8.3:\r\nNot shown: 1711 closed ports\r\nPORT    STATE SERVICE     VERSION\r\n139\/tcp open  netbios-ssn Samba smbd 3.X (workgroup: HOME)\r\n445\/tcp open  netbios-ssn Samba smbd 3.X (workgroup: HOME)\r\n631\/tcp open  ipp         CUPS 1.2\r\nDevice type: general purpose\r\nRunning: Linux 2.6.X\r\nOS details: Linux 2.6.22 - 2.6.23\r\nUptime: 0.125 days (since Sat Mar  8 10:22:31 2008)\r\nNetwork Distance: 0 hops\r\n\r\nSCRIPT ENGINE: rpcinfo.nse is not a file.\r\nSCRIPT ENGINE: Aborting script scan.\r\nInteresting ports on 192.168.8.5:\r\nNot shown: 1711 filtered ports\r\nPORT    STATE SERVICE     VERSION\r\n135\/tcp open  msrpc       Microsoft Windows RPC\r\n139\/tcp open  netbios-ssn\r\n445\/tcp open  netbios-ssn\r\nMAC Address: 00:xx:xx:xx:xx:xx (Quanta Computer)\r\nWarning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port\r\nDevice type: general purpose\r\nRunning: Microsoft Windows Vista\r\nOS details: Microsoft Windows Vista, Microsoft Windows Vista Home Basic\r\nUptime: 0.059 days (since Sat Mar  8 11:57:45 2008)\r\nNetwork Distance: 1 hop\r\nService Info: OS: Windows\r\n\r\nAll 1714 scanned ports on 192.168.8.10 are closed\r\nMAC Address: 00:xx:xx:xx:xx:xx (Apple)\r\nDevice type: phone|media device|general purpose|web proxy|specialized\r\nRunning: Apple embedded, Apple Mac OS X 10.2.X|10.3.X|10.4.X|10.5.X, Blue Coat SGOS 5.X, FreeBSD 4.X, VMWare ESX Server 3.0.X\r\nToo many fingerprints match this host to give specific OS details\r\nNetwork Distance: 1 hop\r\nOS and Service detection performed. Please report any incorrect results at http:\/\/insecure.org\/nmap\/submit\/ .\r\nNmap done: 20 IP addresses (5 hosts up) scanned in 60.653 seconds<\/pre>\n<p>Outre les ports ouverts pour le partage de fichiers et d&rsquo;imprimantes, on voit sur le routeur qui a l&rsquo;adresse 192.168.8.1 que les ports 23 telnet et 80 web sont ouverts. Ce sont les deux ports qui permettent la gestion du routeur.<br \/>\nLa commande r\u00e9v\u00e8le aussi les MAC Address des PC et le syst\u00e8me d&rsquo;exploitation. Vous pouvez voir que mon r\u00e9seau est constitu\u00e9 d&rsquo;une machine sous Linux, d&rsquo;une machine sous Windows XP, d&rsquo;une autre sous Windows Vista et finalement d&rsquo;une quatri\u00e8me sous Mac OSX (Apple). M\u00eame le routeur est d\u00e9tect\u00e9 correctement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsque vous devez tester un r\u00e9seau, il y a plusieurs commandes que vous pouvez utiliser. Ping La plus simple des commandes mais sans doute aussi la plus utile pour tester si une connexion existe entre deux machines. ping vous dira si la connexion est \u00e9tablie pour autant que la machine que vous pingez soit configur\u00e9e [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12,5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/37"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":0,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}