ADMINISTRATION ET MAINTENNACE D’UN … · est aujourd’hui systématiquement exprimée par le...

34
ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX Gestion d’un réseau local SYSTÈME D’EXPLOITATION GNU/LINUX CENTRE DES CLASSES DE PRÉPARATION DU BTS – ESSAOUIRA- Mr. Mostafa ESSADDOUKI ([email protected])

Transcript of ADMINISTRATION ET MAINTENNACE D’UN … · est aujourd’hui systématiquement exprimée par le...

ADMINISTRATIONETMAINTENNACED’UN

SYSTÈMEGNU/LINUX

Gestion d’un réseau local

SYSTÈME D’EXPLOITATION GNU/LINUX

CENTRE DES CLASSES DE PRÉPARATION DU BTS – ESSAOUIRA-

Mr. Mostafa ESSADDOUKI ([email protected])

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 2

TabledesmatièresI. Pré-requisetobjectifs.........................................................................................................4

Pré-requis...............................................................................................................................4 Objectifs.................................................................................................................................4

II. Configurationduréseau......................................................................................................5 AdressageIP...........................................................................................................................5a. AdressageIPv4etnotationCIDR.....................................................................................................5b. AdressageIPv6................................................................................................................................6 Configurationuniverselleduréseau......................................................................................8a. Déterminationdel’interface réseau...............................................................................................8b. Affectationdel’adresseIP:ifconfig................................................................................................8c. ConfigurationduclientDNS:fichier/etc/resolv.conf.....................................................................9d. Configurationdelapasserellepardéfaut: route...........................................................................9e. Configurationdunomd’hôte: hostname....................................................................................10 Spécificitésdesdistributions................................................................................................11a. Configurationréseaudans/etc/network......................................................................................11b. Configurationréseaudans/etc/sysconfig/network-scripts..........................................................12 Autrescommandesetfichiersdegestionduréseau...........................................................12a. GestiondesadressesMACavecarp..............................................................................................12b. TCPWrappers................................................................................................................................14 Configuration Wi-Fi.............................................................................................................15a. Déterminationdel’interfaceWi-Fi................................................................................................15b. Visualisationdesréseauxdisponibles...........................................................................................16c. Connexionàunréseaunonsécurisé.............................................................................................17

III. Diagnosticréseau..............................................................................................................18 Outilsdediagnosticencoucheréseau................................................................................18a. pingetping6..................................................................................................................................18b. Indicateursdelacommanderoute...............................................................................................18c. traceroute......................................................................................................................................19 Outilsdediagnosticencouchestransportetapplication....................................................19a. netstat...........................................................................................................................................19b. nc...................................................................................................................................................20 Diagnosticsetinformationsencoucheapplication.............................................................21a. lsof.................................................................................................................................................21b. Journauxsur/var/log/sysloget/var/log/messages......................................................................21 libpcapetlescapturesdepaquets......................................................................................22a. Labibliothèque libpcap.................................................................................................................22b. tcpdump........................................................................................................................................22c. Wireshark......................................................................................................................................23

IV. Configurationautomatiqueavec DHCP.............................................................................25 LeprotocoleDHCP...............................................................................................................25a. Fonctionnement............................................................................................................................25b. LeserviceDHCPsurlessystèmesLinux.........................................................................................26 Configurationduserveur.....................................................................................................26a. Lefonctionnementgénéralduserveur.........................................................................................27b. Lesparamètrestransmisauxclients.............................................................................................27c. Déclarationdeplagesd’adresses..................................................................................................27d. Paramètresspécifiquesàunemachine.........................................................................................28e. Serveursàplusieursinterfaces......................................................................................................29f. VisualisationdesbauxDHCP.........................................................................................................29 Configurationduclient........................................................................................................29 Agent relaisDHCP................................................................................................................30a. PrincipedurelaisDHCP.................................................................................................................30

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 3

b. Configurationdel’agentderelais.................................................................................................31V. Validationdesacquis:questions/réponses.......................................................................32

Questions.............................................................................................................................32 Réponses..............................................................................................................................33

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 4

I. Pré-requis et objectifs Pré-requis

Les connaissances acquises lors de la 1ère année, notamment :

Connaissances générales réseaux et modèle OSI.

Connaissances sommaire du démon syslog.

Objectifs

À la fin de ce chapitre, vous serez en mesure de :

Configurer le réseau d’un système en lignes de commande.

Gérer des routes statiques.

Utiliser les utilitaires de gestion arp.

Configurer les TCP Wrappers.

Connaître les commandes de gestion des réseaux Wi-Fi.

Capturer des trames sur le réseau.

Configurer un serveur DHCP basique.

Configurer une réservation DHCP.

Exploiter un client DHCP.

Configurer IPv6.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 5

II. Configuration du réseau AdressageIP

a. Adressage IPv4 et notation CIDR Les adresses IPv4 (adressage IP historique) sont exprimées sur 4 octets. Elles contiennent deux

informations fondamentales : l’adresse du réseau et l’adresse de l’hôte (la machine qu’on

souhaite identifier). Bien que l’adressage IP historique ait prévu une segmentation implicite des

réseaux selon les classes A, B et C, la dissociation entre l’adresse de réseau et l’adresse d’hôte

est aujourd’hui systématiquement exprimée par le masque de sous-réseau. Le masque de sous-

réseau, exprimé sur 4 octets également, est constitué d’autant de bits à 1 qu’il y a de bits utilisés

dans une adresse IP pour l’adressage du réseau. Les bits restants sont tous à zéro.

Exemple d’adresse IP et masque associé en décimal

192.168.1.5 255.255.255.0 Exemple d’adresse IP et masque associé en binaire

11000000.10101000.00000001.00000101 11111111.11111111.11111111.00000000 Dans cet exemple, on voit que les 24 premiers bits du masque sont à 1, ce qui indique donc que

les 24 premiers bits de l’adresse IP représentent l’adresse du réseau et les 8 derniers l’adresse

de l’hôte. L’adresse du réseau est donc conventionnellement notée 192.168.1.0, avec tous les

bits de la partie hôte à 0.

L’adjonction systématique du masque dans les configurations des éléments exploitant un

adressage IPv4 a fini par poser un problème d’utilisation de la mémoire des équipements,

notamment des routeurs : conserver en mémoire les 32 bits du masque en plus de ceux de

l’adresse représente une surcharge importante quand elle est multipliée par des milliers

d’adresses. Accessoirement, l’écriture de ce masque peut également sembler fastidieuse lors

des opérations de configuration. Pour ces raisons est apparue une nouvelle écriture pour le

masque, qui se résume alors au nombre de bits à 1 en tête de masque. L’adresse IP se note alors

A.B.C.D/n, n étant le nombre de bits à 1 du masque associé à l’adresse A.B.C.D. C’est la

notation CIDR (Classless Internet Domain Routing). Le masque est écrit sur un seul nombre

compris entre 0 et 32, il peut donc s’écrire rapidement et se coder sur un nombre réduit de bits

dans la mémoire des équipements.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 6

Adresse IP et masque en notation CIDR

192.168.1.5/24 b. Adressage IPv6

L’adressage IPv6 a été créé pour pallier le manque d’adresses IPv4 annoncé de longue date et

envisager l’avenir avec plus de sérénité. Le dernier bloc d’adresses IPv4 disponibles a été

attribué à un opérateur en 2011. Le passage à l’IPv6 n’est donc plus une option possible, mais

une réalité obligatoire à plus ou moins longue échéance.

Les adresses IPv6 sont exprimées sur 16 octets. Si elles sont traitées en binaire par les machines,

leur notation par les humains se fait toujours en hexadécimal, ce qui nous fait tout de même 32

caractères. IPv6 supporte naturellement comme son prédécesseur un adressage hiérarchique, et

sera donc systématiquement accompagné d’un masque de sous-réseau. Pour des raisons bien

compréhensibles, le masque sera toujours exprimé en notation CIDR.

