UNIX et réseau
I - Fonctionnement d'un réseau
Un réseau fournit un moyen de communiquer entre plusieurs ordinateurs. Pour
communiquer, les ordinateurs ont besoin de se mettre d'accord sur la façon de
communiquer. On appel protocole un « langage » utilisable par un ordinateur. Un
certain nombre de normes existent et permettent l'interopérabilité des systèmes et
ordinateurs.
1) Le modèle TCP/IP
Le modèle TCP/IP (Transmission Central Protocol / Internet Protocol) fournit une
modélisation du fonctionnement logique d'un réseau. Il est basé sur la notion de
couches. Il permet aux applications de s'abstraire de processus physique qui a lieu
pour la transmission de messages.
La couche application regroupe l'ensemble des logiciels accédant au réseau et tous
les mécanismes d'authentification, session.
Ex : navigateur web, client mail...
● La couche transport assure l'acheminement des données à la bonne application.
Elle contient les informations contenant l'état de la transmission. Elle assure le
multiplexage et démultiplexage des informations à cet effet la notion de port. Chaque
application d'une machine écoute sur un port, qui est identifié par un numéro.
● La couche internet assure la segmentation des données et l'adressage
● La couche d'accès réseau est celle de plus bas niveau. Elle est essentiellement
matérielle (ex :
Ethernet), elle assure l'acheminement des données sur ma liaison, elle fait les
conversions
analogique/numérique, elle possède des systèmes de contrôle d'erreur
Le protocole TCP est un protocole fiable (on sait si le message est reçu ou pas), TCP
s'occupe de renvoyer les paquets ou pas. Cependant pour certaines applications tel
que la diffusion de flux multimédia ou encore VOIP (Voice Over IP), si un paquet est
perdu, il est inutile de le renvoyer. Pour de telles applications on préférera utiliser le
protocole de la couche transport UDP. Ce protocole ajoute à IP juste la notion de
ports. Quand on envoie un message via UDP, on n’est pas sûr qu'il soit reçu.
Réseau local
Un réseau local (LAN – Local Area Network) est un ensemble de machines
connectées par un réseau.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
L'amplitude géographique d'un tel réseau est assez faible (max quelques centaines
de mètre). Un réseau permet de partager un certain nombre de ressources. Il est
souvent indispensable.
Classiquement, un réseau va fournir les services suivants :
● partage de fichiers
● partage de la connexion internet
● authentification centralisée
● messagerie (e-mail, IM)
Un réseau c'est aussi structurer logiquement les ressources matérielles et les
moyens humains.
Internet : la plupart des services fournit par un réseau local, peuvent l'être aussi par
internet.
Internet est un ensemble de solutions technique permettant d'interconnecter des
réseaux locaux
Cependant un LAN n'est pas un milieu hostile en réseau local rapide.
3) Quelques définitions
On appel service (deamon dans le monde UNIX) un logiciel fournissant des
fonctionnalités à d'autres logiciels.
Exemple : service web, service mail, service ftp...
On appel serveur une machine faisant tourner un ou plusieurs services. Par abus de
langage on parle aussi de serveur web, serveur mail...
Un serveur est en écoute sur un port donné.
A la reception d'un message, il va:
● l'analyser
● effectuer l'action demandée
● composer la réponse
● envoyer la réponse au client
II – L'authentification
1) objectifs
Le but du mécanisme d'authentification est de reconnaître les utilisateurs
L'authentification
1) objectifs
Le but du mécanisme d'authentification est de reconnaître les utilisateurs. Ceci est
un problème clé de tout réseau car chaque utilisateur n'a accès qu'à un sous-
ensemble restreint des ressources du réseau.
Identifier correctement les utilisateurs est un des défis de l'administrateur. Sous
UNIX, un utilisateur est identifié par plusieurs informations :
● un nom
● un mot de passe
● un identifiant numérique (UID)
● un identifiant de groupe (GID)
● un répertoire personnel (home directory)
● un shell par défaut
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Le nom et le mot de passe servent au mécanisme d'authentification (login). L'UID et
le GID servent à la manipulation de fichiers. Le répertoire personnel et le shell par
défaut donnent des informations nécessaires à la phase d'authentification.
2) La phase d'authentification
Un utilisateur rentre un login et un mot de passe par le biais d'un programme de
login. Ces informations sont transmissent au système d'authentification. Il compare le
mot de passe saisit à celui présent dans sa base de donnée. Il transmet les
informations 'succès' ou 'échec' au programme de login. En cas de succès le shell
par défaut est exécuté avec les privilèges de l'utilisateur et il est placé dans son
répertoire personnel.
3) Principe de fonctionnement
Un système d'authentification fonctionne comme une boite noire :
● Système basique :
Sur un système non connecté à un réseau, les informations d'authentification sont
stockés dans les fichiers '/etc/passwd' et '/etc/shadow'.
'passwd' contient les informations de nom d'utilisateur, de shell par défaut, du
répertoire personnel, UID et GID.
Exemple : foo:x:1001:1001:,,,:/home/foo:/bin/bash
(nom d'utilisateur, shadow passwd, UID, GID, home directory, shell)
'shadow' contient les mots de passe crypté des utilisateurs
Exemple : foo:$1$UBPQuBy$aSJQrauJNQ9JPtyhlzQup/:1[Link]
Quand un utilisateur configure son mot de passe, le système va le crypter
généralement avec une méthode non réversible. Quand l'utilisateur se logue, le
système d'authentification va crypter le mot de passe donné avec la même méthode,
si le résultat du cryptage est identique à celui stocké dans la base, alors le mot de
passe est bon.
/etc/passwd est lisible par tous les utilisateurs.
/etc/shadow n'est accessible que par le root.
Si un utilisateur a accès à plusieurs machine, il doit changer de mot de passe sur
toutes les machines ; s'il change de groupe, il doit changer de groupe sur toutes les
machines.
● Système avancé :
A partir d'un certain nombre d'utilisateurs, on met en place un système centralisé
d'authentification. Cela résoud en partie des problèmes liés à l'accès direct aux
machines.
Notions de permissions UNIX
1) Tout est fichier
UNIX propose une abstration généralisée de l'ensemble des ressources d'une
machine : tout est vue comme un fichier. Evidemment les fichiers « conventionnels »
sont des fichiers, de façon plus étonnante, les périphériques sont aussi des fichiers.
Pas si étonnant que ça, si on considère une souris : le système lit les informations
envoyées par la souris. Ces informations sont une suite de '1' et de '0' ; un fichier est
lui aussi une suite de '1' et de '0'. Ce modèle permet un accès uniforme quelque soit
la ressource. La partie bas niveau est cachée dans la partie matérielle. Les
périphériques apparaissent tous dans le système de fichier virtuel '/dev'.
2) Fichiers et permissions
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Un fichier est un objet dans lequel on peut lire et écrire des données. Il est la
propriété d'un utilisateur et d'un groupe. L'utilisateur ne faisant pas forcément partie
du groupe. On appel 'permission' un ensemble de règle limitant l'accès à une
ressource donnée. Sur les fichiers il existetrois types de permissions :
● les droits de lecture
● les droits d'écriture
● les droits d'exécution
Un utilisateur peut se voir accorder tel ou tel autre permission. Les permissions
peuvent aussi s'appliquer à un groupe. Toutes ces informations sont stockés au
niveau du système de fichier (cf inoeud, cours de programmation sous UNIX).
Cependant, stocké ces informations individuellement pourchaque fichiers nécessite
un espace disque important. UNIX propose donc un modèle à taille fixe: les
permissions du propriétaire, du groupe et des autres. Pour chacune de ces
catégories on peut fixer les trois types de droits.
Exemple : la commande 'ls -la' donne toutes les informations disponibles sur un
fichier
Exemple : -rw- r-- r-- 1 matteo matteo 13567 2006-01-29 19:00 [Link]
(permission, nombre de droit, utilisateur, groupe, taille, date de modification, nom du
fichier)
Exemple : d-rw- r-- r-- 1 matteo matteo 2006-01-29 19:00 rep
(nombre de sous répertoire)
drwxrwxrwx de droite à gauche:
● exécution autre
● écriture autre
● lecture autre
● exécution groupe
● écriture groupe
● lecture groupe
● exécution propriétaire
● écriture propriétaire
● lecture propriétaire
● si c'est un répertoire
On peut agir sur les permissions d'un fichier à l'aide de la commande 'chmod'. Le
changement du propriétaire et du groupe se fait avec la commande 'chown'. Root
est au-dessus des droits de lecture et d'écriture, mais pas d'exécution.
3) Le partage des fichiers
C'est rendre possible l'échange de fichiers entre plusieurs ordinateurs. C'est aussi
faire en sorte que les données d'un utilisateur soient accessibles quelque soit le
poste utiliser. L'avantage est que les données sont sur un serveur unique (ou pas) ce
qui facilite entre autre les sauvegardes , mais il faut protéger le serveur
physiquement.
On peut utiliser plusieurs méthodes :
● FTP : juste un mécanisme de transfert de fichiers. Un utilisateur peut rapatrier des
données
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
en local et renvoyer les versions modifier sur le serveur.
● NFS : un système de fichier réseau. Un partage réseau est monté de façon
transparente. On a une abstraction totale du mode d'accès.
● Samba : implémentation libre du protocole SMB qui est le protocole du monde
Microsoft.
Avantage : lorsqu'on a un réseau hétérogène avec des machines sous Windows.
Inconvénient : les droits ne sont pas directement transposables.
L'organisation logique du système de fichiers (rappel)
I – L'arborescence « classique »
Sous Unix, on trouve une organisation logique des données
/ : la racine
/bin : exécutables essentiels au système employé par tous les utilisateurs
/boot : fichiers de chargement du noyau, dont le chargeur d'amorce
/dev : points d'entrées des périphériques
/etc : fichiers de configurations
/X11 : fichiers de configuration de Xwindow
/init.d : scripts de démarrage
...
/home : répertoires personnels des utilisateurs
/lib : bibliothèques standards
/mnt : les points de montage des partitions temporaires (CD-ROM, clés USB...)
(/média sous
Débian)
/root : répertoire personnel de root
/sbin : exécutables essentiels au système mais dédiées à l'administration ('add user')
/tmp : fichiers temporaire
/usr : fiérarchie secondaire
/X11R6 : est réservé à X
/bin : majorité des fichiers binaires et commandes utilisateurs
/include : en-tête pour les programmes C et C++
/lib : contient la plupart des bibliothèques partagées
/local : données relative aux programmes installés sur la machine local par le root
/bin
/include
/lib
/sbin
/src : source des programmes locaux
/sbin : fichiers binaires non essentiels au système réservé à l'administration
/share : données non dépendante de l'architecture
/src : fichiers de code sources ; c'est ici qu'on trouve les sources du noyau
/var : données versatiles telles que les fichiers de bases de données, les fichiers
journaux, les fichiers du spooler d'impression, mails en attente...
II – Les liens (rappel)
Les liens permettent de donner plusieurs nom à un fichier. Il existe deux types de
liens, les liens symboliques et les liens « dur » (physique).
1) Liens symboliques
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Un lien symbolique est un pointeur vers un fichier quelconque. On distingue que le
fichier est un lien symbolique par la présence d'un '@' devant le nom. Si on supprime
le fichier pointé par le lien, le lien n'est pas supprimé, mais il pointe nul part (il
apparaît en rouge dans le résultat d'un 'ls'). On peut faire un lien symbolique vers un
fichier d'un support amovible.
Syntaxe : ln -s nom_fichier_à_pointer nom_lien
2) Liens physique (rappel)
Un lien physique donne un deuxième nom à un fichier. Les données du fichier ne
sont présentent qu'une seule fois sur le support de stockage mais plusieurs fois dans
l'organisation logique. On ne peut pas faire un lien physique vers un fichier qui est
sur un système de fichier différent.
Syntaxe : ln nom_fichier_à_pointer nom_lien
3) Quelques commandes de gestion ( rappel)
Pour gérer les répertoires on a les commandes suivantes :
mkdir nom_fichier (création d'un répertoire)
rmdir nom_fichier (suppression d'un répertoire vide)
mv répertoire répertoire_d'acceuil (déplacement d'un répertoire)
Pour gérer les fichiers :
touch nom_fichier (création d'un fichier vide)
more nom_fichier (visualisation d'un fichier page à page)
rm nom_fichier (supprime un fichier)
mv nom_fichier répertoire_d'acceuil (déplacement d'un fichier)
mv nom_fichier nouveau_nom_fichier (renommer un fichier)
cp nom_fichier répertoire_d'acceuil [/nouveau nom] (copie d'un fichier)
4) Définition des points de montage statique
Les fichiers '/etc/dstab' permettent de configurer des points de montages statiques
prédéfinies. Lors de l'installation du système de fichier, un fichier par défaut est créé.
Ce fichier contient les définitions des points de montage spécifié lors de l'installation
ainsi que ceux pour le lecteur de disques amovibles. Dans ce fichier on trouve aussi
les partitions de swap. Le format de fichier est le suivant :
<fichier spécial périphérique> <point de montage> <type de système de fichier>
<option> <dump> <ordre fsck>
● fichier spécial périphérique : indique le périphérique dans '/dev'
● point de montage : indique le point de montage dans la hiérarchie logique
● type de système de fichier : indique le type de système de fichiers, ex : ext2, ext3,
iso 9960
(CD-ROM), nfs, ntfs, reiserfs, smbfs, vfat (FAT 32)
Si le périphérique est une partition de swap : 'swap'.
On peut spécifier 'auto' pour laisser le noyau choisir le bon format, le succès n'est
pas sûr.
● Options : liste des options séparées par des ','. Les options dépendent du type de
système de fichier, mais certaines sont connues
■ 'noauto' : le système de fichier ne sera pas monter automatiquement au
démarrage ('auto' pour qu'il soit monter automatiquement)
■ 'user' : pour qu'un utilisateur lambda puisse monter le système de fichier.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Configuration d'un pare-feu
I – Introduction
1) A quoi sert un pare-feu ('firewall' en anglais)
A rien si nous vivions dans un monde parfait. Dans un monde parfait les logiciels
n'ont pas de bugs et surtout personne ne cherche à s'introduire dans notre machine.
Un pare-feu est une application qui filtre les connexions entrantes et sortantes d'une
machine. Pour rappel, un service (web, e-mail, ...) est en écoute sur un port donné.
S'il n'y a aucun système de filtrage, n'importe quel machine relié en réseau peu
potentiellement accéder à ce service. Mais on peut vouloir restreindre ce service à
seulement quelques machines du réseau afin d'augmenter la sécurité. Normalement
si le service est bien sécurisé on peut se passer de pare-feu. On parle aussi de pare-
feu pour désigner une machine qui protège une partie du réseau du reste du monde.
Cette machine peut très bien être un PC (classique avec au moins deux cartes
réseaux) ou bien un matériel spécifique conçut pour.
2) Principes
Architecture
L'architecture simplifier du réseau est la suivante :
Ici les machines utilisateurs peuvent communiquer entres elles, sans restrictions.
Mais pour pouvoir accéder à internet, le pare-feu doit autoriser la connexion. De la
même manière, le pare-feu empêche les connexions extérieures d'entrer sur le
réseau sauf si elles sont explicitement autorisées. Un pare-feu logiciel peut très bien
être installé sur une machine terminale.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Type de firewall
Il existe trois types de pare-feu :
● Filtre des paquets: le pare-feu analyse les paquets IP. On peut filtrer suivant les
adresses de sources et de destinations. Sur le protocole transport utilisé (TCP, UDP,
ou ICNP). Sur les numéros de ports.
● Mémoire d’état: Ajoute au précédent le fait que le pare-feu conserve la mémoire
des connexions établies.
● Pare-feu applicatif: filtrage sur la couche application.
Nous nous intéresserons aux deux premiers.
3) Fonctions annexes
Un pare-feu (au sens large) peut aussi intégrer des fonctions supplémentaires :
● La mise en cache : le 'pare-feu' peut mémoriser les dernières données consultées
sur internet et ainsi ne pas avoir à effectuer de nouvelles requêtes (proxy)
● Filtrage au niveau du contenu : mots clés, vidéos, sons exécutables...
● Détections d'intrusions : repérer que quelqu'un cherche à pénétrer le système et
bloquer automatiquement sont adresse IP. Un logiciel de pare-feu qui intègrerait ces
fonctions irait à l'encontre du principe Unix, « un logiciel ne fait qu'un seule chose
mais il la fait bien ». Par contre sous Unix, il existe des passerelles entre les pare-feu
et les systèmes de détections d'intrusions par exemple.
II – Comment fonctionne TCP et UDP?
Pour bien configurer un firewall, il est nécessaire de bien comprendre le
fonctionnement de TCP et d'UDP.
1) TCP
TCP est un protocole qui fonctionne en mode connecté et est « fiable ». L'en tête
d'un paquet TCP
contient des drapeaux (valeur linéaire) indiquant la nature du paquet. Les drapeaux
sont :
● URG : signal la présence de données urgente (les routeurs n'en tiennent plus
compte)
● ACK : signal que le paquet est un accusé de réception (ACKnowledgement)
● PSH : données à envoyer tout de suite (PuSH)
● RST : rupture anormal de connexion (ReSeT)
● SYN : demande de SYNchronisation ou établissement de connexion
● FIN : demande de FIN de connexion
Établissement de connexion :
Supposons qu'une machine M cherche à initialiser une connexion avec un serveur S.
Une fois la connexion établie, M et S peuvent communiquer. On utilise le drapeau
ACK pour confirmer la bonne réception des paquets. Des mécanismes sont utilisés
pour assurer le bon acheminement des données.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Pour terminer la connexion, on envoie un paquet avec le drapeau FIN.
2) UDP
UDP fonctionne en mode non connecté et est aussi considéré comme non fiable. On
ne peut pas initier de connexion pour transmettre des informations, on envoie juste le
paquet en espérant qu'il arrive.
C'est à la couche application de s'assurer que les données sont bien arrivées.
III – Sous Unix – GNU/Linux
Nous allons seulement nous intéresser aux pare-feu sous GNU/Linux
1) Quel pare-feu sous Linux?
La question ne se pose pas. En effet le logiciel de filtrage est directement intégré au
noyau Linux, il se nomme Netfilter. Pour administrer Netfilter, on utilise la commande
iptables. Netfilter s'utilise aussi bien pour une machine terminale que pour une
passerelle.
2) Les tables
Netfilter se base sur des tables pour fonctionner. Une table est composée de chaînes
qui sont ellesmêmes composés de règles. La table 'filter' contient les chaînes pour le
filtrage des paquets. C'est la table par défaut. La table 'nat' contient les informations
de translation d'adresse. La table 'mangle' sert pour transformer les paquets (utile
pour le QOS par exemple). Dans la suite de cette section, on ne s'intéresse qu'à la
table filter.
3) Les chaînes
La notion de chaîne est importante pour Netfilter. En effet les règles de filtrage qu'on
va appliquer seront contenues dans ces chaînes. Il existe trois chaînes principales :
● input : contient les règles à appliquer sur les paquets entrant de la connexion
réseau
● output : contient les règles à appliquer sur les paquets sortant de la connexion
réseau
● forward : contient les règles à appliquer sur les paquets traversant le système.
Cette chaîne est utilisée pour les machines faisant office de passerelle.
Articulation des chaînes :
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Un paquet entrant à destination d'un processus local à la machine devra passer la
chaîne INPUT, si la chaîne reconnaît le paquet comme légitime, il sera transmis au
processus concerné. C'est la même chose pour la chaîne OUTPUT. Par exemple en
supposant que notre machine propose un service web (port 80) et que le service soit
public. Il y aura dans 'INPUT' une règle qui indiquera que les paquets TCP à
destination des ports 80 sont autorisés et un règle 'OUTPUT' pour que les paquets
en provenance du port 80 soient autorisés (la réponse du serveur).
NB : On peut définir ses propres règles pour améliorer la lisibilité des règles (un peu
comme on ferait des fonctions dans un programme).
4) La définition des règles
Netfilter fonctionne avec un principe un peu particulier : il n'y a pas de fichier de
configuration, à la place on utilise la commande iptables pour gérer les règles.
Politique par défaut :
On peut spécifier pour chaque chaîne quelle est la politique par défaut, c'est à dire
qu'il faut autoriser ou rejeter les paquets que ne correspondent à aucune règle. Pour
définir la politique par défaut :
iptables -P <chaîne> <cible>
Exemple : iptables -P INPUT DROP
=> par défaut on rejete les paquets entrant
La cible est généralement soit 'ACCEPT' pour accepter le paquet, soit 'DROP' pour
le rejeter.
Ajout de règle :
Bien qu'il n'existe pas de fichier de configuration, l'ordre des règles est importante.
En effet, lorsqu'un paquet est à analyser, Netfilter regarde règle apès règle jusqu'à
trouver une règle qui correspond un paquet.
Syntaxe : iptables -A <chaîne> <description de la règle> [option] -j <cible>
ou iptables -I <chaîne> <numéro de règle> <description> [option] -j <cible>
Si on utilise -A alors la règle sera ajouté à la fin de la chaîne, -I permet de spécifier
un point d'insertion.
Quelques options pour décrire les règles :
-p <protocole> : indique le protocole (tcp, udp, icmp ou all)
-s <source> [masque] : spécifie l'adresse de l'émetteur du paquet, 'masque' est pour
spécifier une plage d'adresse
-d <destination> masque : spécifie la destination du paquet
-i <interface> : spécifie sur quelle interface d'entrée la règle s'applique (eth0,
uniquement pour la chaîne INPUT)
-o <interface> : spécifie sur quelle interface de sortie la règle s'applique (eth0,
uniquement pour la chaîne OUTPUT)
--source-port <port> [:port] : indique un port ou une plage de ports d'origine '--sport'
est un alias.
Fonctionne qu'avec '-p tcp' ou '-p udp'
--destination-port <port> [:port] : indique un port ou une plage de ports d'origine '--
dport' est un alias.
Fonctionne qu'avec '-p tcp' ou '-p udp'
--tcp-flags <masque> <comp> : regarde les drapeaux tcp positionnées. <masque>
est la liste des drapeaux
à analyser (séparé par des ,) et <comp> est la liste des drapeaux qui doivent être
positionnés parmi ceux de <masque>
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Exemple :
iptables -A INPUT -p top –tcp-flags SYN, ACK, FIN, RST SYN -j ACCEPT
Le drapeau SYN doit être positionné. ACK, FIN, RST doivent être à 0.
--SYN équivalent à '--tcp-flags SYN, ACK, FIN, RST SYN'
NB :
● La plupart des options peuvent être inverser (ex : "n'est pas le protocole udp") en
ajoutant !
Ex : -p ! udp
● Cette liste n'est pas exhaustive. Cf 'man iptables'
Un exemple :
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
Supprimer une règle :
Pour supprimer une règle, on utilise la commande :
iptables -D <chaîne> <numéro de la règle> ou iptables -D <chaîne> <description>
Lister les règles :
iptables -L
Vider les chaînes :
Si on souhaite supprimer toutes les règles : iptables -F [chaîne]
IV – Translation d'adresse, NAT
NAT = Network Address Translation
1) Objectifs et raison d'être
La version 4 du protocole IP (Ipv4) est celle qui est la plus répandu sur Internet, le
remplaçant étant Ipv6 qui se déploie (trop) lentement. Les adresses dans Ipv4 sont
codées sur 4
Octets (32 bits), ce qui nous donne 232 = 4 294 967 296 adresses possibles, ce qui
semblait largement suffisant dans les années 70 lorsque le protocole fut conçu. Hors
avec l'explosion d'Internet, le nombre d'adresses disponible est insuffisant.
Deux solutions : passage en Ipv6 ou la translation d'adresses. Le principe de la
translation d'adresses est de permettre la correspondance entre plusieurs machines
adressées en interne avec 1 ou plusieurs adresses publiques.
Il existe des plages d'adresses IP réservées pour l'adressage interne :
● [Link] à [Link]
● [Link] à [Link]
● [Link] à [Link]
Ces adresses ne sont pas routables sur Internet.
2) 2 types de NAT
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Il existes deux types de NAT. Le NAT statique et le NAT dynamique. On ne va
s'intéresser qu'au 2ème. Supposons que nous avons le réseau suivant :
Si la machine [Link] A veut se connecter au serveur [Link]:80 S. A va
d'abord initier une connexion avec la passerelle P. Le port source de A serait 4325 et
le port de destination 80.
A va dire à P qu'elle veut se connecter à S. P va donc initier une connexion avec S
via son adresse publique. Ici P va choisir un port quelconque (53667). Quand S va
répondre, il répond à P sur le port
53667. P sachant que ce port particulier appartient à sa table NAT, il retransmet
l'information à A.
Avantages :
● A partir d'une adresse publique, on peut avoir plusieurs machines qui se
connectent à Internet
● Economie effective des adresses publiques
● Sécurité : impossible d'initier une connexion depuis l'extérieur, sauf si on le
configure explicitement
Inconvénient :
seul tcp et udp sont pris en compte
ralenti la propagation d'IPv6 qui propose d'autres améliorations que le nombre
d'adresses
disponibles
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
tout les protocoles de la couche application ne peuvent pas passer par un serveur
NAT
3) NAT sous Netfilter
Sous Netfilter on a la table 'nat' qui est là pour tout ce qui concerne la translation
d'adresse. Elle rajoute deux chaînes à Netfilter :
● PREROUTING : qui traite les paquets avant qu'ils ne soient routés
● POSTROUTING : qui traite les paquets après qu'ils ne soient routés
La commande pour faire de la translation d'adresse est :
iptables -t nat -A POSTROUTING -s [Link]/24 -o eth1 -j MASQUERADE
où :
● -s [Link]/24 indique le sous réseau privé
● -o eth1 indique l'interface de sortie
● -j MASQUERADE est la cible spéciale pour la nat cela ne suffit pas pour faire
fonctionner une machine en tant que passerelle, il faut indiquer dans un fichier
spécial qu'on autorise la translation d'adresse. Echo 1 > /proc/sys/net/ipv4/ip_forward
Si on souhaite filtrer les connexions réseau qui transitent via la passerelle, on utilise
les règles contenues dans la table FORWARD.
4) Redirection de port
On peut grâce à la chaîne PREROUTING rediriger des ports "publique" vers des
machines du réseau privé.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Supposons que B propose un service web et qu'on souhaite qu'il soit accesible de
l'extérieur (ex : parc).
Il faut configurer notre passerelle pour que les paquets à destination du port 80
soient redirigés vers B. Pour cela on utilise la commande :
iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination
[Link]
Notons qu'on pourrait tout à fait rediriger sur d'autres ports : le port publique serait
43732 et sur le serveur web, 80.
5) Comment on fait pour notre pare-feu puisqu'on a pas de fichier de configuration?
La première solution est de faire un script qui est appelé au lancement de la
machine.
La seconde solution est d'utiliser une sous couche logiciel qui s'occupe de la
configuration de Netfilter.
On peut citer Shorewall qui possède des fichiers de configuration et fonctionne
comme un service.
Il existe aussi des interfaces graphique comme Guarddog (non encore compatible
avec notre version de la Debian), ou encore Firestarter qui propose encore moins
d'options de configuration que le firewall de Windows XP SP2.
V – IPv6
1) Présentation
IPv6 est la version 6 du protocole IP. Les adresses sont codées sur 128 bits, soit 340
282 366 920
938 463 374 607 431 768 211 456 soit environ 3,4 x 1038 adresses disponibles ou
encore 667 132 000 milliards (6,67 x 1017) adresses par millimètre carré de surface
terrestre. Mais IPv6 permet aussi :
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
● La réduction des tables de routage
● Une amélioration de la sécuritée
● Une amélioration de la qualité de service
● Permet la mobilité
2) Cohabitation avec IPv4
Il est impossible de basculer intégralement tout Internet en Ipv6 d'un seul coup.
L'idée est de faire grandir des îlots IPv6 dans un océan d'IPv4. IPv6 est capable
d'encapsuler des adresses IPv4, une machine sous IPv6 peut donc accéder à un
service IPv4, la passerelle s'occupera d'extraire l'information IPv4. Les serveurs IPv6
possède aussi une pile réseau IPv4, pour que les machines IPv4 puissent y accéder.
Enfin les paquets IPv6 peuvent être encapsulés dans des paquets IPv4 pour franchir
des parties IPv4 du réseau.
Chapitre 7 : Le protocol DHCP
I – Qu'est-ce que le DHCP
DHCP (Dynamic Host Configuration Protocol) permet d'attribuer dynamiquement les
adresses IP aux hôtes.
Fonctionnement
Quand une machine se connecte au réseau, elle va faire une requête DHCP. Cette
machine n'a pas d'adresse IP et elle ne connaît rien du réseau y compris l'adresse
du serveur DHCP. La machine envoie une requête sur le réseau (en UDP et en
mode Broadcast) avec comme adresse IP : [Link]. La requête contient entre autre
l'adresse MAC de la machine. Le serveur DHCP va intercepter la requête.
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication
Il va regarder si son pool d'adresses contient encore des adresses disponibles et il
va renvoyer une réponse DHCP avec une adresse IP disponible plus l'adresse MAC
de la machine.
La machine cliente intercepte la réponse, voit que son adresse MAC en fait partie et
configure automatiquement son adresse IP avec celle proposée par le serveur. La
réponse contient aussi le maque de sous réseau, l'adresse de la passerelle,
l'adresse du serveur DNS, le bail (la durée pendant laquelle l'adresse IP est attribuée
à la machine).
III – SOUS GNU/Linux
SUPPORT DE COURS : ADMINISTRATION SYSTEME
Classe : CS2I 3 IRC
ENS : TCHINDJE LANGMI Emmanuel
Ingénieur/Chercheur Réseau & Télécommunication