Le réseau
TCP/IP
1. Bases
L’origine de TCP/IP provient des recherches du DARPA (Defense Advanced Research Project Agency) qui débutent en 1970 et débouchent sur ARPANET. Dans les faits, le DARPA a financé l’université de Berkeley qui a intégré les protocoles de base de TCP/IP au sein de son système UNIX BSD 4.
TCP/IP s’est popularisé grâce à son interface générique de programmation d’échanges de données entre les machines d’un réseau, les primitives sockets, et l’intégration de protocoles applicatifs. Les protocoles de TCP/IP sont supervisés par l’IAB (Internet Architecture Board) lui-même supervisant deux autres organismes :
-
L’IRTF (Internet Reseach Task Force) qui est responsable du développement des protocoles.
-
L’IETF (Internet Engineering Task Force) qui est responsable du réseau Internet.
Les adresses réseau sont distribuées par le NIC (Network Information Center) et en France l’INRIA. L’ensemble des protocoles de TCP/IP est décrit dans les documents RFC (Request For Comments) (voir le RFC 793).
-
La couche inférieure est IP (Internet Protocol).
-
La couche de transport est TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol).
-
Les couches supérieures sont les couches des protocoles applicatifs, par exemple :
-
NFS (Network File System) : partage de fichiers à distance.
-
DNS (Domain Name System) : association hôte<->IP.
-
FTP (File Transfer Protocol) : transfert de fichiers.
-
TELNET : émulation d’un terminal de type texte...
La version du protocole IP la plus utilisée est la v4, le protocole IPv6 doit la remplacer à terme. Compatible IPv4, il propose un adressage sur 128 bits (16 octets) permettant d’étendre les capacités du réseau notamment en matière de taille et d’adressage.
2. Adressage
a. Classes
Il est important de savoir avant l’installation dans quel type de réseau doit s’intégrer le nouveau serveur, TCP/IP bien sûr, mais il faut déjà lui réserver une adresse IP, un hostname (nom de machine réseau), connaître les diverses passerelles, le nom de domaine, la classe utilisée et le masque de sous-réseau netmask.
Voici un bref rappel sur les classes...
Services réseau xinetd
1. Présentation
Le démon xinetd est un « super-service » permettant de contrôler l’accès à un ensemble de services, telnet par exemple. Beaucoup de services réseau peuvent être configurés pour fonctionner avec xinetd, comme les services FTP, ssh, samba, rcp, HTTP, etc. Des options de configuration spécifiques peuvent être appliquées pour chaque service géré.
L’avènement de systemd, qui permet de contrôler à la fois un socket et un service, rend caduque l’utilisation de xinetd sur les distributions récentes. Cependant, xinetd reste présent sur toutes les distributions. La présente partie a été écrite à l’aide d’une ancienne version de OpenSUSE, xinetd n’étant plus installé par défaut.
Lorsqu’un hôte client se connecte à un service réseau contrôlé par xinetd, xinetd reçoit la requête et vérifie tout d’abord les autorisations d’accès TCP (voir tcp_wrappers au prochain chapitre) puis les règles définies pour ce service (autorisations spécifiques, ressources allouées, etc.). Une instance du service est alors démarrée et lui cède la connexion. À partir de ce moment xinetd n’interfère plus dans la connexion entre le client et le serveur.
2. Configuration
Les fichiers de configuration sont :
-
/etc/xinetd.conf: configuration globale.
-
/etc/xinetd.d/* : répertoire contenant les fichiers spécifiques aux services. Il existe un fichier par service, du même nom que celui précisé dans /etc/services.
$ ls -l /etc/xinetd.d
total 92
-rw-r--r-- 1 root root 313 sep 22 2007 chargen
-rw-r--r-- 1 root root 333 sep 22 2007 chargen-udp
-rw-r--r-- 1 root root 256 mar 20 22:11 cups-lpd
-rw-r--r-- 1 root root 409 nov 4 2005 cvs
-rw-r--r-- 1 root root 313 sep 22 2007 daytime
-rw-r--r-- 1 root root 333 sep 22 2007 daytime-udp
-rw-r--r-- 1 root root 313 sep 22 2007 discard
-rw-r--r-- 1 root root 332 sep 22 2007...
OpenSSH
1. Présentation
OpenSSH est un protocole de shell sécurisé, un mécanisme qui permet l’authentification sécurisée, l’exécution à distance et la connexion à distance. Il permet aussi le transport sécurisé du protocole X Window. Enfin, il est capable d’encapsuler des protocoles non sécurisés en redirigeant les ports.
Les packages à utiliser pour un serveur sont openssh, openssl et openssh-clients. Pour X on rajoute les packages openssh-askpass* (il peut y en avoir plusieurs suivant l’environnement de bureau). La liste des packages à installer dépend de chaque distribution.
L’utilisation la plus commune reste l’accès distant sécurisé à une machine via le client ssh.
2. Configuration
La configuration est /etc/ssh/sshd_config. Quelques options sont éventuellement à modifier :
-
Port : le numéro de port, par défaut 22.
-
Protocol : fixé à 2,1 il autorise SSH1 et SSH2. On préférera SSH2 et donc on laissera la valeur 2 seule.
-
ListenAddress : par défaut ssh écoute sur toutes les IP du serveur. On peut autoriser uniquement l’écoute sur une interface donnée.
-
PermitRootLogin : ssh autorise les connexions de root. On peut placer la valeur à « no ». Dans ce cas, il faudra se connecter en simple utilisateur et passer par su ou sudo.
-
Banner : chemin d’un fichier dont le contenu sera affiché aux utilisateurs lors de la connexion.
Ssh est un service System V à lancer avec service ou directement par /etc/init.d/sshd, ou une unité systemd.
# service sshd start
3. Utilisation
La commande ssh permet d’établir une connexion.
$ ssh -l login host
$ ssh login@host
L’option -X permet d’activer la redirection (forwarding) du protocole X Window.
$ ssh -X login@host
4. Clés et connexion automatique
Il est possible d’établir une connexion automatique vers une autre machine sans saisir de mot de passe. Pour cela, il est nécessaire depuis le compte utilisateur du client (la machine qui va se connecter) de générer une paire de clés, privée et publique. Aucune passphrase ne doit être saisie, sauf si celle-ci est enregistrée dans un trousseau de session ou via ssh-agent....
Monter un serveur DHCP
1. Présentation
Le service DHCP (Dynamic Host Configuration Protocol), protocole de configuration dynamique des hôtes, permet aux hôtes d’un réseau de demander et recevoir des informations de configuration (adresse, routage, DNS, etc.). Il y a en général un seul serveur DHCP par segment de réseau même si plusieurs sont possibles. Si le serveur est sur un autre segment, on peut utiliser un agent de retransmission DHCP.
Autrement dit, un client DHCP recherche tout seul un serveur DHCP qui lui communiquera son adresse IP. L’adresse IP est assignée soit dynamiquement à partir de plages d’adresses prédéfinies, soit statiquement en fonction de l’adresse MAC du demandeur. Les informations sont valables un laps de temps donné (un bail) qui peut être renouvelé et configurable.
DHCP est un sur-ensemble de BOOTP (Bootstrap Protocol). Quand le client cherche à contacter un serveur, c’est BOOTP qui fournit les informations d’adressage. DHCP gère les renouvellements. BOOTP se base sur le protocole de transport UDP.
Un hôte n’a aucune information réseau disponible au démarrage. Il doit trouver seul un serveur DHCP. Pour cela, BOOTP effectue un broadcast sur l’IP 255.255.255.255 avec une trame contenant ses informations (comme son adresse MAC) et les informations souhaitées (type de requête...
Serveur DNS
1. Présentation
Le Système de Noms de Domaine DNS (Domain Name System) transforme les noms d’hôte en adresses IP : c’est la résolution de nom. Il transforme les adresses IP en noms d’hôte : c’est la résolution inverse. Il permet de regrouper les machines par domaines de nom. Il fournit des informations de routage et de courrier électronique.
Le DNS permet de faire référence à des systèmes basés sur IP (les hôtes) à l’aide de noms conviviaux (les noms de domaine). L’intérêt d’un DNS est évident. Les noms de domaine sont plus simples à retenir, et si son adresse IP change l’utilisateur ne s’en rend même pas compte. On comprend que le DNS est un service clé critique pour Internet.
Les noms de domaine sont séparés par des points, chaque élément pouvant être composé de 63 caractères ; il ne peut y avoir qu’un maximum de 127 éléments et le nom complet ne doit pas dépasser 255 caractères. Le nom complet non abrégé est appelé FQDN (Fully Qualified Domain Name). Dans un FQDN, l’élément le plus à droite est appelé TLD (Top Level Domain), celui le plus à gauche représente l’hôte et donc l’adresse IP.
Le DNS contient une configuration spéciale pour les routeurs de courrier électronique (définitions MX) permettant une résolution inverse, un facteur de priorité et une tolérance de panne.

Représentation d’une arborescence DNS
Une zone est une partie d’un domaine gérée par un serveur particulier. Une zone peut gérer un ou plusieurs sous-domaines, et un sous-domaine peut être réparti en plusieurs zones. Une zone représente l’unité d’administration dont une personne peut être responsable.
2. Lancement
Le service s’appelle named.
# service named start
Ou :
# /etc/init.d/named start
3. Configuration de Bind
Bind (Berkeley Internet Name Daemon) est le serveur de noms le plus utilisé sur Internet. Bind 9 supporte l’IPv6, les noms de domaine unicode, le multithread et de nombreuses améliorations de sécurité.
a. Configuration générale...
Courrier électronique
1. Principe
-
Quand un client (un utilisateur) envoie un message, il utilise un MUA (Mail User Agent), par exemple Outlook Express, Thunderbird, Evolution, Kmail, Mutt, etc.
-
Le MUA envoie le message au MTA (Mail Transport Agent). Le MTA étudie l’adresse électronique pour isoler l’utilisateur et le domaine de destination. Puis il vérifie les informations DNS de type MX (Mail exchanger) pour le domaine choisi, pour savoir à quel serveur transmettre le courrier. Si aucun MTA n’est disponible, le message est placé en file d’attente et relance la distribution plus tard (le délai dépend de la configuration du MTA).
-
Le MX peut être soit un autre MTA, qui jouera le rôle de routeur (cas d’une redirection vers un sous-domaine par exemple), soit un MDA (Mail Delivery Agent). Le MDA place le message dans un fichier temporaire, peut le filtrer, etc.
-
À ce niveau, le destinataire reçoit le message : soit il le récupère en lisant directement le fichier temporaire (cas de la commande mail par exemple) soit il passe par un protocole de type POP ou IMAP.
-
Le protocole de transport de messages est le SMTP (Simple Mail Transfer Protocol) sur le port 25.
-
Les protocoles de réception de messages soit POP (Post Office Protocol) sur le port 110 (POP3), soit IMAP (Internet Message Access Protocol).
Deux suites de courrier électronique se partagent l’essentiel du marché sur Unix : sendmail et postfix.
La suite libre sendmail est la plus connue et la plus utilisée. Sendmail a été créé en 1981 par Eric Allman et a été intégré à...
Service HTTP Apache
1. Présentation
Apache 2 est le serveur HTTP le plus utilisé actuellement sur les serveurs Web. Sa configuration et sa flexibilité en font un serveur incontournable.
Lorsqu’un serveur Apache reçoit des requêtes, il peut les redistribuer à des processus fils. La configuration permet de lancer des processus de manière anticipée et d’adapter dynamiquement ce nombre en fonction de la charge.
Apache est modulaire. Chaque module permet d’ajouter des fonctionnalités au serveur. Le module le plus connu est probablement celui gérant le langage PHP, « mod_php ». Chaque module s’ajoute via les fichiers de configuration, et il n’y a même pas besoin de relancer le serveur Apache : on lui donne juste l’ordre de relire sa configuration.
Apache peut gérer plusieurs sites web en même temps, ayant chacun leur nom, à l’aide des hôtes virtuels.
2. Arrêt/Relance
Le nom du service dépend de la distribution. Il est souvent intitulé apache ou httpd. Suivant la distribution lancez le service via la commande service ou directement par son nom /etc/init.d/apache.
-
/etc/init.d/httpd start : démarre.
-
/etc/init.d/httpd stop : stoppe.
-
/etc/init.d/httpd restart : redémarre.
-
/etc/init.d/httpd reload : demande à Apache de relire sa configuration sans redémarrer.
Avec systemd, le service s’exécute de la même manière :
-
systemctl start httpd
-
systemctl reload httpd
-
systemctl restart httpd
-
systemctl stop httpd
Apache est fourni avec l’outil apachectl qui reprend les paramètres (liste non exhaustive) start, stop, status, reload, et surtout configtest qui valide ou non le contenu du fichier de configuration de Apache.
3. Configuration
La configuration principale est stockée dans /etc/httpd/conf/httpd.conf. Elle contrôle les paramètres généraux du serveur web, les hôtes virtuels et les accès. La configuration des différents modules est placée dans /etc/httpd/conf.d. Les modules sont présents dans /etc/httpd/modules/. Par défaut la racine du serveur, celle où sont placées les pages du site, est dans /var/www ou /srv/www. Cette position dépend de la directive DocumentRoot dans les fichiers de configuration.
4. Directives...
Partage de fichiers
1. NFS
a. Lancement
Le partage de fichier NFS (Network File System) ou système de fichiers réseau permet de partager tout ou partie de son système de fichiers à destination de clients NFS, bien souvent d’autres Unix. Dans sa version de base c’est un système simple et efficace. Nous allons étudier la version 2, mais les exemples fonctionnent aussi bien en version 3 (attention cependant au protocole de transport par défaut qui passe sur TCP au lieu de UDP sur certaines distributions).
NFS s’appuie sur le portmapper (portmap), le support NFS du noyau et les services rpc.nfsd et rpc.mountd.
Sur les distributions non équipées de systemd, pour lancer le service NFS, portmap et NFS doivent être lancés (en vérifier le statut avant).
# service portmap status # /etc/init.d/portmap status ou rpcinfo -p
# service nfs status
# service portmap start
# service nfs start
# service nfslock start
Sur quelques distributions, portmap est remplacé par rpcbind. Il faut lancer ce service à la place de portmap.
Sur les distributions disposant de systemd, il faut tout d’abord installer :
-
Sur Ubuntu et openSUSE, le package nfs-kernel-server
-
Sur Fedora, Red Hat et CentOS, le package nfs-utils
Les services s’appelleront :
-
Sur Ubuntu, Fedora, CentOS et Red Hat : rpcbind et nfs-server
-
Sur openSUSE : rpcbind et nfsserver
Vous pourrez ensuite utiliser les commandes systemctl classiques.
Pour savoir si le service est disponible sur un hôte distant :
# rpcinfo -p hote
root@ubuntu:/etc# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
...
100005 1 tcp 33003 mountd
...
100003 3 tcp 2049 nfs
...
100021 1 tcp 40811 nlockmgr
...
b. Cas de NFS4
NFSv4, ou NFS4, ou encore 4.1, n’utilise plus les RPC et le portmapper. La version 4 est basée sur TCP....
Partages Windows avec Samba
1. Présentation
Samba est un ensemble de serveurs implémentant les protocoles SMB/CIFS et NetBIOS/WINS pour Unix. Son utilisation la plus connue est le partage de ressources entre Windows et Unix, mais il fonctionne parfaitement bien entre deux Unix. Un partage est aussi appelé service. Samba est composé de deux services :
-
smbd : serveur SMB/CIFS.
-
Authentification et autorisation.
-
Partages de fichiers et d’imprimantes.
-
nmbd : serveur de noms NetBIOS.
-
Parcours des ressources.
-
Serveur WINS.
Un troisième service, winbindd, permet d’utiliser les comptes utilisateur d’un domaine Microsoft. Les dernières versions de Samba (3 et suivantes) permettent aussi de se raccorder à Active Directory.
Les fonctions principales de Samba sont :
-
Authentification des utilisateurs.
-
Partage de fichiers et d’imprimantes.
-
Parcours des ressources partagées du réseau.
-
Résolution de noms (indépendante de DNS) Nom Netbios en adresse IP ou vice versa.
Il vous faudra installer le package samba, quelle que soit la distribution.
Les noms des services sont les suivants :
-
Sur Ubuntu, nmbd et smbd
-
Sur openSUSE, SLES, Red Hat, CentOS et Fedora, nmb et smb
2. Configuration
La configuration de Samba se trouve dans /etc/samba/smb.conf. Vous pouvez tester sa syntaxe avec l’outil testparm.
Le fichier smb.conf reprend la syntaxe des fichiers de configuration de Windows de type ini avec des sections délimitées par des crochets [ ].
Par défaut trois sections sont présentes :
-
[global] : réglages génériques et globaux du serveur, nom, commentaires, méthode d’authentification, réglages par défaut, etc.
-
[homes] : partage des répertoires personnels des utilisateurs.
-
[printers] : partage des imprimantes.
Les paramètres sont de la forme :
nom = valeur
Les commentaires...