L’adressage IPv6 reprend l’essentiel des principes de fonctionnement de son prédécesseur mais

fait tout de même l’objet de quelques différences importantes avec l’adressage IPv4.

Convention d’écriture

Les adresses IPv6 étant exprimées sur 16 octets et donc 32 caractères hexadécimaux, elles sont

souvent longues et fastidieuses à taper. Les octets sont regroupés par deux et séparés par des

doubles points. Par convention, on peut ignorer les 0 en tête d’un groupe de deux octets (4

caractères hexadécimaux). De même, on peut remplacer n’importe quelle suite de 0 dans

l’adresse par un « double deux points ». Naturellement, cette facilité d’écriture ne peut être

utilisée qu’une fois dans la notation d’une adresse.

Écritures simplifiées d’adresses IPv6

20a0:1234:5678::1 est équivalent à 20a0:1234:5678:0000:0000:0000:0000:0001 20a0:1:2:3:4:5:6:7 est équivalent à 20a0:0001:0002:0003:0004:0005:0006:0007

Adressage des hôtes d’un réseau IPv6

La partie hôte sur 64 bits d’une adresse IPv6 est la plupart du temps générée localement à partir

de l’adresse MAC de l’interface physique. L’adresse MAC est alors coupée en deux par le

milieu, et les caractères hexadécimaux fffe sont insérés pour atteindre les 64 bits. Par

convention, le deuxième bit de poids faible du premier octet de l’adresse MAC est basculé à 1

pour la création de l’adresse IPv6. La partie hôte de l’adresse IPv6 peut également être attribuée

de façon pseudo-aléatoire (à partir d’un hash de l’adresse MAC), ou tout simplement être

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 7

configurée à la main. Dans ce cas, on aura avantage à choisir une valeur faible pour simplifier

l’écriture de l’adresse IPv6.

Adresse IPv6 générée à partir de l’adresse MAC

root@alpha:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:1c:23:59:d1:8c inet adr:172.17.6.23 Bcast:172.17.6.255 Masque:255.255.255.0 adr inet6: fe80::21c:23ff:fe59:d18c/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:191 erreurs:0 :0 overruns:0 frame:0 TX packets:235 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:53297 (53.2 KB) Octets transmis:33216 (33.2 KB) Interruption:17 root@alpha:~#

Adresse de lien local

Toute machine supportant IPv6 dispose d’une adresse dite « de lien local » non routable et auto-

attribuée. Cette adresse lui permet de communiquer avec d’autres équipements IPv6 (serveur

DHCP par exemple) avant toute configuration plus générale. L’adresse de lien local commence

toujours par fe80, et la partie hôte de l’adresse est générée localement, en principe à partir de

l’adresse MAC de l’interface.

Adresse globale

Une adresse globale est routable, elle permet donc à la machine de communiquer en IPv6 avec

des correspondants situés sur d’autres réseaux. La partie réseau de l’adresse globale est imposée

par l’opérateur ou le fournisseur d’accès. Elle est naturellement unique sur Internet. La partie

hôte de l’adresse est générée localement à partir de l’adresse MAC ou configurée

manuellement. La configuration de l’adresse de réseau IPv6 peut se faire manuellement, par

DHCPv6, ou encore par découverte automatique.

Configuration automatique des adresses

Dans la plupart des cas, on s’appuie sur un serveur DHCPv6 qui distribue les adresses IPv6 aux

stations qui en font la demande. Le serveur en profitera pour tenir la comptabilité des adresses

distribuées. Les adresses peuvent également être obtenues par observation des annonces du

routeur, qui vont renseigner sur l’adresse globale utilisée sur le réseau local.

Plus de broadcast

Devenus rares en IPv4, les broadcasts disparaissent complètement du paysage IPv6. Cela ne

devrait pas constituer un traumatisme pour les applications, qui fonctionnent déjà en multicast

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 8

dans la plupart des situations exigeant une communication de type « un vers plusieurs ». Les

modes de communications sont donc l’unicast, le multicast et l’anycast (un vers certains).

ConfigurationuniverselleduréseauChaque distribution Linux essaye de faire en sorte que les paramètres réseau soient aussi faciles

que possible à configurer. Le but est souvent de ne pas souffrir de la comparaison avec

Windows, et de faire en sorte que l’utilisateur ait à sa disposition une interface intuitive et facile

à configurer. Cette configuration se fait avec des utilitaires, graphiques ou non, et des fichiers

de configuration que liront les scripts de lancement du réseau.

Indépendamment de ces éléments de confort apportés par les distributions ou les bureaux

graphiques, on aura toujours, quelle que soit la distribution et l’environnement, les commandes

de base permettant la configuration du réseau, à savoir l’adresse ip, la route par défaut, et

l’adresse des serveurs DNS. La démarche indiquée ci-dessous, si elle n’est pas la plus rapide

(quoique), a l’avantage de l’universalité.

a. Détermination de l’interface réseau

Les systèmes Linux utilisent un nom symbolique par interface réseau, qu’il s’agisse d’une

interface réelle ou virtuelle, ethernet ou autre. Dans le cas courant où le système est connecté à

un réseau ethernet et n’utilise qu’une seule carte, cette carte sera désignée « eth0 ». On pourra

déterminer la liste de toutes les interfaces réseaux existant sur un système, configurée ou non

par la commandeifconfig.

Détermination des interfaces réseau par la commande ifconfig

ifconfig -a b. Affectation de l’adresse IP : ifconfig

La commande ifconfig a de nombreux usages, et elle est surtout connue pour afficher les

adresses MAC et IP pour un système déjà configuré. Néanmoins, la commande ifconfig peut

aussi être utilisée pour affecter dynamiquement l’adresse et le masque d’une machine.

Affectation d’une adresse IPv4 avec la commande ifconfig

ifconfig interface adresse_ipv4 ifconfig interface netmask masque

Même si ça n’est pas le plus courant des usages, il est possible d’ajouter une deuxième adresse

IP à une interface déjà configurée.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 9

Ajout d’une adresse IPv4 secondaire à une interface

ifconfig interface:sous-interface adresse_ipv4

Ajout d’une adresse IPv6 avec la commande ifconfig

ifconfig add adresse_ipv6/préfixe

c. Configuration du client DNS : fichier /etc/resolv.conf

Les machines Linux disposent nativement d’un client DNS appelé resolver. Toute application

fonctionnant sur Linux et ayant besoin de faire une requête DNS s’appuiera sur ce composant.

Il exploite le fichier de configuration simple /etc/resolv.conf où doit se trouver la référence

d’au moins un serveur DNS.

Format simplifié du fichier /etc/resolv.conf

search domaine

nameserver adresse_ip

Certaines documentations préconisent l’usage de la commande hostname -d pour

connaître le suffixe DNS d’un système. Il s’agit du suffixe attaché au nom d’hôte, et non au client DNS. Il n’est donc pas consulté lors des résolutions DNS.

d. Configuration de la passerelle par défaut : route

La commande route permet de définir des routes statiques sur une machine Linux. Dans le

cadre d’une configuration simple et ponctuelle, on pourra l’utiliser pour définir la passerelle

par défaut. Il s’agira en fait de déclarer une route statique indiquant la route par défaut.

Syntaxe de la commande route pour indiquer une route statique

Commande ifconfig : options et paramètres

interface Nom Linux de l’interface. Par exemple eth0.

sous-interface Nom arbitraire de la sous-interface. Chaîne de caractères quelconque.

adresse_ipv4 Adresse IPv4 à affecter à l’interface.

masque Valeur du masque de sous-réseau associé à l’adresse IP.

adresse_ipv6 Adresse IPv6 à affecter à l’interface.

préfixe Nombre de bits du masque en notation CIDR.

Fichier /etc/resolv.conf : directives et variables utilisées

search Facultatif : indique le suffixe de recherche employé sur le poste Linux. Permet de ne pas taper l’intégralité du nom de domaine pleinement qualifié (FQDN) dans les applications. Le fichier /etc/resolv.conf admet plusieurs domaines de recherches précisés par search.

