
Pour info : U = routeur installé et opérationnel ; G = passerelle distante ; H = destination est un hôte et non un réseau.
|
|
Exemple : route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 10 0 0 eth1 82.216.92.0 * 255.255.252.0 U 10 0 0 eth0 default ip-1.net-82-216 0.0.0.0 UG 10 0 0 eth0 route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 10 0 0 eth1 82.216.92.0 0.0.0.0 255.255.252.0 U 10 0 0 eth0 0.0.0.0 82.216.92.1 0.0.0.0 UG 10 0 0 eth0 |
Pour info : U = routeur installé et opérationnel ; G = passerelle distante ; H = destination est un hôte et non un réseau.
Un examen de la table de routage vous permet de vérifier par exemple que la machine sur laquelle vous travaillez et qui se situe derrière une passerelle a bien une route par défaut qui lui permet d'aller vers l'extérieur (Destination : default).
Vous ne pouvez pas atteindre l'extérieur car vous n'avez pas cette route, 2 solutions :
* vous ajoutez la route pour la session en cours :
route add default gw adresseIP_de_la_passerelle
* vous modifiez le fichier de configuration du routage de manière à ce que la table contienne la route pour toutes les sessions : /etc/sysconfig/network
Vous ne pouvez pas atteindre l'extérieur car vous avez une route erronée, 2 solutions :
* vous modifiez la route pour la session en cours :
route del default gw adresseIP_de_la_passerelle_erronée
route add default gw adresseIP_de_la_passerelle_correcte
* vous modifiez le fichier de configuration du routage de manière à ce que la table contienne la route correcte pour toutes les sessions : /etc/sysconfig/network
Telnet permet d'acceder à une machine distante. C'est aussi un excellent outil de diagnostic et de vérification du fonctionnement ou non d'un service en se connectant sur son port. Il permet également de vérifier la validité d'une règle de firewall.
La syntaxe : telnet
Exemple :
Je souhaite vérifier le bon fonctionnement de mon service ftp. Après vérification dans /etc/services, je sais que le port correspondant au serveur ftp est le 21.
* 1er cas de figure :
telnet 192.168.0.3 21
Trying 192.168.0.3...
Connected to 192.168.0.3.
Escape character is '^]'.
220 ProFTP Server Ready
La connexion est réussie, le serveur est opérationnel.
* 2e cas de figure :
telnet 192.168.0.3 21
Trying 192.168.0.3...
telnet: connect to address 192.168.0.3: Connection refused
La connexion est impossible, le service n'est pas disponible.
ftp est un outil qui permet de télécharger des fichiers entre machines. Attention toutefois le serveur ftp pose un problème de sécurité important, utilisez plutôt SFTP, qui est disponible avec SSH.
Il s'agit d'un outil qui permet de visualiser les paquets qui circulent vers et/ou à partir d'une interface réseau et ce, en temps réel.
C'est à la fois un outil de diagnostic sécurité mais aussi un outil de détection d'anomalies de la configuration IP ou matérielle.
# tcpdump
tcpdump: listening on eth0
Il est possible de sélectionner les paquets à "écouter" en fonction d'expressions. Ainsi, ne seront affichées / traitées que les informations pour lesquelles le résultat de l'expression est vérifié. Une expression est composée d'un mot clé suivi d'une valeur numérique ou autre. Ainsi, il est possible de classer les mots clés en catégories :
# Les mots clés permettant de définir une direction. Entrent dans cette catégorie les mots src (source) et dst (destination). Il est possible de combiner ces deux mots clés avec les opérations logiques and (et) et or (ou). On peut ainsi définir avec précision la source et/ou la destionation des paquets qui nous intéressent.
# Les mots clés permettant de définir le type de valeur que nous préciserons. Il peut s'agir d'un hôte (host), d'un réseau (net) ou encore d'un port (port).
# Enfin, nous avons les mots clés concernant les protocoles. Ici, les mots sont suffisamment clairs pour se passer d'explications (par exemple, ip, tcp, udp ...)
Si tout ceci ne vous paraît pas limpide, nous allons tâcher de clarifier cela avec quelques exemples :
# tcpdump src 192.168.0.1
Ici, les seuls paquets affichés sont ceux en provenance de 192.168.0.1. Nous pouvons également préciser nos préférences en ajoutant un critère :
# tcpdump src 192.168.0.1 and port 80
Là, le seul port qui nous intéresse est 80 (http). Si nous poussons le vice, nous pouvons spécifier l'ensemble des paramètres nécessaires :
# tcpdump src host 192.168.0.1 and dst host 212.208.225.1 and port 53 and udp
Voici une ligne complète qui ne laisse vraiment passer que les paquets qui nous intéressent, c'est à dire, en provenance de 192.168.0.1 vers 212.208.225.1, sur le port 53 en udp. Et ce qui nous intéresse ici, ce sont les requêtes sur le serveur DNS du provider Internet.
Pour faire vos tests, utilisez cette commande (adaptée à vos besoins) sur une console virtuelle et sur une seconde console, lancez une requête sur le serveur DNS (nslookup www.linux.org par exemple). Vous verrez alors apparaître des lignes ressemblant à ceci sur la première console :
tcpdump: listening on eth0
22:33:29.070616 raven.32778 > ns1.rmcnet.fr.domain: 47038+[|domain] (DF)
22:33:29.072863 raven.32779 > ns1.rmcnet.fr.domain: 45315+[|domain] (DF)
22:33:29.128966 raven.32780 > ns1.rmcnet.fr.domain: 47039+[|domain] (DF)
Pour poursuivre avec cet exemple, nous allons maintenant utiliser deux des options de la commande tcpdump. Attention, il s'agit d'options qui ne concernent en rien la composition des expressions de filtrage :
# tcpdump -x -X -s 0 src host 192.168.0.1 and dst host 212.208.225.1 and port 53 and udp
Nous avons demandé l'affichage du contenu des paquets au format hexadécimal et ascii (-x -X) et ce, quelle que soit leur taille (-s 0). Nous obtenons les informations désirées
Mais la partie la plus interessante concerne les accès à un serveur POP3. Comme nous l'avons fait pour l'exemple précédent, nous pouvons capturer le contenu de paquets à destination d'un serveur POP3
# tcpdump -X -s 0 dst host 192.168.0.10 and src host 192.168.0.1 and port 110 and tcp
Et voici le suprenant résultat :
|
20:51:50.690745 193.253.217.180.42034 > 193.252.19.209.pop3: P 0:11(11) ack 79 win 5808 (DF) 0x0000 4500 003f 0000 4000 4006 c939 c1fd d9b4 E..?..@.@..9.... 0x0010 c1fc 13d1 a432 006e b862 482d 520a 6b11 .....2.n.bH-R.k. 0x0020 8018 16b0 c3cf 0000 0101 080a 00a9 c278 ...............x 0x0030 0bfa 1f75 7573 6572 206f 6b6b 690d 0a ...uuser.bidon.. 20:51:50.745300 193.253.217.180.42034 > 193.252.19.209.pop3: P 11:25(14) ack 84 win 5808 (DF) 0x0000 4500 0042 0000 4000 4006 c936 c1fd d9b4 E..B..@.@..6.... 0x0010 c1fc 13d1 a432 006e b862 4838 520a 6b16 .....2.n.bH8R.k. 0x0020 8018 16b0 33d0 0000 0101 080a 00a9 c27e ....3..........~ 0x0030 0bfa 1f7a 7061 7373 2079 746b 6b76 7875 ...zpass.coucou 0x0040 0d0a |
La partie intéressante est bien sûr les deux derniers paquets. On lit clairement dans leur contenu ASCII les mentions "user.bidon" et surtout, "pass.coucou". En effet, dans la RFC 1725 décrivant le protocole Post Office en Version 3 (POP3), on découvre que les informations d'identification et d'authentification circulent de manière non chiffrée entre le client et le serveur.
Il serait possible en une seule journée de récupérer, grâce à tcpdump et un script Perl ou Awk, l'ensemble des noms d'utilisateurs et des mots de passe POP3 de toutes les personnes possédant un compte email dans une entreprise. Mais, dans la réalité, ceci est encore plus simple ...
nmap est un outil pour scanner les ports ouverts sur une machine distante. Son utilisation est des plus simple :
|
Pour scanner une machine
$ nmap 192.168.0.1 Pour scanner les machines se trouvant dans le plan d'adressage 192.168.0.0/24 : $ nmap 192.168.0.0/24 Utilisez l'option -v pour avoir plus d'informations. On peut bien sûr ne scanner que certains protocoles, par défaut le protocole scanné est TCP. Pour scanner les deux, TCP et UDP : $ nmap -v -sU -sT 192.168.0.1 Les options disponibles sont : -sT Scanne les ports TCP -sU pour UDP (attention cela est inscrit dans les fichiers de log de la machine cible). -sS Est identique au précédent sauf que cela ne laisse pas de trace. (il y a une différence quant à la méthode mais cela n'est pas l'objet de cette présentation). -sP En fait un ping. -p 20-140 Ne scanne que les ports entre 20 et 140 ; -p 1024- scanne tous les ports à partir de 1024 ; -I Pour avoir plus d'information sur le port ouvert, ne marche que si identd n?est pas utilisé sur la machine cible. -O Permet de connaître l?os (voir aussi ?osscan_guess). -P0 Permet de scanner les machines qui n?autorisent pas les ICMP echo request. [root@aleu philippe]# nmap -v -sU -sT 192.168.200.1 Starting nmap V. 2.30BETA17 by fyodor@insecure.org ( www.insecure.org/nmap/ ) Host (192.168.200.1) appears to be up ... good. Initiating TCP connect() scan against (192.168.200.1) Adding TCP port 139 (state Open). Adding TCP port 25 (state Open). Adding TCP port 110 (state Open). Adding TCP port 21 (state Open). Adding TCP port 135 (state Open). Adding TCP port 80 (state Open). Adding TCP port 1026 (state Open). The TCP connect scan took 1 seconds to scan 1534 ports. Initiating FIN,NULL, UDP, or Xmas stealth scan against (192.168.200.1) The UDP or stealth FIN/NULL/XMAS scan took 4 seconds to scan 1534 ports. Interesting ports on (192.168.200.1): Port State Service 21/tcp open ftp 25/tcp open smtp 80/tcp open http 110/tcp open pop-3 135/tcp open loc-srv 137/udp open netbios-ns 138/udp open netbios-dgm 139/tcp open netbios-ssn 1026/tcp open nterm Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds |
Il n'est pas installé par défaut sur votre machine, mais on commence à le trouver sur le CD d'installation des distributions. Il existe une interface graphique (installer nmap-frontend en version rpm).
Evitez de scanner des machines qui ne sont pas vos machines. Ce produit a pour vocation de vérifier si votre machine est correctement configurée, pas pour tester les autres.
Un outil indispensable. Il tourne comme daemon et vous pouvez voir les résultats (entre autre ) via une interface web par défaut sur le port 3000 qu'il est possible de changer avec l'option -w.