Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

Outils TCP/IP et LINUX

Les outils de base



Les outils suivants sont indispensables à connaître lorsque l'on utilise un système sous Linux et en particulier dans l'administration réseau sous Linux.


Ping


Cette commande permet de vérifier si une machine distante répond en lui envoyant des paquets ICMP ECHO_REQUEST. On dit aussi pinguer la machine distante. La dite machine répond en renvoyant le paquet à la machine expéditrice. La syntaxe est des plus simple ; par exemple pour envoyer 5 pings à la machine dont l'adresse IP est 192.168.0.1, on tape la commande suivante :


$ ping -c 5 192.168.0.1


On peut aussi utiliser le nom de la machine, si celle-ci est renseignée dans votre fichier Hosts ou sur un serveur DNS.

Si vous ne placez pas l'option -c 5 pour n'envoyer que 5 pings, la commande ne s'arrête pas. Utilisez alors Ctrl C.


ifconfig


La commande ifconfig permet de configurer une interface réseau (c'est le concept informatique qui correspondant à une carte réseau). Les interfaces éthernet sont désignées par ethx où x prend les valeurs 0, 1, 2, etc. La première carte étant désignée par eth0.


Pour affecter l'adresse de classe C 192.168.0.2 à la première interface de notre machine, nous devons taper la commande suivante :


$ ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255


Comme les valeurs que nous venons de donner sont standards (le netmask et broadcast proposés sont ceux correspondant à une adresse de classe C), nous pouvions simplement taper :


$ ifconfig eth0 192.168.0.2


Attention au redémarrage de la machine ce changement sera perdu. Il nous faut donc modifier en même temps le fichier /etc/sysconfig/network-script/ifcfg-eth0 (Voir dans la suite de ce dossier)

Nous pouvons utiliser linuxconf pour faire plus simplement le même travail.


On peut aussi désactiver une carte réseau :


$ ifconfig eth0 down


et bien sûr la réactiver :


$ ifconfig eth0 up


arp


La commande arp permet de mettre en correspondance des adresses IP et les adresses MAC en manipulant la table ARP du système. Sa syntaxe simplifiée se présente comme suit :


arp [-vn] [-i if] [-H type] -a [nom_machine]

arp [-v] [-H type] [-i if] -d nom_machine

arp [-v] [-H type] [-i if] -s nom_machine adre_mac


Les options les plus importantes sont :


-a [nom_machine] : afficher les entrées concernant la machine spécifiée et si une machine n'est pas spécifiée, toutes les entrées ARP de la table


-d nom_de_la_machine : pour supprimer de la table une entrée pour la machine spécifiée ;


arp -s nom_machine adr_mac : crée manuellement une correspondance d'adresse ARP pour la machine nom_machine avec l'adresse matérielle (MAC) positionnée à adr_mac


route


Cette commande permet de voir, d'ajouter ou d'enlever les routes se trouvant déclarées sur votre machine. Ainsi pour indiquer à votre machine où aller trouver les adresses qui ne sont pas les adresses de votre réseau local, nous devons lui indiquer la passerelle (ou gateway) vers laquelle elle doit envoyer tous les paquets.


Pour voir les routes il suffit d'indiquer :


$ route -n


L'option -n permet de ne pas avoir la résolution des noms.

On peut aussi utiliser netstat -nr


Pour ajouter une route par defaut (La passerelle vers qui j'envoie tous les paquets qui ne sont pas pour le réseau local, en supposant que l'adresse de cette passerelle est 192.168.0.1):


$ route add default gateway 192.168.0.1


Pour détruire cette route :


$ route del default


Pour ajouter une route vers une machine il faut indiquer (Indiquer aussi le netmask si celui-ci n'est pas un mask correspondant à la classe de votre adresse) :


$ route add -host 195.98.246.28 gateway 192.168.0.1


Pour ajouter une route vers un réseau indiquer :


$ route add -net 195.98.246.0 netmask 255.255.0.0 gateway 192.168.0.1


Enfin pour supprimer une de ces routes remplacer add par del.


La gateway ou passerelle correspond la plupart du temps à votre routeur.

Pour avoir la route que vous venez d'ajouter à chaque démarrage placer la commande dans le fichier /etc/rc.d/rc.local par exemple.

On peut aussi utiliser
linuxconf pour faire la même chose.


Netstat


Cette commande affiche les connexions réseau, les tables de routage, les statistiques des interfaces, les connexions masquées. Elle permet en effet de connaître les ports en écoute sur votre machine, sur quelles interfaces, avec quels protocoles de transport (TCP ou UDP), les connexions actives et de connaître les routes. Elles a un grand nombre d'options (cf man netstat).


Pour voir les connexions actives :


$ netstat -nt


Pour voir les ports ouverts :


$ netstat -ntl


On peut aussi vérifier s'il existe une route par défaut, par exemple existe-t-il une route par défaut vers la machine 195.98.246.28 en utilisant la commande comme suit :


$ netstat -nr | grep 195.98.246.28


L'option -a énumère les ports en cours d'utilisation ou ceux qui sont écoutés par le serveur.

L'option -i donne des informations sur les interfaces réseau.


Lsof


La commande lsofpermet de lister les fichiers ouverts et les processus actifs.


Pour indiquer les processus de type internet :


$ lsof -i


On peut ne demander que pour un protocole lsof -ni tcp:25 ou que vers une machine :


$ lsof -ni @192.168.0.1:25


Pour connaître tous les fichiers ouverts par sur /hda1 :


$ lsof /dev/hda1.


Pour connaître tous les ports réseau ouvert par le processus 1234 (-a est interprété comme AND) :


$ lsof -i -a -p 1234


La forme suivante de la commande permet de connaître tous les fichiers ouverts par l'utilisateur 500 ou toto ou par le processus 1234 ou 12345.


$ lsof -p 1234, 12345 -u 500, toto


traceroute


Traceroute permet de déterminer la route prise par un paquet pour atteindre la cible sur internet. On peut utiliser soit l'adresse IP, soit le nom d'hôte. Attention certains FireWall ou routeurs ne se laissent pas voir avec la commande traceroute.


La commande traceroute est très utile pour savoir ou peut se trouver un blocage (plutôt ralentissement). Il existe un grand nombre d'options, entre autre il est possible de choisir les gateway (jusqu'à 8) pour atteindre une machine. Je vous conseille donc encore une fois de lire le man traceroute.


Telnet


Telnet était l'outil indispensable à connaître. Malheureusement, elle pose de sérieux problèmes de sécurité (elle transmet les mots de passe en clair sur le réseau). C'est pourquoi on lui préfère la commande ssh (ou la version autorisée en France ssf) surtout si on doit s'en servir sur un réseau local ou sur internet.


Ftp


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.


Tcpdump


La commande tcpdump permet de faire des captures de paquets sur votre réseau. Il n'est pas le plus agréable à utiliser des utilitaires de ce type, des plus conviviaux existent. C'est un utilitaire qui peut autant être utilisé par les administrateurs que par des pirates. On peut par exemple l'utiliser pour capturer les mots de passe qui circulent en clair sur son réseau ou encore pour vérifier par exemple lorsque son routeur monte la ligne sans que l'on sache l'origine de cette montée de ligne. Comme de plus cela arrive la nuit (toujours quand on n'est pas là..!), il peut être utile de placer tcpdump et de capturer les paquets à destination de votre routeur et uniquement cela. Au petit matin en analysant le résultat vous savez quelle machine et quel protocole monte la ligne.


Par exemple pour intercepter tous les paquets vers la machine 10.100.1.5 sur le port telnet :


$ tcpdump -l -q -x host 10.100.1.5 and port telnet


Pour intercepter tous les paquets d'une machine vers une autre sur le port telnet :


$ tcpdump -l -q -x dst 10.100.1.5 and src 10.100.1.19 and port telnet and tcp


Pour avoir tous les paquets qui arrivent sur votre machine 10.100.1.5 ne pas indiquer la source.


Nmap


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.


Exemple :


[root@misfu christophe]# nmap -v -sU -sT 192.168.200.1

Starting nmap V. x.x 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.


top


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.




Par l'équipe technique A.N.F.A