domaine Le FQDN du domaine constituant le suffixe de recherche.

nameserver Indique l’adresse IP du serveur DNS qui assurera les résolutions. Le fichier /etc/resolv. conf admet plusieurs serveurs DNS précisés par nameserver.

adresse_ip Adresse IP du serveur DNS à interroger.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 10

route add -net réseau_dest netmask masque gw ip_passerelle

Syntaxe de la commande route pour indiquer la passerelle par défaut

route add -net 0.0.0.0 gw ip_passerelle route add default gw ip_passerelle

Un serveur Linux utilisé en tant que routeur supporte aussi les principaux protocoles de routage.

Le logiciel historique routed supporte uniquement le protocole de routage RIP, alors que la

suite logicielle plus moderne quagga permet d’exploiter la quasi-totalité des protocoles de

routages IP.

e. Configuration du nom d’hôte : hostname Le nom d’hôte de la machine peut être affecté dynamiquement avec la commande hostname.

Il permet aussi d’afficher le nom d’hôte du système s’il est appelé sans argument.

Syntaxe de la commande hostname pour affecter un nom d’hôte

hostname nom_hote

nom_hote représentant le nom qu’on souhaite affecter au système.

Attention, cette valeur est conservée en mémoire vive, et sera perdue dès que le système

redémarrera. Les systèmes ordinaires en production doivent donc conserver cette valeur dans

un fichier de configuration qui est lu à chaque démarrage. Ce fichier dépend de la distribution.

C’est par exemple /etc/hostname pour les distributions d’origine Debian,

et /etc/sysconfig/network pour les distributions d’origine RedHat. Les scripts exécutés au

démarrage du système se chargent d’appeler la commande hostname et récupèrent la valeur du

nom du système dans le fichier.

Exemple de contenu d’un fichier /etc/hostname

root@firmin:~$ cat /etc/hostname

Commande route : options et paramètres

add Indique que l’on ajoute une route à la table de routage.

-net Indique que la destination est un réseau.

réseau_dest Le réseau à atteindre par la route statique qu’on paramètre.

0.0.0.0 La route par défaut. 0.0.0.0 représente tous les réseaux possibles.

gw Annonce la valeur de la passerelle.

ip_passerelle Adresse IP de la passerelle à utiliser.

default Équivalent à -net 0.0.0.0

masque Le masque de sous-réseau associé à la route ajoutée.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 11

firmin

SpécificitésdesdistributionsLes seules règles universelles pour la configuration du réseau sont celles décrites dans les

paragraphes précédents. Les distributions Linux courantes ont néanmoins des procédures de

configuration par scripts et fichiers de configuration qu’on peut classer en deux grandes familles

: celles dont la configuration réseau est située dans le répertoire /etc/network, et celles dont la

configuration réseau est située dans le répertoire /etc/sysconfig/network-scripts.

a. Configuration réseau dans /etc/network C’est le cas des distributions Debian et dérivées. Les éléments de configuration sont situés dans

un fichier au format simple : /etc/network/interfaces.

Format du fichier de configuration /etc/network/interfaces pour une adresse IP statique

auto interface

iface interface inet static

address adresse_ip

netmask masque

gateway ip_passerelle

Format du fichier de configuration /etc/network/interfaces pour une adresse IP dynamique

auto interface

iface interface inet dhcp

Ces fichiers n’ont évidemment aucune action en eux-mêmes, ils sont appelés par le script de

lancement du service réseau (en général /etc/init.d/networking), lequel script invoquera la

commandeifup (interface up) pour activer les interfaces avec leurs paramètres réseau.

Fichier interfaces : options et paramètres

auto Indique que l’interface devra être activée automatiquement au démarrage.

interface Le nom linuxien de l’interface à configurer (exemple : eth0).

inet Indique qu’on va affecter une adresse IPv4.

static Indique que l’adresse IP configurée sera statique.

adresse_ip Adresse IP à affecter à l’interface.

masque Masque de sous-réseau à affecter à l’interface.

ip_passerelle Adresse IP de la passerelle par défaut.

dhcp Indique que l’adresse IP configurée sera dynamique et obtenue par requête DHCP.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 12

b. Configuration réseau dans /etc/sysconfig/network-scripts

C’est le cas des distributions RedHat et dérivées. Les éléments de configuration sont situés dans

un fichier au format simple par interface situé dans le répertoire /etc/sysconfig/network-scripts.

Ces fichiers ont tous le préfixe ifcfg- suivi du nom de l’interface à configurer.

Format du fichier ifcfg-interface pour une adresse IP statique

DEVICE=interface

BOOTPROTO=none

ONBOOT=yes

IPADDR=adresse_ip

NETMASK=masque

GATEWAY=ip_passerelle

Format du fichier ifcfg-interface pour une adresse IP dynamique

DEVICE=interface

BOOTPROTO=dhcp

ONBOOT=yes

Autrescommandesetfichiersdegestionduréseau

Nous avons vu que les paramètres réseau pouvaient être configurés avec les seules

commandesifconfig et route. Il existe néanmoins de nombreux autres utilitaires qui permettent

d’administrer, configurer et diagnostiquer le fonctionnement du réseau.

a. Gestion des adresses MAC avec arp

Tout équipement réseau qui exploite le protocole IP sur un réseau ethernet est tenu, pour établir

la correspondance entre les adresses IP et les adresses MAC, d’utiliser le protocole ARP. Dans

un fonctionnement dynamique, cas le plus courant, une machine connaissant l’adresse IP de

son destinataire mais ayant besoin de renseigner son en-tête MAC pour communiquer envoie

un broadcast pour demander si quelqu’un sur le réseau possède l’adresse IP en question. Si la

machine destinataire est à portée de broadcast (c’est-à-dire dans le réseau local), elle répond en

unicast et indique son adresse MAC. La résolution ARP est alors réalisée. Les correspondances

Fichier ifcfg : options et paramètres

interface Le nom Linux de l’interface à configurer (exemple : eth0).

BOOTPROTO=dhcp Indique que l’adresse IP configurée sera dynamique et obtenue par requête DHCP.

ONBOOT=yes Indique que l’interface devra être activée automatiquement au démarrage.

adresse_ip Adresse IP à affecter à l’interface.

masque Masque de sous-réseau à affecter à l’interface.

ip_passerelle Adresse IP de la passerelle par défaut.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 13

établies entre adresses MAC et adresses IP sont conservées un certain temps en mémoire dans

ce qu’on appelle le cache ARP. Dans quelques cas particuliers, on peut aussi affecter de façon

statique une correspondance entre adresse IP et adresse MAC.

La commande arp permet d’observer et éventuellement de gérer les valeurs contenues dans ce

cache.

Syntaxe de la commande arp pour observer le cache

arp -n Le paramètre -n n’est pas obligatoire, mais il dispense le système de réaliser une recherche DNS

inverse qui ralentit énormément l’affichage.

Syntaxe de la commande arp pour effacer une entrée du cache

arp -d adresse_ip

Syntaxe de la commande arp pour affecter une valeur au cache

arp -s adresse_ip adresse_mac

Où adresse_ip représente l’adresse IP de l’entrée que l’on souhaite gérer,

et adresse_mac représente l’adresse MAC d’une entrée à associer à une adresse IP. Les adresses

MAC sont exprimées sous forme d’octets en hexadécimal séparés par des doubles points.

L’usage courant est naturellement de laisser l’intégralité des associations entre adresses MAC

et adresses IP se réaliser dynamiquement. Si on souhaite néanmoins configurer un grand

nombre d’associations statiques, il sera intéressant de renseigner un fichier /etc/ethers, et

d’appeler la commande arp avec l’option -f.

Format du fichier /etc/ethers

adresse_mac1 adresse_ip1

adresse_mac2 adresse_ip2

...

adresse_macn adresse_ipn

Exploitation de la commande arp

On utilise ici la commande arp pour afficher le contenu du cache arp avant et après activité. On

affecte ensuite manuellement une adresse MAC à une adresse IP, puis on prend en compte le

contenu du fichier /etc/ethers pour configurer plusieurs associations.

alpha:~# arp -n

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 14

alpha:~# ping 192.168.199.1 PING 192.168.199.1 (192.168.199.1) 56(84) bytes of data. (...) alpha:~# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.199.1 ether 08:00:27:e4:07:62 C eth0 alpha:~# arp -s 192.168.199.222 00:01:02:a1:b2:b3 alpha:~# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.199.222 ether 00:01:02:a1:b2:b3 CM eth0 192.168.199.1 ether 08:00:27:e4:07:62 C eth0 alpha:~# cat /etc/ethers 00:00:00:01:02:03 192.168.199.33 00:00:00:01:02:04 192.168.199.34 00:00:00:01:02:05 192.168.199.35 00:00:00:01:02:06 192.168.199.36 alpha:~# arp -f alpha:~# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.199.222 ether 00:01:02:a1:b2:b3 CM eth0 192.168.199.33 ether 00:00:00:01:02:03 CM eth0 192.168.199.35 ether 00:00:00:01:02:05 CM eth0 192.168.199.34 ether 00:00:00:01:02:04 CM eth0 192.168.199.36 ether 00:00:00:01:02:06 CM eth0 192.168.199.1 ether 08:00:27:e4:07:62 C eth0 alpha:~#

b. TCP Wrappers

Il est possible de gérer les accès à un système Linux selon les adresses IP ou les noms d’hôtes

des clients. On peut gérer une liste de « tous ceux qui sont autorisés », ou bien une liste de «

tous ceux qui sont interdits ». Même si les techniques modernes d’intrusion et de piratage

rendent ce type de contrôle d’accès presque insignifiant, cela reste tout de même une forme de

contrôle rudimentaire qui peut décourager les touristes.

L’implémentation TCP Wrappers utilisée sur les systèmes Linux s’appuie sur la

bibliothèque libwrap.

Les deux fichiers permettant ce contrôle sont /etc/hosts.allow pour les clients autorisés,

et/etc/hosts.deny pour les clients non autorisés. Ils sont lus par le démon tcpd qui appliquera

les contrôles d’accès en conséquence. De par leur principe de fonctionnement, ces fichiers

devraient être utilisés indépendamment : si on autorise certains hôtes à se connecter, cela

signifie que tous les autres sont interdits, et donc le fichier d’interdiction perd de son intérêt.

Format des fichiers hosts.allow et hosts.deny

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 15

service: clients

Exemple de fichier hosts.allow

Notez le premier exemple dont l’adresse se termine par un point. Cette syntaxe un peu

particulière permet de désigner les adresses dont la partie précédant le point concorde.

# Toutes les adresses commençant par 10.1 sont éligibles

ftp:10.1.

# Seule l’adresse 172.12.5.28 peut se connecter

sshd: 172.12.5.28

# Toutes les adresses du réseau 192.168.1.0 peuvent se connecter

ALL: 192.168.1.0/255.255.255.0

Configuration Wi-Fi

Les distributions et les bureaux graphiques fournissent des utilitaires graphiques pour

l’administration des réseaux Wi-Fi dont l’utilisation est intuitive. Nous allons donc voir ici

comment configurer pas à pas une connexion Wi-Fi en lignes de commande. Les

principaux outils seront ifconfig, iwconfig et iwlist.

a. Détermination de l’interface Wi-Fi

Nous savons que la commande ifconfig -a permet d’observer toutes les interfaces réseaux

présentes sur un système, même si elles ne sont pas activées. Une carte Wi-Fi doit donc

forcément se trouver dans la liste renvoyée par cette commande. Toutefois, si le système

comporte plusieurs cartes réseau, une commande spécifique nous permettra d’affiner notre

choix.

Visualisation des interfaces Wi-Fi avec iwconfig

Toutes les interfaces renvoyant une référence à 802.11 sont des interfaces Wi-Fi. Dans cet

exemple, c’est la carte eth1.

toto@ubuntu:~$ iwconfig lo no wireless extensions.

TCP Wrappers : fichiers de contrôle d’accès

service

Le nom du service dont l’accès est contrôlé. ALL est une valeur courante qui représente tous les services éligibles.

clients Nom DNS ou adresse IP des clients. Plusieurs valeurs peuvent être renseignées séparées par des espaces. supporte de nombreux jokers et formats. ALL est une valeur courante qui représente toutes les adresses IP.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 16

eth0 no wireless extensions. eth1 IEEE 802.11 Nickname:"" Access Point: Not-Associated Link Quality:5 Signal level:0 Noise level:166 Rx invalid nwid:0 invalid crypt:0 invalid misc:0 vboxnet0 no wireless extensions.

b. Visualisation des réseaux disponibles

La commande iwlist permet de faire l’inventaire des réseaux disponibles.

Syntaxe de la commande iwlist pour la visualisation des réseaux environnants

iwlist interface scan Où interface est le nom de la carte réseau Wi-Fi, et scan le paramètre qui indique la nature de

l’action à opérer.

Exemple de scan avec iwlist

Dans cet exemple, on voit que deux réseaux sont disponibles. Le premier est émis par un point

d’accès dont l’adresse MAC est 00:0A:66:13:E7:01, fonctionnant en 802.11g (2,4 GHz et

54 Mb/s), et dont le SSID est pifou. Le chiffrage est réalisé en WPA-TKIP. Le deuxième

provient d’un point d’accès dont l’adresse MAC est CA:9D:2E:E6:B7:56, émettant aussi en

802.11g, avec le ssid hotspot et sans aucune sécurité.

toto@ubuntu:~$ sudo iwlist eth1 scan eth1 Scan completed : Cell 01 - Address: 00:0A:66:13:E7:01 ESSID:"pifou" Mode:Managed Frequency=2.437 GHz (Channel 6) Quality:5/5 Signal level:-50 dBm Noise level:-78 dBm IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK Encryption key:on Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s 12 Mb/s; 48 Mb/s Cell 02 - Address: CA:9D:2E:E6:B7:56 ESSID:"hotspot" Mode:Managed Frequency:2.427 GHz (Channel 4) Quality:1/5 Signal level:-83 dBm Noise level:-84 dBm Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s 18 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 12 Mb/s 24 Mb/s; 48 Mb/s

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 17

c. Connexion à un réseau non sécurisé

Une fois le réseau déterminé, on peut s’y connecter par la commande iwconfig.

Association à un réseau sans fil ouvert

iwconfig interface essid nom_ssid

Où interface représente l’interface réseau Wi-Fi gérée par le système, et nom_ssid le nom du

réseau Wi-Fi (Service Set Identifier) auquel on souhaite se connecter.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 18

III. Diagnostic réseau Outilsdediagnosticencoucheréseau

a. ping et ping6 La célèbre commande ping rend toujours d’immenses services. Elle permet bien entendu de

tester la connectivité IP de bout en bout, de tester la résolution DNS native, mais aussi d’obtenir

des informations plus subtiles, comme par exemple l’indication qu’une route est inaccessible.

La commande ping6, semblable en tous points à son homologue historique, permet de tester

l’accessibilité d’un hôte distant en IPv6.

Les commandes ping et ping6 exploitent le protocole ICMP (Internet Control Message Protocol).

Exemple de réponse au ping

Dans cet exemple, la réponse au ping est différente selon que la route existe et que la machine

cible du ping est indisponible, ou que la route est inconnue.

A:~$ route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.200.0 * 255.255.255.0 U 1 0 0 eth0 A:~$ ping 172.17.18.19 connect: Network is unreachable A:~$ route add -net 172.17.0.0 netmask 255.255.0.0 gw 192.168.200.254 A:~$ ping 172.17.18.19 PING 172.17.18.19 (172.17.18.19) 56(84) bytes of data. From 172.17.18.19 icmp_seq=1 Destination Host Unreachable From 172.17.18.18 icmp_seq=2 Destination Host Unreachable A:~$

b. Indicateurs de la commande route La commande route, utilisée pour configurer des routes statiques, fournit également des

éléments de diagnostics. Elle permet de savoir quels sont les réseaux locaux ou distants

(accessibles par une passerelle), ou encore de voir qu’une route est rejetée par le noyau. Ces

informations sont données par les indicateurs de la commande route.

Exemple d’indications de la commande route

Commande route : principaux indicateurs

U Up : la route est active et exploitable.

H Host : la cible est un hôte (et non un réseau).

G Gateway : la cible est accessible par une passerelle.

D Dynamic : la route a été configurée par un protocole de routage.

! Le noyau a rejeté la route.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 19

Toutes les routes sont actives et exploitables.

[root@beta ~]# route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 10.1.2.3 192.168.200.200 255.255.255.255 UGH 0 0 0 eth0 192.168.199.0 * 255.255.255.0 U 0 0 0 eth1 192.168.200.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth1 default 192.168.200.254 0.0.0.0 UG 0 0 0 eth0 [root@beta ~]#

c. traceroute La commande traceroute comme la commande ping permet de tester la connectivité avec un

système distant, mais en donnant l’ensemble des routeurs qui permettent d’acheminer le paquet.

En cas de problème de connectivité, on peut donc déterminer à quel endroit le paquet est bloqué

ou s’est perdu.

La commande traceroute6 permet de tester la route empruntée vers un réseau distant en IPv6.

Exemple d’utilisation de la commande traceroute

Dans cet exemple, on constate que pour atteindre la machine 192.168.199.10, il faut d’abord

passer par le routeur 10.8.0.1.

tata@stotion:~$ traceroute 192.168.199.10 traceroute to 192.168.199.10 (192.168.199.10), 30 hops max, 60 byte packets 1 10.8.0.1 (10.8.0.1) 44.928 ms 50.972 ms 51.015 ms 2 192.168.199.10 (192.168.199.10) 51.056 ms 51.112 ms 51.149 ms tata@stotion:~$

Outilsdediagnosticencouchestransportetapplicationa. netstat

La commande netstat permet d’observer les connexions établies avec le système local. Ces

connexions peuvent être de type TCP, UDP, ou socket. Les connexions TCP et UDP sont en

général établies avec des systèmes distants, alors que les sockets sont des fichiers de type

particuliers qui servent de point d’échange entre des composants applicatifs sans passer par le

réseau. Par exemple, le serveur d’affichage X qui était à l’origine une application client-serveur

utilisée en réseau utilise désormais un socket pour les communications entre le client X et son

serveur situés sur la même machine.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 20

Dans un but de diagnostic du fonctionnement réseau, on s’intéressera principalement aux

connexions TCP et UDP.

Syntaxe de la commande netstat pour voir les connexions actives

netstat -n Où l’option -n, facultative, empêche la résolution inverse sur les adresses IP et sur les numéros

de ports. L’affichage est plus rapide.

Observation des processus responsables de connexions réseau

netstat -p Exemple d’utilisation de la commande netstat

Observons ici la commande netstat appelée toutes les secondes pour surveiller la connexion

avec une application du système local. L’exemple propose un script contenant une boucle

infinie et dont toutes les commandes sont placées sur une seule ligne. Si on a un besoin répété

de cette commande sous cette forme, on aura intérêt à créer un fichier de script.

while true ; do clear ; netstat -an | head -20 ; sleep 1 ; done

On pourra sortir de cette boucle par la combinaison des touches [Ctrl] C.

b. nc La commande nc ou netcat est un outil qui permet de lire ou écrire des données au travers de

connexions réseau. Par exemple, si on est confronté à une application quelconque qui

fonctionne en TCP sur le port 1234 et qu’on ne dispose d’aucun outil de diagnostic, nc permet

d’établir une connexion sur le port TCP/1234, d’envoyer des données brutes, et d’observer la

réponse du serveur.

Syntaxe de la commande nc

nc -u adresse_ip port

Exemple d’utilisation de nc pour interroger un serveur web

Dans cet exemple, le serveur interrogé répond bien en html au code http (GET /) qui lui

demande d’afficher sa page d’accueil par défaut. On voit bien ici que l’utilisation de nc à des

fins de diagnostic nécessite une connaissance précise des protocoles sous-jacents.

toto@ubuntu:~$ nc 172.17.6.26 80

Commande nc : options et paramètres

-u Facultatif. Précise que l’on souhaite travailler en UDP. Si ce paramètre est omis, toutes les requêtes sont faites en TCP.

adresse_ip L’adresse IP de la machine avec laquelle on souhaite communiquer.

port Le port par lequel on souhaite s’adresser à la machine distante.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 21

GET / <html><body><h1>It works!</h1></body></html> toto@ubuntu:~$

Diagnosticsetinformationsencoucheapplication

a. lsof

La commande lsof permet d’établir la liste des fichiers ouverts par des processus sur un

système. lsofexécutée sans options affiche simplement l’ensemble des fichiers appartenant à

tous les processus actifs.

Affichage des fichiers ouverts par la commande xeyes

Les colonnes les plus directement utiles sont PID, USER et NAME.

A# lsof | grep xeyes COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME xeyes 9584 toto cwd DIR 8,3 12288 7258113 /tmp xeyes 9584 toto rtd DIR 8,3 4096 2 / xeyes 9584 toto txt REG 8,3 20416 2366803 /usr/bin/xeyes xeyes 9584 toto mem REG 8,3 22568 2362738 /usr/lib/libXfixes.so.3.1.0 xeyes 9584 toto mem REG 8,3 39232 1966225 /usr/lib/libXcursor.so.1.0.2 xeyes 9584 toto mem REG 8,3 1170770 6463538 /usr/lib/locale/fr_FR.utf8/ LC_COLLATE xeyes 9584 toto mem REG 8,3 19008 2146517 /lib/libuuid.so.1.3.0 xeyes 9584 toto mem REG 8,3 22560 2364984 /usr/lib/libXdmcp.so.6.0.0 xeyes 9584 toto mem REG 8,3 14488 2364981 /usr/lib/libXau.so.6.0.0 xeyes 9584 toto mem REG 8,3 97904 2364446 /usr/lib/libICE.so.6.3.0

b. Journaux sur /var/log/syslog et /var/log/messages Les fichiers /var/log/syslog sur les distributions d’origine Debian et /var/log/messages sur les

distributions d’origine Red Hat concentrent l’essentiel des remontés de journaux toutes

applications confondues. Ils sont alimentés par le démon syslogd pour Red Hat

ou rsyslogd pour Debian et s’incrémentent à chaque événement subit ou provoqué par une

application compatible syslog. Ainsi, les événements associés au réseau, qu’ils proviennent

d’une application client-serveur ou de la gestion du réseau par le système elle-même seront

probablement mentionnés dans ces fichiers journaux.

Sur les systèmes d’origine Debian, un fichier /var/log/deamon.log est spécifiquement réservé

aux journaux d’activité des services.

Visualisation des événements relatifs aux cartes réseau

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 22

Les journaux représentent les principales sources d’information en cas de dysfonctionnement

applicatif.

toto@ubuntu:/tmp$ grep eth /var/log/syslog | head Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) starting connection ’Auto orange’ Jun 24 19:21:08 ubuntu NetworkManager: <info> (eth1): device state change: 3 -> 4 (reason 0) Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) scheduled... Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) started... Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of 5 (Device Configure) scheduled... Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of 5 (Device Prepare) complete. Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of 5 (Device Configure) starting... Jun 24 19:21:08 ubuntu NetworkManager: <info> (eth1): device state change: 4 -> 5 (reason 0) Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1/wireless): connection ’Auto orange’ requires no security. No secrets needed. Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of 5 (Device Configure) complete.

libpcapetlescapturesdepaquetsa. La bibliothèque libpcap

Pour récupérer des informations précises sur le fonctionnement réseau d’une application, il

arrive que l’on doive capturer directement l’ensemble des éléments qui passent sur le réseau.

Les outils pour y parvenir sont nombreux sur tous les systèmes. En environnement Linux, ces

outils s’appuient pour la plupart sur la bibliothèque libpcap qui fournit une interface de bas

niveau normalisée pour la capture de paquets. libpcap a été créée à partir des premiers

développements d’une commande de captureappelée tcpdump. Elle fut par la suite exploitée

par de nombreux logiciels d’analyse réseau dont le célèbre wireshark.

b. tcpdump

tcpdump est un outil qui envoie sur la sortie standard (l’écran) une information résumée des

captures réalisées par la carte réseau. tcpdump travaillant en temps réel (moyennant le temps

de traitement par le programme), il est utile pour surveiller directement l’activité réseau d’une

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 23

machine. Si on dirige les captures vers un fichier, alors les informations complètes des paquets

capturées sont conservées et utilisables par d’autres outils compatibles avec le format libpcap.

Syntaxe de la commande tcpdump

tcpdump -w fichier -i interface -s fenêtre -n filtre

Exemple d’utilisation de tcpdump

L’exemple ci-dessous nous montre des éléments de trafic capturés à la volée par tcpdump.

Notez que la brièveté des informations proposées (ici des échanges liés au Spanning Tree

Protocol entre commutateurs) ne permet pas d’analyse profonde, mais surtout de constater de

visu la nature des informations échangées.

root@serveur:~$ tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth6, link-type EN10MB (Ethernet), capture size 96 bytes 10:07:59.961927 10:08:00.019503 STP 802.1d, Config, Flags [none], bridge-id 8007.00:25:46:b4:3c:80.800c, length 43 10:08:02.034712 STP 802.1d, Config, Flags [none], bridge-id 8007.00:25:46:b4:3c:80.800c, length 43 ˆC 3 packets captured 3 packets received by filter 0 packets dropped by kernel root@serveur:~$

Cet exemple plus précis envoie vers un fichier au format libpcap les requêtes http vers un

serveur à l’adresse IP 192.168.50.24.

root@serveur:~$ tcpdump -w fichier.cap -i eth0 -s 0 -n port 80 and host 192.168.50.24 root@serveur:~$

c. Wireshark

Wireshark (anciennement ethereal) est une application de capture de trames multiplate-forme

disponible notamment sur les environnements Windows et Linux. Wireshark s’appuie sur la

bibliothèque libpcap et permet de sauvegarder les données capturées à ce format ou d’exploiter

tcpdump : options et paramètres

-w fichier

Facultatif : pour envoyer le résultat de la capture vers un fichier au format libpcap.

-i interface

Facultatif : pour réaliser la capture depuis une interface précise.

-s fenêtre

Facultatif : pour limiter la taille des trames capturées. Surtout utilisé avec le paramètre 0 (pas de limite).

-n Facultatif : ne pas remplacer les valeurs numériques par des expressions littérales.

filtre Détermine le trafic à capturer. Mots-clés principaux : host, port, src, dest.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 24

des captures faites par d’autres utilitaires. Wireshark propose pour chacune des captures un

découpage selon les couches du modèle OSI des informations capturées, ce qui est à la fois

pratique et très pédagogique.

Procédure standard de capture avec Wireshark

Lancez l’applicatif Wireshark.

Dans le menu Capture, choisissez Interfaces.

Repérez la carte réseau à laquelle est associée votre adresse IP.

Cliquez sur Start pour lancer la capture.

Visualisez les paquets en cours de captures.

Arrêtez la capture en cliquant sur Stop dans le menu Capture.

Exemple de capture de paquets avec Wireshark

Notez l’écran divisé horizontalement en trois panneaux : le paquet à analyser, les détails couche

par couche, et la valeur hexadécimale des informations capturées. Ici, on voit qu’il s’agit d’une

requête DNS de type A pour la résolution du nom start.ubuntu.com.

Sur un réseau encombré, on risque d’être noyé sous une avalanche de paquets capturés qui n’ont pas forcément de rapport avec ce que l’on cherche. On gagnera en visibilité en appliquant un filtre d’affichage (champ Filter sur l’écran principal). Cette opération a l’avantage d’être réversible (bouton Clear).

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 25

IV. Configuration automatique avec DHCP LeprotocoleDHCP

DHCP (Dynamic Host Configuration Protocol) est un protocole client-serveur qui a pour objet

d’affecter automatiquement une adresse IP ainsi que des paramètres fonctionnels aux hôtes du

réseau. Il est exploité par tout équipement qui ne peut pas être configuré de façon statique par

un administrateur réseau.

a. Fonctionnement

Découverte d’un serveur

Les clients DHCP font une requête sur le réseau dans l’espoir de trouver un serveur DHCP.

Cette requête initiale ne peut être qu’un broadcast : la station à l’origine de la requête ne connaît

même pas sa propre adresse, il est donc peu probable qu’elle connaisse par avance l’adresse

d’un serveur DHCP.

Les paquets envoyés pour la découverte portent le nom normalisé de DHCPDISCOVER.

Première réponse du serveur

Si un serveur DHCP présent sur le réseau entend la requête d’un client, il lui fera une

proposition d’adresse et de paramètres réseau. Comme le client auquel le serveur d’adresse

répond n’a pas encore d’adresse IP, cette réponse se fera également sous forme de broadcast.

Les paquets envoyés pour la réponse du serveur portent le nom normalisé de DHCPOFFER.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 26

Acceptation de l’offre

Le client DHCP satisfait de l’offre qui lui a été faite, va l’accepter. À ce stade, cette réponse

pourrait être envisagée en unicast puisque le client a déjà une proposition d’adresse IP et connaît

celle du serveur. Toutefois, cet échange se fera encore en broadcast. En effet : si un deuxième

serveur DHCP est en concurrence avec le premier pour fournir une adresse, ce broadcast

d’acceptation envoyé à un autre serveur mais reçu par les deux prétendants fait office de fin de

non-recevoir pour le serveur non choisi.

Les paquets envoyés pour l’acceptation de l’offre du serveur portent le nom normalisé

deDHCPREQUEST.

Accusé de réception du serveur

Enfin, le serveur prend acte de l’affectation de l’adresse, et clos la transaction par un accusé de

réception. Le serveur profite de ce dernier échange pour annoncer la durée de l’allocation de

l’adresse. On appelle cette durée le bail DHCP, et sa durée varie selon la configuration du

serveur entre quelques heures et quelques jours.

Les paquets envoyés pour accusé de réception portent le nom normalisé de DHCPACK.

b. Le service DHCP sur les systèmes Linux Le service DHCP le plus répandu sur les systèmes Linux est le service DHCP de l’ISC (Internet

System Consortium). L’ISC est un organisme créé en 1994 pour veiller au développement et à

la pérennité du serveur DNS BIND, développement émanant à l’origine de l’université de

Berkeley. ISC DHCP est un développement original de l’ISC pour fournir une implémentation

de référence de ce protocole.

Le service est lancé par un script normalisé dans /etc/init.d. Son nom varie selon les

distributions et implémentations.

ConfigurationduserveurL’essentiel de la configuration d’un serveur DHCP ISC se trouve dans le

fichier /etc/dhcpd.conf.

On y trouvera les directives de fonctionnement, les options générales du serveur, et la

déclaration des ressources à allouer. Chacune des lignes de paramètres devra se terminer par un

point-virgule.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 27

a. Le fonctionnement général du serveur Directives principales de comportement du serveur dans dhcpd.conf.

default-lease-time durée;

authoritative;

log-facility cible;

b. Les paramètres transmis aux clients

On peut dans le fichier de configuration définir des paramètres fonctionnels qui seront transmis

aux clients. Ces paramètres sont annoncés par la directive option.

Déclaration d’options dans le fichier dhcpd.conf

option domain-name suffixe;

option domain-name-servers serveurs_dns;

option nis-domain domaine_nis;

option nis-servers serveurs_nis;

c. Déclaration de plages d’adresses

Les adresses à allouer sont définies dans une ou plusieurs sections subnet du

fichier dhcpd.conf. Au sein de ces sections, on trouvera en plus des plages d’adresses les

options DHCP qui seront envoyées avec les propositions d’adresses. Les options les plus

courantes sont la passerelle par défaut à utiliser avec l’adresse proposée, ainsi que les serveurs

DNS à utiliser. Les options peuvent être déclarées en dehors ou au sein des sections subnet,

elles concerneront alors selon le cas l’ensemble des adresses allouées ou seulement celles du

sous-réseau. En cas de conflit entre options (la même option est déclarée dans la configuration

générale et dans la section subnet), c’est l’option du subnet qui prévaut.

dhcpd.conf : comportement du serveur

default-lease-timedurée

Indique la durée du bail DHCP en secondes.

authoritative Facultatif. Un client qui demande le renouvellement d’une adresse hors plage doit y renoncer.

log-facility cible Gestion des journaux : renvoie les événements vers le "facility" cible du serveur syslog.

dhcpd.conf : déclaration d’options

suffixe Suffixe DNS pour les clients.

serveur_dns Serveur DNS utilisé par les clients. Si plusieurs serveurs doivent être proposés, les valeurs sont séparées par des virgules.

domaine_nis En voie de raréfaction. Domaine NIS pour les clients.

serveurs_nis En voie de raréfaction. Serveur NIS utilisé par les clients. Si plusieurs serveurs doivent être proposés, les valeurs sont séparées par des virgules.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 28

Déclaration de subnet dans le fichier dhcpd.conf

subnet reseau netmask masque {

range debut fin;

option routers routeur;

}

d. Paramètres spécifiques à une machine Il est possible d’affecter spécifiquement à une machine des options particulières. Cette machine

fera alors l’objet d’une déclaration particulière avec la directive host, un peu comme on

configurerait unsubnet à une seule adresse.

On pourra utiliser cette méthode pour affecter spécifiquement à un hôte du réseau une adresse

IP fixe pour une machine qui, bien que client DHCP, devrait systématiquement utiliser la même

adresse. On peut par exemple imaginer une imprimante réseau dont l’interface de configuration

peu confortable encourage à la laisser en configuration dynamique, et pour laquelle la

réservation dhcp garantirait l’attribution de l’adresse voulue.

Réservation d’adresse dans dhcpd.conf

host machine {

hardware ethernet adresse_mac;

fixed-address adresse_ip;

option routers routeur;

option domain-name suffixe;

option domain-name-servers serveur_dns;

}

dhcpd.conf : déclaration de subnet

reseau L’adresse de réseau dans lequel se trouveront les adresses à attribuer.

masque Masque associé au réseau géré.

debut Définition de la plage des adresses qui seront proposées aux clients. La première adresse de la plage.

fin Définition de la plage des adresses qui seront proposées aux clients. La dernière adresse de la plage.

routeur La passerelle par défaut associée aux adresses proposées.

dhcpd.conf : configuration d’hôte

machine Déclaration de paramètres pour un hôte. Si l’identification par adressemac est utilisée, le nom machine est sans importance.

adresse_mac L’adresse MAC de l’hôte à configurer.

adresse_ip Adresse IP de l’hôte en cours de configuration.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 29

e. Serveurs à plusieurs interfaces

Les serveurs DHCP possédant plusieurs interfaces réseau doivent restreindre leurs

communications aux seules cartes compétentes. Par exemple, si un serveur possède une

interface configurée en 10.11.12.1 et une autre en 192.168.200.1, et qu’il propose des adresses

dans le subnet 192.168.200.0, il est évident qu’il ne doit écouter les requêtes et proposer des

adresses que sur l’interface correspondante (192.168.200.1). La difficulté vient de ce que cet

élément de configuration ne se trouve pas dans/etc/dhcpd.conf mais dans /etc/defaults/dhcp3-

server.

f. Visualisation des baux DHCP

Le serveur DHCP conserve une information sur chacun des baux alloués dans

un fichier dhcpd.leasesse trouvant dans le répertoire /var/lib/dhcp/.

Ce fichier est accessible à la consultation mais ne devrait pas être modifié.

Exemple de fichier dhcpd.leases

Notez les horaires de renouvellement et d’expiration du bail DHCP.

lease {

interface "eth0";

fixed-address 192.168.1.51;

option subnet-mask 255.255.255.0;

option routers 192.168.1.254;

option dhcp-lease-time 864000;

option dhcp-message-type 5;

option domain-name-servers 194.2.0.20,194.2.0.50;

option dhcp-server-identifier 192.168.1.1;

renew 6 2010/07/10 14:55:34;

rebind 3 2010/07/14 14:33:58;

expire 4 2010/07/15 20:33:58;

}

ConfigurationduclientLa commande dhclient permet aux stations clientes d’effectuer les requêtes DHCP. Si la

commande n’est pas lancée manuellement par un administrateur, elle est appelée par les scripts

d’initialisation réseau. Si la station client ne possède pas d’adresse IP, elle effectue toutes les

étapes de la procédure de requête DHCP. Dans le cas contraire, elle demande au serveur un

renouvellement de bail. dhclientpeut également être utilisée pour libérer une adresse affectée

précédemment par un serveur DHCP.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 30

Exemple d’utilisation de dhclient pour requérir une adresse

Notez les étapes de l’affectation d’adresse DHCPDISCOVER, DHCPOFFER,

DHCPREQUEST et DHCPACK.

root@serveur# dhclient eth1 Internet Systems Consortium DHCP Client V3.1.3 Copyright 2004-2009 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth1/00:22:68:98:8a:da Sending on LPF/eth1/00:22:68:98:8a:da Sending on Socket/fallback DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 8 DHCPOFFER of 172.18.142.243 from 172.18.142.225 DHCPREQUEST of 172.18.142.243 on eth1 to 255.255.255.255 port 67 DHCPACK of 172.18.142.243 from 172.18.142.225 bound to 172.18.142.243 -- renewal in 49 seconds. root@serveur#

Exemple de libération d’adresse IP

On constate un paquet DHCPRELEASE envoyé à l’exécution de la commande.

root@serveur# dhclient -r eth1 There is already a pid file /var/run/dhclient.pid with pid 2735 killed old client process, removed PID file Internet Systems Consortium DHCP Client V3.1.3 Copyright 2004-2009 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth1/00:22:68:98:8a:da Sending on LPF/eth1/00:22:68:98:8a:da Sending on Socket/fallback DHCPRELEASE on eth1 to 172.18.142.225 port 67 root@serveur#

Agent relaisDHCPLes échanges DHCP se faisant par broadcast et les broadcasts ne passant pas les routeurs, les

requêtes DHCP comme les réponses des serveurs n’ont aucune action en dehors du réseau local.

La solution simple consiste évidemment à mettre un serveur DHCP sur chacun des segments

où ils sont nécessaires. Toutefois, si on ne souhaite utiliser qu’un seul serveur pour plusieurs

réseaux, il existe une solution : les agents relais DHCP.

a. Principe du relais DHCP

L’intégralité de la configuration DHCP, comprenant la déclaration de tous les subnets et toutes

les plages d’adresses, locaux ou distant, se trouvera sur un serveur DHCP unique. Une partie

des clients en revanche se trouvera sur un segment ethernet différent. Pour que les

communications puissent s’établir entre les clients distants et le serveur, l’agent relais DHCP

qui se trouvera lui aussi sur le segment devra traiter les broadcasts reçus, et relayer la requête

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 31

sous forme d’unicast vers le serveur DHCP. Les unicasts pouvant passer les routeurs,

l’information arrivera à bon port. Le serveur DHCP répondra alors sous forme d’unicast à

destination de l’agent relais, et l’agent relais enverra un broadcast qui sera récupéré par la

station cliente.

Le client DHCP n’a pas conscience de traiter avec un agent relais, mais pense qu’un serveur

DHCP réel est présent sur son segment.

b. Configuration de l’agent de relais

L’agent de relais est lancé de façon interactive par la commande dhcrelay. Sur la plupart des

distributions, cette commande est appelée depuis un script de lancement de service, et ses

paramètres de fonctionnement sont lus dans un fichier de configuration.

Syntaxe de la commande dhcrelay

dhcrelay -i interface adresse_serveur

dhcrelay : options et paramètres

-i interface Facultatif. Spécifie l’interface par laquelle l’agent de relais sera à l’écoute du serveur DHCP et des requêtes des clients.

adresse_serveur L’adresse IP du serveur auquel transmettre les requêtes DHCP.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 32

V. Validation des acquis : questions/réponses Testez vos connaissances en répondant aux questions suivantes. Ces questions n’appellent pas

toujours des réponses définitives.

Questions1. Quelle commande permet de lier une adresse IP secondaire à une interface ?

2. Si une machine a deux interfaces réseau, faut-il configurer une deuxième passerelle par défaut ?

3. Quel intérêt y a-t-il à renseigner le fichier /etc/ethers qui associe des adresses MAC à des adresses IP et à le faire prendre en compte par la commande arp -f ?

4. Dans le cadre de l’usage des TCP Wrappers et du démon tcpd, quelle configuration est la plus restrictive : celle n’utilisant que le fichier hosts.deny ou celle n’utilisant que le fichier hosts.allow ?

5. La commande ifconfig renvoie-t-elle des informations sur une connexion Wi-Fi ?

6. Pourquoi est-il fréquent d’utiliser le paramètre -n avec les commandes arp, route, ou netstat ?

7. Si un fichier ouvert empêche le démontage d’un filesystem, comment peut-on trouver le nom du fichier en question et l’utilisateur qui l’a ouvert ?

8. Pour quel usage la bibliothèque logicielle libpcap s’est-elle imposée ?

9. La requête DHCP d’un client est envoyée sous forme de broadcast car le client ne connaît pas l’adresse du serveur DHCP. Pourquoi la réponse du serveur se fait-elle sous forme de broadcast également ?

10. Si un serveur DNS est annoncé dans la configuration générale d’un serveur DHCP, et qu’un autre serveur DNS est annoncé dans une section subnet, quel(s) serveur(s) DNS obtiennent les clients du subnet ?

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 33

Réponses1. Quelle commande permet de lier une adresse IP secondaire à une interface ?

C’est la commande ifconfig, qui selon les paramètres utilisés, peut affecter entre autres, l’adresse IP principale, le masque de sous-réseau, l’adresse MAC, et une adresse IP secondaire si le besoin s’en fait sentir.

2. Si une machine a deux interfaces réseau, faut-il configurer une deuxième passerelle par défaut ?

En principe c’est inutile, on peut définir la passerelle par défaut de façon globale, indépendamment des interfaces. Cependant, il pourrait être utile de définir une passerelle par défaut par interface, au cas où l’une d’entre elles serait inaccessible ou non activée. Dans ce cas, le service de configuration du réseau (Network manager) pourrait utiliser la passerelle par défaut d’une interface valide.

3. Quel intérêt y a-t-il à renseigner le fichier /etc/ethers qui associe des adresses MAC à des adresses IP et à le faire prendre en compte par la commande arp -f ?

Si le fichier /etc/ethers est renseigné et exploité, le système connaît les associations entres les adresses MAC et les adresses IP qui s’y trouvent. En conséquence, toute communication avec lesdites adresses IP peut se faire directement sans passer par une requête ARP. Le bénéfice est absolument minime, les requêtes ARP étant rapides, petites et en volume insignifiantes par rapport à l’ensemble du trafic. On peut y trouver un intérêt en terme de sécurité dans la mesure où on évite les broadcasts liés à ces requêtes, et où on est donc plus discret sur le réseau.

4. Dans le cadre de l’usage des TCP Wrappers et du démon tcpd, quelle configuration est la plus restrictive : celle n’utilisant que le fichier hosts.deny ou celle n’utilisant que le fichier hosts.allow ?

Si on n’utilise que le fichier hosts.allow, seuls les hôtes mentionnés dans le fichier sont autorisés, et tous les autres sont interdits. Par contre, si on n’utilise que le fichier hosts.deny, seuls les hôtes mentionnés dans le fichier sont refusés, et tous les autres sont autorisés. La première solution est donc la plus restrictive. Attention, si les deux fichiers existent, le comportement peut varier selon les distributions, leur version et la configuration de PAM !

5. La commande ifconfig renvoie-t-elle des informations sur une connexion Wi-Fi ?

Pas vraiment. La commande ifconfig donnera des informations sur toutes les interfaces présentes sur un système, y compris les interfaces Wi-Fi. En revanche, elle ne fournit aucune information relative au fonctionnement sans fil : SSID, la qualité du signal et le type de chiffrage. La commande iwconfig en revanche est parfaitement compétente. Elle permet d’afficher les informations relatives à une connexion Wi-Fi, et même de la configurer.

6. Pourquoi est-il fréquent d’utiliser le paramètre -n avec les commandes arp, route, ou netstat ?

Parce qu’il dispense la commande de faire une résolution de noms inverse : ces commandes récupèrent en principe des données numériques brutes (adresses IP, adresses MAC et numéro de ports). Or, pour des raisons cosmétiques, elles affichent par défaut les noms correspondant à ces données numériques, notamment le nom DNS éventuellement associé à une adresse IP manipulée. Mais s’il n’existe aucun enregistrement DNS pour l’adresse en question, la commande essaiera toutefois d’en faire la résolution, et n’abandonnera qu’au timeout du resolver DNS. Donc, pour un élément de confort incertain (il n’est pas sûr que l’utilisateur préfère les noms aux adresses), la commande perd plusieurs secondes à essayer des résolutions sans espoir. L’usage de l’option -n dispense la commande de ces recherches fastidieuses, et diminue donc notablement le temps de réponse.

ADMINISTRATION ET MAINTENNACE D’UN SYSTÈME GNU/LINUX SYSTEME D’EXPLOITATION GNU/LINUX

MRMOSTAFAESSADDOUKI([email protected]) 34

7. Si un fichier ouvert empêche le démontage d’un filesystem, comment peut-on trouver le nom du fichier en question et l’utilisateur qui l’a ouvert ?

Avec la commande lsof, qui donne les fichiers ouverts, le nom et le numéro du processus responsable, et le nom de l’utilisateur propriétaire du processus.

8. Pour quel usage la bibliothèque logicielle libpcap s’est-elle imposée ?

Pour la capture de trames. Les applications qui l’utilisent sont nombreuses et on peut citer notamment tcpdump et wireshark. Une bibliothèque ouverte permet à des logiciels différents d’utiliser le même format de données, on peut donc utiliser tcpdump pour capturer un échange entre deux machines, wireshark pour l’observer en détail, et un logiciel d’analyse pour repérer les traces caractéristiques d’un virus par exemple.

9. La requête DHCP d’un client est envoyée sous forme de broadcast car le client ne connaît pas l’adresse du serveur DHCP. Pourquoi la réponse du serveur se fait-elle sous forme de broadcast également ?

Tout simplement parce que le client ne dispose pas encore d’une adresse IP, et qu’une adresse de destinataire est indispensable pour réaliser un unicast.

10. Si un serveur DNS est annoncé dans la configuration générale d’un serveur DHCP, et qu’un autre serveur DNS est annoncé dans une section subnet, quel(s) serveur(s) DNS obtiennent les clients du subnet ?

Celui du subnet. Les paramètres généraux sont prévus pour s’appliquer à tout client, sauf information contraire dans une section plus précise.