Vous êtes sur la page 1sur 110

Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

Linux
Administration
des Serveurs

11
TCP/IP | ROUTAGE IP | DHCP

DNS | TELNET | SSH

NFS | SAMBA |

M.FILALI
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
5.3. Configuration des routages statiques par ip route...........................................39
Sommaire 5.4. Configuration de la passerelle par défaut........................................................40
5.5. Configuration des routages statiques par les fichiers ifcfg...............................41
CH1 : Configurer les services de base............................................................................9
TP-N°2-1 : Configurer les services de routage Statique (Enoncé)..................................44
1. Introduction :.............................................................................................................9
TP-N°2-1 : Configurer les services de routage Statique (Corrigée)................................45
2. Configuration de noms d'hôtes..................................................................................9
2.1. Comprendre les noms d'hôtes...........................................................................9 TP-N°2-2 : Configurer les services de routage Dynamique............................................50
2.2. Configurer des noms d'hôtes par hostnamectl.................................................10 TP-N°2-3 : Mise en Place des services de routage (Devoir Libre)..................................54
2.3. Configurer des noms d'hôtes par nmcli............................................................11
CH3 : Implémenter le serveur DHCP............................................................................56
3. Configuration des paramètres TCP/IP.......................................................................11
1. Introduction.............................................................................................................56
3.1. Introduction au NetworkManager.....................................................................11
3.2. Le démon du NetworkManager........................................................................12 2. Pourquoi utiliser DHCP ?..........................................................................................56

3.3. Configuration réseau par Interface en ligne de commandes (CLI)....................13 3. Configuration d'un serveur DHCP.............................................................................57
3.4. Configurer une interface de réseau en utilisant les commandes ip...................13 3.1. Fichier de configuration...................................................................................57
3.5. Configurer une interface de réseau en utilisant les commandes ifconfig..........14 3.2. Base de données d'attribution.........................................................................61
3.6. NetworkManager et les Scripts réseau.............................................................15 3.3. Lancement et interruption du serveur.............................................................61
3.7. Configurer une interface de réseau en utilisant les fichiers ifcfg......................17
4. Agent de relais DHCP...............................................................................................63
4. Résolution des noms de domaine............................................................................20 4.1. Configurer dhcrelay en tant qu'agent de relais DHCPv4 et BOOTP...................64
4.1. Résolution des noms.......................................................................................20 4.2. Configurer dhcrelay en tant qu'agent de relais DHCPv6...................................65
4.2. Les fichiers de configuration :..........................................................................22
5. Configuration d'un serveur DHCP Multi-hôtes...........................................................65
TP-N°1-1 : Configurer les services de base (Enoncé)....................................................24 5.1. Configuration de l'hôte....................................................................................67

TP-N°1-1 : Configurer les services de base (Corrigée)..................................................26 6. DHCP pour IPv6 (DHCPv6)........................................................................................69

TP-N°1-2 : Configurer les services de base (Devoir Libre).............................................31 TP-N°3-1 : Implémenter le serveur DHCP (Enoncé).......................................................71

CH2 : Configurer les services de routage.....................................................................32 TP-N°3-1 : Implémenter le serveur DHCP (Corrigée).....................................................72

1. Introduction.............................................................................................................32 TP-N°3-2 : Configurer l’un agent de relais DHCP (Enoncé)............................................76

2. Acheminement des paquets TCP-IP..........................................................................33 TP-N°3-2 : Configurer l’un agent de relais DHCP (Corrigée)..........................................77
2.1. Les tables de routage......................................................................................34
TP-N°3.3 : Mise en Place d’un serveur DHCP (Devoir Libre).........................................79
3. Acheminement Internet...........................................................................................36
CH4 : Implémenter le serveur BIND.............................................................................81
3.1. Domaine d'acheminement...............................................................................36
3.2. Principe du choix d'une voie d'acheminement.................................................36 1. Introduction.............................................................................................................81

4. Routage dynamique................................................................................................36 2. Introduction à DNS..................................................................................................81


2.1. Zones de noms de serveurs.............................................................................82
5. Définition des règles de routage..............................................................................37
2.2. Types de serveurs de noms.............................................................................83
5.1. Configuration des routages statiques par les commandes route......................37
2.3. BIND en tant que serveur de noms..................................................................83
5.2. Configuration des routages statiques par nmcli...............................................39

M.FILALI Linux : Administration des Serveurs 3 M.FILALI Linux : Administration des Serveurs 4
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
3. BIND........................................................................................................................83 3.2. Configurer un service....................................................................................126
3.1. Zones vides.....................................................................................................83
4. TCP-Wrapper.........................................................................................................127
3.2. Configuration du service «named»..................................................................84
4.1. Principe de fonctionnement...........................................................................127
3.3. Configuration de fichiers de zone....................................................................93
4.2. Host.deny et host.allow.................................................................................128
3.4. Fichier de zone simple.....................................................................................99
TP-N°5-1 : Implémenter l’accès Telnet au Serveur (Enoncé).......................................129
3.5. Un fichier de zone de résolution de noms inversés........................................101
TP-N°5-1 : Implémenter l’accès Telnet au Serveur (Corrigée).....................................130
4. Comment se servir de l'utilitaire rndc....................................................................102
4.1. Configuration de l'utilitaire............................................................................102 TP-N°5-2 : Implémenter l’accès Telnet au Serveur (Devoir Libre)...............................135
4.2. Vérifier le statut de service rndc....................................................................103 CH6 : Implémenter l’accès sécurisé SSH au Serveur..................................................136
4.3. Configuration en ligne de commandes...........................................................103
1. Principe.................................................................................................................136
4.4. Mise à jour des clés de zone..........................................................................104
4.5. Activation de la validation DNSSEC................................................................104 2. Le protocole SSH...................................................................................................137
4.6. Activation de la journalisation des requêtes...................................................104 2.1. Pourquoi utiliser SSH ?..................................................................................137
2.2. Fonctionnalités principales............................................................................137
5. Utilisation de l'utilitaire dig....................................................................................104
2.3. Versions de protocole....................................................................................139
5.1. Rechercher un serveur de noms....................................................................105
2.4. Séquence d'événements d'une connexion SSH..............................................139
5.2. Recherche d'une adresse IP...........................................................................105
5.3. Recherche d'un nom d'hôte...........................................................................105 3. Configuration d'OpenSSH.......................................................................................141
3.1. Fichiers de configuration...............................................................................141
6. Fonctionnalités avancées de BIND.........................................................................106
3.2. Démarrage d'un serveur OpenSSH................................................................143
6.1. Vues multiples...............................................................................................106
3.3. Utilisation nécessaire de SSH pour les connexions à distance........................144
6.2. IXFR (Incremental Zone Transfers)................................................................107
3.4. Authentification basée clés............................................................................144
6.3. TSIG (Transaction SIGnatures).......................................................................107
6.4. DNSSEC (DNS Security Extensions )...............................................................107 4. Clients OpenSSH....................................................................................................149
6.5. IPv6 (Internet Protocol version 6)...................................................................108 4.1. Comment se servir de l'utilitaire ssh..............................................................149
4.2. scp................................................................................................................151
7. Erreurs communes à éviter....................................................................................108
4.3. sftp...............................................................................................................152
TP-N°4-1 : Implémenter le serveur DNS Primaire (Enoncé).........................................109
5. Beaucoup plus qu'un shell sécurisé........................................................................152
TP-N°4-1 : Implémenter le serveur DNS Primaire (Corrigée).......................................110 5.1. Transfert X11................................................................................................153
TP-N°4-2 : Implémenter le serveur DNS Secondaire(Enoncé)......................................117 5.2. Réacheminement de port..............................................................................153

TP-N°4-2 : Implémenter le serveur DNS Secondaire(Corrigée)....................................118 TP-N°6-1 : Implémenter l’accès sécurisé SSH au Serveur (Enoncé)............................155

TP-N°4-3 : Mise en Place d’un Serveur DNS (Devoir Libre)..........................................123 TP-N°6-1 : Implémenter l’accès sécurisé SSH au Serveur (Corrigée)...........................156

CH5 : Implémenter l’accès Telnet au Serveur.............................................................124 TP-N°6-2 : Création des Tunnels SSH (Devoir Libre)...................................................162

1. Introduction...........................................................................................................124 CH7 : Implémenter le serveur de partage NFS..........................................................170

2. Telnet:...................................................................................................................124 1. Fonctionnement NFS..............................................................................................170


1.1. Services requis..............................................................................................170
3. Le daemon xinetd:.................................................................................................124
1.2. Configuration du client NFS...........................................................................172
3.1. Configuration avec xinetd..............................................................................125

M.FILALI Linux : Administration des Serveurs 5 M.FILALI Linux : Administration des Serveurs 6
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
2. Démarrage et arrêt NFS.........................................................................................174 9. Programmes de distribution Samba.......................................................................206

3. Configuration du serveur NFS................................................................................175 TP-N°8-1 : Implémenter le serveur de partage Samba (Enoncé)................................211


3.1. Fichier de configuration /etc/exports..............................................................175
TP-N°8-1 : Implémenter le serveur de partage Samba (Corrigée)..............................212
3.2. Commande exportfs......................................................................................178
TP-N°8-2 : Mise en Place d'un serveur Samba (Devoir Libre)......................................218
3.3. Exécuter NFS derrière un pare-feu.................................................................179
3.4. Formats des noms d'hôtes.............................................................................181
3.5. NFS sur RDMA...............................................................................................182

4. Sécurisation de NFS...............................................................................................182
4.1. Sécurité NFS avec AUTH_SYS et les contrôles d'export..................................182
4.2. Sécurité NFS avec AUTH_GSS........................................................................183
4.3. Permissions de fichier....................................................................................184

5. NFS et rpcbind.......................................................................................................184
5.1. Résolution des problèmes NFS et rpcbind......................................................185

TP-N°7-1 : Implémenter le serveur de partage NFS (Ennoncé)...................................186

TP-N°7-1 : Implémenter le serveur de partage NFS (Corrigée)...................................187

TP-N°7-2 : Mise en place d’un serveur NFS (Devoir Libre)...........................................192

CH8 : Implémenter le serveur de partage Samba.......................................................195

Samba.......................................................................................................................195

1. Introduction à Samba............................................................................................195

2. Démons Samba et services connexes....................................................................196

3. Se connecter à un partage Samba.........................................................................197

4. Monter le partage..................................................................................................199

5. Configurer un serveur Samba................................................................................200


5.1. Configuration graphique................................................................................200
5.2. Configuration en ligne de commande............................................................200
5.3. Mots de passe chiffrés...................................................................................201

6. Lancer et arrêter Samba........................................................................................201

7. Mode de sécurité de Samba...................................................................................202


7.1. Sécurité Niveau utilisateur............................................................................202
7.2. Sécurité Niveau partage................................................................................204

8. Navigation réseau Samba......................................................................................204


8.1. Exploration de domaines...............................................................................205
8.2. WINS (« Windows Internet Name Server »)....................................................205

M.FILALI Linux : Administration des Serveurs 7 M.FILALI Linux : Administration des Serveurs 8
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Il peut être changé par DHCP ou DNS en cours d'exécution. Le nom
CH1 : Configurer les services de base d'hôte « pretty »(hostname) se présente en forme libre UTF8 à l'utilisateur.
2.2. Configurer des noms d'hôtes par hostnamectl
L'outil hostnamectl est fourni pour administrer les trois classes de noms d'hôtes
utilisées sur un système donné.
2.2.1. Voir tous les noms d'hôtes
Pour voir tous les noms d'hôtes actuels, saisir la commande suivante :
~]$ hostnamectl status
L'option status est impliquée par défaut si aucune option n'est donnée.
1. Introduction :
Pour modifier le nom d'hôte dans un système, saisir la commande suivante en tant
La configuration du réseau nécessite la configuration du protocole IP et des services
qu'utilisateur root :
TCP, UDP et ICMP (entre autres). Cette opération se fait en définissant l'adresse IP le
~]# hostnamectl set-hostname name
masque de sous-réseau et les routes à utiliser. Vient ensuite la configuration du nom de
Cela altèrera à la fois les noms pretty, statiques ou transitoires. Les noms statiques et
la machine locale, de son domaine, des noms de machines qu'elle peut résoudre elle-
transitoires seront sous une forme simplifiée des noms d'hôte « pretty ». Les espaces
même et des serveurs de DNS qu'elle doit utiliser pour les autres noms.
seront remplacés par des « - » et les caractères spéciaux seront supprimés.
Il est quasiment certain que votre distribution dispose d'un outil permettant d'effectuer
2.2.2. Définir un nom d'hôte particulier
la configuration du réseau simplement. Connaissant à présent la signification des
Pour saisir un nom d'hôte particulier, saisir la commande suivante en tant
termes utilisés dans les réseaux TCP/IP, vous devriez pouvoir parvenir à une
qu'utilisateur root avec l'option qui convient :
configuration valide relativement simple. Il est fortement recommandé de consulter la
~]# hostnamectl set-hostname nom [option...]
documentation de votre distribution. Les commandes de configuration du réseau sont
souvent appelées dans les scripts de démarrage de la machine, ou dans les scripts de Quand option correspond à un ou plusieurs : --pretty, --static, et --transient.

changement de niveau d'exécution. Toutefois, il peut être utile de connaître ces Si les options --static ou --transient sont utilisées ensemble avec l'option --pretty, les

commandes, ne serait-ce que pour comprendre comment votre système fonctionne. Cette noms statiques et transitoires seront sous une forme simplifiée des noms d'hôte

section a donc pour but de vous présenter ces commandes, ainsi que les principaux « pretty ». Les espaces seront remplacés par des « - » et les caractères spéciaux seront

fichiers de configuration du réseau utilisés sous Linux. supprimés. Si l'option --pretty n'est pas donnée, aucune simplification n'aura lieu.
Quand on définit un nom d'hôte « pretty », ne pas oublier d'utiliser les caractères de
2. Configuration de noms d'hôtes
citation qui conviennent si le nom d'hôte contient des espaces ou un caractère de
2.1. Comprendre les noms d'hôtes
citation unique. Par exemple :
Il y a trois classes de noms d'hôtes ou hostname : statique, pretty, et transitoire
~]# hostnamectl set-hostname "Stephen's notebook" --pretty
Le nom d'hôte « statique » est un hostname traditionnel, qui peut être choisi par
2.2.3. Supprimer un nom d'hôte particulier
l'utilisateur, et qui se trouve dans le fichier /etc/hostname.
Pour supprimer un nom d'hôte particulier et lui permettre de retrouver sa valeur par
Le nom d'hôte « transitoire » est un hostname dynamique maintenu par le noyau. Il est
initialisé au nom d'hôte statique par défaut, dont la valeur correspond au « localhost ». défaut, saisir la commande suivante en tant qu'utilisateur root avec l'option qui
convient :

M.FILALI Linux : Administration des Serveurs 9 M.FILALI Linux : Administration des Serveurs 10
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# hostnamectl set-hostname [option...] nmtui Une simple interface texte utilisateur (de l'anglais

Quand "" correspond à une chaîne de cotation vide et que l'option correspond à un ou Text User Interface) (TUI) basée Curses pour

plusieurs : --pretty, --static, et --transient. le NetworkManager

2.2.4. Changer des noms d'hôte à distance nmcli L'outil d'interface en ligne de commandes est offert

Pour exécuter une commande hostnamectl sur un système distant, utiliser l'option -H, afin de permettre aux utilisateurs et aux scripts

--host, comme suit : d'interagir avec le NetworkManager.

~]# hostnamectl set-hostname -H [username]@hostname control-center Un outil d'interface utilisateur graphique fourni par le

Quand le hostname correspond à l'hôte distant que vous souhaitez configurer. gnome-shell

Le username est en option. L'outil hostnamectl utilisera SSH pour se connecter au nm-connection-editor Une application GTK+ 3 disponible pour certaines

système distant. tâches qui ne sont pas encore gérées par le control-

2.3. Configurer des noms d'hôtes par nmcli center

Pour interroger le nom d'hôte statique, exécuter la commande suivante : Récapitulatif des applications et des outils de réseautage
Le NetworkManager peut configurer des alias de réseau, des adresses IP, des
~]$ nmcli general hostname
itinéraires statiques, les infos DNS, les connexions VPN, ainsi que de nombreux
Pour définir le nom d'hôte statique à my-server, exécutez la commande suivante en tant
paramètres spécifiques aux connexions. Finalement, NetworkManager fournit un API
qu'utilisateur root :
via D-Bus qui permet aux applications de chercher et de contrôler la configuration et
~]# nmcli general hostname my-server
l'état du réseau.
Pour forcer le hostnamectl à remarquer le changement de nom d'hôte statique,
3.2. Le démon du NetworkManager
démarrer à nouveau le hostnamed en tant qu'utilisateur root:
Le démon du NetworkManager s’exécute avec les privilèges root et il est, par défaut,
~]# systemctl restart systemd-hostnamed
configuré pour démarrer dès l'amorçage. Vous pouvez déterminer si le
Commandes:
démon NetworkManager est en cours d'exécution en saisissant cette commande
 # set hostname
~]$ systemctl status NetworkManager
~]# hostnamectl set-hostname SRV
NetworkManager.service - Network Manager
 # show status
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled)
~]# hostnamectl
Active: active (running)
3. Configuration des paramètres TCP/IP
La commande systemctl status rapportera que le NetworkManager est Active. Si le
3.1. Introduction au NetworkManager
service NetworkManager n'est pas en cours d'exécution cas inactive (mort), pour le
Le service de réseautage est fourni par le NetworkManager, qui est un démon de
démarrer pour la session en cours, exécutez la commande suivante en tant
configuration et de contrôle de réseaux dynamiques, qui tente de conserver les
qu'utilisateur root :
périphériques réseau et les connexions actives quand elles sont disponibles. Les fichiers
~]# systemctl start NetworkManager
de configuration traditionnels de type ifcfg sont toujours prises en charge.
Exécutez la commande systemctl enable pour vous assurer que le NetworkManager
Application ou Outil Description
démarre bien à chaque fois que le système est amorcé :
NetworkManager Le démon de réseautage par défaut

M.FILALI Linux : Administration des Serveurs 11 M.FILALI Linux : Administration des Serveurs 12
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# systemctl enable NetworkManager inet 10.0.0.3/24 brd 10.0.0.255 scope global global eth0

3.4.2. Configurer plusieurs adresses par les commandes ip


Comme l'utilitaire ip supporte l'attribution d'adresses à la même interface, il n'est plus
États d'icône de connexion réseau très utile d'utiliser la méthode alias d'interface de liaison de plusieurs adresses à la
3.3. Configuration réseau par Interface en ligne de commandes (CLI) même interface. La commande ip peut être répétée plusieurs fois pour pouvoir assigner
Les commandes de l'utilitaire ip, parfois dénommé iproute2 d'après le nom du package plusieurs adresses. Par exemple:
en amont, si nécessaire, vous pouvez vérifier que l'utilitaire ip est bien installé, en ~]# ip address add 192.168.2.223/24 dev eth1
vérifiant son numéro de version comme suit : ~]# ip address add 192.168.4.223/24 dev eth1
~]$ ip -V
ip utility, iproute2-ss130716 ~]# ip addr
Les commandes ip peuvent être utilisées pour ajouter ou supprimer des adresses et des 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
itinéraires pour les interfaces en parallèle, avec le NetworkManager, qui va veiller à link/ether 52:54:00:fb:77:9e brd ff:ff:ff:ff:ff:ff
leur conservation et les reconnaître dans nmcli, nmtui, control-center. inet 192.168.2.223/24 scope global eth1
Notez que l'utilitaire ip remplace l'utilitaire ifconfig, car le paquet net-tools (qui inet 192.168.4.223/24 scope global eth1
fournit un ifconfig) ne supporte pas les adresses InfiniBand. La commande ip 3.5. Configurer une interface de réseau en utilisant les commandes ifconfig
help imprime un message d'utilisation. Il y a une aide spécifique aux OBJETS, par La principale commande permettant de configurer le réseau est la commande ifconfig.
exemple : ip link help et ip addr help. Comme son nom l'indique (« InterFace CONFIGuration »), elle permet de configurer les
Note : Les commandes ip données en ligne de commandes ne seront pas persistantes interfaces réseau de la machine.
après le redémarrage du système. Si la persistance est requise, utiliser des fichiers de La syntaxe générale que vous devrez utiliser est la suivante :
configuration (fichiers ifcfg) ou ajouter les commandes à un script. ~]# ifconfig « interface » « adresse » netmask « masque » up
3.4. Configurer une interface de réseau en utilisant les commandes ip Le paramètre up donné à ifconfig lui indique que l'interface doit être activée. Cela
L'utilitaire ip peut être utilisé pour assigner des adresses IP à une interface. La signifie que dès que la commande ifconfig s'achèvera, votre interface réseau sera active
commande prend la forme suivante : et fonctionnelle. On ne peut faire plus simple... Bien entendu, il existe le paramètre
~]# ip addr [ add | del ] address dev ifname inverse : down. Ce paramètre s'utilise tout simplement dans la commande ifconfig avec
3.4.1. Assigner une adresse statique par la commande ip la syntaxe suivante :
Pour assigner une adresse IP à une interface, exécuter la commande en tant
~]# ifconfig interface down
qu'utilisateur root comme suit :
Un exemple de configuration très classique est le suivant :
~]# ip address add 10.0.0.3/24 dev eth0
~]# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
Pour afficher l’adresse assigné:
~]# ip addr show dev eth0 ~]# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state Enfin, il est possible d'affecter plusieurs adresses IP à certaines interfaces réseau. C'est
link/ether f0:de:f1:7b:6e:5f brd ff:ff:ff:ff:ff:ff en particulier le cas pour toutes les interfaces réseau classiques, mais bien entendu cela

M.FILALI Linux : Administration des Serveurs 13 M.FILALI Linux : Administration des Serveurs 14
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
n'est pas réalisable avec les interfaces de type point à point comme les interfaces des ~]# systemctl start|stop|restart|status network
connexions ppp. Lorsqu'une interface dispose de plusieurs adresses, la première est Notez que le NetworkManager  est tout d'abord démarré, et network vérifiera avec
considérée comme l'adresse principale de l'interface, et les suivantes comme des alias. le NetworkManager qu'il n'y a pas d'interférence avec les connexions
Ces alias utilisent comme nom le nom de l'interface réseau principale et le numéro de du NetworkManager. Le NetworkManager  est censé être la première application qui
l'alias, séparés par deux points (caractère ':'). Par exemple, si l'interface eth0 dispose utilise les fichiers de configuration sysconfig et network est secondaire, jouant un rôle
d'un alias, celui-ci sera nommé eth0:0. Ainsi, pour fixer l'adresse d'un alias d'une de soutien en cas d'échec.
interface réseau, on utilisera la syntaxe suivante : Le script network n'est pas lié aux événements, il s’exécute soit :
~]# ifconfig interface:numéro add adresse netmask masque 1. manuellement par l'une des commandes
La commande ifconfig est en général appelée dans les scripts d'initialisation du ~]# systemctl  start|stop|restart  network
système, qui ont été générés par l'utilitaire de configuration réseau de votre 2. au démarrage et à l'arrêt si le service réseau est actif suite à la commande 
distribution. Si vous effectuez un grep sur « ifconfig » dans le répertoire /etc/rc.d/ (ou ~]# systemctl enable network
/sbin/init.d/, selon votre distribution), vous trouverez la commande de démarrage du C'est un processus manuel qui ne réagit pas à des événements qui ont eu lieu après le
réseau. Il se peut qu'une variable d'environnement soit utilisée à la place de l'adresse IP
démarrage. Les utilisateurs peuvent aussi appeler les scripts ifup et ifdown
que vous avez choisie. Quoi qu'il en soit, vous devez sans aucun doute avoir les lignes
manuellement.
suivantes, qui permettent l'initialisation de l'interface loopback : 3.6.2. Commandes personnalisées et Scripts de réseau
~]# ifconfig lo 127.0.0.1 netmask 255.0.0.0 up On exécute des commandes personnalisées dans les scripts /sbin/ifup-local ifdown-pre-
local et ifdown locale uniquement lorsque ces périphériques sont contrôlés par le
Note : Les commandes ifconfig données en ligne de commandes ne seront pas persistantes
service network. Si vous avez modifié les initscripts eux-mêmes (par
après le redémarrage du système.
exemple, /etc/sysconfig/network-scripts/ifup-eth) alors ces modifications sont remplacées
3.6. NetworkManager et les Scripts réseau
par une mise à jour du paquet initscripts. Il est donc recommandé de ne pas modifier les
Dans les versions précédentes, le mode par défaut pour configurer le réseau utilisait
initscripts directement et de faire usage des scripts /sbin/if*local, afin que vos
des scripts réseau. Le terme script réseau est couramment utilisé pour décrire le
modifications personnalisées puissent survivre aux mises à jour des packages. Les
script /etc/init.d/network et tout autre script installé qu'il évoque. Les fichiers fournis
initscripts vérifient juste la présence de ladite /sbin/if*local et les exécutent s'ils
par l'utilisateur sont généralement considérés comme fichiers de configuration, mais
existent. Les initscripts ne mettent rien dans les scripts /sbin/if*local, et le
peuvent aussi être interprétés comme un amendement aux scripts.
RPM initscripts (ou tout autre paquet) ne possède, ni ne peut modifier ces fichiers.
Bien que le NetworkManager fournisse le service de réseautage par défaut, les
Il y a plusieurs façons d'exécuter des tâches personnalisées lorsque les connexions
développeurs ont travaillé dur pour s'assurer que les scripts et
réseau sont up ou down, avec les anciens scripts réseau, ainsi qu'avec
le NetworkManager collaborent. Les administrateurs, qui sont habitués aux scripts,
le NetworkManager. Lorsque le NetworkManager est activé, le
peuvent continuer à les utiliser
script ifup et ifdown demandera si le NetworkManager gère l'interface en question,
3.6.1. Exécuter le script de réseau
qui se trouve sur la ligne « DEVICE= » dans le fichier ifcfg.
Exécutez le script uniquement avec l'utilitaire systemctl qui supprimera les variables
Si le NetworkManager gère bien ce périphérique et que le périphérique n'est pas déjà
d'environnement existantes, et qui veillera à une exécution sans reproche. La
connecté, alors ifup demandera au NetworkManager de démarrer la connexion.
commande prend la forme suivante :

M.FILALI Linux : Administration des Serveurs 15 M.FILALI Linux : Administration des Serveurs 16
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 Si le périphérique est géré par le NetworkManager et qu'il est déjà connecté, DEVICE=ens33
rien ne se produira. BOOTPROTO=dhcp
 Si le périphérique n'est pas géré par le NetworkManager, alors les scripts ONBOOT=yes
démarreront une connexion par les mécanismes anciens. Pour configurer une interface pour qu'elle envoie un nom d'hôte différent au serveur
Si vous évoquez "ifdown" et que le périphérique est géré par le NetworkManager, DHCP, ajouter la ligne suivante au fichier ifcfg.
alors ifdown demandera au NetworkManager de terminer la connexion. DHCP_HOSTNAME=hostname
Les scripts surveillent le NetworkManager de façon dynamique, donc, si Pour configurer une interface permettant d'ignorer les routages envoyés par un serveur
le NetworkManager n'est pas en cours d'exécution, les scripts se retourneront sur les
DHCP, ajoutez la ligne suivante au fichier ifcfg.
anciens mécanismes basés scripts.
PEERDNS=no
3.7. Configurer une interface de réseau en utilisant les fichiers ifcfg
. Cela empêchera le service réseau de mettre à jour /etc/resolv.conf avec les serveurs
Les fichiers de configuration d'interface contrôlent l'interface du logiciel pour les
DNS reçus d'un serveur DHCP.
périphériques de réseaux individuels. Quand le système démarre, il utilise ces fichiers
Pour configurer une interface qui puisse utiliser des serveurs DNS particuliers, définir
pour déterminer quelles interfaces mettre en place et comment les configurer. Ces
PEERDNS=no comme décrit ci-dessus et ajouter les lignes ci-dessous dans votre fichier
fichiers sont généralement nommés ifcfg-name, où le suffixe de name désigne le nom du
ifcfg :
périphérique qui contrôle le fichier de configuration. Par convention, le suffixe ifcfg du
DNS1=ip-address
fichier est identique à la chaîne donnée par la directive DEVICE dans le fichier de
DNS2=ip-address
configuration lui-même.
Avec ip-address comme adresse du serveur DNS. Cela amènera le service réseau à
3.7.1. Paramètres de réseaux statiques
mettre à jour /etc/resolv.conf avec les serveurs DNS spécifiés.
Pour configurer une interface avec des paramètres de réseaux statiques à l'aide des
NetworkManager appellera le client DHCP par défaut, dhclient, quand un profil a été
fichiers ifcfg, pour une interface nommée eth0, créez un fichier ayant pour nom ifcfg-
défini pour pouvoir recevoir des adresses automatiquement, ou quand un fichier de
eth0 dans le répertoire /etc/sysconfig/network-scripts / comme suit :
configuration d'interface a BOOTPROTO défini à dhcp. Quand DHCP est exigé, une
DEVICE=eth0
instance du dhclient sera démarrée pour chaque protocole Internet, IPv4 ou IPv6, sur
BOOTPROTO=none
une interface. Quand le NetworkManager n'est pas en cours d'exécution, ou n'exécute
ONBOOT=yes
pas une interface, le service de réseautage d'origine appellera des instances du dhclient
PREFIX=24
selon les besoins.
IPADDR=10.0.1.27
3.7.3. Rechargement des fichies de configuration ifcfg
Spécifier le matériel ou l'adresse MAC en utilisant la directive HWADDR. Notez que
Quand vous modifiez un fichier ifcfg, le NetworkManager n'est pas automatiquement
cela peut influencer la procédure d'affectation de noms. Vous n'avez pas besoin de
mis au courant du changement et doit être mis au courant du changement par une
spécifier le réseau ou l'adresse de diffusion; c'est calculé automatiquement par ipcalc.
notification. Si vous utilisez un des outils pour mettre le profil du NetworkManager à
3.7.2. Configuration de réseaux dynamiques
jour, alors, le NetworkManager n'implémentera pas ces changements tant que vous
Pour configurer une interface avec des paramètres de réseaux dynamiques à l'aide des
ne vous serez pas reconnecté en utilisant ce profil. Par exemple, si les fichiers de
fichiers ifcfg, pour une interface nommée ens33, créez un fichier ayant pour nom ifcfg-
configuration ont été changés en utilisant un éditeur, le NetworkManager devra être
ens33 dans le répertoire /etc/sysconfig/network-scripts / comme suit

M.FILALI Linux : Administration des Serveurs 17 M.FILALI Linux : Administration des Serveurs 18
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
instruit de lire les fichiers de configuration à nouveau. Pour cela, exécutez la commande fichier ONBOOT=yes suivant est vérifié. Si le NetworkManager n'a pas encore
suivante en tant qu'utilisateur root : démarré ce périphérique, les init scripts continueront avec leur comportement
~]# nmcli connection reload traditionnel et appelleront ifup pour ce fichier ifcfg.

La commande ci-dessus interprétera tous les profils de connexion. Sinon, pour Le résultat final est que n'importe quel fichier ifcfg qui a ONBOOT=yes devrait être

télécharger à nouveau un fichier modifié à la fois, ifcfg-ifname, exécutez une commande lancé au démarrage du système, soit par le NetworkManager ou par les init scripts.

ainsi : De cette manière, certains types de réseaux hérités que le NetworkManager ne gère

~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-ifname pas (comme RNIS ou les modems DIAL-UP analogues) ainsi que toute nouvelle
application non encore supportée par le NetworkManager sont toujours correctement
La commande accepte des noms de fichiers multiples. Ces commandes exigent les
démarrés par les init scripts même si le NetworkManager est incapable de les gérer.
privilèges d'utilisateur root.
Les modifications apportées à l'aide d'outils tels que le nmcli n'ont pas besoin d'un Note :Il est recommandé de ne pas stocker les fichiers de sauvegarde ifcfg au même

chargement à nouveau, mais nécessitent que l'interface associée soit arrêtée (down) et endroit que les fichiers live. Le script fait littéralement ifcfg-* en excluant uniquement les

qu'elle soit réactivée (up) à nouveau. Cela peut être fait en utilisant des commandes extensions : .old, .orig, .rpmnew, .rpmorig et .rpmsave. Le meilleur moyen est ne pas

sous le format suivant : stocker des fichiers de sauvegarde n'importe où dans le repertoire  /etc

~]# nmcli dev disconnect interface-name 4. Résolution des noms de domaine


Suivi de : 4.1. Résolution des noms
La commande hostname ne permet de fixer que le nom de la machine locale. Pour les
~]# nmcli con up interface-name
autres machines du réseau, il faut mettre en place les mécanismes de résolution de
Le NetworkManager n'active aucun des scripts réseau, mais les scripts réseau vont
noms de domaine. Comme il l'a déjà été indiqué au début de ce chapitre, il existe deux
essayer d'activer le NetworkManager  quand les commandes ifup sont utilisées.
solutions pour trouver l'adresse IP d'une machine à partir de son nom : la consultation
Le script ifup est un script générique qui fait un certain nombre de choses et faisant
d'une liste de noms stockée en local, soit l'interrogation d'un serveur de noms de
appel à des scripts spécifiques à une interface, comme ifup-ethX, ifup-wireless, ifup-ppp,
domaine.
etc. Quand un utilisateur exécute ifup eth0 manuellement, voici ce qui se passe :
Le fichier /etc/host.conf permet de définir le comportement du système lors de la
1. ifup cherche un fichier nommé /etc/sysconfig/network-scripts/ifcfg-eth0;
résolution d'un nom. Sa structure est très simple, puisqu'il y a une option de recherche
2. Si le fichier ifcfg existe, ifup ira chercher la clé TYPE dans ce fichier pour
par ligne. Dans la plupart des cas, les lignes suivantes sont suffisantes :
déterminer quel script spécifique à ce type appeler :
order hosts,bind
3. ifup appelle ifup-wireless ou ifup-eth ou ifup-XXX sur la base du TYPE ;
multi on
4. les scripts de type particulier exécutent des installations spécifiques :
Elles permettent d'indiquer que la recherche des noms pour leur résolution doit se faire
5. et les scripts de type spécifiques laissent les fonctions courantes exécuter des
d'abord localement, puis par appel aux DNS si la recherche précédente a échoué. C'est
tâches liées à l'IP comme DHCP ou une installation statique.
en général le comportement désiré. La deuxième ligne permet de faire en sorte que
Au démarrage, network analyse tous les fichiers ifcfg et pour chacun d'eux
toutes les adresses correspondant à une machine soient renvoyées. Si l'on avait utilisé
ayant ONBOOT=yes, il vérifie si le NetworkManager a déjà démarré le
l'option multi off, seule la première adresse IP trouvée aurait été renvoyée.
PÉRIPHÉRIQUE de ce fichier ifcfg. Si le NetworkManager démarre ce périphérique
La liste de noms locale est stockée dans le fichier /etc/hosts (cela explique le nom hosts
ou l'a déjà démarré, rien de plus n'est fait pour ce fichier, et le
utilisé pour l'option order dans le fichier /etc/host.conf). Votre ordinateur connaîtra

M.FILALI Linux : Administration des Serveurs 19 M.FILALI Linux : Administration des Serveurs 20
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
directement l'adresse IP de toutes les machines référencées dans ce fichier. Il est bon de Ainsi, si vous recherchez l'adresse de la machine « krypton », la requête au DNS se fera
placer ici une entrée pour les ordinateurs les plus couramment utilisés sur le réseau. avec le nom complètement qualifié « krypton.andromede.galaxie ». Vous êtes bien
Chaque entrée commence par une adresse IP, et est suivie de la liste des noms de la entendu libre d'ajouter d'autres noms de domaines pour le cas où la résolution de nom
machine possédant cette adresse, séparés par des espaces. Pour ceux qui ne disposent échouerait sur ce domaine.
pas de réseau local, ce fichier doit être relativement simple : seule la ligne affectant Enfin, l'option nameserver est essentielle, puisqu'elle permet de donner les adresses IP
l'adresse 127.0.0.1 à la machine locale (appelée « localhost ») doit s'y trouver. des serveurs de DNS auxquels doivent être adressées les requêtes de résolution de
127.0.0.1 localhost noms. Par exemple, si vous disposez de deux serveurs DNS, un primaire, d'adresse

De la même manière, le fichier /etc/networks contient les adresses des réseaux. Ce 192.168.0.10, et un secondaire, d'adresse 192.168.0.15, vous utiliserez la ligne suivante :

fichier est utilisé par la commande route pour donner un nom aux différents réseaux. nameserver 192.168.0.10 192.168.0.15
Chaque entrée est constituée du nom du réseau, suivi de son adresse IP. Encore une Cette ligne est évidemment obligatoire, faute de quoi la résolution des noms de
fois, ce fichier se réduit à sa plus simple expression pour ceux qui n'ont pas de réseau machines en adresse IP échouera pour toute machine qui ne se trouve pas dans votre
local, puisqu'il ne contiendra tout au plus qu'une entrée pour le réseau « loopback », sur fichier /etc/hosts.
lequel se trouve l'adresse de retour 127.0.0.1. Cette entrée aura donc la forme suivante : 4.2. Les fichiers de configuration :
loopback 127.0.0.0  Le fichier /etc/hosts
Le fichier hosts donne un moyen d'assurer la résolution de noms, de donner un nom
La configuration des serveurs de noms est en revanche une opération nécessaire si l'on
FQDN à un hôte
désire accéder à des machines dont on ne connaît que le nom. Le fichier de configuration
 Le fichier /etc/networks
utilisé est cette fois le fichier /etc/resolv.conf. Sa structure est encore une fois très
Il permet d'affecter un nom logique à un réseau
simple, avec une option par ligne, chaque option étant introduite par un mot clé.
 Le fichier /etc/host.conf
Le mot clé domain permet d'indiquer le nom du domaine dont fait partie votre machine.
 Le fichier /etc/nsswitch.conf
Par exemple, si votre nom de domaine est « andromede.galaxie », vous devrez utiliser la
Il donne l'ordre dans lequel le processus de résolution de noms est effectué.
ligne suivante :
 Le fichier /etc/resolv.conf
domain andromede.galaxie
Il permet d'affecter les serveurs de noms.
Le mot clé search permet quant à lui de spécifier une liste de noms de domaines à
 Les Fichiers /et/sysconfig/network-script/ifcfg-*
ajouter par défaut aux noms de machines non complètement qualifiés. Les éléments de
Les fichiers de configuration des interfaces réseau
cette liste doivent être séparés par des espaces. La recherche d'une machine dont le
Firewall:
nom ne comprend pas la partie de nom de domaine s'effectue en ajoutant au nom de la
 # show status
machine les noms des domaines indiqués ici, jusqu'à ce que la résolution du nom en
~]# systemctl status firewalld
adresse IP réussisse. Cette recherche commence bien entendu par le nom de domaine
 # stop service
local, s'il a été défini. Il est donc recommandé d'indiquer votre nom de domaine dans
cette liste de noms de domaines. Par exemple, si votre machine fait partie du domaine ~]# systemctl stop firewalld

« andromede.galaxie », vous devrez utiliser la ligne suivante :  # disable service

search andromede.galaxie ~]# systemctl disable firewalld

M.FILALI Linux : Administration des Serveurs 21 M.FILALI Linux : Administration des Serveurs 22
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
SELinux: TP-N°1-1 : Configurer les services de base (Enoncé)
 # show status
~]# getenforce
 # stop service
~]# setenforce 0
 # disable service
~]# vi /etc/selinux/config
# change to disabled
SELINUX=disabled
SELINUXTYPE=targeted
 # restart to apply new setting
~]# reboot

Maquette de référence pour tous les Travaux Pratiques


 Linux1 : Le Serveur Linux Machine Virtuelle
 Linux2 : Le Client Linux Machine Virtuelle
 Win01 : La Machine Virtuelle Windows 7/10
 PCi : La Machine Réelle Windows 7/10
 Vswitch : Commutateur Virtuel
 SW Salle : Commutateur physique de la Salle
Sur la machine Linux1 :
1) Dans un terminal, utiliser la commande suivante :
]$cd  ; script –f BASE_BinomeX.txt #avec X=numéro de Binôme
2) Affecter le nom "Serv1" pour votre 1ère machine Linux1
3) Afficher les caractéristiques de toutes les interfaces actives
4) Configurer l’adresse IP 192.168.225.128/24 sur l’interface en utilisant la commande
ifconfig. Afficher les caractéristiques de l’interface ens33
5) Reconfigurer l'interface avec l'adresse 172.20.208.1/24  utiliser le script de
configuration; et Redemarrer le service Réseau.(desactiver NetworkManager)
6) Désactiver l'interface réseau avec les paramètres en cache
7) Activer l'interface réseau avec les paramètres en cache

M.FILALI Linux : Administration des Serveurs 23 M.FILALI Linux : Administration des Serveurs 24
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
8) Désactiver et arreter SELinux TP-N°1-1 : Configurer les services de base (Corrigée)
9) Désactiver et arreter le pare feu
1) Dans un terminal, utiliser la commande suivante pour créer le scripte du Travail
10)Tester le bon fonctionnement du protocole TCP/IP sur votre serveur
~]$ cd ; script -f BASE_BinomeX.txt
11)Tester la configuration réseau de votre poste
Le script a débuté, le fichier est BASE_BinomeX.txt
12)Réactiver l'ensemble des interfaces réseau
2) Affecter le nom "Serv1" pour votre 1ère machine
Vous faites partie du domaine fedora.org. Les IPs des serveurs DNS sont
~]$su
172.20.208.254 et 172.20.209.254.
Password : ********
13)Construisez le fichier /etc/resolv.conf ?
~]#echo Serv1 > /etc/hostname
Certains services récupèrent le nom de votre machine via une résolution locale passant
Ou bien
par /etc/hosts. Votre IP est 172.20.208.1. Or sous Linux le nom d’hôte est souvent
~]# hostnamectl set-hostname Serv1
associé au localhost 127.0.0.1.
3) Afficher les caractéristiques de toutes les interfaces actives
14)Rectifiez ceci dans /etc/hosts ?
La résolution locale passe d’abord par /etc/hosts puis par le DNS. Mais le DNS est ~]# ifconfig

généralement plus à jour que /etc/hosts. 4) Configurer l’interface ens33 avec la commande ifconfig

15)Modifiez le fichier /etc/nsswitch.conf en conséquence ? /etc/host.conf ? ~]# ifconfig ens33 192.168.225.128 netmask 255.255.255.0
16)Enregistrer une copie des fichiers de configuration de votre machine Afficher les caractéristiques de l’interface ens33
17)Quitter par la commande : exit ~]# ifconfig ens33

18)Rédiger un Rapport du TP (Commandes Résultats Interpretations) ens33 Link encap:Ethernet HWaddr 00:0C:29:08:68:2B
inet adr:192.168.225.128 Bcast:192.168.225.255 Masque:255.255.255.0
5) Reconfigurer l’interface avec l’adresse 172.20.208.1 /24
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
Edition du fichier « ifcfg-ens33 » i (pour editer le script !)
DEVICE=ens33
IPADDR=172.20.208.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
Echap : wq (pour enregistrer le script !)
Arreter et Désactiver le service NetworkManager
~]# systemctl stop NetworkManager
~]# systemctl disable NetworkManager
~]# systemctl status NetworkManager
Redemarrer le service network

M.FILALI Linux : Administration des Serveurs 25 M.FILALI Linux : Administration des Serveurs 26
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# systemctl restart network ~]# reboot


Restarting network (via systemctl): [ OK ] Verification: Afficher le status de Selinux
~]# systemctl status network ~]# getenforce
~]# ifconfig disabled
6) Désactiver l’interface réseau avec les paramètres en cache 9) Arreter et Désactiver le Pare feu
~]# ifconfig ens33 down Arreter le service et désactiver son démarrage automatique
~]# ifconfig ens33 ~]# systemctl stop firewalld
ens33 Link encap:Ethernet HWaddr 00:0C:29:08:68:2B ~]# systemctl disable firewalld
IBROADCAST MULTICAST MTU:1500 Metric:1 Verification: Afficher le status de firwalld
7) Activer l’interface réseau avec les paramètres en cache ~]# systemctl status firewalld
~]# ifconfig ens33 up 10) Tester le bon fonctionnement du protocole TCP/IP sur votre serveur
~]# ifconfig ens33
~]# ping 127.0.0.1
ens33 Link encap:Ethernet HWaddr 00:0C:29:08:68:2B PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
inet adr:172.20.208.1 Bcast:172.20.208.255 Masque:255.255.255.0
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=4.87 ms
adr inet6: fe80::20c:29ff:fe08:682b/64 Scope:Lien 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.194 ms
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
11) Tester la configuration réseau de votre poste
8) Arreter et Désactiver SELinux
~]# ping 172.20.208.1
Pour arreter Selinux utiliser la commande
PING 172.20.208.1 (172.20.208.1) 56(84) bytes of data.
~]# setenforce 0
64 bytes from 172.20.208.1: icmp_seq=1 ttl=64 time=0.258 ms
Verification: 64 bytes from 172.20.208.1: icmp_seq=2 ttl=64 time=0.081 ms
~]# getenforce 12) Réactiver l’ensemble des interfaces réseau
permissive ~]# systemctl restart network
Pour Désactiver Selinux : Restarting network (via systemctl): [ OK ]
~]# vi /etc/selinux/config ~]#ifconfig
Modifier la ligne : « SELINUX=enforcing » en « SELINUX=disabled » 13) Construisez le fichier /etc/resolv.conf ?
# This file controls the state of SELinux on the system. ~]# vi /etc/resolv.conf
# SELINUX= can take one of these three values:
Edition du fichier « resolv.conf »
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing. search fedora.org
# disabled - SELinux is fully disabled. domain fedora.org
SELINUX=disabled
nameserver 172.20.208.254
# SELINUXTYPE= type of policy in use. Possible values are:
SELINUXTYPE=targeted nameserver 172.20.209.254
 Ceci nécessite un redémarrage du serveur ! 14) Rectifiez le /etc/hosts ?

M.FILALI Linux : Administration des Serveurs 27 M.FILALI Linux : Administration des Serveurs 28
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# vi /etc/hosts hosts host.conf ifcfg-ens33 nsswitch.conf resolv.conf


Edition du fichier « hosts » 17) Quitter par la commande : exit
#IP Hostname Alias ~]$ exit
172.20.208.1 Serv1 Serv1.fedora.org Script complété, le fichier est BASE_BinomeX.txt
127.0.0.1 localhost localhost.localdomain ~]# cd . .
15) Modifiez le fichier /etc/nsswitch en conséquence ?
~]# cp BASE_BinomeX.txt Sauvegarde
~]# cat -n /etc/nsswitch.conf | grep hosts
~]#chmod 777 Sauvegarde/*
#hosts: db files nisplus nis dns
hosts: files dns
Créer un snapshot pour le serveur Linux1 sous le nom « TP-N°1-1 »

~]# vi /etc/nsswitch.conf Un snapshot permet de capturer l'état entier de la machine au moment où vous le
déclenchez, celui-ci comprendra le contenu de la mémoire de la machine virtuelle ainsi
Echap : set nu (pour afficher les numeros des lignes !)
que ses paramètres et l'état des disques virtuels (fichiers vmdk). Pour faire simple, les
#hosts: db files nisplus nis dns
snapshots permettent de créer des positions de restauration pour revenir dans le temps.
hosts: dns files
 Cliquez avec le bouton droit sur la machine virtuelle Linux1 de la liste,
Modifiez le fichier /etc/host.conf ? sélectionnez Snapshots et sélectionnez Créer un snapshot 
~]# vi /etc/host.conf  Entrez un nom pour le snapshot « TP-N°1-1 »
 Cliquez sur OK.
multi on
order bind , hosts
16) Enregistrer une copie des fichiers de configuration.
~]# pwd
/home/fedora
~]# mkdir Sauvegarde
~]#chmod 777 Sauvegarde
~]# cd Sauvegarde
~]# pwd
/home/fedora/ Sauvegarde .
.
~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 . TP-N°1-2 : Configurer les services de base (Devoir Libre)
~]# cp /etc/resolv.conf .
Configurant l'adressage statique d'une carte réseau selon la topologie de la maquette ci-
~]# cp /etc/hosts .
dessous :
~]# cp /etc/host.conf .
~]# cp /etc/nsswitch.conf .
~]# ls

M.FILALI Linux : Administration des Serveurs 29 M.FILALI Linux : Administration des Serveurs 30
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

CH2 : Configurer les services de routage

1. Affecter le nom "linux1" pour votre 1ère machine


2. Configure la carte réseau selon les informations suivantes :
o Adresse IP 192.168.1.2/24
3. Redémarrer le service network
4. Afficher les caractéristiques de toutes les cartes réseaux
5. Arreter SELinux
6. Arreter firwalld
1. Introduction
7. Affecter le nom "linux2" pour votre 2ème machine
Le routage dans Internet est similaire au mécanisme d'adressage du courrier.
8. Configure la carte réseau selon les informations suivantes :
Si vous adressez une lettre à un destinataire aux USA, à Los Angeles, dans l'état de
o Adresse IP 192.168.1.3/24
Californie. Le bureau de poste de Belfort reconnaîtra que cette adresse n'est pas locale
9. Redémarrer le service network
et transmettra le courrier au bureau français des PTT qui le remettra au service du
10. Afficher les caractéristiques de toutes les cartes réseaux
mail US. Celui-ci s'en remettra à son bureau de la Californie, qui le transmettra au
11. Arreter SELinux
bureau de Los Angeles, qui connaît la localisation qui correspond à l'adresse dans la
12. Arreter firwalld
ville.
13. Configure la carte réseau du client Win01 selon les informations suivantes :
Avantages du système :
o Adresse IP 192.168.1.4/24
1. le bureau de poste local n'a pas à connaître toutes les adresses du monde
14. Tester la communication entre les 3 machines
2. le chemin suivi peut être variable : chaque opérateur sait juste à qui remettre le
15. Créer des snapshots pour les deux machines Linux.
courrier.
16. Expliquers les fichiers suivants :
Le routage dans un réseau est identique :
/etc/hosts ; /etc/networks ; /etc/hostname ; /etc/host.conf ; /etc/resolv.conf
Internet en entier est composé de réseaux autonomes qui s'occupent en interne de
17. Expliquer les commandes suivantes :
l'adressage entre leurs hôtes. Ainsi, tout datagramme arrivant sur un hôte quelconque
ifconfig; ping; pathping; arp ; route ; netstat ; traceroute ; dig ; host
du réseau destination sera acheminé à bon port par ce réseau seul.
18. Rédiger un Rapport du TP (Commandes Résultats Interpretations)
Quand tous les hôtes participent au même réseau, chacun d'eux peut adresser des
paquets aux autres sans difficulté. Par contre, si le destinataire est situé sur un autre
réseau, le problème est de savoir où et à qui adresser le paquet puisque l'hôte
expéditeur ne « voit » pas le destinataire.

M.FILALI Linux : Administration des Serveurs 31 M.FILALI Linux : Administration des Serveurs 32
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
On appelle passerelle (dans la terminologie TCP/IP) ou routeur (un équipement qui fait 3. L'expéditeur cherche d'abord à trouver dans sa table de routage locale l'adresse
le lien entre différents réseaux ou entre sous-réseaux). Ex de passerelle: un ordinateur IP complète du destinataire,
équipé de plusieurs adaptateurs réseau peut être relié avec chacune d'elle à un réseau 4. s'il ne la trouve pas il cherche l'adresse du sous réseau du destinataire,
physiquement séparé. 5. s'il ne la trouve pas, il cherche enfin l'adresse du réseau,
Les paquets d'un réseau qui sont adressés à l'autre réseau doivent passer par la 6. s'il ne trouve aucune correspondance, l'expéditeur cherche dans sa table l'adresse
passerelle. D'où la nécessité pour chaque hôte de connaître, sur son réseau, l'adresse IP d'une passerelle à utiliser par défaut, (route 0.0.0.0)
d'un ou de plusieurs routeurs qui servent de passage vers le ou les réseaux qu’ils ne 7. s'il échoue là encore, le paquet, décidément bien encombrant, est supprimé.
connaissent pas. Si l'une de ces recherches aboutit, la machine émettrice construit le paquet avec
Mettre en place le routage consiste à configurer chaque hôte du réseau de façon à ce l'adresse IP du destinataire hors réseau. Elle l'encapsule dans une trame ayant comme
qu'il sache vers quelle adresse de son propre réseau il doit adresser un paquet qui adresse MAC de destination l'adresse MAC du routeur. La couche 2 du routeur lit la
concerne un autre réseau (ou sous-réseau). Ces destinataires intermédiaires sont des trame qui lui est adressée et la transmet à la couche 3 IP. Celle-ci récupère le paquet et
routeurs qui prennent en charge le paquet. s'aperçoit que le paquet ne lui est pas adressé, elle consulte sa table de routage, décide
Les hôtes pouvant être nombreux, bien souvent chacun ne connaît que l'adresse d'une sur quelle nouvelle interface réseau le paquet doit être transmis, encapsule le paquet
passerelle (routeur) par défaut et ce sera cette passerelle qui « connaîtra » les adresses dans une nouvelle trame, et ainsi de suite de passerelle en passerelle jusqu'à
des autres routeurs. destination.
2.1. Les tables de routage
2. Acheminement des paquets TCP-IP Les réseaux IP sont interconnectés par des routeurs IP de niveau 3 (appelés
Comment faire transiter des paquets entre 2 machines séparées par plusieurs routeurs?
abusivement en terminologie IP des gateways ou passerelles).
Simplement chaque routeur doit connaître l'adresse du routeur suivant que doit
Chaque hôte IP doit connaître le routeur par lequel il faut sortir pour pouvoir atteindre
emprunter le paquet pour arriver à destination. Ainsi le paquet arrive en sautant de
un réseau extérieur, c'est-à-dire avoir en mémoire une table des réseaux et des
routeur en routeur jusqu'à destination.
routeurs. Pour cela il contient une table de routage locale.
Mais concrètement comment ça se passe ?
Dans une configuration de routage statique, une table de correspondance entre adresses
Voici comment un hôte expéditeur se comporte pour adresser un paquet à un
de destination et adresses de routeurs intermédiaires est complétée « à la main » par
destinataire
l'administrateur, on parle de table de routage.
1. Il extrait l'adresse de réseau, voire de sous réseau de l'adresse du destinataire et
la compare à sa propre adresse de réseau ou de sous réseau. S'il s'agit du même
réseau, le paquet est expédié directement au destinataire en mettant en oeuvre
ARP.
2. S'il ne s'agit pas du même réseau, l'expéditeur cherche dans sa table de routage
une correspondance destinataire final / destinataire intermédiaire (routeur). Il
cherche, en quelque sorte, sur son réseau, un hôte capable de servir de facteur
vers un autre réseau.

M.FILALI Linux : Administration des Serveurs 33 M.FILALI Linux : Administration des Serveurs 34
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
La table de routage d'un routeur comporte les adresses des réseaux de destination, le Destination Masque Passerelle Interface
masque, les adresses des passerelles (routeurs intermédiaires) permettant de les 192.168.40.0 255.255.255.0 192.168.30.254 192.168.30.99
atteindre, l'adresse de la carte réseau (interface) par laquelle le paquet doit sortir du
routeur.
3. Acheminement Internet
1.
La commande Route permet d'afficher et de manipuler le contenu de la table de routage.
2.
Considérons le schéma de réseau suivant :
3.
4.
4.1.
3.1. Domaine d'acheminement
Les échanges entre passerelles de chaque domaine de routage font l'objet de protocoles
particuliers : EGP (Exterior Gateway Protocol) et BGP (Border Gateway Protocol) plus
récent. Ces protocoles envoient les paquets vers des destinations en dehors du réseau
local vers des réseaux externes (Internet, Extranet...).
3.2. Principe du choix d'une voie d'acheminement
1. Si l'hôte de destination se trouve sur le réseau local, les données sont transmises
à l'hôte destination
La table de routage du routeur sera : 2. Si l'hôte destination se trouve sur un réseau à distance, les données sont
Destination Masque Passerelle Interface expédiées vers une passerelle locale qui route le paquet vers une autre passerelle
192.168.10.0 255.255.255.0 192.168.10.99 192.168.10.99 et ainsi de suite de passerelle en passerelle jusqu'à destination.
192.168.20.0 255.255.255.0 192.168.20.99 192.168.20.99 La commande Traceroute permet de suivre à la trace le passage de routeur en routeur
192.168.30.0 255.255.255.0 192.168.30.99 192.168.30.99 pour atteindre un hôte sur le réseau. La commande Ping permet de vérifier la fiabilité
Ce réseau local est maintenant relié via un autre routeur à un 4ème réseau : d'une route donnée.

4. Routage dynamique
Les protocoles d'échange dynamique des tables de routage IP sur un réseau local sont
RIP (Routing Information Protocol) et le protocole OSPF (Open Shortest Path First).
Dans une configuration de routage dynamique, un protocole (RIP ou OSPF) est mis en
oeuvre pour construire dynamiquement les chemins entre routeurs.
Le protocole RIP permet à un routeur d'échanger des informations de routage avec les
routeurs avoisinants. Dès qu'un routeur est informé d'une modification quelconque de
la configuration sur les réseaux (telle que l'arrêt d'un routeur), il transmet ces
informations aux routeurs avoisinants. Les routeurs envoient également des paquets de

La nouvelle entrée à ajouter dans la table de routage du routeur R1 sera :

M.FILALI Linux : Administration des Serveurs 35 M.FILALI Linux : Administration des Serveurs 36
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
diffusion générale RIP périodiques contenant toutes les informations de routage dont ils Une autre règle de routage classique est la suivante :
disposent. Ces diffusions générales assurent la synchronisation entre tous les routeurs. ~]# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
Avec un protocole comme RIP, on peut considérer que les tables de routages des Elle permet d'envoyer tous les paquets à destination du réseau de classe C 192.168.0.0
routeurs et passerelles sont constituées et mises à jour automatiquement. vers la première interface Ethernet. C'est typiquement ce genre de règle qu'il faut
utiliser pour faire fonctionner un réseau local.
5. Définition des règles de routage
Il n'est normalement pas nécessaire d'ajouter les règles de routage pour les réseaux
5.1. Configuration des routages statiques par les commandes route
La deuxième étape dans la configuration du réseau est la définition des règles de auxquel la machine est connectée. En effet, la configuration d'une carte réseau à l'aide
routage. Il est possible de définir plusieurs règles de routage actives simultanément. de la commande ifconfig ajoute automatiquement à la table de routage une règle pour
L'ensemble de ces règles constitue ce qu'on appelle la table de routage. La règle utilisée envoyer les paquets à destination de ce réseau par l'interface réseau qui y est connectée.
est sélectionnée par le noyau en fonction de l'adresse destination du paquet à router. Cependant, la commande route devient réellement nécessaire lorsqu'il faut définir les
Chaque règle indique donc un critère de sélection sur les adresses, et l'interface vers passerelles à utiliser pour l'envoi des paquets destinés à une machine à laquelle la
laquelle doivent être transférés les paquets dont l'adresse destination vérifie cette règle. machine locale ne peut accéder directement. Les règles de routage faisant intervenir
La commande utilisée pour définir une route est, chose surprenante, la commande une passerelle sont semblables aux règles de routage vues ci-dessus, à ceci près que
système route. Sa syntaxe est donnée ci-dessous : l'adresse IP de la passerelle à utiliser doit être fournie. Pour cela, on utilise l'option gw

~]# route opération [-net | -host] adresse netmask masque interface (abréviation de l'anglais « Gateway »). La syntaxe utilisée est donc la suivante :

Où opération est l'opération à effectuer sur la table de routage. L'opération la plus ~]# route add [-net | -host] adresse netmask masque gw passerelle interface

courante est simplement l'ajout d'une règle de routage, auquel cas add doit être utilisé. Où passerelle est l'adresse IP de la passerelle à utiliser pour router les paquets qui
L'option suivante permet d'indiquer si le critère de sélection des paquets se fait sur vérifient les critères de cette règle. Les autres paramètres sont les mêmes que pour les
l'adresse du réseau destination ou plus restrictivement sur l'adresse de la machine règles de routage classique.
destination. En général, il est courant d'utiliser la sélection de toutes les adresses d'un Par exemple, supposons qu'une machine soit connectée à un réseau d'adresse
même réseau et de les router vers une même interface. Dans tous les cas, adresse est 192.168.0.0, et que sur ce réseau se trouve une passerelle d'adresse 192.168.0.1
l'adresse IP de la destination, que celle-ci soit un réseau ou une machine. Si la permettant d'atteindre un autre réseau, dont l'adresse est 192.168.1.0. Une machine du
destination est un réseau, il faut indiquer le masque de sous-réseau masque à l'aide de réseau 192.168.0.0 aura typiquement les règles de routage suivantes :
l'option netmask. Enfin, interface est l'interface réseau vers laquelle doivent être ~]# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
envoyés les paquets qui vérifient les critères de sélection de cette règle. ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1 eth0
Par exemple, la règle de routage à utiliser pour l'interface loopback est la suivante : La première règle permet, comme on l'a déjà vu, de communiquer avec toutes les
~]# route add -net 127.0.0.0 netmask 255.0.0.0 lo machines du réseau local. La deuxième règle permet d'envoyer à la passerelle
Cette règle signifie que tous les paquets dont l'adresse de destination appartient au 192.168.0.1 tous les paquets à destination du réseau 192.168.1.0.
sous-réseau de classe A 127.0.0.0 doivent être transférés vers l'interface loopback. Cela Inversement, si la passerelle utilise l'adresse 192.168.1.15 sur le réseau 192.168.1.0, les
implique en particulier que les paquets à destination de la machine d'adresse IP machines de ce réseau qui voudront accéder au réseau 192.168.0.0 devront spécifier la
127.0.0.1 (c'est-à-dire la machine locale) seront envoyés vers l'interface loopback (ils règle de routage suivante :
reviendront donc sur la machine locale). ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.15 eth0

M.FILALI Linux : Administration des Serveurs 37 M.FILALI Linux : Administration des Serveurs 38
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Bien entendu, il est nécessaire que toutes les machines des deux réseaux utilisent ces ~]$ ip route
règles de routage pour que la communication entre les deux réseaux se fasse dans les default via 192.168.122.1 dev ens33 proto static metric 1024
deux sens. 192.168.122.0/24 dev ens33 proto kernel scope link src 192.168.122.107
Le problème de ces règles de routage est qu'elles spécifient l'adresse du réseau 192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.126
destination. Il est évidemment hors de question d'utiliser une règle de routage Pour ajouter un routage statique à une adresse hôte, ou autrement dit à une adresse IP
différente pour toutes les adresses de réseaux possibles. Il est donc possible de définir ce unique, exécuter une commande en tant qu'utilisateur root :
qu'on appelle une passerelle par défaut, qui n'est rien d'autre que la passerelle vers ~]# ip route add 192.0.2.1 via 10.0.0.1 [dev ifname]
laquelle doivent être envoyés tous les paquets qui n'ont pas vérifié les critères des Quand 192.0.2.1 est l'adresse IP de l'hôte en notation décimale avec des
autres règles de routage. La syntaxe à utiliser pour définir la passerelle par défaut est
points, 10.0.0.1représente l'adresse du prochain tronçon et ifname l'interface de sortie
plus simple, puisqu'il n'est plus nécessaire de préciser les critères de sélection : qui mène au prochain tronçon.
~]# route add default gw passerelle interface Pour ajouter un routage statique à un réseau, ou autrement dit à une
Où la signification des paramètres passerelle et interface est inchangée. adresse IPreprésentant un groupe d'adresses IP, exécuter la commande suivante en
Ainsi, pour reprendre l'exemple précédent, supposons que la machine 192.168.0.47 tant qu'utilisateur root :
dispose d'une connexion à Internet et soit configurée pour partager cette connexion avec ~]# ip route add 192.0.2.0/24 via 10.0.0.1 [dev ifname]
les machines du réseau local. Pour que toutes les machines du réseau local puissent Avec 192.0.2.0 comme adresse IP du réseau de destination en notation décimale en
profiter de cette connexion, il suffit de demander à ce que tous les paquets qui ne
points et avec /24 pour préfixe de réseau. Le préfixe de réseau correspond au nombre
vérifient aucune autre règle de routage soient envoyés à la passerelle 192.168.0.47. Cela d'octets activés dans le msque du sous-réseau. Le format de l'adresse réseau / longueur
se fait avec la règle de routage suivante :
du préfixe réseau ou classless inter-domain routing (CIDR).
~]# route add default gw 192.168.0.47 eth0 La configuration du routage statique peut être stockée par interface dans un
5.2. Configuration des routages statiques par nmcli fichier /etc/sysconfig/network-scripts/route-interface. Ainsi, les routages statiques de
Pour configurer des routages statiques avec l'outil nmcli, on doit utiliser le mode
l'interface eth0 devraient être stockés dans le fichier fichier/etc/sysconfig/network-
d'édition interactive ou l'outil en lignes de commandes.
scripts/itinéraire-eth0. Le fichier route-interface a deux formats : arguments de
Pour configurer un routage statique pour une connexion Ethernet existante par l'outil
commande ip et directives de réseau/masque réseau. Elles sont décrites ci-dessous.
en lignes de commandes, exécuter les commandes suivantes :
5.4. Configuration de la passerelle par défaut
~]# nmcli connection modify eth0 +ipv4.routes "192.168.122.0/24 10.10.10.1" La passerelle par défaut est déterminée par les scripts de réseau qui analysent le
Cela dirigera le trafic du sous-réseau 192.168.122.0/24 vers la passerelle 10.10.10.1 fichier /etc/sysconfig/network pour commencer, puis les fichiers ifcfg de l'interface de
5.3. Configuration des routages statiques par ip route réseau pour les interfaces qui sont « up » (actives). Les fichiers ifcfg sont lus en ordre
Si des routages statiques sont requis, ils peuvent être ajoutés à la table de routage par numérique croissant, et la dernière directive GATEWAY à lire est utilisée pour
le biais de la commande ip route add ou enlevés par la commande ip route del. Les composer un routage par défaut dans la table de routage.
commandes ip route les plus fréquemment utilisées prennent la forme suivante : Le routage par défaut peut ainsi être indiqué par la directive GATEWAY et peut être
~]# ip route [add | del | change | append | replace ] destination-address spécifié soit globalement, soit dans les fichiers de configuration spécifiques à l'interface.
Utiliser la commande ip route sans options pour afficher la table de routage IP. Cependant, l'utilisation du fichier global /etc/sysconfig/network est déprécié, et il faut
Exemple :

M.FILALI Linux : Administration des Serveurs 39 M.FILALI Linux : Administration des Serveurs 40
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
maintenant indiquer la passerelle par l'intermédiaire des fichiers de configuration 10.10.10.0/24 est l'adresse réseau et la longueur du préfixe du réseau de destination ou
uniquement. du réseau distant. L’adresse 192.168.1.1 est l'adresse IP menant au réseau distant.
Dans les environnements de réseaux dynamiques, quand les hôtes mobiles sont gérés C'est, de préférence l'adresse du tronçon suivant (next hop address), mais l'adresse de
par un NetworkManager, l'information de passerelle a de grandes chances d'être l'interface de sortie fonctionnera. L'expression « next hop » désigne l'extrémité (la fin)
spécifique à l'interface, et il vaut mieux qu'elle soit donnée par DHCP. Dans certains d'un lien, par exemple une passerelle ou un routeur. L'option dev peut être utilisée pour
cas, quand il vaut mieux influencer la sélection du NetworkManager pour l'interface spécifier l'interface de sortie interface, mais elle n'est pas nécessaire. Ajouter autant de
de sortie à utiliser pour atteindre une passerelle. Utiliser la routages statiques qu'il vous faut.
commande DEFROUTE=no dans les fichiers ifcfg pour ces interfaces qui ne mènent pas Voici un exemple de fichier route-interface qui utilise le format d'arguments de
à la passerelle par défaut. commandes ip. La passerelle par défaut est 192.168.0.1, l'interface est eth0 et une ligne

5.5. Configuration des routages statiques par les fichiers ifcfg allouée ou une connexion WAN est disponible à l'adresse suivante 192.168.0.10. Les
Les configurations de routages statiques par les commandes ip par ligne de commandes deux routages statiques servent à joindre le réseau 10.10.10.0/24 et
seront perdus si le système est stoppé ou après un redémarrage. Pour configurer des l'hôte 172.16.1.0/24 :
routages statiques à être persistants après le redémarrage d'un système, ils devront default via 192.168.0.1 dev eth0
figurer dans les fichiers de configuration par-interface qui se trouvent à l'adresse 10.10.10.0/24 via 192.168.0.10 dev eth0
suivante /etc/sysconfig/network-scripts /. Le nom du fichier doit être du format route- 172.16.1.10/32 via 192.168.0.10 dev eth0
ifname. Il existe deux types de commandes à utiliser dans les fichiers de configuration :
Dans l'exemple ci-dessus, les paquets allant vers le réseau 192.168.0.0/24 seront dirigés
les commandes ip  et le format Réseau/Masque réseau
en dehors de l'interface attachée à ce réseau. Les paquets allant vers le
5.5.1. Configuration des routages statiques en utilisant le format réseau 10.10.10.0/24 et vers l'hôte 172.16.1.10/32 seront dirigés vers 192.168.0.10. Les
d'arguments de commandes IP
Si nécessaire, dans un fichier de configuration par interface, comme par paquets allant vers des paquets inconnus, distants utiliseront la passerelle par défaut,

exemple /etc/sysconfig/network-scripts/route-eth0, définir un itinéraire (routage) à une donc les routages statiques ne seront configurés uniquement que pour les réseaux ou

passerelle par défaut sur la première ligne. C'est seulement nécessaire si la passerelle hôtes distants si le routage par défaut ne convient pas. Dans ce contexte « distant »

n'est pas définie par DHCP et qu'elle n'est pas définie au niveau global dans le signifie tout réseau ou hôte qui n'est pas attaché directement au système.

fichier /etc/sysconfig/network : Spécifier une interface de sortie est facultatif. Cela peut être utile si vous voulez forcer

default via 192.168.1.1 dev interface le trafic sur une interface spécifique. Par exemple, dans le cas d'un VPN, vous pouvez
forcer le trafic vers un réseau distant pour passer à travers une interface tun0, même
192.168.1.1 est l'adresse IP de la passerelle par défaut. L’interface est l'interface qui est
lorsque l'interface est dans un sous-réseau différent du réseau de destination.
connectée à, ou qui peut atteindre, la passerelle par défaut. L'option dev peut être
Important : Si la passerelle par défaut est déjà attribuée par le protocole DHCP et si la
omise, elle est facultative. Notez que ce paramètre prévaut sur un paramètre du
même passerelle avec la même métrique sont spécifiés dans un fichier de configuration,
fichier fichier/etc/sysconfig/network.
une erreur lors du démarrage ou lors de l'apparition de l'interface, se produira. Le
Si on a besoin d'un réseau distant, on peut spécifier un routage statique comme suit.
message d'erreur suivant risque d'apparaître :
Chaque ligne de routage est analysée individuellement.
"RTNETLINK answers: File exists". This error may be ignored.
10.10.10.0/24 via 192.168.1.1 [dev interface]

M.FILALI Linux : Administration des Serveurs 41 M.FILALI Linux : Administration des Serveurs 42
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
5.5.2. Format de directives de Réseau/Masque de réseau ~]# sysctl -w net.ipv4.ip_forward=1
Vous pouvez également utiliser le format des directives de réseau/masque de réseau
Route par défaut
pour les fichiers route-interface. Ce qui suit est un modèle pour le format
~]# route add default gw 194.56.87.1
réseau/masque de réseau, avec des instructions qui suivent :
~]# route del default gw 194.56.87.1
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
 ADDRESS0=10.10.10.0 correspond à l'adresse du réseau distant ou de l'hôte à
atteindre.
 NETMASK0=255.255.255.0 correspond au masque de l'adresse de réseau définie
dans ADDRESS0=10.10.10.0.
 GATEWAY0=192.168.1.1 est la passerelle par défaut, ou une adresse IP qui peut
être utilisée pour atteindre ADDRESS0=10.10.10.0
Voici un exemple de fichier route-interface qui utilise le format de directives de
réseau/masque réseau. La passerelle par défaut est 192.168.0.1 mais une ligne allouée
ou une connexion WAN est disponible à l'adresse suivante 192.168.0.10. Les deux
routages statiques servent à joindre les réseaux 10.10.10.0/24 et 172.16.1.0/24 :
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
Les routages statiques suivants sont numérotés séquentiellement, et ne doivent pas
sauter une valeur. Par exemple, ADDRESS0, ADDRESS1, ADDRESS2, etc.
Commandes:
Routes
~]# route add -net 192.168.0.0/24 gw 112.65.123.3
~]# route add -net 112.0.0.0/8 gw 192.168.0.1
~]# route del -net 193.86.46.0/24 gw 196.24.52.1
Activer Le routage
~]# echo 1 > /proc/sys/net/ipv4/ip_forward
Ou bien

M.FILALI Linux : Administration des Serveurs 43 M.FILALI Linux : Administration des Serveurs 44
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°2-1 : Configurer les services de routage Statique (Enoncé) TP-N°2-1 : Configurer les services de routage Statique (Corrigée)
1) Dans un terminal, utiliser la commande suivante pour créer le scripte du Travail
~]$ cd ; script -f ROUTAGE_BinomeX.txt
Le script a débuté, le fichier est ROUTAGE_BinomeX.txt
2) Configurer l’interface ens33 avec l’adresse 172.20.208.1 /24.
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
Edition du fichier « ifcfg-ens33 »
DEVICE=ens33
1) Dans un terminal, utiliser la commande suivante :
IPADDR=172.20.208.1
$cd  ; script ROUTAGE_BinomeX .txt #avec X=numéro de Binôme
NETMASK=255.255.255.0
2) Configurer l’adresse IP 172.20.208.1/24  sur la première interface ens33 du serveur
ONBOOT=yes
Linux1 en utilisant le fichier de configuration.
BOOTPROTO=none
3) Configurer l’adresse IP 192.168.8.254/24  sur la deuxième interface ens37 du
3) Configurer l’interface ens37 avec l’adresse 192.168.8.254 /24.
serveur Linux1 en utilisant le fichier de configuration.
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens37
4) Redemarrer le service réseau
Edition du fichier « ifcfg-ens37 »
5) Afficher la configuration IP de votre serveur Linux1
DEVICE=ens37
6) Activer le routage sur votre serveur Linux1
IPADDR=192.168.8.254
7) Afficher la table de routage de votre serveur Linux1
NETMASK=255.255.255.0
8) Connecter la machine Virtuelle Linux1 avec la machine réelle Win01.
ONBOOT=yes
9) Tester la connectivité entre Win01 et ens33 du serveur Linux1
BOOTPROTO=none
10)Tester la connectivité entre Win01 et ens37 du serveur Linux1
11)Configurer l’adresse IP 192.168.8.10/24  sur l’interface ens33 de Linux2 en utilisant 4) Redemarrer le service Réseau

le fichier de configuration. ~]# systemctl restart network

12)Redemarrer le service réseau Restarting network (via systemctl): [ OK ]

13)Afficher la configuration IP de votre serveur Linux2 ~]# systemctl status network

14)Activer le routage sur la machine Linux2 5) Afficher la configuration IP de votre serveur Linux1

15)Ajouter une route statique ver le Réseau 172.20.208.0 avec la passerelle ~]# ifconfig
192.168.8.254 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
16)Tester la connectivité entre Win01 et Linux2 inet 172.20.208.1 netmask 255.255.255.0 broadcast 172.20.208.255
17)Enregistrer une copie des fichiers de configuration de votre machine …
18)Quitter par la commande : exit ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
19)Rédiger un Rapport du TP (Commandes Résultats Interpretations) inet 192.168.8.254 netmask 255.255.255.0 broadcast 192.168.8.255
6) Activer le routage sur votre serveur Linux1

M.FILALI Linux : Administration des Serveurs 45 M.FILALI Linux : Administration des Serveurs 46
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# sysctl -w net.ipv4.ip_forward=1


net.ipv4.ip_forward = 1
7) Afficher la table de routage de votre serveur Linux1
~]# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
172.20.208.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.8.0 0.0.0.0 255.255.255.0 U 100 0 0 ens37
8) Connecter la machine Virtuelle Linux1 avec la machine réelle Win01
 Lancer :

 Attacher la carte réseau linux1 ens33 au Vswitch1


 Supprimer tous les réseaux existants
 Ajouter un Switch Virtuel VMnet1 (Vswitch1 voir maquette)
 Clic droit sur l’icône de la carte réseau Virtuelle Settings
 Choisissez Custom => VMnet1(Host-only)

 Configurez ce réseau (Vswitch1) avec l’adresse 172.20.208.0/24 en (host-only)


 Desactiver le serveur DHCP VMware : Décocher l’option (Use local DHCP..)
 Connecter la carte Windows (VMnet1) à ce Réseau : Cocher l’option (Connect a
host virtual adapter to this network)
 Valider par ok
9) Tester la connectivité entre Win01 et ens33 du serveur Linux1
Client Win01: configurer le client windows avec l’adresse 172.20.208.10/24
C:\ >ipconfig /all

M.FILALI Linux : Administration des Serveurs 47 M.FILALI Linux : Administration des Serveurs 48
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

Carte Ethernet VMware Network Adapter VMnet1: ~]# ifconfig


Adresse IPv4. . . . . . . . . . ……. . . .: 172.20.208.10 (préféré) ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
Masque de sous-réseau. . . . . . . . . : 255.255.255.0 inet 192.168.8.10 netmask 255.255.255.0 broadcast 192.168.8.255
Passerelle par défaut. . . . . . . . …. :172.20.208.1 …
Tester la connectivité avec le serveur Linux1 14) Activer le routage sur Linux2
C:\ >ping 172.20.208.1
~]# sysctl -w net.ipv4.ip_forward=1
Envoi d'une requête 'Ping' 172.20.208.1 avec 32 octets de données :
net.ipv4.ip_forward = 1
Réponse de 172.20.208.1 : octets=32 temps<1ms TTL=128
15) Ajouter une route statique ver le Réseau 172.20.208.0
Réponse de 172.20.208.1 : octets=32 temps<1ms TTL=128
~]# route add -net 172.20.208.0/24 gw 192.168.8.254
Serveur Linux1:
16) Tester la connectivité entre Win01 et Linux2
~]$ ping 172.20.208.10
Configirer le switch virtuel Vswitch2
Réponse de 172.20.208.10 : octets=32 temps<1ms TTL=128
 Lancer  Virtual Network Editor
Réponse de 172.20.208.10 : octets=32 temps<1ms TTL=128
 Ajouter un Switch Virtuell VMnet2 (Vswitch2 voir maquette)
10) Tester la connectivité entre Win01 et ens37 du serveur Linux1
 Configurez ce réseau (Vswitch2) avec l’adresse 192.168.8.0/24 (Host-only)
Client Win01:
 Desactiver le serveur DHCP VMware : Décocher l’option DHCP
C:\ >ping 192.168.8.254  Deconnecter la carte Windows (VMnet2) de ce Réseau : Décocher l’option
Envoi d'une requête 'Ping' 192.168.8.254avec 32 octets de données : (Connect a host virtual adapter to this network)
Réponse de 192.168.8.254: octets=32 temps<1ms TTL=128  Attacher la carte réseau linux1 ens37 au Vswitch2
Réponse de 192.168.8.254: octets=32 temps<1ms TTL=128
11) Configurer l’adresse IP 192.168.8.10/24  sur l’interface ens33 de Linux2.  Clic droit sur l’icône de la carte réseau Virtuelle Settings
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33  Choisissez Custom => VMnet2(Host-only)
Edition du fichier « ifcfg-ens33 »  Attacher la carte réseau linux2 ens33 au Vswitch2

DEVICE=ens33
IPADDR=192.168.8.10  Clic droit sur l’icône de la carte réseau Virtuelle Settings

NETMASK=255.255.255.0  Choisissez Custom => VMnet2(Host-only)

GATEWAY=192.168.8.254 Client Win01:


ONBOOT=yes
C:\ >ping 192.168.8.10
BOOTPROTO=none
Envoi d'une requête 'Ping' 192.168.8.10 avec 32 octets de données :
12) Redemarrer le service Réseau Réponse de 192.168.8.10: octets=32 temps<1ms TTL=128
~]# service network restart Réponse de 192.168.8.10: octets=32 temps<1ms TTL=128
Restarting network (via systemctl): [ OK ]
13) Afficher la configuration IP de votre serveur Linux2

M.FILALI Linux : Administration des Serveurs 49 M.FILALI Linux : Administration des Serveurs 50
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°2-2 : Configurer les services de routage Dynamique Vérifiez avec la commande ifconfig que vos interfaces n’ont plus d’adresses ipv4
~]# ifconfig
Et que la table de routage est vide avec la commande 
~]# route -n
2.Installation :
L’installation se fait classiquement avec la commande dnf (accès internet !)
~]# dnf install quagga
Sinon Installation par la commande rpm
1. Prérequis :
~]# rpm -ivh libnet-1.1.6-11.fc24.i686.rpm
Les adresses IP de la machine faisant fonctionner Quagga DOIVENT être affectées par
~]# rpm -ivh lm_sensors-libs-3.4.0-5.fc25.i686.rpm
le démon zebra et pas par le système lui-même.
~]# rpm -ivh mariadb-config-10.1.18-1.fc25.i686.rpm
Pour faire cela, il vous faut éditer vos fichiers de configuration pour chaque interface et
~]# rpm -ivh mariadb-common-10.1.18-1.fc25.i686.rpm
supprimer les variables IPADDR et NETMASK. 
~]# rpm -ivh mariadb-libs-10.1.18-1.fc25.i686.rpm
Vérifiez que vous avez également ceci :  BOOTPROTO=static.
~]# rpm -ivh net-snmp-libs-5.7.3-13.fc25.i686.rpm
Ces fichiers de configuration s’appellent ifcfg-ensx où x est la valeur de l’interface. Ils
~]# rpm -ivh net-snmp-agent-libs-5.7.3-13.fc25.i686.rpm
sont placés dans le dossier /etc/sysconfig/network-scripts.
~]# rpm -ivh net-snmp-5.7.3-13.fc25.i686.rpm
Vérifiez également que le fichier /etc/sysconfig/network ne comporte pas de variable
~]# rpm -ivh quagga-0.99.24.1-3.fc24.i686.rpm
GATEWAY ou GATEWAYDEV.
3.Activation:
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
~]# systemctl enable zebra
Edition du fichier « ifcfg-ens33 »
Le routage dynamique s’active démon par démon, c’est à dire que si vous utilisez OSPF,
DEVICE=ens33
il vous faut activer ospfd, si vous utiliser BGP, il vous faut activer bgpd, etc... 
ONBOOT=yes
Exemple de Rip :
BOOTPROTO=static
~]# systemctl enable ripd
Attention, pour activer le routage dynamique il faut qu’un fichier de configuration pour
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens37
le démon en question existe. Par défaut il n’y en a pas, il ya juste des fichiers exemples.
Edition du fichier « ifcfg-ens37 »
Les fichiers de configuration se trouvent dans le dossier /etc/quagga.
DEVICE=ens37
Le fichier de configuration de quagga s’appelle zebra.conf et est présent de base.
ONBOOT=yes
Le fichier de configuration de rip s’appelle ripd.conf et doit être créé :
BOOTPROTO=static
~]# cp /usr/share/doc/quagga/examples/ripd.conf.sample /etc/quagga/ripd.conf
Une fois ces fichiers corrigés, relancez le réseau avec la commande
Les fichiers doivent appartenir à l’utilisateur quagga, Pour cela, il faut utiliser la
~]# service network restart
commande suivante :
Restarting network (via systemctl): [ OK ]
~]# chown quagga: /etc/quagga/*

M.FILALI Linux : Administration des Serveurs 51 M.FILALI Linux : Administration des Serveurs 52
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Une fois ces fichiers créés on peut lancer les services : R1(config-router)#version 2
~]# service zebra start R1(config-router)# network 1172.20.208.0/24
~]# service ripd start R1(config-router)# network 192.168.8.0/24
4. Configuration : R1(config-router)#redistribute connected
Le paramétrage se fait avec une console spécialisée nommés vtysh. Pour l’éxécuter, R1(config-router)#redistribute static
lancez la commande vtysh depuis le shell du root. R1(config-router)#exit
Les commandes à taper ressemblent aux commandes CISCO. R1(config)#exit
Pour voir la configuration active, il faut utiliser la commande sh running-config et pour R1#wr
passer en mode de configuration il faut taper conf t.  R1#sh run
Une fois la configuration effectuée, enregistrez la dans les fichiers de configuration avec …
la commande wr. R1#exit
Exemple de configuration : ~]#

~]# vtysh Afficher le fichier de configuration


… ~]# cat /etc/quagga/zebra.conf
localhost.localdomain# ~]# cat /etc/quagga/ripd.conf
localhost.localdomain# conf t
localhost.localdomain(config)# hostname R1 Exercice 1 :
R1(config)# 1. Activer le routage ospfv2
R1(config)# do show interface 2. Configurer le routage ospfv2
Interface ens33 is up, line protocol detection is disabled 3.Tester le routage ospfv2
… Exercice 2 :
Interface ens37 is up, line protocol detection is disabled 1. Activer le routage statique
… 2. Configurer le routage statique
Interface lo is up, line protocol detection is disabled 3.Tester le routage statique
… Exercice 3 :
R1(config)# 1. Activer le routage RIPng
R1(config)# interface ens33 2. Configurer le routage RIPng
R1(config-if)# ip address 172.20.208.1/24 3.Tester le routage RIPng
R1(config-if)# exit Exercice 4 :
R1(config)# interface ens37 1. Activer le routage ospfv3
R1(config-if)# ip address 192.168.8.254/24 2. Configurer le routage ospfv3
R1(config-if)# exit 3.Tester le routage ospfv3
R1(config)#router rip

M.FILALI Linux : Administration des Serveurs 53 M.FILALI Linux : Administration des Serveurs 54
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°2-3 : Mise en Place des services de routage (Devoir Libre) Adresse IP : 10.10.10.2

Configurer une machine linux en tant que routeur pour lier deux segments différents Masque sous réseau : 255.255.255.0
Passerelle par défaut : 10.10.10.1
10- Attacher la carte ens37 de la machine linux1 et la carte réseau de la machine
Windows au même Switch virtuel (LAN2)
11- Tester la communication entre les 2 machines Linux1 et Windows
Les deux machines Windows et linux2 ne communiquent pas car elles se trouvent dans
des LANs différents

1- Ajouter une 2ème carte réseau à la machine linux1 12- Configurer linux1 en tant que routeur

2- Démarrer la machine linux1 13- Tester la communication entre les 2 machines linux2 et Windows

3- Configurer les 2 Cartes réseau selon les paramètres suivants : La communication passe à travers le routeur linux1

Carte ens33 A partir de la machine windows

Adresse IP : 192.168.1.1  ping 192.168.1.2

Masque sous réseau : 255.255.255.0  tracert 192.168.1.2

Passerelle par défaut : 192.168.1.1 14- Afficher la table du routage de linux1


15- Enregistrer une copie des fichiers de configuration de votre machine
Carte ens37 16- Quitter par la commande : exit
Adresse IP : 10.10.10.1 17- Rédiger un Rapport du TP (Commandes Résultats Interpretations)
Masque sous réseau : 255.255.255.0
Passerelle par défaut : 10.10.10.1
4- Démarrer la machine linux2
5- Configurer la Cartes réseau selon les paramètres suivants :
Carte ens33
Adresse IP : 192.168.1.2
Masque sous réseau : 255.255.255.0
Passerelle par défaut : 192.168.1.1
6- Attacher la carte ens33 de la machine linux1 et la carte ens33 de la machine linux2
au même Switch virtuel (LAN1)
7- Tester la communication entre les 2 machines virtuelles
8- Sur la machine Windows 7
9- Configurer la Cartes réseau selon les paramètres suivants :

M.FILALI Linux : Administration des Serveurs 55 M.FILALI Linux : Administration des Serveurs 56
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

CH3 : Implémenter le serveur DHCP Si une organisation a un serveur DHCP fonctionnel correctement connecté à un réseau,
les utilisateurs d'ordinateurs portables ou d'autres ordinateurs mobiles peuvent
déplacer ces périphériques de bureau en bureau.
3. Configuration d'un serveur DHCP
Le package dhcp contient un serveur ISC (Internet Systems Consortium) DHCP.
Installez le package en tant qu'utilisateur root :
~]# yum install dhcp
En installant le paquet dhcp, vous allez créer un fichier, /etc/dhcp/dhcpd.conf, qui
correspond tout simplement à un fichier de configuration vide. En tant
qu'utilisateur root, exécutez la commande suivante :
~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
On peut trouver l'exemple de configuration dans 
/usr/share/doc/dhcp-version;/dhcpd .conf.example.
1. Introduction
DHCP (Dynamic Host Configuration Protocol) est un protocole de réseau qui assigne Vous devez utiliser ce fichier pour pouvoir configurer /etc/dhcp/dhcpd.conf, expliqué en

automatiquement les informations TCP/IP à des machines clientes. Chaque détails ci-dessous.

client DHCP se connecte au serveur DHCP situé localement, qui renvoie la DHCP utilise également le fichier /var/lib/dhcpd/dhcpd.leases pour stocker la base

configuration de réseau (y compris l'adresse IP, la passerelle, et les serveurs DNS) de ce de données d'attribution client.

client. 3.1. Fichier de configuration


La première étape pour configurer un serveur DHCP consiste à créer le fichier de
2. Pourquoi utiliser DHCP ?
configuration qui stocke les informations réseau des clients. Utiliser ce fichier pour
DHCP est utile pour la configuration automatique des interfaces de réseaux clientes.
déclarer des options dans les systèmes clients.
Lorsque vous configurez le système client, vous pouvez choisir DHCP au lieu de
Le fichier de configuration peut contenir des tabulations ou lignes vierges
spécifier une adresse IP, un masque de sous-réseau, une passerelle ou des
complémentaires pour faciliter le formatage. Les mots-clés sont sensibles à la casse et
serveurs DNS. Le client récupère cette information dans le serveur DHCP. DHCP est
les lignes commençant par un signe dièse (#) correspondent à des commentaires.
également utile si vous souhaitez modifier les adresses IP d'un grand nombre de
Il existe deux types de déclarations dans le fichier de configuration :
systèmes. Au lieu de reconfigurer tous les systèmes, vous pouvez simplement modifier
 Paramètres - expliquent comment effectuer une tâche, quand l'effectuer, ou quelles
un fichier de configuration sur le serveur pour un nouvel ensemble d'adresses IP. Si les
options de configuration donner au client.
serveurs DNS d'une organisation change, les changements se produiront sur le
 Déclarations - décrit la topologie du réseau, les clients, donne des adresses aux
serveur DHCP, pas sur les clients DHCP. Lorsque vous redémarrerez le réseau ou les
clients, ou applique un groupe de paramètres à un groupe de déclarations.
clients, les changements entreront en vigueur.
Les paramètres qui commencent avec le mot-clé option sont considérés comme
des options. Ces options configurent les options DHCP, alors que les paramètres eux,

M.FILALI Linux : Administration des Serveurs 57 M.FILALI Linux : Administration des Serveurs 58
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
configurent des valeurs qui ne sont pas facultatives ou contrôlent le comportement du max-lease-time 7200;
serveur DHCP. option subnet-mask 255.255.255.0;
Les paramètres (y compris les options) déclarés avant une section entre accolades ({ }) option broadcast-address 192.168.1.255;
sont considérés comme des paramètres globaux. Ceux-ci s'appliquent à toutes les option routers 192.168.1.254;
sections se trouvant en dessous. option domain-name-servers 192.168.1.1, 192.168.1.2;
Important : Si le fichier de configuration est modifié, les changements ne pourront pas option domain-search "example.com";
prendre effet tant que le démon DHCP n'aura pas redémarré par la commande  subnet 192.168.1.0 netmask 255.255.255.0 {
~]# systemctl restart dhcpd range 192.168.1.10 192.168.1.100;
Dans l’exemple ci-dessous les options routers, subnet-mask, domain-search, domain- }
name-servers, et time-offset sont utilisées pour les énoncés d’hôte déclarés dessous. Pour assigner une adresse IP à un client sur la base d'une adresse MAC de la carte
Pour chaque sous-réseau servi, et pour chaque sous-réseau auquel le serveur DHCP se d'interface de réseau, utiliser le paramètre hardware ethernet qui se trouve dans la
connecte, il doit y avoir une déclaration de sous-réseau, qui indique au démon DHCP déclaration de l’hôte. Comme le montre l’exemple 3, la déclaration host apex spécifie
comment reconnaître qu'une adresse est sur ce sous-réseau. Une déclaration de sous- que la carte d'interface de réseau ayant pour adresse MAC 00:A0:78:8E:9E:AA reçoit
réseau est exigée pour chaque sous-réseau, même si aucune adresse ne doit être allouée toujours l'adresse IP 192.168.1.4.
de façon dynamique sur ce sous-réseau. Notez que vous pouvez également utiliser le paramètre host-name pour assigner un
Dans cet exemple, il y a des options globales pour chaque client DHCP dans le sous- nom d'hôte au client.
réseau, et une plage est annoncée. Les clients reçoivent une adresse IP incluse dans host apex {
l'intervalle indiqué. option host-name "apex.example.com";
subnet 192.168.1.0 netmask 255.255.255.0 { hardware ethernet 00:A0:78:8E:9E:AA;
option routers 192.168.1.254; fixed-address 192.168.1.4;
option subnet-mask 255.255.255.0; }
option domain-search "example.com"; Tous les sous-réseaux qui partagent le même réseau physique doivent être déclarés
option domain-name-servers 192.168.1.1; dans une déclaration de réseau partagé (shared-network), comme indiqué
option time-offset -18000; dans l’exemple. Les paramètres qui se trouvent dans le shared-network, mais en dehors
range 192.168.1.10 192.168.1.100; des déclarations de sous-réseau clos, sont considérés comme paramètres globaux. Le
} nom attribué au shared-network doit être un titre descriptif pour le réseau, comme
Pour configurer un serveur DHCP qui alloue une adresse IP à un système se trouvant l'utilisation du titre « -test-lab » qui décrit tous les sous-réseaux dans un environnement
dans un sous-réseau, modifier les valeurs de l'exemple .dans l’exemple 2 on a déclaré de test.
une durée d'allocation par défaut, une durée d'allocation maximale, et des valeurs de shared-network name {
configuration de réseau pour les clients. Cet exemple alloue des adresses IP sur option domain-search "test.redhat.com";
les plages de valeurs 192.168.1.10 et 192.168.1.100 aux systèmes clients. option domain-name-servers ns1.redhat.com, ns2.redhat.com;
default-lease-time 600; option routers 192.168.0.254;

M.FILALI Linux : Administration des Serveurs 59 M.FILALI Linux : Administration des Serveurs 60
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

#more parameters for EXAMPLE shared-network ~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf


subnet 192.168.1.0 netmask 255.255.252.0 { ... avec version_number comme numéro de version DHCP.
#parameters for subnet 3.2. Base de données d'attribution
range 192.168.1.1 192.168.1.254; Sur le serveur DHCP, le fichier /var/lib/dhcpd/dhcpd.leases stocke la base de

} données d'allocation du client DHCP. Ne pas modifiez ce fichier. Les informations

subnet 192.168.2.0 netmask 255.255.252.0 { d'allocation DHCP pour chaque adresse IP récemment attribuée sont automatiquement

#parameters for subnet stockées dans la base de données d'allocation. L'information comprend la durée

range 192.168.2.1 192.168.2.254; d'allocation, à laquelle l'adresse IP a été assignée, les dates de début et de fin de

} l'allocation et l'adresse MAC de la carte d'interface réseau qui a été utilisée pour

} récupérer l'allocation.

Comme démontré dans l’exemple, la déclaration de groupe est utilisée pour appliquer Toutes les heures de la base de données d'attribution sont des heures "Coordinated

les paramètres globaux à un groupe de déclarations. Ainsi, les réseaux partagés, les Universal Time" (UTC) et non pas des heures locales.

sous-réseaux, et les hôtes peuvent être groupés. La base de données de l'allocation est recrée de temps en temps pour qu'elle n'atteigne

group { pas des proportions trop élevées. Tout d'abord, toutes les allocations connues sont

option routers 192.168.1.254; enregistrés dans une base de données d'allocations temporaires. Le

option subnet-mask 255.255.255.0; fichier dhcpd.leases est rebaptisé dhcpd.leases~ et la base de données d'allocations

option domain-search "example.com"; temporaires est inscrite dans dhcpd.leases.

option domain-name-servers 192.168.1.1; Le démon DHCP peut être terminé ou le système peut se bloquer après que la base de

option time-offset -18000; données d'allocations a été renommée dans le fichier de sauvegarde, mais avant que le

host apex { nouveau fichier n'ait été écrit. Dans ce cas, le fichier dhcpd.leases n'existe pas, mais il

option host-name "apex.example.com"; est nécessaire de démarrer le service. Ne créez de nouveau fichier d'allocation. Si vous

hardware ethernet 00:A0:78:8E:9E:AA; le faites, toutes les anciennes allocations seront perdues, ce qui provoquera de

fixed-address 192.168.1.4; nombreux problèmes. La meilleure solution consiste à renommer le fichier de

} sauvegarde dhcpd.leases~ à dhcpd.leases, et à démarrer le démon.

host raleigh { 3.3. Lancement et interruption du serveur


Important : Lorsque le serveur DHCP est démarré pour la première fois, il échoue à
option host-name "raleigh.example.com";
moins que le fichier dhcpd.leases existe. Vous pouvez utiliser la commande 
hardware ethernet 00:A1:DD:74:C3:F2;
~]# touch /var/lib/dhcpd/dhcpd.leases 
fixed-address 192.168.1.6;
Pour créer le fichier s'il n'existe pas. Si le même serveur exécute également BIND en
}
tant que serveur DNS, cette étape n'est pas nécessaire, car démarrer le
}
service named entraînera une recherche automatique du fichier dhcpd.leases.
Vous pouvez utiliser le fichier de configuration donné dans l'exemple pour commencer,
Ne pas créer de nouveau fichier d'allocation sur un système qui était en cours
et y ajouter des options de configuration personnalisées. Pour copier ce fichier dans
d'exécution auparavant. Si vous les faîtes, toutes les anciennes allocations seront
l'emplacement qui convient, utiliser la commande suivante en tant qu'utilisateur root :

M.FILALI Linux : Administration des Serveurs 61 M.FILALI Linux : Administration des Serveurs 62
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
perdues, ce qui entraîne de nombreux problèmes. La solution est de renommer le fichier Les options de ligne de commande peuvent se rajouter
de sauvegarde dhcpd.leases~ en dhcpd.leases, puis démarrer le démon. à ExecStart=/usr/sbin/dhcpd dans le fichier
Pour démarrer le service DHCP, utiliser la commande suivante : d'unité /etc/systemd/system/dhcpd.service sous la section [Service]. Elles incluent :
~]# systemctl start dhcpd.service 1. -p portnum — spécifie le numéro de port UDP sur lequel dhcpd doit écouter. La

Pour arrêter le serveur DHCP, saisir : valeur par défaut est le port 67. Le serveur DHCP transmet les réponses aux

~]# systemctl stop dhcpd.service clients DHCP à un numéro de port d'un numéro supérieur au numéro de port UDP
spécifié. Par exemple, si le port par défaut 67 est utilisé, le serveur écoute les
Par défaut, le service DHCP ne démarre pas à l'amorçage.
Pour activer le service DHCP au demarrage, saisir : requêtes sur le port 67, et répond au client sur le port 68. Si un port est spécifié ici et
que l'agent de relais DHCP est utilisé, le même port que celui sur lequel l'agent de
~]# systemctl enable dhcpd.service
relais DHCP doit écouter, devra être spécifié.
Si plus d'une interface réseau est reliée au système, mais que le serveur DHCP doit
2. -f — exécute le démon en arrière-plan. Utilisé uniquement pour le débogage.
seulement écouter les requêtes DHCP sur une des interfaces, configurez le
3. -d — logue le démon de serveur DHCP en descripteur d'erreur standard. Utilisé
serveur DHCP pour écouter uniquement sur ce périphérique. Le démon DHCP écoute
surtout pour le débogage. Si non spécifié, la journalisation apparaîtra sur le
uniquement sur les interfaces pour lesquelles il pourra trouver une déclaration de sous-
fichier /var/log/messages.
réseau dans le fichier /etc/dhcp/dhcpd.conf.
4. -cf filename — indique l'emplacement du fichier de configuration. L'emplacement par
Cela est utile si vous avez un ordinateur protégé par un pare-feu et doté de deux cartes
défaut est /etc/dhcp/dhcpd.conf.
réseau. L'une d'elles peut être configurée comme client DHCP pour récupérer une
5. -lf filename — indique l'emplacement du fichier de base de données d'allocations. Si
adresse IP d'internet. L'autre carte réseau peut servir de serveur DHCP pour le réseau
un fichier de base de données d'allocation existe déjà, il est très important que le
interne se trouvant derrière le pare-feu. En ne spécifiant que la carte réseau connectée
même fichier soit utilisé à chaque fois que le serveur DHCP démarre. Il est
au réseau interne, votre système sera plus sûr puisque les utilisateurs ne pourront pas
fortement conseillé d'utiliser cette option à but de débogage sur des machines qui ne
se connecter au démon par le biais de l'internet.
soient pas des machines de production. L'emplacement par défaut
Pour spécifier les options de ligne de commandes, copier et éditer le
est /var/lib/dhcpd/dhcpd.leases.
fichier dhcpd.service en tant qu'utilisateur root. Par exemple :
6. -q — ne pas afficher tout le message copyright quand vous démarrez le démon.
~]# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

4. Agent de relais DHCP


~]# vi /etc/systemd/system/dhcpd.service L'agent de relais DHCP (dhcrelay) permet de relayer les
Modifier la ligne sous la section [Service]: requêtes DHCP et BOOTP d'un sous-réseau sans serveur DHCP vers un ou plusieurs
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid serveurs DHCP sur d'autres sous-réseaux.
your_interface_name(s) Lorsqu'un client DHCP demande des informations, l'agent de relais DHCP transfère la

Puis, en tant qu'utilisateur root, démarrer le service à nouveau. requête à la liste des serveurs DHCP spécifiés lors du démarrage de l'agent de relais

~]# systemctl --system daemon-reload DHCP. Lorsqu'un serveur DHCP renvoie une réponse, la réponse est diffusée sur le

~]# systemctl restart dhcpd réseau ayant envoyé la requête d'origine.

M.FILALI Linux : Administration des Serveurs 63 M.FILALI Linux : Administration des Serveurs 64
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
L'agent de relais DHCP pour IPv4, dhcrelay, écoutes les
demandes DHCPv4 et BOOTP sur toutes les interfaces, sauf si les interfaces sont ~]# route add –host 255.255.255.255 dev eth0

spécifiées dans /etc/sysconfig/dhcrelay avec la directive INTERFACES. Ou

L'agent de relais DHCP pour IPv6, dhcrelay6, n'a pas ce comportement par défaut et ~]# route add 255.255.255.255 dev ens33

vous devez spécifier les interfaces pour écouter les requêtes DHCPv6. 4.2. Configurer dhcrelay en tant qu'agent de relais DHCPv6
dhcrelay peut être exécuté en tant qu'agent de relais DHCPv4 et BOOTP (par défaut) Pour exécuter dhcrelay en mode DHCPv6, ajouter l'argument -6 et indiquer « lower

ou en tant qu'agent de relais DHCPv6 (avec l'argument -6). Pour voir le message interface » (interface de niveau inférieur sur laquelle les requêtes vont être reçues des

d'utilisation, exécutez la commande dhcrelay -h. clients ou en provenance d'autres agents de relais) et « upper interface »(l'interface de
niveau supérieur sur laquelle des requêtes des clients et d'autres agents de relais
4.1. Configurer dhcrelay en tant qu'agent de relais DHCPv4 et BOOTP
Pour exécuter dhcrelay en mode DHCPv4 et BOOTP, spécifier les serveurs dans doivent être transférées). Copier dhcrelay.service dans dhcrelay6.service et modifiez-le
lesquels vous souhaitez envoyer les demandes. Copier et éditer le en tant qu'utilisateur root :
fichier dhcrelay.service en tant qu'utilisateur root : ~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service
~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/ ~]# vi /etc/systemd/system/dhcrelay6.service
Modifiez l'option ExecStart sous la section [Service] Ajouter l'argument -6 et ajpouter
~]# vi /etc/systemd/system/dhcrelay.service les interfaces « lower interface » et « upper interface », par exemple :
Modifiez l'option ExecStart sous la section [Service] et ajouter une ou plusieurs ExecStart=/usr/sbin/dhcrelay -d --no-pid -6 -l em1 -u em2
adresses IPv4 de serveur à la fin de la ligne, par exemple :
Pour activer les changements, en tant qu'utilisateur root, démarrez le service à
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 nouveau
Si vous souhaitez également spécifier des interfaces où l'agent de relais DHCP écoute ~]# systemctl --system daemon-reload
les requêtes DHCP, ajoutez-les à l'option ExecStart avec l'argument -i (sinon, il ~]# systemctl restart dhcrelay6
écoutera toutes les interfaces), par exemple :
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 -i em1 5. Configuration d'un serveur DHCP Multi-hôtes
Un serveur DHCP multi-hôtes sert plusieurs réseaux, c'est-à-dire, plusieurs sous-
Pour activer les changements, en tant qu'utilisateur root, démarrez le service à
réseaux. Les exemples dans les sections suivantes décrivent comment configurer un
nouveau
serveur DHCP pour qu'il puisse desservir plusieurs réseaux, sélectionner les interfaces
~]# systemctl --system daemon-reload
réseau à écouter, et comment définir les paramètres réseau pour les systèmes qui se
~]# systemctl restart dhcrelay
déplacent entre les réseaux.
Avant de procéder à tout changement, sauvegarder le fichier /etc/dhcp/dhcpd.conf
Note : Il arrive que certains clients DHCP (particulièrement ceux du monde Microsoft
existant.
Windows), attendent une réponse du serveur depuis l’adresse 255.255.255.255.
Le démon DHCP n'écoutera que les interfaces pour lesquelles il pourra trouver une
Cependant, le système GNU/Linux a tendance à modifier cette adresse pour l’adapter à
déclaration de sous-réseau dans le fichier /etc/dhcp/dhcpd.conf.
celle de diffusion du sous-réseau concerné. Dans l’exemple précédent : 172.16.1.255. Dans
Voici un fichier de base /etc/dhcp/dhcpd.conf, pour un serveur qui a deux interfaces de
un tel cas, il suffit de changer le comportement du serveur DHCP en ajoutant une route
réseau, eth0 dans un réseau 10.0.0.0/24 et eth1 dans un réseau 172.16.0.0/24. Plusieurs
pour l’adresse attendue

M.FILALI Linux : Administration des Serveurs 65 M.FILALI Linux : Administration des Serveurs 66
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
déclarations de sous-réseau permettent de définir des paramètres différents pour option routers 10.0.0.1;
plusieurs réseaux : L'option option routers définit la passerelle par défaut du sous-réseau. Cela est exigé
default-lease-time 600; pour que les systèmes puissent atteindre les réseaux internes sur un sous-réseau
max-lease-time 7200; différent, ainsi que sur des réseaux externes.
subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.5 10.0.0.15;
option subnet-mask 255.255.255.0; L'option range (plage) se réfère au pool d'adresses IP disponibles. Une adresse faisant
option routers 10.0.0.1; partie d'une plage de valeurs IP indiquée est assignée aux systèmes.
range 10.0.0.5 10.0.0.15; Avertissement : Pour éviter une mauvaise configuration quand le serveur DHCP
} donne des adresses IP d’une plage d’adresses IP à un autre segment Ethernet
subnet 172.16.0.0 netmask 255.255.255.0 { physique, assurez-vous de ne pas confiner plusieurs sous-réseaux dans une déclaration
option subnet-mask 255.255.255.0; de réseau partagé.
option routers 172.16.0.1; 5.1. Configuration de l'hôte
range 172.16.0.5 172.16.0.15; Avant de procéder à tout changement, sauvegarder le fichier dhcpd.conf  existant.

} 5.1.1. Configurer un système unique pour plusieurs réseaux


L'exemple /etc/dhcp/dhcpd.conf suivant crée deux sous-réseaux et configure une
sous-réseau 10.0.0.0 masque réseau 255.255.255.0;
adresse IP pour le même système, selon le réseau auquel elle se connecte :
Une déclaration de sous-réseau est obligatoire pour tout réseau que votre
default-lease-time 600;
serveur DHCP dessert. Plusieurs sous-réseaux nécessitent plusieurs déclarations
max-lease-time 7200;
de sous-réseaux. Si le serveur DHCP n'a pas d'interface réseau faisant partie de la
subnet 10.0.0.0 netmask 255.255.255.0 {
plage d'une déclaration de sous-réseau, le serveur DHCP ne desservira pas de ce
option subnet-mask 255.255.255.0;
réseau.
option routers 10.0.0.1;
S'il n'y a qu'une déclaration de sous-réseau, et aucune interface de réseau ne se situe
range 10.0.0.5 10.0.0.15;
dans la plage de ce sous-réseau, le démon DHCP échouera au démarrage, et une erreur
}
sera journalisée dans le fichier /var/log/messages :
subnet 172.16.0.0 netmask 255.255.255.0 {
dhcpd: No subnet declaration for eth0 (0.0.0.0).
option subnet-mask 255.255.255.0;
dhcpd: ** Ignoring requests on eth0. If this is not what
option routers 172.16.0.1;
dhcpd: you want, please write a subnet declaration
range 172.16.0.5 172.16.0.15;
dhcpd: in your dhcpd.conf file for the network segment
}
dhcpd: to which interface eth1 is attached. **
host example0 {
dhcpd: Not configured to listen on any interfaces!
hardware ethernet 00:1A:6B:6A:2E:0B;
option subnet-mask 255.255.255.0;
fixed-address 10.0.0.20;
L'option option subnet-mask définit un masque de sous-réseau, et remplace la valeur
}
du masque de réseau dans la déclaration du sous-réseau. Dans les cas simples, les
host example1 {
valeurs du sous-réseau et du masque de réseau correspondent aux mêmes valeurs.

M.FILALI Linux : Administration des Serveurs 67 M.FILALI Linux : Administration des Serveurs 68
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

hardware ethernet 00:1A:6B:6A:2E:0B; configuration ne fonctionnera pas si les deux interfaces réseau sont connectées au
fixed-address 172.16.0.20; même réseau en même temps :
} host interface0 {
hôte example0 hardware ethernet 00:1a:6b:6a:2e:0b;
La déclaration host définit des paramètres spécifiques pour un système unique, comme fixed-address 10.0.0.18;
une adresse IP. Pour configurer des paramètres spécifiques sur plusieurs hôtes, utiliser }
des déclarations d'hôte. host interface1 {
La plupart des clients DHCP ignorent le nom dans les déclarations d'hôte, et à ce titre, hardware ethernet 00:1A:6B:6A:27:3A;
ce nom peut être n'importe quoi, tant que c'est différent des autres déclarations d'hôte. fixed-address 10.0.0.18;
Pour configurer le même système sur des réseaux multiples, utilisez un nom différent }
pour chaque déclaration d'hôte, sinon le démon DHCP ne démarrera pas. Les systèmes Pour cet exemple, interface0 est la première interface réseau, et interface1 est la
sont identifiés par l'option hardware ethernet, et non pas le nom dans la déclaration seconde interface. Les différentes options hardware ethernet identifient chaque
de l'hôte. interface.
hardware ethernet 00:1A:6B:6A:2E:0B; Si un tel système se connecte à un autre réseau, ajouter plus de déclarations d'hôte,
L'option hardware ethernet identifie le système. Pour trouver cette adresse, exécuter la sans oublier :
commande ip link.  d'assigner une fixed-address valide au réseau auquel l'hôte se connecte.
fixed-address 10.0.0.20;  de rendre le nom de déclaration d'host unique.
L'option fixed-address assigne une adresse IP au système spécifié par l'option hardware Quand un nom non unique est donnée dans une déclaration d'hôte, le démon DHCP ne
ethernet. Cette adresse doit se trouver en dehors de la plage d'adresses IP spécifiée par démarre pas, et l'erreur suivante est journalisée dans /var/log/messages :
l'option range. dhcpd: /etc/dhcp/dhcpd.conf line 31: host interface0: already exists
Si les énoncés d'option ne se terminent pas par un point-virgule, le démon DHCP ne dhcpd: }
démarrera pas, et une errreur ressemblant à ce qui suit sera journalisée dhcpd: ^
dans /var/log/messages : dhcpd: Configuration file errors encountered -- exiting
/etc/dhcp/dhcpd.conf line 20: semicolon expected. L'erreur vient du fait d'avoir plusieurs déclarations d'host interface0 définies
dhcpd: } dans /etc/dhcp/dhcpd.conf.
dhcpd: ^
dhcpd: /etc/dhcp/dhcpd.conf line 38: unexpected end of file
6. DHCP pour IPv6 (DHCPv6)
L'ISC DHCP inclut un support pour IPv6 (DHCPv6) depuis la version 4.x avec un
dhcpd:
serveur DHCPv6, un client et une fonctionnalité d'agent de relais. Les agents
dhcpd: ^
supportent à la fois IPv4 et IPv6. Cependant, les agents ne peuvent gérer qu'un seul
dhcpd: Configuration file errors encountered -- exiting
protocole à la fois; et pour le support double, ils doivent être démarrés séparemment
5.1.2. Configurer des systèmes avec des interfaces de réseaux multiples
pour IPv4 et IPv6. Par exemple, configurez DHCPv4 et DHCPv6 en éditant leurs
Les déclarations suivantes d'hôte configurent un système unique, qui possède plusieurs
interfaces de réseau, pour que chaque interface reçoive la même adresse IP. Cette

M.FILALI Linux : Administration des Serveurs 69 M.FILALI Linux : Administration des Serveurs 70
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
fichiers de configuration respectifs /etc/dhcp/dhcpd.conf et /etc/dhcp/dhcpd6.conf, puis TP-N°3-1 : Implémenter le serveur DHCP (Enoncé)
exécutez les commandes suivantes :
~]# systemctl start dhcpd
~]# systemctl start dhcpd6
Le fichier de configuration du serveur DHCPv6 se trouve dans /etc/dhcp/dhcpd6.conf.
On peut trouver le fichier de configuration de l'exemple de serveur
dans /usr/share/doc/dhcp-version/dhcpd6.conf.example. 1) Dans un terminal, utiliser la commande suivante :
Un simple fichier de configuration de serveur DHCPv6 peut ressembler à ce qui suit : $cd ; script DHCP_BinomeX.txt avec X=numéro de Binôme
subnet6 2001:db8:0:1::/64 { 2) Renommer votre machine à SRV-DHCP
range6 2001:db8:0:1::129 2001:db8:0:1::254; 3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1 et le masque sous
option dhcp6.name-servers fec0:0:0:1::1; réseau : 255.0.0.0 en utilisant le fichier de configuration
option dhcp6.domain-search "domain.example"; 4) Redémarrer le service réseau
} 5) Afficher la configuration de votre carte réseau
6) Installer le serveur DHCP s’il n’est pas encore installé
7) Vérifier si le package est bien installé
8) Configurer le serveur DHCP pour attribuer des adresses IP aux clients du réseau
selon les paramètres suivants :
o Plage d’adresses : de 10.0.0.10 à 10.0.0.254
o Durée du bail par défaut : 1 jour.
o Durée max du bail : 2 jours.
o Passerelle par défaut : 10.0.0.1
9) Afficher le contenu du fichier de configuration de votre serveur DHCP
10) (Re) démarrer le serveur DHCP (dépanner la configuration en cas d’erreur)
11)Tester le bon fonctionnement du serveur DHCP ?
12)Quel est le résultat de ce test ? Expliquer ?
13)Enregistrer une copie des fichiers de configuration de votre machine
14)Quitter par la commande : exit
15)Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 71 M.FILALI Linux : Administration des Serveurs 72
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°3-1 : Implémenter le serveur DHCP (Corrigée) ~]# rpm -q dhcp-server

1) Dans un terminal, utiliser la commande suivante pour créer le script de travail dhcp-server-4.3.5-1.fc25.i686

~]$ cd ; script -f DHCP_BinomeX.txt Afficher les fichiers de confguration du serveur dhcp

Le script a débuté, le fichier est DHCP_BinomeX.txt ~]# rpm -qacl | grep dhcp

2)Renommer votre machine à SRV-DHCP /etc/dhcp/dhcpd.conf

En utilisant la commande « hostnamectl » /etc/dhcp/dhcpd6.conf


/var/lib/dhcpd/dhcpd.leases
~]# hostnamectl set-hostname SRV-DHCP
/var/lib/dhcpd/dhcpd6.leases
3) Configurer votre carte réseau avec l’@ IP suivante : 10.0.0.1.
8) Configurer le serveur DHCP
~]# cd /etc/sysconfig/network-scripts
~]# vi /etc/dhcp/dhcpd.conf
~]# ll ifcfg-*
Edition du fichier « dhcpd.conf »
-rw-r--r--. 1 root root 101 30 juin 2014 ifcfg-ens33
-rw-r--r--. 1 root root 254 5 mai 2010 ifcfg-lo subnet 10.0.0.0 netmask 255.0.0.0 {

~]# vi ifcfg-ens33 range 10.0.0.10 10.0.0.254;


option routers 10.0.0.1;
Edition du fichier « ifcfg-ens33 »
default-lease-time 86400;
DEVICE=ens33
max-lease-time 172800;
IPADDR=10.0.0.1
}
NETMASK=255.0.0.0
9) Afficher le contenu du fichier de configuration de votre serveur DHCP
ONBOOT=yes
BOOTPROTO=none ~]# cat /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.0.0.0 {
4) Redémarrer le service réseau
range 10.0.0.10 10.0.0.254;
~]# service network restart
option routers 10.0.0.1;
Restarting network (via systemctl): [ OK ]
default-lease-time 86400;
5) Afficher la configuration de votre carte réseau
max-lease-time 172800;
~]# ifconfig
}
ens33 Link encap:Ethernet HWaddr 00:0C:29:08:68:2B
10) (Re) démarrer le serveur DHCP (dépanner la configuration en cas d’erreurs)
inet adr:10.0.0.1 Bcast:10.255.255.255 Masque:255.0.0.0
~]# service dhcpd restart
..
Démarrage de dhcpd : [ OK ]
6) Installer le serveur DHCP s’il n’est pas encore installé
NB : Utiliser cette commande Pour dépanner la configuration
~]# rpm -ivh /home/fedora/Bureau/Pack-F25/dhcp-server-4.3.5-1.fc25.i686.rpm
~]# dhcpd –d
Préparation...############################### [100%]
1:dhcp ################################### [100%] 11) Tester le bon fonctionnement du serveur DHCP

7) Vérifier si le package est bien installé

M.FILALI Linux : Administration des Serveurs 73 M.FILALI Linux : Administration des Serveurs 74
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Dans cette question on doit s’assurer que la liaison entre les 2 machines soit bien  Nom de domaine : ofppt.ma
établie et configurer la machine cliente de façon à obtenir une @IP de manière  Serveurs de nom : 8.8.8.8, 8.8.4.4

automatique figures ci-dessous:  Decalage horaure GMT+1

 Allocation statique : (Réservation DHCP)

Nom d’hôte : PC1

Adresse physique: 00:0E:A6:40:1B:8A (adresse MAC PC Windows !)

Adresse statique : 10.0.0.20

2. Tester le bon fonctionnement du serveur DHCP depuis le client windows

 Liberer le bail DHCP

 Demander le bail DHCP


Afficher le contenu du fichier « dhcpd.leases »
~]# cat /var/lib/dhcpd/dhcpd.leases  Afficher la configuration du client avec la commande « ipconfig /all »
lease 10.0.0.10 { 3. Afficher le contenu du fichier « dhcpd.leases » et « dhcpd.leases~ »
starts 0 2015/11/08 15:12:57;
ends 1 2015/11/09 15:12:57; Exercice : Que font ces Commandes ?

cltt 0 2015/11/08 15:12:57; ~]# systemctl start dhcpd

binding state active; ~]# systemctl enable dhcpd

next binding state free; ~]# systemctl restart dhcpd

hardware ethernet 00:50:56:c0:00:00; ~]# systemctl stop dhcpd

client-hostname "PC01"; ~]# systemctl disable dhcpd

} ~]# systemctl is-active dhcpd

12) Quel est le résultat de ce test ? Expliquer ? ~]# systemctl is-enabled dhcpd

Résultat :
Le serveur DHCP a attribué une @IP automatiquement à la machine cliente avec
les paramètres définits dans le fichier de configuration

Exercice:
1. Editer le fichier de configuration DHCP et ajouter des options :

M.FILALI Linux : Administration des Serveurs 75 M.FILALI Linux : Administration des Serveurs 76
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°3-2 : Configurer l’un agent de relais DHCP (Enoncé) TP-N°3-2 : Configurer l’un agent de relais DHCP (Corrigée)
I) Configuration du serveur DHCP
1) Configurer le serveur DHCP pour les deux réseaux 192.168.1.0/24 et 172.16.0.0/16

subnet 192.168.1.0 netmask 255.255.255.0 {


range 192.168.1.3 192.168.1.254;
option routers 192.168.1.2;
option subnet-mask 255.255.255.0;
option domain-search "linux.org";
option domain-name-servers 212.217.0.1;
option time-offset +18000;
default-lease-time 86400;
I) Configuration du serveur DHCP max-lease-time 172800;
1) Configurer le serveur DHCP pour les deux réseaux 192.168.1.0/24 et 172.16.0.0/16 }
subnet 172.16.0.0 netmask 255.255.0.0 {
2) Configurer et Activer le routage IP sur le serveur et l’agent de relais
range 172.16.0.3 172.16.255.254;
3) Configurer une adresse IP statique sur le PC4 et Tester la connectivitée option routers 172.16.0.2;
II) Configuration de l’agent de relais DHCP option subnet-mask 255.255.0.0;
option domain-search "linux.org";
4) Installer le Package dhcp-Relay sur la machine RELAY DHCP
option domain-name-servers 212.217.0.12;
5) Configure le Fichier Script de l’agent de relais option time-offset +18000;
6) Activer et démarrer l’agent de relais default-lease-time 86400;
max-lease-time 172800;
7) Tester le bon Fonctionnement de l’agent de relais
}
 Configurer le client PC4 comme client DHCP 2) Configurer et Activer le routage IP sur le serveur et l’agent de relais
 Demender un bail dhcp
~]# sysctl -w net.ipv4.ip_forward=1
III) Configuration de la Résérvation DHCP
Sur le serveur
8) Configurer une résérvation DHCP multi-accès pour le client PC4
~]# route add -net 172.16.0.0/16 gw 192.168.1.2
 Une seule carte Réseau carte 1
3) Configurer une adresse IP statique sur le PC4 et Tester la connectivitée
 Sur Vsw1 : 192.168.1.50
 172.16.0.10/16
 Sur Vsw2 : 172.16.0.50
II) Configuration de l’agent de relais DHCP
9) Configurer une résérvation DHCP multi-interfaces pour le client PC4
4) Installer le Package dhcp-Relay sur la machine RELAY DHCP
 Deux cartes Réseau
~]# rpm -ivh dhcp-relay-4.3.5-1.fc25.i686.rpm
 Carte 1 sur Vsw1 : 192.168.1.50
Préparation... ################################# [100%]
 Carte 2 sur Vsw1 : 192.168.1.50 Mise à jour / installation...
10) Enregistrer une copie des fichiers de configuration de votre machine 1:dhcp-relay-12:4.3.5-1.fc25 ################################# [100%]
11) Quitter par la commande : exit 5) Copier et configure le Fichier Script

12) Rédiger un Rapport du TP (Commandes Résultats Interpretations) ~]# cp /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/

M.FILALI Linux : Administration des Serveurs 77 M.FILALI Linux : Administration des Serveurs 78
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# vi /etc/systemd/system/dhcrelay.service TP-N°3.3 : Mise en Place d’un serveur DHCP (Devoir Libre)
Ajouter l’adresse IP du serveur DHCP Les stations de travail se multiplient sur le réseau, et la gestion des adresses IP devient
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 problématique. Vous décidez d’installer un serveur DHCP sous linux.
6) Activer et démarrer l’agent de relais La configuration du réseau doit respecter le plan suivant :( x est le n° du Binôme)
~]# systemctl enable dhcrelay adresse du réseau 192.168.x.0 /24
~]# systemctl restart dhcrelay adresse serveur DNS 192.168.x.2
adresse passerelle d’accès Internet (routeur) 192.168.x.1
7) Tester le bon Fonctionnement de l’agent de relais adresse serveur DHCP 192.168.x.3
Ajouter une route sur le serveur DHCP pour router le Broadcast adresse de l’imprimante 192.168.x.4
~]# route add 255.255.255.255 dev ens33
1. Expliquer à l’aide d’un schéma le principe de fonctionnement du DHCP en
Sur le client DHCP « PC4 » vérifier que la machine à obtenu une adresse dynamique.
décrivant les différents messages communiqués entre le serveur DHCP et les
III) Configuration de la Résérvation DHCP
machines clientes.
8) Configurer une résérvation DHCP multi-accès pour le client PC4
2. Dans un terminal, utiliser la commande suivante :
host PC4-vsw1 { ~]$ cd ; script DHCP2_BinomeX.txt avec X=numéro de Binôme
hardware ethernet 00:1A:6B:6A:2E:0B; 3. Renommer votre machine à SRV-DHCP
fixed-address 192.168.1.50; 4. Sur le serveur installez le service DHCP
} 5. Vérifier l’installation du service DHCP
host PC4-vsw2 { Pour que DHCP puisse fonctionner correctement, il doit avoir une adresse IP fixe.
hardware ethernet 00:1A:6B:6A:2E:0B; 6. configurer DHCP avec une adresse IP fixe. L’adresse doit être permanente et être
fixed-address 172.16.0.50; conservée après redémarrage
} 7. vérifier que l’adresse IP est bien prise en compte.
9) Configurer une résérvation DHCP multi-interfaces pour le client PC4 8. Configurer le fichier resolv.conf pour qu’il exploite le serveur DNS
host carte1 { 9. Modifier le fichier de configuration d’interface pour qu’il prenne en compte la
hardware ethernet 00:1a:6b:6a:2e:0b; passerelle par défaut.
fixed-address 192.168.1.50; 10. démarrer DHCP et vérifiez son état.
} 11. dans le fichier dhcpd.conf, déclarez un réseau correspondant à votre adresse de
host carte2 { réseau (192.168.x.0/24)
hardware ethernet 00:1A:6B:6A:27:3A; 12. au sein du subnet, déclarez une plage d’adresse allant de 192.168.x.20 à
fixed-address 192.168.1.50; 192.168.x.100.
} 13. au sein du subnet, déclarez la passerelle par défaut.
14. au sein du subnet, déclarez le serveur DNS.
15. Configurer la durée des baux par défaut à 24h.
16. Vérifier le bon démarrage du DHCP

M.FILALI Linux : Administration des Serveurs 79 M.FILALI Linux : Administration des Serveurs 80
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
17. Vérifiez que la machine cliente a bien obtenu une adresse IP (et les paramètres CH4 : Implémenter le serveur BIND
du bail)
18. Vérifiez au niveau du serveur DHCP que le serveur a pu attribuer l’adresse à la
machine cliente
Au sein de votre réseau, vous possédez une imprimante réseau qui doit
systématiquement obtenir la même adresse IP. Vous décidez de réserver l’adresse
192.168.x.4 à l’imprimante dont l’adresse MAC est 00 :12 :34 :56 :78 :90.
19. Modifiez le fichier de configuration du DHCP, afin qu’il puisse faire la réservation
d’adresse pour l’imprimante
20. Faites en sorte que DHCP prend en compte cette réservation.
21. Depuis le serveur tester la connectivité avec la machine cliente
22. Enregistrer une copie des fichiers de configuration de votre machine
23. Quitter par la commande : exit
24. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

1. Introduction
DNS (Domain Name System) est un système de base de données distribué utilisé pour
associer les noms d'hôtes à leurs adresses IP respectives. Pour les utilisateurs, cela a
l'avantage qu'ils peuvent faire référence à des machines du réseau par leur nom, ce qui
est normalement plus facile à mémoriser que les adresses numériques de réseau. Pour
les administrateurs de système, l'utilisation d'un serveur DNS (ou nameserver) permet
de changer l'adresse IP pour un hôte sans affecter pour autant les recherches basées
nom. L'utilisation des bases de données DNS sert non seulement à résoudre les
adresses IP en noms de domaine, mais leur utilisation s'élargit de plus en plus au fur et
à mesure que DNSSEC se déploie.

2. Introduction à DNS
DNS est généralement implémenté à l'aide d'un ou plusieurs serveurs centralisés qui
font autorité pour certains domaines. Lorsqu'un hôte client demande des informations à
un serveur de noms, il se connecte généralement au port 53. Le serveur de noms tente
alors de résoudre le nom demandé. Si le serveur de noms est configuré en serveur de
noms récursifs et qu'il n'a pas une réponse faisant autorité, ou n'a pas la réponse en
cache suite à une requête antérieure, il interroge d'autres serveurs de noms,

M.FILALI Linux : Administration des Serveurs 81 M.FILALI Linux : Administration des Serveurs 82
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
appelés serveurs de noms racine, pour déterminer quels serveurs de noms font autorité Notez que les administrateurs de serveurs DNS et DHCP, ainsi que toute application de
pour le nom en question, puis, il les interroge pour obtenir le nom demandé. Les noms provisioning, doivent s'accorder sur le format des noms d'hôtes utilisé dans une
de serveurs configurés comme étant purement autoritatifs, avec la récurrence organisation.
désactivée, ne feront pas de recherches pour les comptes des clients. 2.2. Types de serveurs de noms
2.1. Zones de noms de serveurs Il existe deux types de déclarations dans le fichier de configuration :
Dans un serveur DNS, toutes les informations sont stockées dans des éléments de base authoritative
de données appelés enregistrements de ressources (RR). Les enregistrements de Les serveurs de noms autoritatifs répondent à des enregistrements de ressources qui
ressources sont définis dans RFC 1034. Les noms de domaine sont organisés en font partie de leur zone uniquement. Cette catégorie inclut à la fois les serveurs
structure arborescente. Chaque niveau de la hiérarchie est divisé par un point (.). Par primaires (master) et secondaires (esclave).
exemple : le domaine racine, précédé de « . », correspond à la racine de recursive
l'arborescence DNS, qui est au niveau zéro. Le nom de domaine com, dénommé Les serveurs de noms récursifs offrent des services de résolution, mais ils ne font pas
le domaine de premier niveau (TLD) est un enfant du domaine racine (.) et correspond autorité pour toutes les zones. Des réponses pour toutes les résolutions sont mises en
donc au premier niveau de la hiérarchie. Le nom de domaine example.com est au cache en mémoire pour une période déterminée, qui est spécifiée par l'enregistrement
deuxième niveau de la hiérarchie. de ressource obtenue.
Exemple d'enregistrement de ressource (RR) simple : Bien qu'un serveur de noms puisse être à la fois faire valoir d'autorité et être récursif, il
example.com. 86400 IN A 192.0.2.1 est recommandé de ne pas combiner les types de configuration. Pour être en mesure

Le nom de domaine example.com est le propriétaire du RR (enregistrement de d'exécuter leur travail, les serveurs faisant autorités doivent être disponibles à tous les

ressource). La valeur 86400 correspond à la durée de vie (ou TTL). Les clients à tout moment. Mais comme la recherche récursive prend beaucoup plus de

lettres IN (remplaçant « système Internet »), indiquent la classe de l'enregistrement de temps que les réponses qui font autorité, les serveurs récursifs doivent être accessibles

ressource ( RR). La lettre A indique le type de RR (dans cet exemple, une adresse à un nombre restreint de clients uniquement, sinon, ils auront tendance à lancer des

d'hôte). L'adresse de l'hôte 192.0.2.1 représente les données contenues dans la dernière attaques par déni de service (DDoS).

partie de cet enregistrement de ressource (RR). C'est un exemple d'enregistrement de 2.3. BIND en tant que serveur de noms
BIND représente un ensemble de programmes liés à DNS. Il comprend un serveur de
ressource (RR) en une ligne. Un ensemble d'enregistrements de ressources avec les
noms intitulé named, un utilitaire d'administration intitulé rndc, et un outil de
mêmes type, propriétaire et classe est appelé un resource record set (RRSet).
déboggage intitulé dig.
Les zones sont définies sur les serveurs de noms autoritatifs par l'utilisation des fichiers
de zone, qui contiennent des définitions des enregistrements de ressources dans chaque
3. BIND
zone. Les fichiers sont stockés sur des serveurs de noms primaires (également 3.1. Zones vides
appelés serveurs de noms maîtres), où des modifications sont apportées aux fichiers et BIND configure un certain nombre de « zones vides » afin d'empêcher des serveurs

aux serveurs de noms secondaires (également appelés noms de serveurs esclaves), qui récursifs d'envoyer des requêtes inutiles vers des serveurs Internet qui ne peuvent pas

reçoivent des définitions de zones des serveurs de noms primaires. Les serveurs de les gérer (créant ainsi des retards et des réponses SERVFAIL aux clients qui les

noms primaires et secondaires font autorités pour la zone et se ressemblent pour le interrogent). Ces zones vides veillent à ce que les réponses NXDOMAIN immédiates et

client. Selon la configuration, un serveur de noms peut également servir de serveur faisant autorités soient retournées à la place. L’option de configuration vide-zones-

principal ou secondaire pour plusieurs zones à la fois en même temps. enable détermine si oui ou non les zones vides sont créées, tandis que l'option disable-

M.FILALI Linux : Administration des Serveurs 83 M.FILALI Linux : Administration des Serveurs 84
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
vide-zone peut servir à désactiver une ou plusieurs zones vides dans la liste des préfixes 3.2.1. Installation de BIND
Pour installer BIND  exécuter la commande suivante en tant qu'utilisateur root :
par défaut, qui est utilisée.
Le nombre d'espaces vides créés pour les préfixes RFC 1918 a augmenté, et les ~]# yum install bind9

utilisateurs de BIND 9.9 et versions ultérieures, verront des espaces vides RFC 1918 à Pour activer le service named

la fois quand empty-zones-enable n'est pas spécifié (valeur par défaut yes), ou quand ~]# systemctl enable named
RFC 1918 est défini à yes. ~]# systemctl start named

3.2. Configuration du service «named» Pour vérifier le statut du service named


Quand le service named démarre, il lit la configuration à partir des fichiers ~]# systemctl status named
Chemin Description
3.2.2. Types d'arguments communs
/etc/named.conf Fichier de configuration principal. Les types d'arguments suivants sont souvent utilisés dans /etc/named.conf :
/var/named/ Répertoire auxiliaire pour les fichiers de acl
configuration inclus dans le fichier de configuration L'argument acl (Access Control List) vous permet de définir des groupes d'hôtes, de
principal. façon à ce qu'ils aient accès ou non au serveur de noms. Prend la forme suivante :
Le fichier de configuration consiste en un ensemble d'arguments comprenant des acl acl-name {
options imbriquées entourées par des crochets courbes ({ et }). Veuillez noter que si vous match-element;
modifiez le fichier, le service named ne démarrera pas. Un fichier /etc/named.conf se ...
présente ainsi : };
statement-1 ["statement-1-name"] [statement-1-class] { Le nom d'argument acl-name correspond au nom de la liste de contrôle d'accès, et
option-1; l'option match-element correspond normalement à une adresse IP individuelle
option-2; (comme 10.0.1.1) ou à une notation de réseau Classless Inter-Domain Routing (CIDR)
option-N; (par exemple, 10.0.1.0/24).
}; Listes de contrôle d'accès pré-définies
statement-2 ["statement-2-name"] [statement-2-class] { Mot-clé Description
option-1; any Fait correspondre chaque adresse IP.
option-2; localhost Fait correspondre chaque adresse IP utilisée par le
option-N; système local.
}; localnets Fait correspondre chaque adresse IP sur n'importe quel
statement-N ["statement-N-name"] [statement-N-class] { réseau connecté au système local.
option-1; none Ne correspond à aucune adresse IP.
option-2; L'argument acl peut être particulièrement utile s'il est utilisé en conjonction à d'autres
option-N; arguments tels que options. L’exemple définit deux listes de contrôle d'accès, black-
}; hats et red-hats, et ajoute black-hats à la liste noire tout en donnant l'accès normal à
red-hats.

M.FILALI Linux : Administration des Serveurs 85 M.FILALI Linux : Administration des Serveurs 86
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Utilisation d'acl en conjonction aux options Pour obtenir une liste des possibilités d'option les plus communément utilisées,
acl black-hats { consulter le tableau ci-dessous 
10.0.2.0/24; Options de configuration souvent utilisées
192.168.0.0/24; Option Description
1234:5678::9abc/24; allow-query Spécifie quels hôtes sont autorisés à interroger le serveur de
}; noms pour les enregistrements de ressources de référence. Il
acl red-hats { accepte une liste de contrôle d'accès, une collection
10.0.1.0/24; d'adresses IP, ou des réseaux dans la notation CIDR. Par
}; défaut, tous les hôtes sont autorisés.
options { allow-query-cache Indique quels hôtes sont autorisés à interroger le serveur de
blackhole { black-hats; }; noms pour des données ne faisant pas autorité, comme les
allow-query { red-hats; }; requêtes récursives. Par défaut, seuls
allow-query-cache { red-hats; }; les localhost et localnets sont autorisés.
}; blackhole Indique les hôtes non autorisés à interroger le serveur de

include noms. Cette option doit être utilisée lorsqu'un hôte particulier
L'argument include vous permet d'inclure des fichiers dans /etc/named.conf, de façon à ou qu'réseau inonde le serveur de demandes. L'option par

ce que des données pouvant être sensibles puissent être mises dans un fichier séparé défaut est none.
sans limitation de permissions. Prend la forme suivant : directory Indique un répertoire de travail pour le service named.

include "file-name" L'option par défaut est /var/named/.

L'argument file-name est un nom d'argument qui se trouve dans un chemin d'accès disable-empty-zone Utilisé pour désactiver une ou plusieurs des zones vides de la

complet de fichier. liste des préfixes par défaut qui pourraient être utilisés. Peut

Inclure un fichier dans /etc/named.conf être spécifié dans les arguments d'options et également dans
les arguments de vues. Il peut être utilisé à plusieurs reprises.
include "/etc/named.rfc1912.zones";
dnssec-enable Indique si l'on doit retourner aux enregistrements de
options
ressources liées à DNSSEC. L'option par défaut est yes.
L'argument options vous permet de définir des options de configuration du serveur
-n Indique si l'on doit prouver que les enregistrements de
global, ainsi que de définir les valeurs par défaut d'autres arguments. Il peut être
ressources sont authentiques via DNSSEC. L'option par
utilisé pour spécifier l'emplacement du répertoire de travail de named, les types de
défaut est yes.
requêtes autorisées et bien plus encore. Il prend la forme suivante :
empty-zones-enable Contrôle si les zones vides sont créées ou non. Ne peut être
options {
spécifié que dans les arguments d'options.
option;
forwarders Indique une liste d'adresses IP pour les serveurs de noms vers
...
lesquels les requêtes doivent être redirigées pour qu'elles
};
soient résolues.

M.FILALI Linux : Administration des Serveurs 87 M.FILALI Linux : Administration des Serveurs 88
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
forward Indique le comportement de la directive forwarders. Accepte explicit — le serveur ne notifiera que les serveurs secondaires
les options suivantes : spécifiés dans la liste also-notify dans un argument de zone.
first — Le serveur va vérifier les serveurs de noms énumérés pid-file Indique l'emplacement du fichier d'ID de processus créé par le
dans la directive forwarders avant de tenter de résoudre le service named.
nom par lui-même. recursion Indique comportement de serveur récurvif ou non. L'option
only — Quand on ne peut pas vérifier les serveurs de noms par défaut est yes.
énumérés dans la directive forwarders, le serveur ne tentera statistics-file Indique un emplacement spécifique pour les fichiers de
pas de résoudre le nom par lui-même. statistiques. Le fichier /var/named/named.stats est utilisé par
listen-on Indique l'interface de réseau IPv4 sur lequel écouter les défaut.
requêtes. Sur un serveur DNS, qui agit aussi comme une Note : Le répertoire utilisé par named pour les données de runtime a été déplacé de
passerelle, vous pouvez utiliser cette option pour répondre à l'emplacement par défaut de BIND, /var/run/nom /, à un nouvel
des requêtes provenant d'un réseau uniquement. Toutes les emplacement /run/name/. Ainsi, le fichier PID a été déplacé de l'emplacement par
interfaces IPv4 sont utilisées par défaut. défaut /var/run/named/named.pid au nouvel emplacement /run/named/named.pid. De
listen-on-v6 Indique l'interface de réseau IPv6 sur lequel écouter pour les plus, le fichier de clés de session a été déplacé à /run/named/session.key.
requêtes. Sur un serveur DNS qui agit aussi en tant Important : Pour éviter les attaques DDoS (de l'anglais, distributed denial of service),
quepasserelle, vous pouvez utiliser cette option pour répondre nous vous conseillons d'utiliser l'option allow-query-cache pour limiter l'accès aux
à des requêtes provenant d'un seul réseau. Toutes les services DNS récursifs à quelques groupes de clients particuliers.
interfaces IPv6 sont utilisées par défaut. Utiliser l'argument « option »
max-cache-size Indique la quantité maximale de mémoire à utiliser pour les options {
caches de serveurs. Lorsque la limite est atteinte, le serveur allow-query { localhost; };
entraîne l'expiration prémature des enregistrements, alors listen-on port 53 { 127.0.0.1; };
que la limite n'est pas dépassée. Sur un serveur avec plusieurs listen-on-v6 port 53 { ::1; };
vues, la limite s'appliquera séparément dans le cache de max-cache-size 256M;
chaque vue. L'option par défaut est 32M. directory "/var/named";
-f Indique si on doit notifier les serveurs de noms secondaires statistics-file "/var/named/data/named_stats.txt";
quand une zone est mise à jour. Accepte les options suivantes :
yes — le serveur notifiera tous les serveurs de noms recursion yes;
secondaires. dnssec-enable yes;
no — le serveur ne notifiera aucun serveur de noms dnssec-validation yes;
secondaire.
master-only — le serveur notifiera un serveur primaire pour pid-file "/run/named/named.pid";
cette zone uniquement. session-keyfile "/run/named/session.key";
};

M.FILALI Linux : Administration des Serveurs 89 M.FILALI Linux : Administration des Serveurs 90
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
zone serveur soit dans un réseau fiable.
L'argument zone vous permet de définir les caractéristiques d'une zone, comme file Indique le nom du fichier qui se trouve dans le répertoire de
l'emplacement de son fichier de configuration et les options spécifiques à la zone, et il travail named qui contient les données de configuration de la
peut être utilisé en remplacement aux arguments d'options. Il prend la forme suivante : zone.
zone zone-name [zone-class] { masters Indique à partir de quelles adresses IP on peut demander des
option; informations de zone autoritatives. Cette option n'est utilisée que
... si la zone est définie en tant que type slave.
}; -f Indique si on doit notifier les serveurs de noms secondaires quand

L'attribut zone-name correspond au nom de la zone, zone-class correspond à la classe une zone est mise à jour. Accepte les options suivantes :
optionnelle de zone, et option correspond à une option d'argument de zone comme yes — le serveur va notifier tous les serveurs de noms secondaires.

expliqué dans le Tableau. no — le serveur ne notifiera aucun serveur de noms secondaires.

L'attribut zone-name est particulièrement important, car il correspond à la valeur par master-only — le serveur ne notifiera le serveur primaire que
défaut assignée à la directive $ORIGIN utilisée dans le fichier de zone correspondant pour la zone.

qui se trouve dans le répertoire /var/named/. Le démon named ajoute le nom de la zone explicit — le serveur ne notifiera que les serveurs secondaires
à n'importe quel nom de domaine incomplet répertorié dans le fichier de zone. Par spécifiés dans la liste also-notify dans l'argument de zone.
exemple, si un argument de zone définit l'espace de noms pour example.com, type Indique le type de zone. Accepte les options suivantes :
utilisez example.com comme zone-name pour qu'il soit placé à la fin des noms d'hôte delegation-only — active le statut de délégation de zones
dans le fichier de zone example.com. d'infrastructures comme COM, NET, ou ORG. Toute réponse
Options couramment utilisées comme arguments de zone reçue sans délégation implicite ou explicite sera traitée

Option Description comme NXDOMAIN. Cette option ne s'applique qu'aux niveaux

allow-query Indique quels clients sont autorisés à demander des informations TLDs (Top-Level Domain) ou pour les fichiers de zone racine pour

sur cette zone. Cette option prévaut sur l'option globale allow- les implémentations en cache ou récursives.

query. Toutes les demandes de requête sont autorisées par défaut. forward — transfère toutes les demandes d'informations de cette

allow-transfer Indique les serveurs secondaires qui sont autorisés à demander un zone vers d'autres serveurs de noms.

transfert de l'information de zone. Toutes les requêtes de transfert hint — un type particulier de zone utilisée pour pointer vers les

sont autorisées par défaut. serveurs de noms racine qui résolvent les requêtes lorsqu'une zone

allow-update Indique quels hôtes sont autorisés à mettre leurs informations à n'est pas connue par ailleurs. Aucune configuration au-delà de la

jour de façon dynamique dans leur zone. L'option par défaut est de valeur par défaut n'est nécessaire dans une zone hint (astuce).

refuser toutes les demandes de mise à jour dynamiques. master — indique le serveur de noms comme étant le serveur

Notez que vous devez être prudents lorsque vous autorisez les faisant autorité pour cette zone. Une zone doit être définie

clients à mettre à jour des informations sur leur zone. Ne comme master si les fichiers de configuration de la zone se

définissez pas les adresses IP dans cette option à moins que le trouvent sur le système.

M.FILALI Linux : Administration des Serveurs 91 M.FILALI Linux : Administration des Serveurs 92
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
slave — désigne le serveur de noms comme serveur esclave de la 3.2.3. Balises de commentaires
En plus des arguments, le fichier /etc/named.conf peut également contenir des
zone. Le serveur maître est spécifié dans la directive masters.
commentaires. Les commentaires peuvent être ignorés par le service named, mais
La plupart des changements au fichier /etc/named.conf d'un serveur de noms primaire
peuvent se révéler utiles quand on donne des informations supplémentaires à un
ou secondaire consistent à ajouter, modifier ou supprimer des arguments de zone, et
utilisateur. Voici des balises de commentaires valides :
seul un petit nombre d'options d'arguments de zone est normalement utile pour qu'un
//
serveur de noms puisse fonctionner efficacement.
Tout texte se trouvant après // en fin de ligne est considéré comme un commentaire
Dans l’exemple, la zone est identifiée comme example.com, le type est défini sur
seulement. Exemple :
le master et le service named est chargé de lire le fichier /var/named/example.com.zone.
Il permet également à un serveur de noms secondaire (192.168.0.2) uniquement de notify yes; // notifie tous les serveurs de noms secondaires

transférer la zone. #

Argument de zone pour un serveur de noms primaire Tout texte se trouvant après # en fin de ligne est considéré comme un commentaire

zone "example.com" IN { seulement. Exemple :

type master; notify yes; # notifie tous les serveurs de noms secondaires

file "example.com.zone"; /* et */

allow-transfer { 192.168.0.2; }; Tout bloc de texte se trouvant entre /* et */ est considéré comme un commentaire.

}; Exemple :

L'argument de zone d'un serveur secondaire est légèrement différent. Le type est défini notify yes; /* notifie tous les serveurs de noms secondaires */

sur l'esclave, et la directive du master indique au service named l'adresse IP du serveur 3.3. Configuration de fichiers de zone


maître. Les fichiers de zone contiennent des informations sur un espace de noms. Ils sont

Dans l’exemple, le service named est configuré pour interroger le serveur principal à stockés dans le répertoire de travail named situé dans /var/named/ par défaut. Chaque

l'adresse IP 192.168.0.1 pour obtenir des informations sur la zone example.com. fichier de zone est nommé selon l'option de fichier dans l'argument zone, habituellement

L'information reçue est alors enregistrée dans le d'une manière qui porte sur le domaine et qui identifie le fichier comme contenant des

fichier /var/named/slaves/example.com.zone. Notez que vous devez mettre toutes les données de zone, comme example.com.zone.

zones esclave dans le répertoire /var/named/esclaves /, sinon le service ne pourra pas Les fichiers de zones de service « named »

transférer la zone. Chemin Description

Un argument de zone pour le serveur de noms secondaire /var/named/ Le répertoire de travail du service named. Le serveur de noms

zone "example.com" { n'est pas autorisé à écrire dans ce répertoire.

type slave; /var/named/slaves/ Le répertoire de zones secondaires. Ce répertoire peut contenir

file "slaves/example.com.zone"; des écritures du service named.

masters { 192.168.0.1; }; /var/named/ Le répertoire pour les autres fichiers, comme les zones

}; dynamic/ dynamiques DNS (DDNS) ou les clés DNSSEC gérées. Ce


répertoire est accessible en écriture par le service named.
/var/named/data/ Le répertoire de statistiques variées et de fichiers de débogage.

M.FILALI Linux : Administration des Serveurs 93 M.FILALI Linux : Administration des Serveurs 94
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Ce répertoire peut contenir des écritures du service named. Augmenter cette valeur permet aux serveurs de noms distants de mettre les
Un fichier de zone se compose d'enregistrements de ressources et de directives. Les informations de zone en cache pour une plus longue période, réduisant le nombre de
directives instruisent le serveur de noms à effectuer des tâches ou à appliquer des requêtes pour la zone et allongeant ainsi l'intervalle de temps requis pour propager les
paramètres de configuration particuliers à la zone. Les enregistrements de ressources modifications d'enregistrements de ressources.
définissent les paramètres de la zone et attribuent des identités aux hôtes individuels. Utilisation de la directive $TTL
Bien que les directives soient facultatives, les enregistrements de ressources sont utiles $TTL 1D
pour procurer un service de nommage à une zone. 3.3.2. Enregistrements de ressources communs
Toutes les directives et les enregistrements de noms doivent être saisis sur des lignes Les enregistrements de ressources suivants sont couramment utilisés dans les fichiers
individuelles. de zone :

3.3.1. Directives communes A


Les directives commencent par le signe ($) sont suivies par le nom de la directive, qui L'enregistrement Address indique l'adresse IP à assigner à un nom. Prend la forme
apparaît normalement en haut du fichier. Les directives suivantes sont couramment suivante :
utilisées dans les fichiers de zone : hostname IN A IP-address
$INCLUDE Si la valeur hostname est omise, l'enregistrement pointera vers le dernier hostname
La directive $INCLUDE vous permet d'inclure un autre fichier là où il se trouve, de indiqué.
façon à ce que les autres paramètres de configuration de zone puissent être stockés Dans Exemple, les requêtes de server1.example.com pointent vers 10.0.1.3 ou 10.0.1.5.
dans un fichier de zone séparé. Utiliser un enregistrement de ressource A
Utilisation de la directive $INCLUDE
server1 IN A 10.0.1.3
$INCLUDE /var/named/penguin.example.com IN A 10.0.1.5
$ORIGIN CNAME
La directive $ORIGIN vous permet d'ajouter le nom de domaine aux enregistrements L'enregistrement Canonical Name fait correspondre un nom à un autre. Pour cette
non qualifiés, comme ceux qui ont un nom d'hôte uniquement. Notez que l'utilisation de raison, ce type d'enregistrement est souvent appelé alias record. Il prend la forme
cette directive n'est pas nécessaire si la zone est spécifiée dans /etc/named.conf, puisque suivante :
la zone est utilisée par défaut.
alias-name IN CNAME real-name
Dans l’exemple, tous les noms utilisés dans les enregistrements de ressources ne se
Les enregistrements CNAME sont plus couramment utilisés pour pointer vers des
terminant pas par un point final (le signe .) se terminent par example.com.
services qui utilisent un schéma d'affectation de noms, comme www pour les serveurs
Utilisation de la directive $ORIGIN
Web. Cependant, il existe plusieurs restrictions à leur utilisation :
$ORIGIN example.com.
 Les enregistrements CNAME ne doivent pas pointer vers d'autres enregistrements
$TTL CNAME, ceci, afin d'éviter des boucles à l'infini.
La directive $TTL vous permet de définir la valeur par défaut de Time to Live (TTL)  Les enregistrements CNAME ne doivent pas contenir d'autres types de ressources
pour la zone, autrement dit, combien de temps est un enregistrement de zone est valide. (comme A, NS, MX, etc.), excepté pour les enregistrements DNSSEC (RRSIG, NSEC,
Chaque enregistrement de ressource peut avoir sa propre valeur TTL, qui se substitue à etc.) quand la zone est signée.
cette directive.

M.FILALI Linux : Administration des Serveurs 95 M.FILALI Linux : Administration des Serveurs 96
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 Les autres enregistrements de ressources qui pointent vers le nom de domaine complet primaire n'est pas important. Ils sont tous deux considérés comme faisant référence
(FQDN) d'un hôte (NS, MX, PTR) ne doivent pas pointer vers un enregistrement d'autorité.
CNAME. Utiliser l'enregistrement de ressource NS
Dans Exemple l'enregistrement A relie un nom d'hôte à une adresse IP, tandis que IN NS dns1.example.com.
l'enregistrement CNAME y fait pointer le nom d'hôte commun www. IN NS dns2.example.com.
Utiliser l'enregistrement de ressource CNAME PTR
server1 IN A 10.0.1.5 L'enregistrement Pointer pointe vers une autre partie de l'espace nom. Prend la forme
www IN CNAME server1 suivante :
MX last-IP-digit IN PTR FQDN-of-system
Le premier enregistrement Mail Exchange indique où le courrier envoyé à un espace de La directive last-IP-digit correspond au dernier numéro d'une adresse IP, et le FQDN-
nom particulier contrôlé par cette zone doit aller. Il est sous la forme suivante : of-system est un nom complet (FQDN).
IN MX preference-value email-server-name Les enregistrements PTR sont principalement utilisés pour la résolution de noms
L'email-server-name est un nom de domaine complet (FQDN). La preference- inversés, car ils pointent vers des adresses IP qui renvoient à un nom particulier.
value permet un classement numérique des serveurs e-mail pour un espace de noms, SOA
donnant la préférence à certains systèmes de courrier électronique sur d'autres. L'enregistrement Start of Authority donne des informations importantes en matière
L'enregistrement de ressource MX avec la plus faible preference-value sera privilégiée d'autorité sur un espace nom ou un serveur de noms. Situé juste après la directive, c'est
au détriment des autres. Toutefois, plusieurs serveurs de messagerie peuvent posséder le premier enregistrement de ressource d'un fichier de zone. Prend la forme suivante:
la même valeur pour distribuer le trafic e-mail équitablement entre eux. @ IN SOA primary-name-server hostmaster-email (
Dans Exemple le premier serveur d'emails mail.example.com sera préféré au serveur serial-number
d'emails mail2.example.com pour recevoir des emails destinés au time-to-refresh
domaine example.com. time-to-retry
Utilisation de l'enregistrement de ressource MX time-to-expire
example.com. IN MX 10 mail.example.com. minimum-TTL )
IN MX 20 mail2.example.com. Voici les directives :
NS  Le symbole @ met la directive $ORIGIN (ou le nom de zone si la directive $ORIGIN n'est
L'enregistrement Nameserver indique les serveurs de noms qui font autorité pour une pas définie) comme espace nom défini par cet enregistrement SOA de ressource.
zone particulière. Il est sous la forme suivante :  La directive primary-name-server est le nom d'hôte du serveur de noms primaire qui fait
IN NS nameserver-name  autorité pour ce domaine.

Le nameserver-name doit correspondre à un nom complet (FQDN). Notez que quand  La directive hostmaster-email correspond à l'email de la personne à contacter au sujet de

deux noms de serveurs sont répertoriés comme étant autoritatifs pour un domaine, le l'espace nom.

fait qu'ils soient des serveurs de noms secondaires ou si l'un d'entre eux est un serveur

M.FILALI Linux : Administration des Serveurs 97 M.FILALI Linux : Administration des Serveurs 98
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 La directive serial-number est une valeur numérique incrémentée à chaque fois que le @ IN SOA dns1.example.com. hostmaster.example.com. (
fichier de zone est altéré pour indiquer qu'il est temps que le service named charge la 2001062501 ; serial
zone à nouveau. 21600 ; refresh after 6 hours
 La directive time-to-refresh est une valeur numérique que les serveurs de noms 3600 ; retry after 1 hour
secondaires utilisent pour déterminer combien de temps il faut attendre avant de 604800 ; expire after 1 week
demander au serveur de noms primaire si des changements ont été apportés à la zone. 86400 ) ; minimum TTL of 1 day
 La directive time-to-retry est une valeur numérique utilisée par les serveurs de noms 3.3.3. Balises de commentaires
secondaires pour déterminer la durée à attendre avant d'émettre une demande En plus des enregistrements de ressources et des directives, un fichier de zone peut
d'actualisation, si le serveur de noms primaire ne répond pas. Si le serveur principal n'a également contenir des commentaires. Les commentaires sont ignorés par le
pas répondu à une demande de rafraîchissement dans un délai spécifié dans la service named, mais peuvent s'avérer utiles pour fournir des renseignements
directive time-to-expire, les serveurs secondaires bloque d'autorité pour les demandes supplémentaires à l'utilisateur. N'importe quel texte après le point-virgule, en fin de
concernant cet espace de noms. ligne, est considéré comme un commentaire. Exemple :
 Dans BIND 4 et 8, la directive minimum-TTL est la durée pendant laquelle les autres 604800 ; expire après 1 semaine
serveurs cachent les informations de la zone. Dans BIND 9, elle définit combien de 3.4. Fichier de zone simple
temps les réponses négatives sont mises en cache. La mise en cache des réponses Exemple  démontre l'utilisation de directives standards et de valeurs SOA.

négatives peut être définie à un maximum de 3 heures (3H). Fichier de zone simple

Lors de la configuration de BIND, toutes les heures sont spécifiées en secondes. $ORIGIN example.com.
Toutefois, il est possible d'utiliser des abréviations lorsque l'on indique des unités de $TTL 86400
temps autres que des secondes, comme des minutes (M), des heures (H), des jours (D) @ IN SOA dns1.example.com. hostmaster.example.com. (
ou des semaines (W).  2001062501 ; serial
Secondes comparées à d'autres unités de temps 21600 ; refresh after 6 hours
Secondes Autres unités de temps 3600 ; retry after 1 hour
60 1M 604800 ; expire after 1 week
1800 30M 86400 ) ; minimum TTL of 1 day
3600 1H ;
10800 3H ;
21600 6H IN NS dns1.example.com.

43200 12H IN NS dns2.example.com.


86400 1D dns1 IN A 10.0.1.1

259200 3D IN AAAA aaaa:bbbb::1

604800 1W dns2 IN A 10.0.1.2

31536000 365D IN AAAA aaaa:bbbb::2

Utilisation d'un enregistrement de ressource SOA ;

M.FILALI Linux : Administration des Serveurs 99 M.FILALI Linux : Administration des Serveurs 100
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

; type master;
@ IN MX 10 mail.example.com. file "example.com.zone";
IN MX 20 mail2.example.com. allow-update { none; };
mail IN A 10.0.1.5 };
IN AAAA aaaa:bbbb::5 3.5. Un fichier de zone de résolution de noms inversés
mail2 IN A 10.0.1.6 Un fichier de zone de résolution de noms inversés est utilisé pour traduire une

IN AAAA aaaa:bbbb::6 adresse IP d'espace nom particulier en nom complet (FDNQ). Ce fichier ressemble

; beaucoup à un fichier de zone standard, sauf que les enregistrements de

; ressources PTR sont utilisés pour faire correspondre les adresses IP à un nom de

; This sample zone file illustrates sharing the same IP addresses domaine complet comme le montre Exemple.

; for multiple services: Un fichier de zone de résolution de noms inversés

; $ORIGIN 1.0.10.in-addr.arpa.
services IN A 10.0.1.10 $TTL 86400
IN AAAA aaaa:bbbb::10 @ IN SOA dns1.example.com. hostmaster.example.com. (
IN A 10.0.1.11 2001062501 ; serial
IN AAAA aaaa:bbbb::11 21600 ; refresh after 6 hours
3600 ; retry after 1 hour
ftp IN CNAME services.example.com. 604800 ; expire after 1 week
www IN CNAME services.example.com. 86400 ) ; minimum TTL of 1 day
; ;
; @ IN NS dns1.example.com.

Dans cet exemple, les serveurs de noms autoritatifs sont définis en tant ;

que dns1.example.com et dns2.example.com, et sont liés aux 1 IN PTR dns1.example.com.

adressess 10.0.1.1 et 10.0.1.2 IP respectivement en utilisant l'enregistrement A. 2 IN PTR dns2.example.com.

Les serveurs d'email configurés avec les enregistrements MX pointent ;

vers mail et mail2 via les enregistrements A. Comme ces noms ne se terminent pas par 5 IN PTR server1.example.com.

un point final, le domaine $ORIGIN est placé à leur suite, ce qui les étend 6 IN PTR server2.example.com.

à mail.example.com et à mail2.example.com. ;

Les services disponibles en noms standards, comme www.example.com (WWW), 3 IN PTR ftp.example.com.

pointent vers les serveurs qui conviennent, en utilisant l'enregistrement CNAME. 4 IN PTR ftp.example.com.

Ce fichier de zone peut être mis en service avec un argument zone dans /etc/named.conf Dans cet exemple, les adresses IP qui vont de 10.0.1.1 à 10.0.1.6 pointent vers le nom de
sous la forme suivante : domaine complet correspondant.

zone "example.com" IN {

M.FILALI Linux : Administration des Serveurs 101 M.FILALI Linux : Administration des Serveurs 102
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Ce fichier de zone peut être mis en service avec un argument de zone dans le seules les connexions de l'adresse de loopback (127.0.0.1) seront autorisées, et la clé qui
fichier /etc/named.conf sous la forme suivante : se trouve dans /etc/rndc.key sera utilisée.
zone "1.0.10.in-addr.arpa" IN { Important : Pour empêcher les utilisateurs non privilégiés d'envoyer des commandes
type master; de contrôle au service, veillez à ce que seul l'utilisateur root soit autorisé à lire le
file "example.com.rr.zone"; fichier /etc/rndc.key :
allow-update { none; }; ~]# chmod o-rwx /etc/rndc.key
}; 4.2. Vérifier le statut de service rndc
Il n'y a guère de différence entre cet exemple et un argument de zone standard, à Pour vérifier le statut actuel du service named, utiliser la commande suivante :

l'exception du nom de zone. Notez qu'une zone de résolution de noms inversés nécessite ~]# rndc status

que les trois premiers blocs de l'adresse IP soient inversés, suivis par .in-addr.arpa. …

Cela permet à l'unique bloc de numéros IP utilisé dans le fichier de zone de résolution server is up and running

de noms inversés d'être associé à la zone. 4.3. Configuration en ligne de commandes


La mise à jour d'un paquetage est semblable à son installation. Entrez la commande
4. Comment se servir de l'utilitaire rndc suivante à l'invite du shell :
L'utilitaire rndc est un outil de ligne de commandes qui vous permet d'administrer le
~]# rndc reload
service named, à la fois localement et à partir d'une machine éloignée. Son usage est le
server reload successful
suivant :
Cette commande téléchargera à nouveau les zones tout en conservant toutes les
~]# rndc [option...] command [command-option]
réponses mises en cache, de façon à ce que vous puissiez effectuer des changements à
4.1. Configuration de l'utilitaire
des fichiers de zone sans perdre toutes les résolutions de noms stockées.
Pour éviter l'accès non autorisé au service, named doit être configuré pour écouter le
Pour télécharger à nouveau une zone particulière, indiquer son nom à la suite de la
port sélectionné (953 par défaut), et une clé identique doit être utilisée par le service et
commande reload, comme par exemple :
l'utilitaire rndc à la fois.
~]# rndc reload localhost
Fichiers appropriés
zone reload up-to-date
Chemin Description
Enfin, pour charger à nouveau le fichier de configuration et les zones nouvellement
/etc/named.conf Le fichier de configuration par défaut du service named.
ajoutées, saisissez :
/etc/rndc.conf Le fichier de configuration par défaut de l'utilitaire rndc.
~]# rndc reconfig
/etc/rndc.key L'emplacement de la clé par défaut
La configuration de rndc est située dans /etc/rndc.conf. Si le fichier n'existe pas, Note : Si vous souhaitez modifier une zone qui utilise un DNS Dynamique (DDNS),

l'utilitaire utilisera la clé située dans /etc/rndc.key, qui a été générée veillez à exécuter la commande freeze pour commenncer :

automatiquement pendant l'installation par la commande rndc-confgen-a. ~]# rndc freeze localhost

Le service named est configuré à l'aide de l'argument controls qui se trouve dans le Quand vous aurez terminé, exécuter la commande thaw pour autoriser DDNS à
fichier de configuration /etc/named.conf. À moins que cet argument soit présent, nouveau, et charger la zone à nouveau.
~]# rndc thaw localhost

M.FILALI Linux : Administration des Serveurs 103 M.FILALI Linux : Administration des Serveurs 104
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

The zone reload and thaw was successful. Exemple de recherche de serveur de noms

4.4. Mise à jour des clés de zone ~]$ dig example.com NS


Pour metter à jour les clés DNSSEC et signer la zone, utiliser la commande sign. ..
~]# rndc sign localhost ;; QUESTION SECTION:
Notez que pour signer une zone avec la commande ci-dessus, l'option auto-dnssec doit ;example.com. IN NS
être définie sur maintain dans l'argument de la zone. Exemple: ;; ANSWER SECTION:
zone "localhost" IN { example.com. 99374 IN NS a.iana-servers.net.
type master; example.com. 99374 IN NS b.iana-servers.net.
file "named.localhost"; ..
allow-update { none; }; 5.2. Recherche d'une adresse IP
auto-dnssec maintain; Pour chercher une adresse IP assignée à un domaine en particulier, utiliser la

}; commande sous la forme suivante :


~]$ dig name A
4.5. Activation de la validation DNSSEC
Pour activer la valisation DNSSEC, veuillez exécuter la commande suivante : Exemple de recherche d'adresse IP
~]# rndc validation on ~]$ dig example.com A
De même, pour désactiver cette option, saisissez : ;; QUESTION SECTION:

~]# rndc validation off ;example.com. IN A

4.6. Activation de la journalisation des requêtes ;; ANSWER SECTION:


Pour activer (ou désactiver si elle est déjà activée) la journalisation des requêtes, example.com. 155606 IN A 192.0.32.10
veuillez exécuter la commande suivante en tant qu'utilisateur root : ;; AUTHORITY SECTION:
~]# rndc querylog example.com. 99175 IN NS a.iana-servers.net.

Pour vérifier la configuration en cours, utilisez la commande status example.com. 99175 IN NS b.iana-servers.net.

~]# rndc status 5.3. Recherche d'un nom d'hôte


Pour rechercher un nom d'hôte pour une adresse IP particulière, utiliser la commande
5. Utilisation de l'utilitaire dig sous la forme suivante :
L'utilitaire dig est un outil de ligne de commandes qui vous permet de faire des
~]$ dig -x address
consultations DNS et de déboguer une configuration de serveur de noms. Son usage est
Exemple de recherche de nom d'hôte
le suivant :
~]$ dig -x 192.0.32.10
~]$ dig [@server] [option...] name type
;; QUESTION SECTION:
5.1. Rechercher un serveur de noms ;10.32.0.192.in-addr.arpa. IN PTR
Pour chercher un serveur de noms particulier, utiliser la commande sous la forme
;; ANSWER SECTION:
suivante :
10.32.0.192.in-addr.arpa. 21600 IN PTR www.example.com.
~]$ dig name NS
;; AUTHORITY SECTION:

M.FILALI Linux : Administration des Serveurs 105 M.FILALI Linux : Administration des Serveurs 106
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

32.0.192.in-addr.arpa. 21600 IN NS b.iana-servers.org. 6.2. IXFR (Incremental Zone Transfers)


Incremental Zone Transfers (IXFR) permet à un serveur de noms secondaire de
32.0.192.in-addr.arpa. 21600 IN NS c.iana-servers.net.
télécharger les portions mises à jour d'une zone modifiée sur un serveur de noms
32.0.192.in-addr.arpa. 21600 IN NS d.iana-servers.net.
primaire. Par rapport à un processus de transfert standard, cela rend le processus de
32.0.192.in-addr.arpa. 21600 IN NS ns.icann.org.
notification et de mise à jour bien plus efficace.
32.0.192.in-addr.arpa. 21600 IN NS a.iana-servers.net.
Veuillez noter qu'IXFR n'est disponible qu'en utilisant la mise à jour dynamique pour
;; ADDITIONAL SECTION:
effectuer des changements dans les enregistrements de zones du master. Pour modifier
a.iana-servers.net. 13688 IN A 192.0.34.43
des fichiers de zone manuellement, Automatic Zone Transfer (AXFR) est utilisé.
b.iana-servers.org. 5844 IN A 193.0.0.236
b.iana-servers.org. 5844 IN AAAA 2001:610:240:2::c100:ec 6.3. TSIG (Transaction SIGnatures)
Transaction SIGnatures (TSIG) veille à ce qu'une clé secrète partagée existe à la fois
c.iana-servers.net. 12173 IN A 139.91.1.10
sur des serveurs de noms primaires et secondaires avant d'autoriser un transfert. Cela
c.iana-servers.net. 12173 IN AAAA 2001:648:2c30::1:10
renforce la méthode axée sur l'adresse IP standard d'autorisation de transfert, dans la
ns.icann.org. 12884 IN A 192.0.34.126
mesure où les attaquants auraient non seulement besoin d'avoir accès à l'adresse IP de

6. Fonctionnalités avancées de BIND la zone de transfert, mais il faudrait aussi qu'ils connaissent la clé secrète.
La plupart des implémentations de BIND utilisent seulement le service named pour Depuis la version 9, BIND prend également TKEY en charge, une autre méthode de clés
fournir des services de résolution de nom ou pour agir comme autorité pour un domaine secrêtes partagées pour autoriser les transferts de zone.
particulier. Cependant, la version BIND 9 a un certain nombre de fonctionnalités Important : Quand on communique sur réseau non sécurisé, ne pas se fier à
avancées qui permettent un service DNS plus sûr et plus efficace. l'authentification IP basée adresse uniquement.
Important : Avant d'utiliser des fonctionnalités avancées comme DNSSEC, TSIG ou 6.4. DNSSEC (DNS Security Extensions )
IXFR (transfert de zone incrémentiel), assurez-vous que la fonctionnalité en question Domain Name System Security Extensions (DNSSEC) fournit une authentification

est prise en charge par tous les serveurs de noms dans l'environnement réseau, surtout d'origine aux données DNS, le déni d'existence authentifié, et l'intégrité des données.

lorsque vous utilisez des versions plus anciennes de serveurs de liaison (BIND) ou des Quand un domaine particulier est marqué comme sécurisé, la réponse SERVFAIL est

serveurs non-BIND. retournée pour chaque enregistrement de ressource qui échoue au niveau validation.
Notez que pour déboguer un domaine de signature DNSSEC ou un résolveur DNSSEC-
6.1. Vues multiples
Éventuellement, des informations différentes peuvent être présentées à un client selon aware, vous pouvez utiliser l'utilitaire de dig . Options utiles : + dnssec (demande
le réseau de provenance de la demande. Ceci est principalement utilisé pour refuser d'enregistrements de ressources liées à DNSSEC en définissant le DNSSEC OK bit), +
l'accès à des données sensibles DNS de la part de clients se trouvant à l'extérieur du cd (indique au serveur de noms récursif de ne pas valider la réponse), et + bufsize =
réseau local, tout en permettant aux requêtes des clients à l'intérieur du réseau local. 512 (modifie la taille du paquet à 512 octets pour pouvoir passer à travers certains pare-
Pour configurer plusieurs affichages, ajoutez l'argument view dans le fichier de feux).
configuration /etc/named.conf. Utilisez l'option de match-clients pour faire 6.5. IPv6 (Internet Protocol version 6)
correspondre les adresses IP ou des réseaux dans leur ensemble et leur donner des Internet Protocol version 6 (IPv6) est pris en charge par l'utilisation des enregistrements

options spéciales et les données de zone. de ressources AAAA, et la directive listen-on-v6 

M.FILALI Linux : Administration des Serveurs 107 M.FILALI Linux : Administration des Serveurs 108
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

7. Erreurs communes à éviter TP-N°4-1 : Implémenter le serveur DNS Primaire (Enoncé)


Voici une liste des recommandations pour éviter les erreurs que les utilisateurs font
1) Dans un terminal, utiliser la commande suivante :
souvent quand ils configurent un serveur de noms :
~]$cd ; script DNS_BinomeX.txt avec X=numéro de Binôme
Utiliser les points virgule et les crochets courbes correctement
2) Renommer votre machine à srvdns
Un point virgule ou un crochet courbe qui ne correspond pas, dans le
3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1 et le masque sous
fichier /etc/named.conf, peut empêcher le démarrage du service named.
réseau : 255.255.255.0 en utilisant le fichier de configuration
Utiliser le point final (le signe « . ») correctement.
4) Redémarrer le service réseau
Dans les fichiers de zone, un point en fin de nom de domaine indique un nom de
5) Afficher la configuration de votre carte réseau
domaine complet. Si vous l'omettez, le service named ajoutera le nom de la zone ou la
6) Installer le serveur DNS s’il n’est pas encore installé
valeur correspondant à $ORIGIN pour compléter le nom de domaine.
7) Vérifier si le package est bien installé
Incrémenter le numéro de série lorsque vous modifiez un fichier de zone
8) Configurer le fichier « named.conf »
Si le numéro de série n'est pas incrémenté, le serveur de noms primaire aura la
9) Configurer le fichier de résolution de nom localhost et loopback
nouvelle information correcte, mais les noms de serveurs ne seront jamais notifiés du
10) Créer la zone « fedora.org » pour gérer le réseau 10.0.0.0/24 selon les informations
changement, et ne tenteront pas de réactualiser leurs données dans cette zone.
suivantes :
Fichier de configuration
 Le serveur DNS est un serveur primaire.
Si un parefeu bloque des connexions d'un service named à d'autres serveurs de noms, la
 Le serveur DNS doit faire la résolution directe et inverse.
pratique conseillée est de modifier les paramètres de configuration du parefeu.
 Dans le réseau, on suppose qu’il existe un serveur Web nommé www et porte
l’adresse fixe 10.0.0.2, et un serveur mail nommé mail et porte l’adresse
10.0.0.3.
11) Créer la zone « fedora.org.rev » pour la résolution inverse
12) (Re) démarrer le serveur DNS (dépanner la configuration en cas d’erreur)
13) Tester le bon fonctionnement du serveur DNS
14) Tester les résolutions directe et inverse des serveurs Web et mail
15) Enregistrer une copie des fichiers de configuration de votre machine
16) Quitter par la commande : exit
17) Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 109 M.FILALI Linux : Administration des Serveurs 110
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°4-1 : Implémenter le serveur DNS Primaire (Corrigée) Préparation...


########################################### [100%]
1) Dans un terminal, utiliser la commande suivante pour créer le script de travail 1:bind
########################################### [100%]
~]$ script -f DNS_BinomeX.txt
7) Vérifier si le package est bien installé
Le script a débuté, le fichier est DNS_BinomeX.txt
~]# rpm -q bind
2) Renommer votre machine à srvdns
bind-9.10.4-2.P3.fc25.i686
~]# hostnamectl set-hostname srvdns
Afficher les Fichiers de configuration du serveur DNS
3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1
~]# rpm -qacl | grep named
~]# cd /etc/sysconfig/network-scripts/
/etc/named.conf
~]# ll ifcfg-*
/etc/named.rfc1912.zones
-rw-r--r--. 1 root root 101 30 juin 2014 ifcfg-ens33
/var/named/named.localhost
-rw-r--r--. 1 root root 254 5 mai 2010 ifcfg-lo
/var/named/named.loopback
8) Configurer le fichier « named.conf »
~]# vi ifcfg-ens33
~]# vi /etc/named.conf
Edition du fichier « ifcfg-ens33 »
Edition du fichier de configuration du serveur DNS « named.conf »
DEVICE=ens33
IPADDR=10.0.0.1 options {
#Ajouter l’adresse de serveur DNS
NETMASK=255.255.255.0
listen-on port 53 {127.0.0.1 ; 10.0.0.1 ; };
ONBOOT=yes #verifier l’emplacement directory des bases de données
BOOTPROTO=none directory "/var/named";
#Ajouter l’adresse du réseau avec CIDR
4) Redémarrer le service réseau
allow-query { localhost ; 10.0.0.0/24 ; };
~]# service network restart };
Activation de l'interface ens33 : [ OK ] #déclaration de la zone pour la résolution directe
zone "fedora.org" IN {
5) Afficher la configuration de votre carte réseau type master;
~]# ifconfig file "fedora.org";
};
ens33 Link encap:Ethernet HWaddr 00:0C:29:79:82:A2
#déclaration de la zone pour la résolution inverse
inet adr:10.0.0.1 Bcast:10.0.0.255 Masque:255.255.255.0 zone "0.0.10.in-addr.arpa" IN {
6) Installer le serveur DNS s’il n’est pas encore installé type master;
file "fedora.org.rev";
Vérifiant d’abord si le package est déjà installé
};
~]# rpm -q bind include "/etc/named.rfc1912.zones";
le paquetage bind n'est pas installé include "/etc/named.root.key";

Installation du package
9) Configurer le fichier de résolution de nom localhost
~]# rpm -ivh /home/fedora/Bureau/Pack-F25/bind-9.10.4-2.P3.fc25.i686.rpm

M.FILALI Linux : Administration des Serveurs 111 M.FILALI Linux : Administration des Serveurs 112
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# cd /var/named/ ~]# cp named.localhost fedora.org


~]# ll named.lo* ~]# vi fedora.org
total 2 Edition du fichier de résolution directe pour la zone « fedora.org »
-rw-r-----. 1 root named 152 21 juin 2007 named.localhost $TTL 1D
-rw-r-----. 1 root named 168 15 déc. 2009 named.loopback @ IN SOA srvdns.fedora.org. root.fedora.org. (
2014102500 ; serial
~]# vi named.localhost
1D ; refresh
Edition du fichier de résolution directe de nom localhost « named.localhost » 1H ; retry
$TTL 1D 1W ; expire
@ IN SOA srvdns.fedora.org. root.fedora.org. ( 3H ) ; minimum
2014102500 ; serial @ IN NS srvdns.fedora.org.
1D ; refresh @ IN MX 10 mail.fedora.org.
1H ; retry srvdns IN A 10.0.0.1
1W ; expire www IN A 10.0.0.2
3H ) ; minimum mail IN A 10.0.0.3
@ IN NS srvdns.fedora.org. 11)Créer la zone « fedora.org.rev » pour la résolution inverse
localhost. IN A 127.0.0.1
~]# cp named.localhost fedora.org.rev

~]# cp named.localhost named.loopback


~]# vi fedora.org.rev
cp : voulez-vous écraser « named.loopback » ? y
Edition du fichier de résolution inverse pour la zone « fedora.org.rev »
$TTL 1D
~]# vi named.loopback
@ IN SOA srvdns.fedora.org. root.fedora.org. (
Edition du fichier de résolution inverse de nom localhost « named.loopback »
2014102500 ; serial
$TTL 1D
1D ; refresh
@ IN SOA srvdns.fedora.org. root.fedora.org. (
1H ; retry
2014102500 ; serial
1W ; expire
1D ; refresh
3H ) ; minimum
1H ; retry
@ IN NS srvdns.fedora.org.
1W ; expire
1 IN PTR srvdns.fedora.org.
3H ) ; minimum
2 IN PTR www.fedora.org.
@ IN NS srvdns.fedora.org.
3 IN PTR mail.fedora.org.
1 IN PTR localhost.
Vérification de certains fichiers du serveur DNS :
10)Créer la zone « fedora.org » pour gérer le réseau 10.0.0.0 /24

M.FILALI Linux : Administration des Serveurs 113 M.FILALI Linux : Administration des Serveurs 114
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 /etc/resolv.conf ~]# named-checkzone fedora.org.rev /var/named/fedora.org.rev
~]# vi /etc/resolv.conf 13)Tester le bon fonctionnement du serveur DNS
~]# nslookup
search fedora.org
domain fedora.org > localhost.
Server: 10.0.0.1
nameserver 10.0.0.1
Address: 10.0.0.1#53
 /etc/host.conf Name: localhost
~]# vi /etc/host.conf Address: 127.0.0.1

> 127.0.0.1
multi on
Server: 10.0.0.1
order bind,hosts Address: 10.0.0.1#53
Important! Render named le proprietaire des fichiers de zones 1.0.0.127.in-addr.arpa name = localhost.

~]# chown named:root /var/named/fedora.org*


> srvdns.fedora.org
Rectifier la zone pour la résolution inverse loopback Server: 10.0.0.1
Address: 10.0.0.1#53
~]# vi /etc/named.rfc1912.zones
Name: srvdns.fedora.org
# Modifier 1.0.0.127  0.0.127 Address: 10.0.0.1

zone "0.0.127.in-addr.arpa" IN {
> 10.0.0.1
type master;
Server: 10.0.0.1
file " named.loopback ";
Address: 10.0.0.1#53
};
1.0.0.10.in-addr.arpa name = srvdns.fedora.org.
12)(Re) démarrer le serveur DNS (dépanner la configuration en cas d’erreur)
14)Tester les résolutions directe et inverse des serveurs Web et mail
~]# service named restart ~]# nslookup
Arrêt de named : [ OK ]
> www.fedora.org
Démarrage de named : [ OK ]
Server: 10.0.0.1
[root@srvdns ~]# Address: 10.0.0.1#53
Diagnostic des erreurs de configuration: Name: www.fedora.org
Address: 10.0.0.2
~]# systemctl status named
Vérifier s’il y’a des erreurs dans le fichier de configuration « named.conf » > 10.0.0.2
~]# named-checkconf /etc/named.conf Server: 10.0.0.1
Address: 10.0.0.1#53
Vérifier s’il y’a des erreurs dans le fichier de résolution directe « Ex : fedora.org » 2.0.0.10.in-addr.arpa name = www.fedora.org.
~]# named-checkzone fedora.org /var/named/fedora.org
> mail.fedora.org
Vérifier s’il y’a des erreurs dans le fichier de résolution inverse « Ex :fedora.org.rev » 
Server: 10.0.0.1

M.FILALI Linux : Administration des Serveurs 115 M.FILALI Linux : Administration des Serveurs 116
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

Address: 10.0.0.1#53 TP-N°4-2 : Implémenter le serveur DNS Secondaire(Enoncé)


Name: mail.fedora.org
Configurer un serveur DNS secondaire nommé srv2 et d’adresse IP 10.0.0.4
Address: 10.0.0.3

> 10.0.0.3
Server: 10.0.0.1
Address: 10.0.0.1#53
3.0.0.10.in-addr.arpa name = mail.fedora.org.

Exercice : Que font ces Commandes ? DNS Primaire : 10.0.0.1 DNS Secondaire: 10.0.0.4
~]# dig srvdns.fedora.org Client DNS
~]# dig -x 10.0.0.1 I. Modifications au niveau du serveur DNS Primaire (TP-N°4-1)
1. Autoriser le transfert des zones directe et inverse au serveur secondaire
2. Ajouter les enregistrements pour srv2 dans les zones directe et inverse
3. Redémarrage le service DNS
4. Tester la resolution direct et invere pour srv2
II. Configuration du serveur DNS Secondaire
1. Installer le package DNS
2. Configurer la carte réseau du serveur srv2 avec l’adresse 10.0.0.4/24
3. Redemarrer le service reseau
4. Afficher la configuration des interfaces
5. Declarer les zones secondaires dans le fichier de configuration DNS
6. Configurer les fichiers resolv.conf et host.conf
7. Redemarrer le service DNS
8. Arreter le par feu et Selinux
9. Afficher le status du par feu et Selinux
10. Redemarrer le service DNS primaire puis secondaire
11. Vérifier le transert des zones ver le serveur secondaire
12. Arreter le service DNS primaire
13. Tester le bon fonctionnement du serveur DNS secondaire
14. Configurer le client DNS windows et tester la resolution des noms
15. Enregistrer une copie des fichiers de configuration de votre machine
16. Quitter par la commande : exit
17. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 117 M.FILALI Linux : Administration des Serveurs 118
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°4-2 : Implémenter le serveur DNS Secondaire(Corrigée) ~]# vi /var/named/fedora.org.rev

I. Modifications au niveau du serveur DNS Primaire


$TTL 1D
~]# vi /etc/named.conf
@ IN SOA srvdns.fedora.org. root.fedora.org. (
Autoriser le transfert des zones
2014102500 ; serial
zone "fedora.org" IN {
1D ; refresh
type master;
file "fedora.org"; 1H ; retry
#autoriser le transfert de la zone 1W ; expire
allow-transfer { 10.0.0.4; };
3H ) ; minimum
};
zone "0.0.10.in-addr.arpa" IN { @ IN NS srvdns.fedora.org.
type master; @ IN NS srv2.fedora.org.
file "fedora.org.rev"; 1 IN PTR srvdns.fedora.org.
#autoriser le transfert de la zone
2 IN PTR www.fedora.org.
allow-transfer { 10.0.0.4; };
}; 3 IN PTR mail.fedora.org.
include "/etc/named.rfc1912.zones"; 4 IN PTR srv2.fedora.org.
include "/etc/named.root.key";
Démarrage du service
Modification des zones pour la résolution directe et inverse
~]# service named restart
~]# vi /var/named/fedora.org
Test
~]# nslookup
$TTL 1D
@ IN SOA srvdns.fedora.org. root.fedora.org. (
> srvdns.fedora.org
2014102500 ; serial Server: 10.0.0.1
1D ; refresh Address: 10.0.0.1#53
Name: srvdns.fedora.org
1H ; retry
Address: 10.0.0.1
1W ; expire
3H ) ; minimum > srv2.fedora.org
@ IN NS srvdns.fedora.org. Server: 10.0.0.1
Address: 10.0.0.1#53
@ IN NS srv2.fedora.org.
Name: srv2.fedora.org
@ IN MX 10 mail.fedora.org. Address: 10.0.0.4
srvdns IN A 10.0.0.1
www IN A 10.0.0.2 > 10.0.0.4
Server: 10.0.0.1
mail IN A 10.0.0.3
Address: 10.0.0.1#53
srv2 IN A 10.0.0.4 4.0.0.10.in-addr.arpa name = srv2.fedora.org.

M.FILALI Linux : Administration des Serveurs 119 M.FILALI Linux : Administration des Serveurs 120
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
II. Configuration au niveau du serveur DNS Secondaire zone "fedora.org" IN {
1. Installation du package bind9 type slave;
masters { 10.0.0.1; };
~]# rpm -ivh /home/fedora/Bureau/Pack-F25/bind-9.10.4-2.P3.fc25.i686.rpm
file "slaves/fedora.org";
Préparation... ######################################## [100%] };
1:bind ######################################## [100%] zone "0.0.10.in-addr.arpa" IN {
type slave;
2. Configuration de la carte réseau
masters { 10.0.0.1; };
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 file "slaves/fedora.org.rev";
};
include "/etc/named.rfc1912.zones";
DEVICE=ens33
include "/etc/named.root.key";
IPADDR=10.0.0.4 6. Vérification d’autres fichiers
NETMASK=255.255.255.0
~]# vi /etc/resolv.conf
ONBOOT=yes
BOOTPROTO=none search fedora.org
3. Redémarrer le service réseau domain fedora.org
~]# service network restart nameserver 10.0.0.1
Activation de l'interface ens33 : [ OK ] nameserver 10.0.0.4
[root@srv2 fedora]#
~]# vi /etc/host.conf
4. Afficher la configuration de la carte réseau
~]# ifconfig ens33
multi on
ens33 Link encap:Ethernet HWaddr 00:0C:29:C1:17:EC
order bind,hosts
inet adr:10.0.0.4 Bcast:10.0.0.255 Masque: 255.255.0
7. Démarrage du service DNS
..
~]# service named restart
5. Déclaration des zones dans le fichier de configuration
Arrêt de named : [ OK ]
~]# vi /etc/named.conf
Démarrage de named : [ OK ]
[root@srv2 fedora]#
options {
listen-on port 53 { 127.0.0.1; 10.0.0.4; }; 8. Arret du pare-feu et SELinux sur les deux serveurs !

allow-query { localhost; 10.0.0.0/24; }; ~]# systemctl stop firewalld

}; ~]# setenforce 0

zone "." IN { 9. Verification de l’arrét du Parefeu et SELinux sur les deux serveurs !
type hint;
~]# systemctl status firewalld
file "named.ca";
}; ~]# getenforce

M.FILALI Linux : Administration des Serveurs 121 M.FILALI Linux : Administration des Serveurs 122
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
10. Redemarrages des services DNS primaire et secondaire TP-N°4-3 : Mise en Place d’un Serveur DNS (Devoir Libre)

~]# service named restart #primaire Une société nommée SOCIETE A veut mettre en place des serveurs DNS

~]# service named restart #secondaire La société possède les serveurs Linux suivants :
Server1-A : Server2-A : Server3-A
11. Vérifier le transfert des zones  Nom : Server2-A  Nom : Server3-A
 Nom : Server1-A
 @IP : 172.16.100.1/24  @IP : 172.16.100.2/24  @IP : 172.16.100.3/24
~]# cd /var/named/slaves/  Passerelle par défaut :  Passerelle par défaut :  Passerelle par défaut :
~]# ls 172.16.100.254 172.16.100.254 172.16.100.254
 Serveur DNS primaire :  Serveur de messagerie  Serveur DNS secondaire :
fedora.org fedora.org.rev #transfert des zones !  Serveur DHCP societe-a.ma
societe-a.ma
12. Arreter le serveur DNS primaire  Serveur Web  Serveur DNS secondaire :  Serveur d’annuaire
societe-a.ma  Serveur FTP
~]# service named stop #primaire On vous demande de Configurer le Server1-A en utilisant la ligne de commande et
13. Tester le fonctionement du serveur DNS secondaire les fichiers de configuration :

~]# nslookup 01. Configurer le réseau sur le serveur.


02. Configurer le nom du serveur.
> srvdns.fedora.org 03. Démarrer le service réseau.
Server: 10.0.0.4 04. Vérifier l’existence du package DNS.
Address: 10.0.0.4#53 05. Configurer le service DNS pour qu’il démarre automatiquement avec les niveaux 3
Name: srvdns.fedora.org et 5.
Address: 10.0.0.1 06. Créer une zone de recherche directe nommé societe-a.ma et créer tous les
> srv2.fedora.org enregistrements de ressources nécessaires dans le fichier de zone correspondant :
Server: 10.0.0.4 SOA, NS, A, CNAME, MX et SRV.
Address: 10.0.0.4#53 07. Créer une zone de recherche inversée et créer tous les enregistrements de
Name: srv2.fedora.org ressources nécessaires dans le fichier de zone correspondant : SOA, NS et PTR.
Address: 10.0.0.4 08. Démarrer le service DNS.
09. Vérifier que la résolution fonctionne : utiliser l’alias du Server1-A
> 10.0.0.1 (http://www.societe-a.ma).
Server: 10.0.0.4 10. Configurer Server1-A pour autoriser le transfert de zone uniquement vers les deux
Address: 10.0.0.4#53 autres serveurs.
1.0.0.10.in-addr.arpa name = srvdns.fedora.org. 11. Configurer Server1-A pour la mise à jour dynamique avec le serveur DHCP
> 10.0.0.4 12. Configurer le serveur Server2-A Comme serveur DNS secondaire
Server: 10.0.0.4 13. Enregistrer une copie des fichiers de configuration de votre machine
Address: 10.0.0.4#53 14. Quitter par la commande : exit
4.0.0.10.in-addr.arpa name = srv2.fedora.org. 15. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 123 M.FILALI Linux : Administration des Serveurs 124
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

CH5 : Implémenter l’accès Telnet au Serveur - /etc/inetd.conf qui contient la liste des services activés sur une machine donnée
Dans les distributions récentes inetd a été remplacé par xinetd. Le principe est très
1. Introduction similaire, à la seule différence que, dans /etc/xinetd.d, chaque service (telnet, ftp,
pop3...) dispose de son propre fichier de configuration.
Certains services utilisables avec inetd ou xinetd comme telnet, ftp, pop3... sont
difficilement sécurisables car les mots de passe transitent en clair sur le réseau. Si ces
services sont utilisables en l'état sur des petits réseaux isolés, il faudra éviter de les
utiliser sur des réseaux reliés à Internet ou dans des environnements peu sûrs.
Cependant, la tendance est au cryptage de ces services, grâce à SSL notamment. Il
existe une version sécurisée de telnet, nommée telnet-ssl.
Extrait de /etc/services:
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
pop3 110/tcp # Post Office
2. Telnet:
Telnet est un protocole qui permet l'émulation de terminal VTx à distance sur un 3.1. Configuration avec xinetd
serveur Unix/Linux. Le principe est similaire, à la différence que vous avez un fichier de configuration global
"/etc/xinetd.conf", et un fichier de configuration par service, en général dans le
3. Le daemon xinetd: répertoire "/etc/xinetd.d/".
Toute application fonctionnant sous TCP/IP est basée sur le modèle client/serveur. Par
#
exemple quelqu'un se connectant via telnet à un hôte distant « active » chez l'hôte le
# Le fichier xinetd.conf
service serveur telnetd.
#
Chaque serveur est sur une machine en attente d'une connexion sur un port particulier.
# Some defaults, and include /etc/xinetd.d/
Dans les premières versions d'Unix-TCP/IP chaque application (telnet, ftp,...) avait son
defaults
propre serveur qui était lancé au démarrage de chaque machine comme un "daemon".
{
Cette stratégie encombrait inutilement la table des processus (autant de serveurs que
instances = 60
de services). Ces services sont dits fonctionnant en mode « autonome » ou
log_type = SYSLOG authpriv
« standalone ».
log_on_success = HOST PID
Le daemon INETD est un « super » serveur, à l'écoute sur plusieurs ports et qui se
log_on_failure = HOST
charge de recevoir les demandes de connexion de plusieurs clients (telnet, ftp,...) et de
cps = 25 30
lancer le serveur correspondant à la demande. A son démarrage il consulte les fichiers:
}
- /etc/services qui contient la liste générale des services TCP/IP avec leur numéro de
include dir /etc/xinetd.d
port et le protocole de transport associé.

M.FILALI Linux : Administration des Serveurs 125 M.FILALI Linux : Administration des Serveurs 126
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
3.2. Configurer un service Service telnet
Le fichier se trouve sous /etc/xinetd.d et porte le nom du service. La syntaxe du fichier
{
est la suivante :
        flags            = REUSE
Service nom-du-service
        socket_type     = stream
{
        wait             = no
        socket_type = type de socket 
        user            = root
        wait      = pour lancer un ou plusieurs instances du service         server          = /usr/sbin/in.telnetd
        user    = à qui appartiendra le service
        redirect = 192.168.13.10    23
        server=    chemin du serveur
}
        server_args= argument du serveur (facultatif)
        access_times=plage horaire (facultatif)  4. TCP-Wrapper
        nice      = priorité (facultatif) TCP-Wrapper est un outil de sécurité réseau qui permet de contrôler les accès, les

} tentatives de connexion sur une machine donnée. Il permet à tout instant de savoir (par
journalisation syslogd) qui essaie d'accéder sur un ordinateur mais également de filtrer
Exemples :
les accès. On peut par exemple sur une machine A interdire les connexions telnet
Le fichier /etc/xinetd.d/wu-ftpd
venant d'une machine B tout en autorisant les connexions FTP venant de cette même
# default: on
service ftp machine B.
{ 4.1. Principe de fonctionnement
disable = no Exemple: Si inetd reçoit une demande de connexion sur le port 23 il va lancer telnetd.
socket_type = stream
Tcpwrapper sert d'enveloppe. Il vient « s'intercaler » entre le daemon inetd et le serveur
wait = no
user = root à démarrer. Quand une demande de service TCP/IP (en réalité TCP ou UDP) arrive sur
server = /usr/sbin/in.ftpd un port donné, inetd va lancer TCPD (daemon correspondant à Tcpwrapper) au lieu
server_args = -l -a
d'activer directement le service demandé (telnetd, ftpd, pop3...).
log_on_success += DURATION USERID
log_on_failure += USERID Tcpd prend en charge la requête et met en place ses mécanismes de contrôle. Il peut par
nice = 10 exemple vérifier que les accès depuis la machine cliente sont autorisés. Une fois le
} traitement terminé il va (s'il y a autorisation) lancer son propre service in.telnetd,
Le paramètre "disable", permet d'activer/désactiver le service.
in.ftpd, in.imapd....
Le programme "in.ftpd", indique bien que le service est pris en charge par TCPWrapper
Eléments de configuration
(C'est le in qui l'indique, sinon, le binaire s'appellerait ftpd).
Sous Linux, tcpd est installé par défaut. On peut voir en consultant le fichier
Les commentaires en haut du fichier indiquent que ce service ne prend pas en charge
/etc/inetd.conf comment inetd active tcpd.
l'encryptage des mots de passe.
Extrait de /etc/inetd.conf
Autre exemple avec la redirection, ici on rediriger vers le port 23 (telnet) de la machine
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
192.168.13.10
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

M.FILALI Linux : Administration des Serveurs 127 M.FILALI Linux : Administration des Serveurs 128
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
4.2. Host.deny et host.allow TP-N°5-1 : Implémenter l’accès Telnet au Serveur (Enoncé)
L'administrateur réseau va pouvoir utiliser 2 fichiers: /etc/hosts.allow et /etc/hosts.deny
1) Dans un terminal, utiliser la commande suivante :
pour filtrer les accès à sa machine.
~]$cd  ; script -f TELNET_BinomeX.txt avec X=numéro de Binôme
/etc/hosts.deny: on indique dans ce fichier les services et les hôtes pour lesquels l'accès
2) Renommer votre machine à srv-tel
est interdit.
3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1 et le masque sous
/etc/hosts.allow: on indique dans ce fichier les services et les hôtes pour lesquels
réseau : 255.0.0.0 en utilisant le fichier de configuration
l'accès est autorisé.
4) Redémarrer le service réseau
Exemple:
5) Afficher la configuration de votre carte réseau
# Fichier /etc/hosts.deny
6) Installer les services xinetd et telnet-server s’ils ne sont pas encore installés
# Interdit tous les accès ftp à la machine
7) Vérifier si les packages sont bien installés
in.ftpd : ALL
8) Interdire tous les utilisateurs de pouvoir utiliser TELNET
9) Permettre aux machines 10.0.0.1, 10.0.0.10 et 10.0.0.100 seules d’utiliser TELNET
# Fichier /etc/hosts.allow
pour se connecter au serveur
# autorise les accès ftp venant de cli1
10) (Re) démarrer les services Xinetd
in.ftpd : cli1.archinet.edu
11)Activer les services Xinetd et Telnet (dépanner la configuration en cas d’erreur)
TCP-Wrapper utilise l'algorithme suivant :
12)Tester le bon fonctionnement de ces paramètres
Si une règle est applicable dans hosts.allow, alors cette règle est appliquée, sinon, Si
13)Enregistrer une copie des fichiers de configuration de votre machine
une règle est applicable dans hosts.deny alors cette règle est appliquée, sinon, l'accès
14)Quitter par la commande : exit
est autorisé.
15)Rédiger un Rapport du TP (Commandes Résultats Interpretations)
Ce mode de fonctionnement induit la stratégie de sécurité à adopter :
a. décrire toutes les règles pour les couples (services/clients) qui sont autorisés,
b. interdire systématiquement tout le reste. Mettre par défaut ALL:ALL dans
hosts.deny.
Les tentatives d'accès depuis des machines extérieures sont toutes enregistrées dans
des fichiers particuliers. Ces enregistrements sont effectués par le processus syslogd
qui, à son démarrage, lit le fichier /etc/syslog.conf pour trouver dans quel(s) fichier(s)
il doit enregistrer les différentes tentatives d'accès.

M.FILALI Linux : Administration des Serveurs 129 M.FILALI Linux : Administration des Serveurs 130
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°5-1 : Implémenter l’accès Telnet au Serveur (Corrigée) 1:xinetd ########################################### [100%]

1) dans un terminal, utiliser la commande suivante : b- Installe le service TELNET

~]$ cd ; script -f TELNET_BinomeX.txt ~]# rpm -ivh telnet-server-0.17-65.fc24.i686.rpm

Le script a débuté, le fichier est TELNET_BinomeX.txt Préparation... ########################################### [100%]

2) renommer votre machiner a srv-tel 1:telnet-server ########################################### [100%]

~]# hostnamectl set-hostname srv-tel Vérification :

~]# cat /etc/hostname ~]# rpm -q telnet

srv-tel telnet-0.17-65.fc24.i686

3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1. ~]# rpm -q xinetd
xinetd-2.3.15-17.fc24.i686
~]# cd /etc/sysconfig/network-scripts/
~]# rpm -q telnet-server
[root@srv-tel network-scripts]# ll ifcfg-*
telnet-server-0.17-65.fc24.i686
-rw-r--r--. 1 root root 72 22 nov. 21:13 ifcfg-ens33
-rw-r--r--. 1 root root 254 5 mai 2010 ifcfg-lo c- Configure le fichier /etc/xinetd.d/telnet

~]# vi ifcfg-ens33 ~]# vi /etc/xinetd.d/telnet

Edition de fichier
DEVICE=ens33 service telnet
IPADDR=10.0.0.1 {
NETMASK=255.0.0.0 flags = REUSE
ONBOOT=yes socket_type = stream
BOOTPROTO=none wait = no
4) Redémarre le service réseau user = root
~]# service network restart server = /usr/sbin/in.telnetd
Restarting network (via systemctl): [ OK ] log_on_failure += USERID
5) Afficher la configuration de votre carte réseau disable = no
~]# ifconfig port = 23
ens33 Link encap:Ethernet HWaddr 00:0C:29:0D:CD:8C }
inet adr:10.0.0.1 Bcast:10.255.255.255 Masque:255.0.0.0 7) Interdire tous les utilisateurs de pouvoir utiliser TELNET
… Pour configurer les interdictions, utiliser le fichier /etc/hosts.deny
6) Installer les services xinetd et telnet ~]# vi /etc/hosts.deny
a- Installer le service Xinetd Edition de fichier
~]# rpm -ivh xinetd-2.3.15-17.fc24.i686.rpm #Ajouter cette ligne pour interdire tous le monde d’utilizer Telnet
Préparation... ########################################### [100%]

M.FILALI Linux : Administration des Serveurs 131 M.FILALI Linux : Administration des Serveurs 132
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

in.telnetd : ALL Trying 10.0.0.1...


8) Permettre aux machines 10.0.0.1,10.0.0.10 et 10.0.0.100 seules d’utiliser telnet Connected to 10.0.0.1.
Dans ce cas, pour donner les droits à plusieurs machines pour utiliser TELNET, …
utiliser le fichier /etc/hosts.allow login: serveur

~]# vi /etc/hosts.allow Password: ******


[serveur@srv-tel ~]$ exit
# Ajouter cette ligne pour autoriser les Clients Telnet logout
Connection closed by foreign host.
in.telnetd : 10.0.0.1 ; 10.0.0.10 ; 10.0.0.100 ~]$
9) (Re) démarrer les services Xinetd et Telnet Tester à partir de la machiner Windows avec l’application « putty ».
~]# service xinetd restart a- Arreter Selinux
Arrêt de xinetd : [ OK ] ~]# setenforce 0
Démarrage de xinetd : [ OK ] b- Arreter le pare-feu
10)Active les services Xinetd et Telnet ~]# systemctl stop firewalld
[root@srv-tel fedora]#chkconfig xinetd on c- Desactiver le pare-feu Windows
11)Tester le bon fonctionnement de ces paramètres Cliquer sur l’onglet système ===> Administration ===> pare-feu
a- Ajouter des utilisateurs pour le test d- Executer le programme « putty » apartir de la machine réelle.
~]# useradd client Cas1 : l’adresse IP de la machine client est 10.0.0.10
~]# passwd client
Changement de mot de passe pour l'utilisateur client.
Nouveau mot de passe : ******
Retapez le nouveau mot de passe : ******
passwd : mise à jour réussie de tous les jetons d'authentification.
~]# useradd serveur
~]# passwd serveur
Changement de mot de passe pour l'utilisateur serveur.
Le résultat : Pass
Nouveau mot de passe : ******
Retapez le nouveau mot de passe : ******
passwd : mise à jour réussie de tous les jetons d'authentification.
b- Tester l’accès Telnet de client vers serveur
~]# su client
[client@srv-tel ~]$ telnet 10.0.0.1

M.FILALI Linux : Administration des Serveurs 133 M.FILALI Linux : Administration des Serveurs 134
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Cas2 : de l’adresse de la machine client est 10.0.0.2 TP-N°5-2 : Implémenter l’accès Telnet au Serveur (Devoir Libre)
Configurer l’accès telnet au serveur et tester la sécurité réseau

Le résultat : Echec

1. Configure la carte réseau de Linux1 selon les informations suivantes :


o Adresse IP 192.168.1.1/24
2. Configure la carte réseau de Linux2 selon les informations suivantes :
o Adresse IP 192.168.1.2/24
3. Configure la carte réseau du client Win01 selon les informations suivantes :
o Adresse IP 192.168.1.3/24
 l’adresse IP  10.0.0.2 n’est pas autorisée à utiliser le service Telnet dans
4. Tester la communication entre les 3 machines
le fichier /etc/hosts.allow
5. Installez le serveur telnet sur la machine serveur (Linux1)
6. Configurer le service Telnet
7. N’autoriser que la machine Linux2 en accès Telnet au serveur
8. Connectez-vous avec la machine cliente sur le serveur en utilisant le service telnet.
Nous allons maintenant illustrer le fait que le service Telnet n’est pas tr`es sur. En effet, tout
circule en clair sur le réseau.
9. Installez le logiciel wireshark sur le client Windows (l'intrus !)
10. Dans Menu Capture, Interfaces, puis au bouton Start, lancez le packet sniffer
11. Dans la barre de filtrage, il est possible de spécifier un filtre de sorte qu’une partie des trames
capturées ne soient affichées. Lancez une capture avec le filtre : (telnet)
12. Tout en vous connectant à distance via telnet. Est-il possible de retrouver le mot de passe de
l’utilisateur ?
13. Est-il possible de retrouver tout ce qui a transité entre les deux machines ?
14. Enregistrer une copie des fichiers de configuration de votre machine
15. Quitter par la commande : exit
16. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 135 M.FILALI Linux : Administration des Serveurs 136
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

CH6 : Implémenter l’accès sécurisé SSH au Serveur 2. Le protocole SSH


2.1. Pourquoi utiliser SSH ?
Les intrus potentiels ont une variété d'outils à leur disposition leur permettant de
1. Principe
Approche de ssh, des tunnels et des services mandataires perturber, intercepter et re-router le trafic réseau dans le but d'accéder à un système.
En règle générale, ces menaces peuvent être classées ainsi :

2.1.1. Interception de communication entre deux systèmes


L'attaquant peut être quelque part sur le réseau entre les parties communicantes,
copiant des informations passées entre elles. Il peut intercepter et maintenir
l'information, ou la modifier et l'envoyer à des destinataires designés.
Cette attaque est généralement réalisée à l'aide d'un renifleur de paquets (packet
sniffer), un utilitaire de réseau plutôt commun, qui capte chaque paquet qui passe à
travers le réseau et qui en analyse le contenu.
2.1.2. Emprunt d’identité d'un hôte particulier
Le système de l'attaquant est configuré pour se poser en tant que destinataire d'une
transmission. Si cette stratégie fonctionne, le système de l'utilisateur ne sait pas qu'il
communique avec le mauvais hôte.
Cette attaque peut être effectuée par une technique appelée un empoisonnement DNS,
SSH (Secure Shell) est un protocole qui facilite les communications sécurisées entre ou via ce que l'on appelle une usurpation d'adresse IP. Dans le premier cas, l'intrus
deux systèmes en utilisant une architecture client-serveur, et qui permet aux utilise un serveur DNS qui aura failli dans le but de pointer les systèmes client à un
utilisateurs de se connecter à des systèmes hôtes de serveur à distance. À la différence hôte qui aura été malicieusement dupliqué. Dans le second cas, l'intrus envoie des
d'autres protocoles de communication à distance tels que FTP ou Telnet, SSH codifie la paquets réseau falsifiés qui semblent provenir d'un hôte de confiance.
session de connexion, ce qui la rend difficile d'accès aux intrus qui souhaiteraient Les deux techniques interceptent des informations sensibles potentiellement, et, si
récupérer les mots de passe. l'interception a lieu à des fins hostiles, les résultats peuvent être désastreux. Si SSH est
Le programme ssh est conçu pour remplacer les applications de terminal les plus utilisé pour la connexion à un shell distant et pour la copie de fichiers, ces menaces à la
anciennes et les moins sécurisées qui sont utilisées pour la connexion à des hôtes sécurité peuvent être grandement diminuées. C'est parce que le client SSH et le serveur
distants, comme telnet ou rsh. Un programme connexe appelé scp remplace les anciens utilisent des signatures numériques pour vérifier leur identité. En plus, toutes les
programmes conçus pour copier des fichiers entre les ordinateurs hôtes, comme rcp. communications entre les systèmes client et serveur sont cryptées. Les tentatives
Comme ces applications plus anciennes ne cryptent pas les mots de passe qui sont d'usurpation l'identité de part et d'autre d'une communication ne fonctionnent pas,
transmis entre le client et le serveur, évitez-les autant que possible. En utilisant des puisque chaque paquet est crypté à l'aide d'une clé connue seulement par les systèmes
méthodes sûres pour vous connecter à des systèmes distants, vous diminuez les risques locaux et distants.
pour le système client et l'hôte distant à la fois. 2.2. Fonctionnalités principales
Le protocole SSH offre les avantages suivants :
14. Personne ne peut se faire passer pour un serveur intentionnel

M.FILALI Linux : Administration des Serveurs 137 M.FILALI Linux : Administration des Serveurs 138
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Après avoir effectué une connexion initiale, le client peut s'assurer que sa connexion est 2.3. Versions de protocole
Il existe actuellement deux sorts de SSH : version 1 et version 2 plus récente. La suite
établie avec le même serveur que lors de sa session précédente.
15. Personne ne peut récupérer les données d'authentification OpenSSH sous Linux utilise SSH version 2, qui dispose d'un algorithme d'échange de
clés amélioré non vulnérable à l'exploitation connue pour la version 1. Toutefois, pour
Le client transmet ses données d'authentification au serveur au moyen d'un chiffrement des raisons de compatibilité, la suite OpenSSH prend en charge les connexions de la
solide de 128 bits. version 1 également.
16. Personne ne peut intercepter la communication Important : Pour assurer un maximum de sécurité au niveau de votre connexion, il est

Toutes les données envoyées et reçues lors d'une session sont transférées au moyen d'un conseillé que seuls les clients et serveurs compatibles avec SSH version 2 soient utilisés

chiffrement 128 bits, rendant ainsi le déchiffrement et la lecture de toute transmission si possible.

interceptée extrêmement difficile. 2.4. Séquence d'événements d'une connexion SSH


Pour aider à protéger l'intégrité d'une communication SSH entre deux ordinateurs
De plus, il offre les options suivantes :
hôtes, la série suivante d'événements doit être utilisée.
17. Il fournit des moyens sûrs d'utiliser les applications graphiques par
1. Une liaison cryptographique est établie afin de permettre au client de vérifier
l'intermédiaire d'un réseau.
qu'il est bien en communication avec le serveur souhaité.
En utilisant une technique appelée X11 forwarding, le client peut envoyer des 2. La couche de transport de la connexion entre le client et tout hôte distant est
applications X11 (X Window System) en partance du serveur. chiffrée au moyen d'un moyen de chiffrement symétrique.
18. Cela fournit un moyen de sécuriser des protocoles non sécurisés 3. Le client s'authentifie auprès du serveur.
normalement 4. Le client peut interagir avec l'hôte distant au moyen d'une connexion chiffrée.

Le protocole SSH crypte tout ce qu'il envoie et reçoit. En utilisant une technique 2.4.1. Couche de transport
Le rôle principal de la couche de transport est de faciliter une communication sécurisée
appelée port forwarding, un serveur SSH peut devenir un moyen de sécuriser des
entre deux hôtes non seulement au moment de l'authentification, mais également lors
protocoles normalement non protégés, comme POP, tout en augementant la sécurité des
de communications ultérieures. Pour ce faire, la couche de transport traite le cryptage
données et du système en général.
et décryptage de données et offre une certaine protection quant à l'intégrité des paquets
19. Il peut être utilisé pour créer un canal sécurisé
de données lors de leur envoi et de leur réception. De plus, la couche de transport
Le serveur OpenSSH et le client peuvent être configurés afin de créer un tunnel effectue la compression des données permettant d'accélérer la vitesse de transfert des
semblable à un réseau virtuel privé pour permettre le trafic entre le serveur et les informations.
machines clientes. Lorsqu'un client communique avec un serveur au moyen d'un protocole SSH, de
20. Il prend en charge l'authentification Kerberos nombreux éléments importants sont échangés afin que les deux systèmes puissent créer
correctement la couche de transport. Lors de cet échange, les opérations suivantes ont
Les clients et serveurs OpenSSH peuvent être configurés pour authentifier par
lieu :
l'interface GSSAPI (Generic Security Services Application Program Interface) du
 Des clés sont échangées.
protocole d'authentification du réseau Kerberos.
 L'algorithme de chiffrement de clés publiques est déterminé
 L'algorithme de chiffrement symétrique est déterminé
 L'algorithme d'authentification de message est déterminé

M.FILALI Linux : Administration des Serveurs 139 M.FILALI Linux : Administration des Serveurs 140
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 L'algorithme de hachage est déterminé Les serveurs et clients SSH peuvent être configurés de façon à permettre différents
Au cours de l'échange de clés, le serveur s'identifie au client par une clé d'hôte unique. types d'authentification, donnant à chacune des deux parties un niveau de contrôle
Si le client n'a jamais communiqué avec ce serveur particulier auparavant, la clé du optimal. Le serveur peut décider des méthodes de cryptage qu'il prend en charge en
serveur hôte est inconnue au client et il ne se connecte pas. OpenSSH contourne ce fonction de son modèle de sécurité et le client peut choisir l'ordre des méthodes
problème en acceptant la clé du serveur hôte. Ceci est fait après que l'utilisateur ait été d'authentification à utiliser parmi les options disponibles.
informé et a à la fois accepté et vérifié la nouvelle clé de l'hôte. Dans les connexions 2.4.3. Canaux
suivantes, la clé du serveur hôte est vérifiée par rapport la version enregistrée sur le Le client et le serveur peuvent créer un nouveau canal. Chaque canal reçoit ensuite un

client, pour s'assurer que le client communique avec le serveur voulu. Si, dans l'avenir, numéro différent à chaque extrémité de la connexion. Lorsque le client essaie d'ouvrir

la clé de l'hôte ne correspond plus, l'utilisateur doit supprimer la version du client un nouveau canal, il envoie le numéro du canal accompagné de la requête. Ces

enregistrée avant qu'une connexion puisse avoir lieu. informations sont stockées par le serveur et utilisées pour diriger la communication

Avertissement : Il est tout à fait possible pour un pirate de se faire passer pour le vers ce canal. Cette procédure est utilisée afin que des types différents de session ne

serveur SSH lors de la première connexion car le système local ne détecte aucune créent pas de nuisances mutuelles et de sorte qu'à la fin d'une session donnée, son canal

différence entre le serveur désiré et le faux serveur créé par le pirate. Afin d'éviter une puisse être fermé sans que la connexion SSH principale ne soit interrompue.

telle situation, contrôlez l'intégrité d'un nouveau serveur SSH en contactant Les canaux prennent aussi en charge le contrôle du flux de données, ce qui leur permet

l'administrateur du serveur avant d'établir la première connexion au cas où une clé d'envoyer et de recevoir des données de façon ordonnée. Ce faisant, aucune donnée n'est

d'hôte ne correspond pas à celle stockée sur le serveur. envoyée sur le canal tant que l'hôte n'a pas reçu de message lui indiquant que le canal

Le protocole SSH est conçu pour fonctionner avec n'importe quel algorithme de clé est ouvert.

publique ou tout format de codage. Après que l'échange initial des clés crée une valeur Le client et le serveur négocient automatiquement la configuration de chaque canal,

de hachage utilisée pour les échanges et une valeur secrète partagée, les deux systèmes selon le type de service demandé par le client et la manière dont l'utilisateur est

commencent immédiatement à calculer de nouveaux algorithmes et de nouvelles clés connecté au réseau. Ainsi, le traitement des différents types de connexions distantes est

pour protéger l'authentification et les futures données envoyées via la connexion. non seulement extrêmement flexible, mais il ne nécessite pas même d'apporter des

Après la transmission d'une certaine quantité de données au moyen d'une clé et d'un modifications à la structure de base du protocole.

algorithme précis (la quantité exacte dépend de l'implémentation du protocole SSH), un


3. Configuration d'OpenSSH
nouvel échange de clés est effectué ; cette opération engendre la création d'un autre
3.1. Fichiers de configuration
ensemble de valeurs de hachage et d'une autre valeur secrète partagée. De cette façon, Il y a deux groupes de fichiers de configuration : pour les programmes clients (c-a-
même si un pirate réussit à déterminer les valeurs de hachage et la valeur secrète d ssh, scp, et sftp), et pour les serveurs (le démon sshd).
partagée, ces informations ne lui seront utiles que pour une durée limitée. Les informations de configuration de SSH à l'échelle du système sont stockées dans le
2.4.2. Authentification répertoire /etc/ssh/ . Les informations de configuration spécifiques à l'utilisateur SSH
Une fois que la couche de transport a créé un tunnel sécurisé pour envoyer les sont stockées dans ~/.ssh/ dans le répertoire d'accueil de l'utilisateur,
informations entre les deux systèmes, le serveur indique au client les différentes
3.1.1. Fichiers de configuration du système dans son ensemble
méthodes d'authentification prises en charge, telles que l'utilisation d'une signature Fichier Description
dotée d'une clé codée ou la saisie d'un mot de passe. Le client doit ensuite essayer de /etc/ssh/moduli Contient les groupes Diffie-Hellman utilisés pour
s'authentifier auprès du serveur au moyen d'une des méthodes spécifiées. l'échange de clés Diffie-Hellman, ce qui est essentiel

M.FILALI Linux : Administration des Serveurs 141 M.FILALI Linux : Administration des Serveurs 142
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
pour la création d'une couche de transport sécurisé. ~/.ssh/id_rsa.pub La clé publique RSA utilisée par ssh pour la version 2 du
Lorsque les clés sont échangées au début d'une protocole SSH.
session SSH, une valeur partagée, secrète est alors ~/.ssh/identity La clé privée RSA utilisée par ssh pour la version 1 du
créée ne pouvant être déterminée par l'une des protocole SSH.
parties seule. Cette valeur est ensuite utilisée pour ~/.ssh/identity.pub La clé publique RSA utilisée par ssh pour la version 1 du
fournir une authentification de l'hôte. protocole SSH.
/etc/ssh/ssh_config Le fichier de configuration du client SSH par ~/.ssh/known_hosts Contient les clés hôtes des serveurs SSH auquels l'utilisateur
défaut. Notez qu'il sera remplacé à accès. Ce fichier est important pour s'assurer que le client
par ~/.ssh/config si ce fichier existe. SSH est connecté au bon serveur SSH.
/etc/ssh/sshd_config Le fichier de configuration du démon sshd. 3.2. Démarrage d'un serveur OpenSSH
/etc/ssh/ssh_host_ecdsa_key La clé ECDSA privée utilisée par le démon sshd. Pour pouvoir exécuter un serveur OpenSSH, vous devez avoir le paquet openssh-server

/etc/ssh/ La clé ECDSA publique utilisée par le démon sshd. installé.

ssh_host_ecdsa_key.pub Pour démarrer le démon sshd dans la session actuelle, veuillez saisir

/etc/ssh/ssh_host_key La clé privée RSA utilisée par le démon sshd pour ~]# systemctl start sshd.service

la version 1 du protocole SSH. Pour stopper le démon sshd dans la session actuelle, veuillez saisir
/etc/ssh/ssh_host_key.pub La clé publique RSA utilisée par le ~]# systemctl stop sshd.service
démon sshd pour la version 1 du protocole SSH. Si vous souhaitez que le démon démarre automatiquement, saisir
/etc/ssh/ssh_host_rsa_key La clé privée RSA utilisée par le démon sshd pour ~]# systemctl enable sshd.service
la version 2 du protocole SSH. Le démon sshd dépend de l’unité cible network.target, ce qui suffit pour les interfaces
/etc/ssh/ssh_host_rsa_key.pub La clé publique RSA utilisée par le réseau configuré statique et pour les options par défaut ListenAddress 0.0.0.0. Pour
démon sshd pour la version 2 du protocole SSH. spécifier des adresses différentes dans la directive ListenAddress et utiliser une
/etc/pam.d/sshd Le fichier de configuration AM du démon sshd. configuration de réseau dynamique plus lente, ajouter la dépendance sur l’unité cible
/etc/sysconfig/sshd Fichier de configuration du service sshd. de network-online.target dans le fichier d'unité de sshd.service. Pour ce faire, créez le
3.1.2. Fichiers de configuration spécifiques à l'utilisateur fichier /etc/systemd/system/sshd.service.d/local.conf avec les options suivantes :
Fichier Description
[Unit]
~/.ssh/ Contient une liste des clés publiques autorisées pour les
Wants=network-online.target
authorized_keys serveurs. Quand le client se connecte à un serveur, le serveur
After=network-online.target
authentifie le client en vérifiant sa clé publique stockée dans
Ensuite, charger à nouveau la configuration du gestionnaire systemd 
ce fichier.
~]# systemctl daemon-reload
~/.ssh/id_ecdsa Contient la clé privée ECDSA de l'utilisateur
Notez que si vous réinstallez le système, un nouvel ensemble de clés d'identification
~/.ssh/id_ecdsa.pub La clé publique de l'utilisateur.
sera créé. Ainsi, les clients qui étaient connectés au système avec les outils d'OpenSSH
~/.ssh/id_rsa La clé privée RSA utilisée par ssh pour la version 2 du
avant la réinstallation verront le message suivant s'afficher :
protocole SSH.

M.FILALI Linux : Administration des Serveurs 143 M.FILALI Linux : Administration des Serveurs 144
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3.4.1. Création de paires de clés


Suivez les étapes indiquées ci-dessous afin de créer une paire de clés RSA pour la
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
version 2 du protocole SSH.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 1. Création de la paire de clés publique/privée.
Someone could be eavesdropping on you right now (man-in-the-middle attack)! ~]$ ssh-keygen -t rsa
It is also possible that the RSA host key has just been changed. 2. Saisir le fichier dans lequel sauvegarder la clé (/home/USER/.ssh/id_rsa):
Pour éviter cela, vous pouvez sauvegarder les fichiers qui conviennent à partir du 3. Appuyer sur la touche Entrée pour confirmer le chemin d'accès par
répertoire /etc/ssh défaut, ~/.ssh/id_rsa, pour la clé nouvellement créée.
3.3. Utilisation nécessaire de SSH pour les connexions à distance 4. Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on
Pour que SSH soit vraiment efficace, les protocoles de connexions non sécurisées sont à
vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de passe
proscrire. Sinon, un mot de passe d'utilisateur peut-être protégé par SSH pour une
que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.
seule session, et ne sera capturé que plus tard avec Telnet. Certains services à
Après cela, vous verrez un message semblable à celui-ci :
désactiver sont : telnet, rsh, rlogin et vsftpd.
Your identification has been saved in /home/USER/.ssh/id_rsa.
3.4. Authentification basée clés
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
Pour améliorer encore davantage la sécurité système, créer des paires de clés SSH et
The key fingerprint is:
puis exécuter l'authentification basée clés en désactivant l'authentification de mot de
e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 USER@penguin.example.com
passe. Pour ce faire, ouvrez le fichier /etc/ssh/sshd_config dans un éditeur de texte
The key's randomart image is:
comme vi ou nano et modifiez l'option PasswordAuthentication comme suit :
+--[ RSA 2048]----+
PasswordAuthentication no
| E. |
Si vous travaillez sur un système différent de celui de la nouvelle installation par
| .. |
défaut, vérifiez que PubkeyAuthentication no n'ait pas été défini. Si connecté à
5. Par défaut, les permissions du répertoire ~/.ssh/ sont définies à rwx------ ou 700
distance, ne pas utiliser l'accès console ou out-of-band, il est conseillé de tester le
exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse
processus de journalisation basé clé avant de désactiver l'authentification de mot de
voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande
passe.
suivante :
Pour pouvoir utiliser ssh, scp, ou sftp pour se connecter au serveur à partir d'une
~]$ ls -ld ~/.ssh
machine client, créer une paire de clé d'autorisation en suivant les étapes suivantes.
drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
Notez que les clés doivent être créées séparemment pour chaque utilisateur.
6. Pour copier une clé publique dans une machine distante, lancer la commande dans le
Important : Si vous complétez les étapes en tant qu'utilisateur root, seul root pourra
format suivant :
utiliser les clés.
Note : Si vous réinstallez votre système et que vous souhaitez garder des paires de clés ~]$ ssh-copy-id user@hostname

générées auparavant, sauvegarder le répertoire ~/.ssh/. Après avoir réinstallé, recopiez- Cela aura pour effet de copier la clé publique ~/.ssh/id*.pub qui a été modifiée le plus

le sur votre répertoire personnel. Ce processus peut être fait pour tous les utilisateurs récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés

sur votre système, y compris l'utilisateur root. publiques comme suit :

M.FILALI Linux : Administration des Serveurs 145 M.FILALI Linux : Administration des Serveurs 146
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname ~]$ ssh-copy-id USER@hostname


Cela aura pour effet de copier le contenu de ~/.ssh/id_rsa.pub dans le Cela aura pour effet de copier la clé publique ~/.ssh/id*.pub qui a été modifiée le plus
fichier ~/.ssh/authorized_keys de la machine sur laquelle vous souhaitez vous connecter. récemment si elle n'a pas encore été installée. Sinon, indiquer le nom du fichier de clés
Si le fichier existe déjà, les clés y seront ajoutées. publiques comme suit :
Suivez les étapes indiquées ci-dessous afin de créer une paire de clés ECDSA pour la ~]$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub USER@hostname
version 2 du protocole SSH : Cela aura pour effet de copier le contenu de ~/.ssh/id_ecdsa.pub dans le
fichier ~/.ssh/authorized_keys de la machine sur laquelle vous souhaitez vous connecter.
1. Pour créer une paire de clés ECDSA, saisir la commande suivante
Si le fichier existe déjà, les clés y seront ajoutées.
~]$ ssh-keygen -t ecdsa
Important : La clé privée est à but d'utilisation personelle uniquement, et il est
2. Saisir le fichier dans lequel vous souhaitez sauvegarder la clé
important que vous ne la donniez à personne.
(/home/USER/.ssh/id_ecdsa):
3.4.2. Configurer l’agent d’authentification
3. Appuyer sur la touche Entrée pour confirmer le chemin d'accès par
Pour stocker votre mot de passe afin que vous n'ayiez pas à le saisir à chaque fois que
défaut, ~/.ssh/id_ecdsa, pour la clé nouvellement créée.
vous vous connectez avec une machine distante, vous pouvez utiliser l'agent
4. Saisissez une phrase de passe, et confirmez-là en la saisissant à nouveau quand on
d'authentification ssh-agent. Si vous utilisez GNOME, vous pouvez la configurer pour
vous le demande. Pour des raisons de sécurité, évitez d'utiliser le même mot de
qu'elle vous demande votre mot de passe chaque fois que vous ouvrez une session et
passe que celui que vous aurez utilisé quand vous vous êtes connecté à votre compte.
pour qu'elle s'en souvienne tout au cours de la session. Sinon, vous pouvez stocker la
Après cela, vous verrez un message semblable à celui-ci :
phrase de passe pour une invite du shell en particulier.
Votre identification a été sauvegardée dans /home/USER/.ssh/id_ecdsa.
Pour sauvegarder votre phrase de passe pendant votre session GNOME, suivez les
Votre clé publique a été sauvegardée dans /home/USER/.ssh/id_ecdsa.pub.
étapes suivantes :
L'empreinte de la clé est :
1. Assurez-vous de bien avoir le paquet openssh-askpass installé.
fd:1d:ca:10:52:96:21:43:7e:bd:4c:fc:5b:35:6b:63 USER@penguin.example.com
2. Appuyez sur la touche Super pour entrer dans la vue d'ensemble des activités,
L'image randomart de la clé est :
tapez Startup Applications et appuyez sur Entrée. L'outil Startup Applications
+--[ECDSA 256]---+
Preferences s'affiche. L'onglet contenant une liste de programmes de démarrage
| .+ +o |
disponibles s'affichera par défaut. La touche Super apparait dans une variété de
| . =.o |
formes, selon le clavier et autre matériel, mais souvent en tant que touche Commande
5. Par défaut, les permissions du répertoire ~/.ssh/ sont définies à rwx------ ou 700 ou Windows, généralement à gauche de la barre d'espace.
exprimées en notation octale. Ceci est pour s'assurer que l'utilisateur USER puisse
voir les contenus. Si cela est nécessaire, on peut le confirmer par la commande
suivante :
~]$ ls -ld ~/.ssh/
drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
6. Pour copier une clé publique dans une machine distante, lancer la commande sous le
format suivant :

M.FILALI Linux : Administration des Serveurs 147 M.FILALI Linux : Administration des Serveurs 148
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
5. Déconnecter et reconnecter. Une boîte de dialogue apparaîtra pour vous demander de
mettre votre phrase de passe. À partir de ce moment, vous ne devriez pas être sollicité
de donner un mot de passe par les commandes ssh, scp, ou sftp.

Saisir une phrase de passe


Préférences des applications au démarrage Afin de sauvegarder votre phrase de passe pour une certaine invite de shell, utilisez la
3. Cliquer sur le bouton Add à droite, et saisir /usr/bin/ssh-add dans le commande suivante :
champ Command. ~]$ ssh-add
Saisir la phrase de passe pour /home/USER/.ssh/id_rsa :
Notez que lorsque vous vous déconnectez, votre phrase de passe sera oubliée. Vous
devez exécuter la commande chaque fois que vous vous connectez à une console
virtuelle ou à une fenêtre de terminal.

4. Clients OpenSSH
Pour vous connecter à un serveur OpenSSH depuis une machine cliente, vous devez
Ajouter une nouvelle application
avoir installé le paquet openssh-clients 
4. Cliquer sur Add et vérifiez que la case qui se trouve à côté de l'élément qui vient d'être
4.1. Comment se servir de l'utilitaire ssh
ajouté est sélectionnée. L'utilitaire ssh vous permet de vous connecter à une machine distante et à y exécuter
des commandes à cet endroit. Cela remplace les programmes rlogin, rsh, et telnet.
De même que pour la commande telnet, connectez-vous à une machine distante par la
commande suivante :
~]$ ssh hostname
Ainsi, pour vous connecter à une machine distante nommée penguin.example.com,
saisir ce qui suit quand on vous y invite :
~]$ ssh penguin.example.com
Cela vous enregistrera avec le même nom d'utilisateur que vous utilisez sur votre
machine locale. Si vous souhaitez spécifier un nom d'utilisateur différent, utilisez une
Activer l'application
commande de la forme suivante :

M.FILALI Linux : Administration des Serveurs 149 M.FILALI Linux : Administration des Serveurs 150
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]$ ssh username@hostname Sinon, le programme ssh peut être utilisé pour exécuter une commande sur la machine

Ainsi, pour vous connecter à penguin.example.com en tant que USER, saisir : distante sans qu'il soit nécessaire de vous connecter à une invite de shell :

~]$ ssh USER@penguin.example.com ~]$ ssh [username@]hostname command

La première fois que vous initierez une connexion, vous verrez apparaître un message 4.2. scp
La commande scp peut être utilisée pour transférer des fichers entre des machines à
similaire à celui-ci :
travers une connexion cryptée sécurisée. Le concept ressemble à celui de rcp.
The authenticity of host 'penguin.example.com' can't be established.
Pour transférer un fichier local dans un système distant, utiliser une commande de la
ECDSA key fingerprint is 256 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff.
forme suivante :
Are you sure you want to continue connecting (yes/no)?
~]$ scp localfile username@hostname:remotefile
Les utilisateurs doivent toujours vérifier si l'empreinte est correcte avant de répondre à
Ainsi, si vous souhaitez transférer taglist.vi vers une machine distante
la question dans cette boîte de dialogue. L'utilisateur peut demander à l'administrateur
nommée penguin.example.com, saisissez ce qui suit dans l'invite de commande :
du serveur de bien confirmer que la clé est correcte. Cela devrait être fait de manière
sécurisée et préalablement convenue. Si l'utilisateur a accès aux clés d'hôte du serveur, ~]$ scp taglist.vi USER@penguin.example.com:.vim/plugin/taglist.vim

l'empreinte digitale peut être vérifiée à l'aide de la commande ssh-keygen, comme suit : USER@penguin.example.com's password:
taglist.vi 100% 144KB 144.5KB/s 00:00
~]# ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
256 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff (ECDSA) Vous pouvez spécifier plusieurs fichiers à la fois. Pour transférer les contenus
de .vim/plugin/ dans le même répertoire d'une machine distante penguin.example.com,
Tapez yes pour accepter la clé et confirmer la connexion. Vous verrez une notice
saisissez la commande suivante :
apparaître vous indiquant que le serveur a été ajouté à la liste des hôtes connus et une
invite vous demandant votre mot de passe : ~]$ scp .vim/plugin/* USER@penguin.example.com:.vim/plugin/
USER@penguin.example.com's password:
Warning: Permanently added 'penguin.example.com' (ECDSA) to the list of known hosts.
USER@penguin.example.com's password: closetag.vi 100% 13KB 12.6KB/s 00:00
snippetsEmu.vi 100% 33KB 33.1KB/s 00:00
Important : Si la clé de l'hôte du serveur SSH change, le client informera l'utilisateur
taglist.vi 100% 144KB 144.5KB/s 00:00
que la connexion ne peut pas avoir lieu tant que la clé du serveur hôte n'est pas
supprimée du fichier ~/.ssh/known_hosts. Avant de procéder, cependant, contactez Afin d'autoriser les utilisateurs à créer des fichiers dans le répertoire, utilisez la

l'administrateur systèmes du serveur SSH pour vérifier que le serveur n'est pas commande suivante :

compromis. ~]$ scp username@hostname:remotefile localfile

Pour supprimer une clé du fichier ~/.ssh/known_hosts, lancez la commande suivante : Ainsi, pour télécharger le fichier de configuration .vimrc d'une machine distante,

~]# ssh-keygen -R penguin.example.com saisissez :

# Host penguin.example.com found: line 15 type ECDSA ~]$ scp USER@penguin.example.com:.vimrc .vimrc

/home/USER/.ssh/known_hosts updated. USER@penguin.example.com's password:

Original contents retained as /home/USER/.ssh/known_hosts.old .vimrc 100% 2233 2.2KB/s 00:00

Une fois que vous aurez saisi le mot de passe, vous apercevrez une invite de shell pour
la machine distante.

M.FILALI Linux : Administration des Serveurs 151 M.FILALI Linux : Administration des Serveurs 152
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
4.3. sftp 5.1. Transfert X11
L'utilitaire sftp peut être utilisé pour ouvrir une session FTP interactive, sécurisée. Pour ouvrir une session X11 sur une connexion SSH, utiliser une commande qui
Dans le concept, c'est similaire à ftp sauf qu'on utilise une connexion sécurisée, cryptée. ressemble à ceci :
Pour vous connecter à un système distant, utiliser une commande qui ressemble à : ~]$ ssh -Y nom d'utilisateur@nom d'hôte
~]$ sftp username@hostname Ainsi, pour vous connecter à une machine distante nommée penguin.example.com,
Ainsi, pour vous connecter à une machine distante nommée penguin.example.com, avec USER comme nom d'utilisateur, saisissez ce qui suit :
avec USER comme nom d'utilisateur, saisissez ce qui suit : ~]$ ssh -Y USER@penguin.example.com
~]$ sftp USER@penguin.example.com mot de passe de USER@penguin.example.com :
USER@penguin.example.com's password: Lorsqu'un programme X est exécuté à partir d'une invite du shell sécurisée, le client et
Connected to penguin.example.com. le serveur SSH créent un nouveau canal sécurisé et les données du programme X sont
sftp> ensuite envoyées à l'ordinateur client via ce canal d'une manière transparente.
Une fois que vous aurez saisi le mot de passe qui convient, vous verrez une invite se Notez que le système X Window doit être installé sur le système distant avant que la
présenter. L'utilitaire sftp accepte un ensemble de commandes qui ressemble à celles transmission X11 puisse avoir lieu. Saisir la commande suivante en tant
utilisées avec ftp ; qu'utilisateur rootpour installer le groupe de packages X11 :
Une sélection de commandes sftp disponibles ~]# yum group install "X Window System"
Commande Description Le transfert X11 peut être très utile. Par exemple, le transfert X11 peut être utilisé
ls [directory] Lister le contenu du directory (répertoire) distant. pour créer une session interactive, sécurisée de l'utilitaire Print Settings. Pour cela,
S'il n'y en aucun, on utilisera le répertoire de travail connectez-vous au serveur en utilisant ssh et saisissez :
en cours par défaut. ~]$ system-config-printer &
cd directory Changer le répertoire de travail distant à répertoire. L'outil Print Settings apparaîtra, permettant à l'utilisateur distant de configurer
mkdir répertoire --smbservers=<server> l'impression sur le système distant en toute sécurité.
rmdir chemin Supprimer un répertoire distant.
5.2. Réacheminement de port
put fichierlocal  [fichierdistant] Transférer le fichier local à une machine distante. SSH peut sécuriser les protocoles TCP/IP normalement non sécurisés par le
get  fichierdistant  [fichierlocal] Transférer le fichier distant à partir d'une machine réacheminement de port. Quand vous utilisez cette technique, le serveur SSH fait figure
distante. de conduit crypté vers le client SSH.
La redirection de port fonctionne en mappant un port local du client à un port distant
5. Beaucoup plus qu'un shell sécurisé
sur le serveur. SSH peut mapper n'importe quel port du serveur sur un port de client.
Une interface sécurisée en ligne de commandes n'est qu'une utilisation parmi tant
Les numéros de port n'ont pas besoin de correspondre pour cette façon de travailler.
d'autres, de SSH. En ayant la quantité nécessaire de bande passante, les sessions X11
Note : Pour configurer la retransmission de port de manière à ce qu'elle écoute sur les
peuvent être dirigées sur un canal SSH. Sinon, en utilisant la retransmission TCP/IP,
ports inférieurs à 1024, il est nécessaire d'avoir un accès de niveau super-utilisateur (ou
les connexions par port entre les systèmes, considérées auparavant comme étant non-
root) root.
sécurisées, peuvent être mappées à des canaux SSH spécifiques.
Pour créer un canal de réacheminement de port TCP/IP qui écoute les connexions sur
le localhost, utiliser une commande de la forme suivante :

M.FILALI Linux : Administration des Serveurs 153 M.FILALI Linux : Administration des Serveurs 154
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]$ ssh -L port-local:nom d'hôte distant:port-distant nom d'utilisateur@nom d'hôte TP-N°6-1 : Implémenter l’accès sécurisé SSH au Serveur (Enoncé)
Ainsi, pour vérifier un email sur un serveur nommé mail.example.com qui 1) Dans un terminal, utiliser la commande suivante :
utilise POP3 par l'intermédiaire d'une connexion cryptée, utiliser la : ~]$cd ; script SSH_BinomeX.txt avec X=numéro de Binôme
~]$ ssh -L 1100:mail.example.com:110 mail.example.com 2) Renommer votre machine à SRV-SSH
Une fois que le canal de réacheminement de port est mis en place entre la machine 3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1 et le masque sous
cliente et le serveur de messagerie, envoyez un mail client POP3 pour utiliser le réseau : 255.0.0.0 en utilisant le fichier de configuration
port 1100 sur le localhost pour vérifier s'il y a de nouveaux messages. Toutes les 4) Redémarrer le service réseau
requêtes envoyées au port 1100 sur le système client seront redirigées en toute sécurité 5) Afficher la configuration de votre carte réseau
vers le serveur mail.example.com. 6) Installer le serveur SSH s’il n’est pas encore installé
Si mail.example.com n'exécute pas sur un serveur SSH, mais qu'une autre machine le 7) Vérifier si le package est bien installé
fasse sur le même réseau, SSH peut toujours être utilisé pour sécuriser une partie de la 8) Configurer le serveur SSH pour l’authentification uniquement par mot de passe
connexion. Cependant, il vous faudra une commande légèrement différente :  Editer le fichier de configuration SSH
~]$ ssh -L 1100:mail.example.com:110 other.example.com  Créer 2 comptes utilisateurs serveur et client

Dans cet exemple, les demandes POP3 du port 1100 de la machine cliente sont  Tester l’accés au compte serveur à partir du compte client par SSH

transmises via la connexion SSH sur le port 22 au serveur SSH, other.example.com.  Tester l’accès au serveur à partir d’un client windows

Ensuite, other.example.com se connectera au port 110 sur mail.exemple.com pour Configurer le serveur SSH pour l’authentification par Clé publique

vérifier les nouveaux messages. Notez que lorsque vous utilisez cette technique, seule la 9) Créer une paure de clés de type RSA pour votre compte personnel (client)

connexion entre le système client et le serveur SSH other.example.com est sûre. 10) Quel est le fingerprint de votre clé ?

Le réacheminement de port peut également être utilisé pour obtenir des informations 11) Copier votre nouvelle clé publique générée dans le serveur

en toute sécurité à travers les pare-feu de réseau. Si le pare-feu est configuré pour 12) Editer le fichier de configuration SSH

autoriser le trafic SSH via son port standard (c'est-à-dire le port 22) mais bloque l'accès 13) (Re) démarrer le serveur SSH
aux autres ports, une connexion entre deux hôtes utilisant les ports bloqués est toujours 14) Tester le bon fonctionnement du serveur SSH

possible si on réoriente leur communication par une connexion SSH établie.  Tester l’accés au compte serveur à partir du compte client par SSH

Important : L'utilisation de la fonctionnalité de réacheminement de port pour  Tester l’accès au serveur à partir d’un client windows

transférer des connexions de cette façon permet à tout utilisateur du système client de 15) Modifiez la configuration du serveur SSH pour interdire la connexion de root

se connecter à ce service. Si le système client est compromis, les pirates auront 16) Enregistrer une copie des fichiers de configuration de votre machine

également accès aux services retransmis. 17) Quitter par la commande : exit

Les administrateurs de système qui s'inquiètent de la fonctionnalité de 18) Rédiger un Rapport du TP (Commandes Résultats Interpretations)

réacheminement de port peut désactiver cette fonctionnalité sur le serveur en spécifiant


un paramètre No sur la ligne AllowTcpForwarding dans /etc/ssh/sshd_config et
redémarrer le service sshd.

M.FILALI Linux : Administration des Serveurs 155 M.FILALI Linux : Administration des Serveurs 156
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°6-1 : Implémenter l’accès sécurisé SSH au Serveur (Corrigée) ~]# vi /etc/ssh/sshd_config

1) Dans un terminal, utiliser la commande suivante pour créer le script de travail Edition du fichier « sshd_config »

~]$ cd ; script -f SSH_BinomeX.txt Port 22

Le script a débuté, le fichier est SSH_BinomeX.txt ListenAddress 10.0.0.1

2) Renommer votre machine à SRV-SSH Protocol 2


PermitEmptyPasswords no
~]# hostnamectl set-hostname SRV-SSH
PasswordAuthentication yes
3) Configurer votre carte réseau avec l’adresse IP suivante : 10.0.0.1
~]# cd /etc/sysconfig/network-scripts/
~]# systemctl restart sshd
~]# ll ifcfg-*
Créer 2 comptes utilisateurs client et serveur pour les Tests en local !
-rw-r--r--. 1 root root 72 18 nov. 23:29 ifcfg-ens33
~]#useradd client ~]#useradd serveur
-rw-r--r--. 1 root root 254 5 mai 2010 ifcfg-lo
~]#passwd client ~]#passwd serveur

~]# vi ifcfg-ens33
[client@srv-ssh ~]$ ssh serveur@10.0.0.1
Edition du fichier « ifcfg-ens33 »
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
DEVICE=ens33
RSA key fingerprint is 2a:c1:c4:90:dc:1e:25:60:7a:95:9f:be:e8:71:12:61.
IPADDR=10.0.0.1
Are you sure you want to continue connecting (yes/no)? yes
NETMASK=255.0.0.0
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.
ONBOOT=yes
serveur@10.0.0.1's password: ********
BOOTPROTO=none
[serveur@srv-ssh ~]$
4) Redémarrer le service réseau
Tester l’accès SSH à partir du client Windows
~]# service network restart
Restarting network (via systemctl): [ OK ]
5) Afficher la configuration de votre carte réseau
~]# ifconfig
ens33 Link encap:Ethernet HWaddr 00:0C:29:79:82:A2
inet adr:10.0.0.1 Bcast:10.255.255.255 Masque:255.0.0.0
6) Installer le serveur SSH s’il n’est pas encore installé
Configurer le serveur SSH pour l’authentification par Clé publique
~]# rpm -ivh openssh-server-5.rpm
9) Créer une paire de clés de type RSA pour votre compte personnel (client)
7) Vérifier si le package est installé
[client@ ~]$ ssh-keygen -t rsa -b 1024 -C client@10.0.0.1
~]# rpm -q openssh-server
openssh-server-5
Generating public/private dsa key pair.
8) Configurer le serveur SSH pour l’authentification uniquement par mot de passe

M.FILALI Linux : Administration des Serveurs 157 M.FILALI Linux : Administration des Serveurs 158
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

Enter file in which to save the key (/home/client/.ssh/id_rsa): #Entrer ~]# service sshd restart
Created directory '/home/client/.ssh'. Arrêt de sshd : [ OK ]
Enter passphrase (empty for no passphrase): ********* #passphrase Démarrage de sshd : [ OK ]
Enter same passphrase again: ********* #Confirmer ~]#
Your identification has been saved in /home/client/.ssh/id_rsa 14) Tester le bon fonctionnement du serveur SSH
Your public key has been saved in /home/client/.ssh/id_rsa.pub Ajouter un message de démarrage
The key fingerprint is: ~]# echo " Bienvenu sur mon serveur SSH !" >> /etc/motd
c3:f3:2d:de:cf:80:32:df:b7:97:68:0d:81:51:c5:38 client@10.0.0.1  Test à partir de la même machine
The key's randomart image is: [client@ ~]$ ssh serveur@10.0.0.1
+--[ RSA 1024]----+
Enter passphrase for key '/home/client/.ssh/id_rsa': ********
10) Quel est le fingerprint de votre clé ? Last login: Fri Dec 4 15:52:19 2015 from 10.0.0.1
 c3:f3:2d:de:cf:80:32:df:b7:97:68:0d:81:51:c5:38  Bienvenu sur mon serveur SSH !
11) Copier votre nouvelle clé publique générée dans le serveur [serveur@ ~]$
[client@ ~]$ ssh-copy-id -i /home/client/.ssh/id_rsa.pub serveur@10.0.0.1
[serveur@ ~]$ exit
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established. logout
RSA key fingerprint is 2a:c1:c4:90:dc:1e:25:60:7a:95:9f:be:e8:71:12:61. Connection to 10.0.0.1 closed.
Are you sure you want to continue connecting (yes/no)? yes [client@ ~]$
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.  Tester à partir de win7 avec l’application « putty»
serveur@10.0.0.1's password: ******* Ici il faut generer une paire de clés RSA (Ks,Kp) pour le client Windows et partager
Now try logging into the machine, with "ssh 'serveur@10.0.0.1'", and check in: la clé publique Kp avec le serveur SSH.
.ssh/authorized_keys  Utiliser l’application puttygen pour générer les clés Ks et Kp
12) Editer le fichier de configuration SSH
~]# vi /etc/ssh/sshd_config
Edition du fichier « sshd_config »
Port 22
ListenAddress 10.0.0.1
Protocol 2
PermitEmptyPasswords no
PasswordAuthentication no
PubkeyAuthentication yes
 Sauvegarder les deux clés dans un emplacement sûr sous windows
13) (Re) démarrer le serveur SSH
 Coupier le contenu de Kp dans le fichier authorized_keys du serveur

M.FILALI Linux : Administration des Serveurs 159 M.FILALI Linux : Administration des Serveurs 160
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]#vi /home/serveur/.ssh/authorized_keys ~]$ ssh serveur@10.0.0.1 " cat /etc/passwd"


~]$ scp ./test.txt serveur@10.0.0.1:~/
~]$ scp serveur@10.0.0.1:/home/serveur/test.txt ./test.txt
~]$ sftp serveur@10.0.0.1
sftp> pwd et sftp> !pwd
sftp> ls –l et sftp> !ls –l
sftp> put test.txt et sftp> get test.txt
sftp> quit

 Redemarrer le service SSH


 Sous windows lancer l’application pageant et ajouter la clé Ks

 Lacer putty et tester l’accès au serveur SSH

15) Modifiez la configuration du serveur SSH pour interdire la connexion de root


~]# vi /etc/ssh/sshd_config
Edition du fichier « sshd_config »
Port 22
ListenAddress 10.0.0.1
Protocol 2
PermitEmptyPasswords no
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no #Désactiver l’accés root

Exercice : Que font ces Commandes ?

M.FILALI Linux : Administration des Serveurs 161 M.FILALI Linux : Administration des Serveurs 162
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°6-2 : Création des Tunnels SSH (Devoir Libre) localhost indique que la requête sera exécutée sur la machine B et non redirigée vers
une autre machine.
Cours : Il existe trois modes de tunnels :
Une fois la commande exécutée, il faudra s'authentifier sur la machine B.
 le mode local ;
Cette commande signifie que lorsque la machine A envoie une requête sur le port 1234,
 le mode distant ; celle-ci est transmise via un SSH à la machine B et est redirigée sur le port 4141 de
 le mode dynamique (basé sur l'utilisation d'un serveur SOCKS). cette dernière.

Prérequis La base de données sera donc accessible sur la machine A à l'adresse localhost:1234 et
la connexion sera chiffrée.
 La machine qui crée les tunnels doit être équipée de SSH (par défaut sur Linux),
ou équipée d'un client SSH graphique (Putty,...). Pour fermer le tunnel, récupérez l'identifiant du processus en tapant la commande
suivante :
 La machine sur laquelle on se connecte en SSH doit autoriser des connexions
SSH (machine B pour les tunnels locaux, machine A pour les tunnels distants). ~]# ps aux | grep ssh

I.Création d'un tunnel SSH local (option -L). Puis tuez le processus :

Cas n°1 ~]# kill -9 id_du_processus

Soit la configuration suivante : Création d'un tunnel local avec Putty

Renseignez les champs comme ceci : (et cliquez sur "Add")

Nous avons deux machines reliées à Internet : une machine A et une machine B
hébergeant une base de données qui écoute sur le port 4141.
Nous voulons que la machine A accède de manière sécurisée à la base de données se
situant sur la machine B. Nous décidons donc de créer un tunnel SSH entre ces deux
machines.
Création d'un tunnel local en ligne de commande

Voici la commande à exécuter sur la machine A pour ouvrir un tunnel SSH vers la
base de données :
NB : le port source peut être n'importe quel port libre de la machine A (pas forcément
~]# ssh -L port_machine_A:localhost:port_machine_B machine_B -f -N  1234).

Où port_machine_A peut-être n'importe quel port libre de la machine A (ex : 1234). Une fois les champs renseignés, cliquez sur "Open".
Vous devrez vous authentifier sur la machine B.
Soit :
Une fois l'authentification réalisée, la machine A pourra accéder à la base de données
~]# ssh -L 1234:localhost:4141 machine_B -f -N de B à l'adresse localhost:1234.
L'option -L indique la création d'un tunnel SSH local. Le tunnel restera ouvert tant que Putty sera connecté à la machine B.
Les options -f et -N permettent d'exécuter le tunnel en tâche de fond.

M.FILALI Linux : Administration des Serveurs 163 M.FILALI Linux : Administration des Serveurs 164
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Cas n°2
Soit la configuration suivante :

Une machine A connectée à Internet.


Un réseau local comprenant une machine B, reliée à Internet elle aussi, et une machine
C comprenant une base de données non connectée à Internet. Une fois les champs renseignés, cliquez sur "Open".
Vous devrez vous authentifier sur la machine B.
Nous souhaitons que la machine A ait accès à la base de données sur la base C. Un
moyen d'y parvenir est de créer un tunnel SSH entre la machine A et la machine B et Une fois l'authentification réalisée, la machine A pourra accéder à la base de données
de rediriger la requête vers la machine C. de C à l'adresse localhost:1234.

Création d'un tunnel local en ligne de commande Le tunnel restera ouvert tant que Putty sera connecté à la machine A.

Voici la commande à exécuter sur notre machine A pour ouvrir un tunnel SSH vers la II.Création d'un tunnel SSH distant (option -R).
base de données : Dans les exemples précédents, le tunnel SSH a été créé à partir de la machine A.
Il est possible, pour que la machine A ait accès à la base de données, de créer un tunnel
~]# ssh -L port_machine_A:machine_C:port_machine_C machine_B -f -N 
SSH à partir de la machine B.
Où port_machine_A peut-être n'importe quel port libre de la machine A (ex : 1234). Pour ce faire, on utilise l'option -R (pour "remote") :

Soit : Cas n°1

~]# ssh -L 1234:machine_C:4141 machine_B -f -N

L'option -L indique la création d'un tunnel SSH local.


Les options -f et -N permettent d'exécuter le tunnel en tâche de fond.
machine_C indique que la requête sera redirigée vers la machine C.
Une fois la commande exécutée, il faudra s'authentifier sur la machine B.
Cette commande signifie que lorsque la machine A envoie une requête sur son port
1234, celle-ci est transmise via un SSH à la machine B et est redirigée sur le port 4141 Pour rappel, nous souhaitons que la machine A accède à la base de données de la
de la machine C. machine B de manière sécurisée.
La base de données sera donc accessible à l'adresse localhost:1234. Cependant, la Création d'un tunnel distant en ligne de commande
connexion sera seulement chiffrée entre la machine A et la machine B. Pour aussi
Nous exécutons donc la commande suivante sur la machine B :
chiffrer la connexion entre les machines B et C, il faudrait créer un second tunnel.
~]# ssh -R port_machine_A:localhost:port_machine_B machine_A -f -N 
Création d'un tunnel local avec Putty

Renseignez les champs comme ceci (et cliquez sur "Add") Où port_machine_A peut-être n'importe quel port libre de la machine A (ex : 1234).

M.FILALI Linux : Administration des Serveurs 165 M.FILALI Linux : Administration des Serveurs 166
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Soit : Nous voulons donc que la machine A accède à la base de données sur la machine C en
passant par la machine B.
~]# ssh -R 1234:localhost:4141 machine_A -f -N
Le tunnel est à créer à partir de la machine B.
L'option -R indique la création d'un tunnel SSH distant. Création d'un tunnel distant en ligne de commande
Une fois la commande exécutée, il faudra s'authentifier sur la machine A. Voici la commande à exécuter sur la machine B :
Comme précédemment, la machine A peut accéder à la base de données à l'adresse
~]# ssh -R port_machine_A:machine-C:port_machine_C machine_A -f -N 
localhost:1234.
La seule différence est que le tunnel est maintenu par la machine B. Où port_machine_A peut-être n'importe quel port libre de la machine A (ex : 1234).

Création d'un tunnel distant en ligne avec Putty Soit :


Renseignez les champs comme ceci (et Cliquez sur "Add") ~]# ssh -R 1234:machine_C:4141 machine_A -f -N

L'option -R indique la création d'un tunnel SSH distant.


Une fois la commande exécutée, il faudra s'authentifier sur la machine A.

La machine A peut accéder à la base de données à l'adresse localhost:1234.


Comme pour le tunnel local, seule la liaison entre les machines A et B sera chiffrée.

Création d'un tunnel distant en ligne avec Putty


Renseignez les champs comme ceci (et Cliquez sur "Add")

Une fois les champs renseignés, cliquez sur "Open".


Vous devrez vous authentifier sur la machine A.

Une fois l'authentification réalisée, la machine A pourra accéder à la base de données


de B à l'adresse localhost:1234.

Le tunnel restera ouvert tant que Putty sera connecté à la machine A.


Cas n°2

Une fois les champs renseignés, cliquez sur "Open".


Vous devrez vous authentifier sur la machine A.
Une fois l'authentification réalisée, la machine A pourra accéder à la base de données
de C à l'adresse localhost:1234.
Le tunnel restera ouvert tant que Putty sera connecté à la machine A.

III. Introduction aux tunnels dynamiques


Limitations de la redirection de ports

M.FILALI Linux : Administration des Serveurs 167 M.FILALI Linux : Administration des Serveurs 168
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Le problème de cette technique est qu'il faut définir absolument toutes les connexions TP : Navigation sur l'Internet via Tunnel SSH
dont vous avez besoin, ce qui peut s'avérer extrêmement lourd si vous en avez
Supposons qu'on veut se connecter à un site web (requête HTTP) mais qu'il soit bloqué.
beaucoup. Certains services, tels ICQ, rendent cette technique impossible. Pour cause,
On va simple transiter via le tunnel pour atteindre notre serveur qui ira chercher
les ports y sont alloués de façon dynamique, vous ne sauriez donc pas utiliser ce service
l'information et nous la renverra, comme illustré sur ce schéma
dans ces conditions, vu que votre tunnel est statique.
La solution qui a été trouvée pour palier à ces problèmes est la redirection dynamique
des ports.
Vous créez un port d'écoute qui se charge de prendre toute trame réseau qui rentre
"telle quelle" et de la faire exécuter depuis l'autre bout du tunnel.
Voila un petit schéma qui illustre bien cela

Réalicer la maquette, configurer le Tunnel SSH et tester l’accès au serveur Web ?

1. Sur le serveur configurer et redemarrer SSH


2. Sur le serveur demarrer le service httpd
La syntaxe de la commande à utiliser est essentiellement la même. On va commencer
par initialiser notre tunnel 3. Apartir du client tester l’accès au serveur web via le navigateur
http://serveurweb.org/  la page web sera affichée
~]# ssh -D port-local nomutilisateur@nomhôte
4. Sur le serveur activer le par feu et blocker le port web 80
Maintenant que votre tunnel est ouvert, nous allons demander à vos applications de
5. Apartir du client retester l’accès au serveur web via le navigateur
l'emprunter.
http://serveurweb.org/  erreur d’accès
Ouvrez donc votre navigateur. Allez dans éditions -> préférences -> avancé -> réseau ->
paramètres de connexion. 6. Apartir du client créer un tunnel SSH
7. Apartir du client retester l’accès au serveur web via tunnel SSH
http://localhost:2080  la page web sera affichée
8. Arreter le tunnel et actualiser la page web du navigateur
http://localhost:2080  erreur d’accès
9. Enregistrer une copie des fichiers de configuration de votre machine
10.Quitter par la commande : exit
11.Rédiger un Rapport du TP (Commandes Résultats Interpretations)

Configuration de votre navigateur

Ensuite, votre navigateur devrait correctement emprunter votre tunnel et tout devrait
se dérouler correctement.

M.FILALI Linux : Administration des Serveurs 169 M.FILALI Linux : Administration des Serveurs 170
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

CH7 : Implémenter le serveur de partage NFS Lance le serveur NFS et les processus RPC appropriés pour servir les requêtes des
systèmes de fichiers NFS partagés.
nfslock

~]# servicectl start nfs-lock 


Active un service obligatoire qui lance les processus RPC appropriés, ce qui permet aux
clients NFS de verrouiller des fichiers sur le serveur.
rpcbind : rpcbind accepte les réservations de ports des services RPC locaux. Ces
ports sont ensuite mis à disponibilité (ou publicisés) afin que les services RPC à
distance correspondants puissent y accéder. rpcbind répond à des requêtes de
service RPC et paramètre des connexions vers le service RPC requis. Ceci n'est pas
Un système de fichiers NFS (« Network File System ») permet aux hôtes distants de utilisé avec NFSv4.
monter les systèmes de fichiers sur un réseau et d'interagir avec ces systèmes de
Les processus RPC suivants facilitent les services NFS :
fichiers tant que ceux-ci sont montés localement. Ceci permet aux administrateurs
21. rpc.mountd : Ce processus est utilisé par un serveur NFS pour traiter les
système de consolider leurs ressources sur des serveurs centralisés sur le réseau.
requêtes MOUNT des clients NFSv3. Il vérifie que le partage NFS requis est
Ce chapitre traite des concepts NFS fondamentaux et fournit également des
actuellement exporté par le serveur NFS, et que le client est autorisé à y accéder.
informations supplémentaires
Si la requête de montage est autorisée, le serveur rpc.mountd répond avec le

1. Fonctionnement NFS statut Success (« Opération réussie ») et retourne l'identificateur de fichier « File-


Actuellement, il y a deux versions de NFS incluses. NFS version 3 (NFSv3) prend en Handle » de ce partage NFS au client NFS.
charge les écritures asynchrones sécurisées et offre une gestion des erreurs plus robuste 22. rpc.nfsd : rpc.nfsd permet de définir les versions et protocoles NFS explicites
que NFSv2. NFSv3 prend aussi en charge les fichiers et décalages d'une taille de 64 publicisés par le serveur. Celui-ci fonctionne avec le noyau Linux afin de
bits, permettant ainsi aux clients d'accéder à plus de 2 Go de données de fichiers. répondre aux demandes des clients NFS, comme pour fournir des threads chaque
NFSv4 fonctionne à travers les parefeux et sur l'Internet, n'a plus besoin du fois qu'un client NFS se connecte. Ce processus correspond au service nfs.
service rpcbind, prend en charge les ACL, et utilise les opérations stateful. 23. Lockd : lockd est un thread du noyau qui peut être exécuté sur les clients et les
1.1. Services requis serveurs. Il implémente le protocole NLM (« Network Lock Manager »), qui
Toutes les versions NFS reposent sur les RPC (Remote Procedure Calls) entre clients et permet aux clients NFSv3 de verrouiller des fichiers sur le serveur. Il est lancé
serveurs. Les services RPC sous Linux sont contrôlés par le service rpcbind. Pour automatiquement à chaque fois que le serveur NFS est exécuté et à chaque fois
partager ou monter les systèmes de fichiers NFS, les services suivants travaillent qu'un système de fichiers NFS est monté.
ensemble selon la version NFS implémentée : 24. rpc.statd : Ce processus implémente le protocole RPC NSM (« Network Status
nfs Monitor »), qui notifie les clients NFS lorsqu'un serveur NFS est redémarré sans
avoir tout d'abord été éteint correctement. rpc.statd est automatiquement
~]# servicectl start nfs 
démarré par le service nfslock, et ne requiert pas de configuration utilisateur. Ce
protocole n'est pas utilisé avec NFSv4.

M.FILALI Linux : Administration des Serveurs 171 M.FILALI Linux : Administration des Serveurs 172
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
25. rpc.rquotad : Ce processus fournit des informations sur le quota d'utilisateur échouera. Le type de système de fichiers nfs4 est également disponible pour des raisons
des utilisateurs distants. rpc.rquotad est automatiquement démarré par le d'héritage ; ceci est équivalent à exécuter 
service nfs et ne requiert pas de configuration utilisateur. ~]# mount -t nfs -o nfsvers=4 host:/remote/export/local/directory
26. rpc.idmapd : rpc.idmapd fournit des appels ascendants client et serveur NFSv4, Si un partage NFS a été monté manuellement, le partage ne sera pas automatiquement
qui mappent simultanément les noms NFSv4 (chaînes sous le monté après un redémarrage. Linux offre deux méthodes pour monter des systèmes de
format utilisateur@domaine) et les UID et GID locaux. Pour qu’idmapd puisse fichiers à distance automatiquement pendant un démarrage : le fichier /etc/fstab et le
fonctionner avec NFSv4, le fichier /etc/idmapd.conf doit être configuré. Au service autofs.
minimum, le paramètre « Domaine », qui définit le domaine de mappage NFSv4, 1.2.1. Monter des systèmes de fichiers NFS à l'aide de /etc/fstab
doit être spécifié. Si le domaine de mappage NFSv4 est le même que le nom de Exemple de syntaxe
domaine DNS, oubliez ce paramètre. Le client et le serveur doivent se mettre La syntaxe générale de la ligne du fichier /etc/fstab est comme suit :
d'accord sur le domaine de mappage NFSv4 pour que le mappage d'ID fonctionne server:/usr/local/pub /pub nfs defaults 0 0
correctement. Le point de montage /pub doit exister sur l'ordinateur client avant que cette commande
puisse être exécutée. Après avoir ajouté cette ligne à /etc/fstab sur le système client,
Note : Seul le serveur NFSv4 utilise rpc.idmapd. Le client NFSv4 utilise nfsidmap de
veuillez utiliser la commande mount /pub, et le point de montage /pub est monté à
l'imapper basé-keyring. nfsidmap est un programme autonome appelé par le noyau à la
partir du serveur.
demande pour effectuer les mappages d'ID ; ce n'est pas un démon. S'il y a un problème
Une entrée /etc/fstab valide pour monter un export NFS doit contenir les informations
avec nfsidmap, le client utilise alors rpc.idmapd.
suivantes :
1.2. Configuration du client NFS
La commande mount monte les partages NFS côté client. Son format est comme suit : server:/remote/export /local/directory nfs options 0 0

~]# mount -t nfs -o options server:/remote/export /local/directory Les variables server, /remote/export, /local/directory, et options sont les mêmes que

Cette commande utilise les variables suivantes : lors d'un montage de partage NFS manuel.

options : Liste d'options de montage séparées par des virgules. Note : Le point de montage /local/directory doit exister sur le client avant la lecture

server : Nom d'hôte, adresse IP, ou nom de domaine complet du serveur exportant le de /etc/fstab. Sinon le montage échouera.

système de fichiers que vous souhaitez monter Pour obtenir davantage d'informations sur /etc/fstab, veuillez consulter man fstab.

/remote/export : Système de fichiers ou répertoire en cours d'exportation du serveur, 1.2.2. autofs


Un inconvénient lié à l'utilisation de /etc/fstab fait que peu importe la fréquence à
c'est-à-dire le répertoire que vous souhaitez monter
laquelle un utilisateur accède au système de fichiers NFS monté, le système doit dédier
/local/directory : Emplacement du client où /remote/export est monté
des ressources afin de garder le système de fichiers en place. Il ne s'agit pas d'un
La version du protocole NFS utilisée est identifiée par les
problème avec un ou deux montages, mais lorsque le système maintient les montages
options mount nfsvers ou vers. Par défaut, mount utilisera NFSv4 avec mount -t nfs. Si
de nombreux systèmes à la fois, les performances générales du système peuvent être
le serveur ne prend pas en charge NFSv4, le client passera automatiquement à une
affectées. Une alternative à /etc/fstab consiste à utiliser l'utilitaire basé
version prise en charge par le serveur. Si l'option nfsvers/vers est utilisée pour passer
noyau automount. Automounter consiste en deux composants :
une version particulière qui n'est pas prise en charge par le serveur, le montage
 Un module de noyau qui implémente un système de fichiers, et
 un démon de l'espace utilisateur qui effectue toutes les autres fonctions.

M.FILALI Linux : Administration des Serveurs 173 M.FILALI Linux : Administration des Serveurs 174
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
L'utilitaire automount peut monter et démonter des systèmes de fichiers NFS ~]# systemctl stop nfs
automatiquement (montage à la demande), et permet donc d'économiser des ressources L'option restart est une façon rapide d'arrêter, puis de redémarrer NFS. Cette manière
système. Il peut être utilisé pour monter d'autres systèmes de fichiers, y compris AFS, est la plus efficace pour que les changements de configuration puissent prendre effet
SMBFS, CIFS, et des systèmes de fichiers locaux. après avoir modifié le fichier de configuration pour NFS. Pour redémarrer le serveur,
Important : Le paquet nfs-utils fait désormais partie des groupes « NFS file server » et veuillez saisir :
« Network File System Client ». Ainsi, il n'est plus installé par défaut avec le groupe de ~]# systemctl restart nfs
base. Assurez-vous que nfs-utils soit installé sur le système avant de tenter un montage
Une fois que vous aurez modifié le fichier /etc/sysconfig/nfs, redémarrez le service nfs-
automatique sur un partage NFS.
config en exécutant la commande suivante pour que les nouvelles valeurs puissent
autofs fait également partie du groupe « Network File System Client ».
prendre effet :
autofs utilise /etc/auto.master (mappage principal) comme fichier de configuration
~]# systemctl restart nfs-config
principal. Ceci peut être changé afin d'utiliser une autre source réseau et un autre nom
La commande try-restart ne démarre nfs que s'il est en cours d'exécution. Cette
pris en charge en utilisant la configuration autofs (dans /etc/sysconfig/autofs) en
commande équivaut à condrestart (conditional restart) dans les scripts init, et est
conjonction avec le mécanisme NSS (« Name Service Switch »). Une instance du
utilisée car elle ne démarre pas le démon si NFS n'est pas en cours d'exécution.
démon autofs version 4 était exécutée pour chaque point de montage configuré dans le
Pour redémarrer le serveur de façon conditionnelle, saisir :
mappage principal, lui permettant d'être exécutée manuellement à partir de la ligne de
~]# systemctl try-restart nfs
commande pour tout point de montage donné. Ceci n'est pas possible
Pour recharger le fichier de configuration du serveur NFS sans redémarrer le service,
avec autofs version 5, car un seul démon est utilisé pour gérer tous les points de
veuillez saisir :
montage configurés dans le mappage principal. Ceci est effectué conformément aux
~]# systemctl reload nfs
conditions préalables des autres automounters (monteurs automatiques) standards du
secteur. Les points de montage, noms d'hôte, répertoires exportés, et les options
3. Configuration du serveur NFS
peuvent tous être spécifiés dans un ensemble de fichiers (ou autres sources réseau Il existe deux manières de configurer les exportations sur un serveur NFS :
prises en charge) plutôt que de devoir les configurer manuellement pour chaque hôte.  La configuration manuelle du fichier de configuration NFS /etc/exports, et
 à l'aide de la ligne de commande, en utilisant la commande exportfs
2. Démarrage et arrêt NFS
Pour exécuter un serveur NFS, le service rpcbind doit être en cours d'exécution. Pour 3.1. Fichier de configuration /etc/exports
Le fichier /etc/exports contrôle quels systèmes de fichiers sont exportés vers des hôtes
vérifier que rpcbind soit effectivement actif, veuillez utiliser la commande suivante :
distants et spécifie les options. Les règles de syntaxes suivantes sont observées :
~]# systemctl status rpcbind
 Les lignes vides sont ignorées.
Si le service rpcbind est en cours d'exécution, alors le service nfs peut être lancé. Pour
 Pour ajouter un commentaire, commencez la ligne par le caractère dièse (#).
démarrer un serveur NFS, veuillez utiliser la commande suivante :
 Pour les longues lignes, il est possible d'effectuer des retours à la ligne avec une
~]# systemctl start nfs
barre oblique inversée (\).
Pour permettre à NFS de démarrer à l'amorçage, utiliser la commande suivante :  Chaque système de fichiers exporté devrait se trouver sur une ligne individuelle.
~]# systemctl enable nfs-server  Toute liste d'hôtes non autorisés placée après un système de fichiers exporté doit
Pour arrêter le serveur, veuillez utiliser : être séparée par des caractères d'espace.

M.FILALI Linux : Administration des Serveurs 175 M.FILALI Linux : Administration des Serveurs 176
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
 Les options de chaque hôte doivent être placées directement après l'identifiant de comportement, veuillez spécifier no_wdelay. no_wdelay est uniquement disponible si
l'hôte, sans espace séparant l'hôte et la première parenthèse. l'option par défaut sync est également spécifiée.
Chaque entrée de système de fichiers exporté possède la structure suivante : root_squash : Ceci empêche les utilisateurs root connectés à distance (et non locaux)
export host(options) d'avoir des privilèges root. Au lieu de cela, le serveur NFS leurs assignera l'ID

La structure mentionnée ci-dessus utilise les variables suivantes : d'utilisateur nfsnobody. Ceci « écrasera » (ou réduira) les capacités de l'utilisateur root à

export : Répertoire en cours d'exportation celles d'un utilisateur local du plus bas niveau possible, empêchant ainsi toute écriture

host : Hôte ou réseau sur lequel l'exportation est partagée non autorisée sur le serveur distant. Pour désactiver l'écrasement root, veuillez

options : Options à utiliser pour l'hôte spécifier no_root_squash.

Il est également possible de spécifier plusieurs hôtes avec des options spécifiques pour Pour écraser tous les utilisateurs distants (y compris les utilisateurs root),

chacun d'entre eux. Pour ceci, veuillez les répertorier sur la même ligne en tant que utilisez all_squash. Pour spécifier les ID des groupes et des utilisateurs que le serveur

liste séparée par des espaces, en veillant à ce que chaque nom d'hôte soit bien suivi par NFS devrait assigner à des utilisateurs distants à partir d'un hôte en particulier,

ses options respectives (entre parenthèses), comme suit : veuillez utiliser les options anonuid et anongid respectives, comme suit :

export host1(options1) host2(options2) host3(options3) export host(anonuid=uid,anongid=gid)

Sous sa forme la plus simple, le fichier /etc/exports spécifie uniquement le répertoire uid et gid sont les numéros d'ID d'utilisateur et les numéros d'ID de groupe respectifs.

exporté et les hôtes autorisés à y accéder, comme dans l'exemple suivant : Les options anonuid et anongid vous permettent de créer un compte utilisateur et

Fichier /etc/exports groupe spécifique que les utilisateurs NFS distants peuvent partager.

/exported/directory bob.example.com Par défaut, les listes de contrôle d'accès ou ACL (access control lists) sont prises en
charge par NFS. Pour désactiver cette fonctionnalité, veuillez spécifier
Ici, bob.example.com peut monter /exported/directory/ à partir du serveur NFS. Comme
l'option no_acl lorsque vous exportez le système de fichiers.
aucune autre fonction n'est spécifiée dans cet exemple, NFS utilisera les
paramètres par défaut. Chaque valeur par défaut de chaque système de fichiers exporté doit être explicitement
remplacée. Par exemple, si l'option rw n'est pas spécifiée, alors le système de fichiers
Les paramètres par défaut sont les suivants :
exporté est partagé en lecture seule. Ci-dessous figure un exemple de ligne
ro : Le système de fichiers exporté est accessible en lecture seule. Les hôtes distants ne
de /etc/exports qui remplace deux options par défaut :
peuvent pas modifier les données partagées sur le système de fichiers. Pour autoriser
des hôtes à effectuer des modifications sur le système de fichiers (par exemple, /another/exported/directory 192.168.0.3(rw,async)

lecture/écriture), veuillez spécifier l'option rw. Dans cet exemple, 192.168.0.3 peut monter /another/exported/directory/ en

sync : Le serveur NFS ne répondra pas aux requêtes effectuées avant que les lecture/écriture et toutes les écritures sur disque seront asynchrones. Pour obtenir

changements demandés par les requêtes précédentes soient écrits sur disque. Sinon, davantage d'informations sur les options d'export, veuillez consulter man exportfs.

pour activer les écritures asynchrones, veuillez spécifier l'option async. D'autres options sont disponibles lorsqu'aucune valeur par défaut n'est spécifiée. Celles-

wdelay : Le serveur NFS retardera l'écriture sur disque s'il suspecte qu'une autre ci incluent la possibilité de désactiver la vérification de sous-arborescence, autorise

requête d'écriture est imminente. Ceci peut améliorer les performances car il y a une l'accès à partir de ports non-sécurisés et autorise les verrouillages non-sécurisés

réduction du nombre d'accès au disque par le biais de commandes d'écriture séparées, (nécessaires pour certaines implémentations de clients NFS plus anciennes). Veuillez

réduisant ainsi également l'alourdissement des écritures. Pour désactiver ce consulter man exportspour obtenir davantage de détails sur ces options moins souvent
utilisées.

M.FILALI Linux : Administration des Serveurs 177 M.FILALI Linux : Administration des Serveurs 178
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Important : Le format du fichier /etc/exports est très précis, particulièrement au spécifée, /usr/sbin/exportfs exportera tous les systèmes de fichiers spécifiés
regard de l'utilisation du caractère espace. Rappelez-vous de toujours séparer les dans /etc/exports.
systèmes de fichiers exportés des hôtes et les hôtes les uns des autres avec un caractère -o file-systems : Spécifie les répertoires à exporter qui ne sont pas répertoriés
espace. Toutefois, il ne devrait pas y avoir d'autres caractères espace dans le fichier, dans /etc/exports. Remplacez file-systems par les systèmes de fichiers supplémentaires à
sauf sur les lignes de commentaire. exporter. Ces systèmes de fichiers doivent être formatés de la même manière qu'ils sont
Par exemple, les deux lignes suivantes n'ont pas la même signification : spécifiés dans /etc/exports. Cette option est souvent utilisée pour tester un système de
/home bob.example.com(rw) fichiers exporté avant de l'ajouter de manière permanente à la liste des systèmes de
/home bob.example.com (rw) fichiers devant être exportés.

La première ligne autorise aux utilisateurs de bob.example.com d'accéder en -i : Ignore /etc/exports ; seules les options passées avec la ligne de commande sont

lecture/écriture au répertoire /home. La seconde ligne autorise les utilisateurs utilisées pour définir les systèmes de fichiers exportés.

de bob.example.com de monter le répertoire en tant que lecture seule (par défaut), -u : Annule l'export de tous les répertoires partagés. La commande /usr/sbin/exportfs -

tandis que tout monde peut le monter en lecture/écriture. uasuspend le partage NFS tout en laissant les démons NFS fonctionner. Pour réactiver

3.2. Commande exportfs le partage NFS, veuillez utiliser exportfs -r.


Chaque système de fichiers exporté vers des utilisateurs distants avec NFS, ainsi que le -v : Opération détaillée, les systèmes de fichiers dont l'export ou l'annulation de l'export
niveau d'accès de ces systèmes de fichiers, sont répertoriés dans le fichier /etc/exports. est en cours sont affichés avec plus de détails lorsque la commande exportfs est
Lorsque le service nfs démarre, la commande /usr/sbin/exportfs lance et lit ce fichier, exécutée.
passe le contrôle à rpc.mountd (si NFSv2 ou NFSv3 est utilisé) pour le processus de Si aucune option n'est passée avec la commande exportfs, celle-ci affichera une liste des
montage, puis à rpc.nfsd où les systèmes de fichiers seront ensuite disponibles aux systèmes de fichiers actuellement exportés. Pour obtenir des informations
utilisateurs distants. supplémentaires sur la commande exportfs, veuillez consulter man exportfs.
Lorsqu'exécutée normalement, la commande /usr/sbin/exportfs permet à l'utilisateur 3.2.1. Utiliser exportfs avec NFSv4
root d'exporter ou d'annuler l'exportation des répertoires de manière sélective, sans Aucune étape supplémentaire n'est requise pour configurer les exports NFSv4 car tous

redémarrer le service NFS. Lorsque les bonnes options sont passées, la les systèmes de fichiers mentionnés sont automatiquement disponibles aux clients

commande /usr/sbin/exportfs écrit les systèmes de fichiers exportés sur /var/lib/nfs/xtab. NFSv3 et NFSv4 qui utilisent le même chemin. Ce n'était pas le cas dans les versions

Comme rpc.mountd fait référence au fichier xtab lors de la décision d'octroi des précédentes.

privilèges d'accès à un système de fichiers, tout changement apporté à la liste des Pour empêcher aux clients d'utiliser NFSv4, veuillez l'éteindre en

systèmes de fichiers exportés prendra effet immédiatement. définissant RPCNFSDARGS= -N 4 à /etc/sysconfig/nfs.

Ci-dessous figure une liste des options couramment utilisées disponibles 3.3. Exécuter NFS derrière un pare-feu
NFS requiert rpcbind, qui assigne dynamiquement des ports pour les services RPC et
pour /usr/sbin/exportfs :
peut provoquer des problèmes avec la configuration des règles de pare-feu. Pour
-r : Cause à tous les répertoires répertoriés dans /etc/exports d'être exportés en
autoriser les clients à accéder aux partages NFS derrière un pare-feu, veuillez modifier
construisant une nouvelle liste d'exports dans /etc/lib/nfs/xtab. Cette option réactualise
le fichier /etc/sysconfig/nfs pour contrôler les ports sur lesquels les services RPC seront
la liste des exports avec les changements apportés à /etc/exports.
exécutés.
-a : Cause à tous les répertoires d'être exportés ou annule leur export, en fonction des
autres options passées à /usr/sbin/exportfs. Si aucune autre option n'est

M.FILALI Linux : Administration des Serveurs 179 M.FILALI Linux : Administration des Serveurs 180
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Le fichier /etc/sysconfig/nfs n'existe pas par défaut sur tous les systèmes. /exports/bar
Si /etc/sysconfig/nfs n'existe pas, créez le et ajoutez les variables suivantes. Deuxièmement, sur n'importe quel serveur qui prend en charge NFSv4, montez le
Remplacez portpar un numéro de port non utilisé. Si /etc/sysconfig/nfs existe déjà, répertoire / et observez son contenu.
modifiez les entrées selon les besoins : ~]# mount myserver:/ /mnt/
RPCMOUNTDOPTS="-p port" ~]# cd /mnt/
Cela ajoute "-p port" à la ligne de commande rpc.mount : rpc.mount -p port. exports
LOCKD_TCPPORT=port ~]# ls exports
Cela définit le port TCP pour nlockmgr. foo

LOCKD_UDPPORT=port bar

Cela définit le port UDP pour nlockmgr. Sur les serveurs prenant en charge NFSv4 et soit NFSv2, soit NFSv3, les deux

Si NFS ne démarre pas, vérifier /var/log/messages. Normalement, NFS échoue au méthodes fonctionneront et offriront les mêmes résultats.

démarrage si vous indiquez un numéro de port déjà utilisé. Une fois que vous aurez Note : Sur les anciens serveurs NFS, et en fonction de leur configuration, il était

édité /etc/sysconfig/nfs, il vous faudra redémarrer le service nfs-config pour que les possible d'exporter des systèmes de fichiers sur des clients NFSv4 sur différents

nouvelles valeurs puissent prendre effet, en exécutant : chemins. Comme ces serveurs n'activent pas NFSv4 par défaut, ceci ne devrait pas

~]# systemctl restart nfs-config poser de problème.

Puis, redémarrez le serveur NFS. 3.4. Formats des noms d'hôtes


L'hôte peut se trouver sous les formats suivants :
~]# systemctl restart nfs-server
Machine unique : Un nom de domaine complet (pouvant être résolu par le serveur),
Exécutez rpcinfo -p pour confirmer que les changements ont pris place.
un nom d'hôte (pouvant être résolu par le serveur), ou une adresse IP.
Note : Pour autoriser les rappels NFSv4.0 à passer à travers les pare-feux,
Série d'ordinateurs spécifiés avec des caractères génériques
paramétrez /proc/sys/fs/nfs/nfs_callback_tcpport et autorisez le serveur à se connecter à
Utilisez le caractère * ou ? pour spécifier une chaîne correspondante. Les caractères
ce port sur le client.
génériques ne doivent pas être utilisés avec les adresses IP. Cependant, cela peut
Ce processus n'est pas nécessaire pour NFSv4.1 ou ses versions supérieures, et les
fonctionner accidentellement si des recherches DNS inversées échouent. Lors de la
autres ports de mountd, statd, et lockd ne sont pas requis dans un environnement
spécification de caractères génériques dans des noms de domaine complets, les points (.)
NFSv4 pure.
ne sont pas inclus dans la recherche. Par
3.3.1. Découverte des exports NFS
exemple, *.example.com inclut one.example.com mais n'inclut
Il existe deux manières de découvrir quels systèmes de fichiers sont exportés par un
pas one.two.example.com.
serveur NFS.
Réseaux IP : Utilisez a.b.c.d/z, où a.b.c.d est le réseau et z est le nombre d'octets dans
Premièrement, sur n'importe quel serveur qui prend en charge NFSv2 ou NFSv3,
le masque réseau (par exemple, 192.168.0.0/24). Un autre format acceptable
veuillez utiliser la commande showmount :
est a.b.c.d/netmask, où a.b.c.dest le réseau et netmask est le masque réseau (par
~]$ showmount -e myserver
exemple, 192.168.100.8/255.255.255.0).
Export list for mysever
Netgroups
/exports/foo
Veuillez utiliser le format @group-name, où group-name est le nom du netgroup NIS.

M.FILALI Linux : Administration des Serveurs 181 M.FILALI Linux : Administration des Serveurs 182
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
3.5. NFS sur RDMA En outre, si une personne mal intentionnée prenait contrôle du serveur DNS utilisé par
le service RDMA est automatique tant qu'il y a du matériel compatible avec RDMA
le système exportant le système de fichiers NFS, le système associé à un nom d'hôte ou
présent dans la machine. Ainsi, la procédure ne devra être suivie que si le package
à un nom de domaine complet peut être dirigé vers un ordinateur non autorisé. À ce
RDMA suivant n'a pas été installé lors de l'intallation de la machine.
moment, l'ordinateur non autorisé devient le système autorisé à monter le partage NFS,
Procédure pour Activez RDMA à partir du client
puisqu'aucune information sur le nom d'utilisateur ou sur le mot de passe n'est
1. Installez le package RDMA :
échangée pour fournir une sécurité supplémentaire au montage NFS.
~]# yum install rdma Les caractères génériques doivent être utilisés avec précaution lors de l'export de
2. Recréer initramfs : répertoires à travers NFS, car il est possible que l'étendue du caractère générique
~]# dracut -f puisse englober davantage de systèmes que prévu.
3. Démarrez à nouveau. Il est également possible de restreindre l'accès au service rpcbind avec des enveloppes
TCP. La création de règles avec iptables peut également limiter l'accès aux ports
4. Sécurisation de NFS
utilisés par rpcbind, rpc.mountd, et rpc.nfsd.
NFS est bien adapté au partage de systèmes de fichiers entiers avec un grand nombre
Pour obtenir des informations supplémentaires sur la sécurisation de NFS et rpcbind,
d'hôtes connus de manière transparente. Cependant, cette facilité d'utilisation entraîne
veuillez consulter man iptables.
toute une variété de problèmes de sécurité potentiels. Prenez en considération les
4.2. Sécurité NFS avec AUTH_GSS
sections suivantes lorsque vous exportez des systèmes de fichiers NFS sur un serveur
La sortie de NFSv4 a provoqué une révolution dans la sécurité NFS en mandatant
ou lorsque vous les montez sur un client. Cela minimisera les risques de sécurité NFS
l'implémentation de RPCSEC_GSS et du mécanisme GSS-API Kerberos version 5.
et protégera mieux les données sur le serveur.
Cependant, RPCSEC_GSS et le mécanisme Kerberos sont aussi disponibles pour toutes
4.1. Sécurité NFS avec AUTH_SYS et les contrôles d'export
les versions de NFS. en mode FIPS, vous ne pouvez utiliser que les algorithmes
Traditionnellement, NFS offrait deux options pour contrôler l'accès aux fichiers
autorisés par FIPS.
exportés.
Avec le mécanisme Kerberos RPCSEC_GSS, le serveur ne dépend plus du client pour
Premièrement, le serveur contrôle quels hôtes sont autorisés à monter quels systèmes
correctement représenter les utilisateurs qui accèdent au fichier, tout comme avec
de fichiers, soit par adresse IP ou par nom d'hôte.
AUTH_SYS. Au lieu de cela, un chiffrement est utilisé pour authentifier les utilisateurs
Puis le serveur applique les permissions du système de fichiers pour les utilisateurs des
sur le serveur, empêchant ainsi à un client mal intentionné de prendre la place d'un
clients NFS de la même manière que pour les utilisateurs locaux. Traditionnellement,
utilisateur sans posséder les informations d'utilisation Kerberos de cet utilisateur. Il est
ceci est fait à l'aide d'AUTH_SYS (aussi appelé AUTH_UNIX), qui se fie au client pour
également plus facile ainsi de sécuriser les montages sécurisés, puisqu'après que la
indiquer l'UID et le GID de l'utilisateur. Soyez conscient que cela signifie qu'un client
configuration Kerberos a eu lieu, cela fonctionne sans modification supplémentaire.
mal configuré ou malicieux pourrait facilement mal comprendre ceci et autoriser un
Pour paramétrer RPCSEC_GSS, veuillez utiliser la procédure suivante :
utilisateur à accéder à des fichiers auxquels il ne devrait pas avoir accès.
Procédure pour Paramétrer RPCSEC_GSS
Pour limiter les risques potentiels, les administrateurs autorisent souvent l'accès en
1. Créez les principaux 
lecture seule ou limitent les permissions utilisateur à un utilisateur et un ID de groupe
nfs/client.mydomain@MYREALM  et  nfs/server.mydomain@MYREALM
communs. Malheureusement, ces solutions empêchent le partage NFS d'être utilisé
2. Ajoutez les clés correspondant aux onglets principaux pour le client et le serveur.
comme prévu à l'origine.

M.FILALI Linux : Administration des Serveurs 183 M.FILALI Linux : Administration des Serveurs 184
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
3. Du côté serveur, veuillez ajouter sec=krb5:krb5i:krb5p à l'export. Pour continuer à L'utilitaire rpcbind mappe les services RPC aux ports qu'ils écoutent. Les processus
autoriser AUTH_SYS, veuillez ajouter sec=krb5:krb5i:krb5p à la place. RPC notifient rpcbind lorsqu'ils démarrent, en enregistrant les ports qu'ils écoutent et
4. Du côté client, veuillez ajouter sec=krb5 (ou sec=krb5i, ou sec=krb5p, en fonction de les numéros de programme RPC qu'ils prévoient de servir. Le système client contacte
l'installation) aux options de montage. ensuite rpcbind sur le serveur avec un numéro de programme RPC particulier. Le

4.2.1. Sécurité NFS avec NFSv4 service rpcbindredirige le client vers le numéro de port correct afin de pouvoir
NFSv4 inclut la prise en charge des ACL basée sur le modèle Microsoft Windows NT, et communiquer avec le service requis.
non sur le modèle POSIX, à cause des fonctionnalités et du déploiement global de ce Comme les services basés RPC se fient à rpcbind pour effectuer toutes les connexions
dernier. avec les requêtes client entrantes, rpcbind doit être disponible avant que ces services ne
Une autre fonctionnalité importante de NFSv4 est la suppression de l'utilisation du démarrent.
protocole MOUNT pour monter les systèmes de fichiers. Ce protocole présentait des Le service rpcbind utilise des enveloppes TCP pour le contrôle d'accès, les règles de
failles de sécurité possibles à cause de la manière par laquelle il traitait les contrôle d'accès de rpcbind affectent tous les services basés RPC. De manière
identificateurs de fichiers. alternative, il est possible de spécifier les règles de contrôle d'accès de chacun des
4.3. Permissions de fichier démons RPC NFS. Les pages man de rpc.mountd et rpc.statd contiennent des
Une fois que le système de fichiers NFS est monté en lecture/écriture par un hôte
informations concernant la syntaxe précise de ces règles.
distant, la seule protection que chaque fichier partagé possède ses permissions. Si deux
5.1. Résolution des problèmes NFS et rpcbind
utilisateurs partageant la même valeur d'ID d'utilisateur montent le même système de Comme rpcbind fournit la coordination entre les services RPC et les numéros de port
fichiers NFS, ils pourront chacun modifier les fichiers de l'autre. En outre, toute utilisés pour communiquer avec ceux-ci, il est utile d'afficher le statut des services RPC
personne connectée en tant que root sur le système client peut utiliser la commande su en cours à l'aide de rpcbind lors des résolutions de problèmes. La
- pour accéder à tous les fichiers du partage NFS. commande rpcinfo affiche chaque service basé RPC avec les numéros de port, un
Par défaut, les listes de contrôle d'accès (ACL) sont prises en charge par NFS il est numéro de programme RPC, un numéro de version, et un type de protocole IP (TCP ou
recommandé de laisser cette fonctionnalité activée. UDP).
Par défaut, NFS utilise root squashing (« Écrasement root ») lors de l'exportation d'un Pour vous assurer que les bons services NFS basés RPC soient activés pour rpcbind,
système de fichiers. Ceci définit l'ID d'utilisateur de tout utilisateur root local accédant veuillez saisir la commande suivante :
au partage NFS en tant que nobody (personne). Le root squashing est contrôlé par # rpcinfo -p
l'option par défaut root_squash. Dans la mesure du possible, ne désactivez jamais le
Si l'un des services NFS ne démarre pas correctement, rpcbind sera incapable de
root squashing.
mapper les requêtes RPC des clients de ce service sur le bon port. Dans de nombreux
Lors de l'exportation d'un partage NFS en lecture seule, veuillez considérer l'utilisation
cas, si NFS n'est pas présent dans la sortie rpcinfo, redémarrer NFS entraînera le bon
de l'option all_squash. Cette option fait que tout utilisateur accédant au système de
enregistrement du service avec rpcbind et le début de son fonctionnement.
fichiers exporté prendra l'ID utilisateur de l'utilisateur nfsnobody.

5. NFS et rpcbind
Note : La section suivante s'applique uniquement aux implémentations NFSv3 qui
nécessitent le service rpcbind pour une compatibilité ascendante.

M.FILALI Linux : Administration des Serveurs 185 M.FILALI Linux : Administration des Serveurs 186
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°7-1 : Implémenter le serveur de partage NFS (Ennoncé) TP-N°7-1 : Implémenter le serveur de partage NFS (Corrigée)
linux1 (192.168.1.2) linux2 (192.168.1.3) I. configuration du serveur
Configurer le nome de la machine
~]# hostnamectl set-hostname srv-nfs
~]# hostname
srv-nfs
Serveur NFS Client NFS Configurer la carte reseau du serveur
Le service NFS (Network File System) assure la publication sur le réseau (à partir d'un ~]# ifconfig ens33 192.168.1.2 netmask 255.255.255.0
serveur) et l'utilisation (à partir d'un client) d'une arborescence de fichiers. Pour ~]# ifconfig ens33
l'utiliser, nous devons préparer le serveur puis le client. ens33: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
Sur La Machine Linux1: inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
1) Vérifier est ce que le package NFS est installé ...
2) Afficher les informations de NFS Desactiver les parefeux
3) Demarrer et activer les services rpcbind et nfs-server
~] # systemctl stop firewalld
4) Vérifier est ce qu'il y a des fichiers montés NFS
~] # systemctl disable firewalld
5) Vérifer le port 111 rpc
~] # setenforce 0
6) Exporter les dossiers pour les clients distants
1- Vérifier est ce que le package nfs est installé
Créer le répertoire /projectx et y mettre quelque fichiers
~]# rpm -qa|grep nfs
7) Rendre le dossier disponible en lecture et écriture pour tous les clients
nfs-utils-1.3.4-1.rc2.fc25.i686
8) Vérifier les répertoires exportés
...
Sur La Machine Linux2
2- Afficher les informations de nfs
9) Accéder aux dossiers à partir des clients distants linux2 : 192.168.1.3
 Configurer le client NFS ~]# rpm -qi nfs-utils
 Monter le partage NFS
Name : nfs-utils
 Tester les droits d’accès
Sur La Machine Linux1 Epoch :1
10) Réexporter /projectx en lecture seule (pour 192.168.1.4) Version : 1.3.4
Sur La Machine Linux2 Release : 1.rc2.fc25
11) Accéder aux dossiers à partir des clients distants linux2 : 192.168.1.4 Architecture: i686
 Reconfigurer la carte réseau du client
...
 Monter le partage NFS
 Tester les droits d’accès 3- Demarrer et activer les services rpcbind et nfs-server
12) Enregistrer une copie des fichiers de configuration de votre machine
~]# systemctl start rpcbind
13) Quitter par la commande : exit
~]# systemctl enable rpcbind
14) Rédiger un Rapport du TP (Commandes Résultats Interpretations)
~]# systemctl status rpcbind

M.FILALI Linux : Administration des Serveurs 187 M.FILALI Linux : Administration des Serveurs 188
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

● rpcbind.service - RPC bind service Cette commande permet de vérifier les répertoires montés nfs
Active: active (running) since . . . II. configuration du client
... Configurer le nome de la machine
~]# systemctl start nfs-server ~]# hostnamectl set-hostname cli-nfs
~]# systemctl enable nfs-server Configurer la carte reseau du client
~]# systemctl status nfs-server ~] # ifconfig ens33 192.168.1.3 netmask 255.255.255.0
● nfs-server.service - NFS server and services ~]# ifconfig ens33
Active: active (exited) since. . . ens33: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
... inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255
4- Vérifier est ce qu'il y a des fichiers montés nfs ...
~]#showmount 192.168.1.2 Desactiver les parefeux
Hosts on 192.168.1.2: ~] # systemctl stop firewalld
5- Vérifer le port 111 rpc ~] # systemctl disable firewalld
~]# netstat -ntlp ~] # setenforce 0
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3552/rpcbind Tester la connectivite avec le serveur
6- Exporter les dossiers pour les clients distants ~] # ping 192.168.1.2
Créer le répertoire /projectx et y mettre quelque fichiers 64 bytes from 192.168.1.2: icmp_seq=44 ttl=64 time=72.0 ms
Changer les droits du dossier et son contenu 64 bytes from 192.168.1.2: icmp_seq=45 ttl=64 time=31.9 ms
~] # mkdir /projectx 64 bytes from 192.168.1.2: icmp_seq=46 ttl=64 time=0.522 ms
~] # touch /projectx/f1 a- Vérifier est ce que le package nfs est installé
~] # chmod 777 /projectx ; chmod 777 /projectx/f1 ~]# rpm -qa|grep nfs
7-Accéder au fichier /etc/exports et saisir la ligne nfs-utils-1.3.4-1.rc2.fc25.i686
~] # vi /etc/exports ...
/projectx *(rw) b- Afficher les informations de nfs
Cette ligne signifie de rendre le dossier disponible en lecture et écriture pour tous les ~]# rpm -qi nfs-utils
clients Name : nfs-utils
~]# exportfs -v Epoch :1
~]# exportfs -a Version : 1.3.4
8- Vérifier les répertoires exportés Release : 1.rc2.fc25

~]# showmount -e Architecture: i686

Export list for srv-nfs: c- Demarrer et activer le service rpcbind


/projectx * ~]# systemctl start rpcbind

M.FILALI Linux : Administration des Serveurs 189 M.FILALI Linux : Administration des Serveurs 190
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

~]# systemctl enable rpcbind ~]# mount -t nfs 192.168.1.2:/projectx /projectx


~]# systemctl status rpcbind Puis vérifier les points de montage (/projectx doit figurer)
● rpcbind.service - RPC bind service ~]# mount | grep 192.168.1.2
Active: active (running) since . . . 192.168.1.2:/projectx on /projectx type nfs4 (ro,…
... Tester les droits
d- Vérifier est ce qu'il y a des fichiers montés nfs ~]# cd /projectx
~]#showmount 192.168.1.2 ~]# vi f1 #Impossible de modifier !
Hosts on 192.168.1.2: ~]# mkdir rep2 # le dossier ne sera pas crée !
e- Vérifer le port 111 rpc
~]# netstat -ntlp Exercice : Que font ces Commandes ?
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3552/rpcbind ~]# systemctl start rpcbind nfs-server
9- Accéder aux dossiers à partir des clients distants linux2 192.168.1.3 ~]# systemctl enable rpcbind nfs-server

~]# mkdir /projectx ~]# systemctl start rpcbind

~]# chmod 777 /projectx ~]# systemctl enable rpcbind

~]# mount -t nfs 192.168.1.2:/projectx /projectx ~]# mount -t nfs 192.168.1.2:/home /home

Puis vérifier les points de montage (/projectx doit figurer) ~]# df -hT

~]# mount | grep 192.168.1.2 ~]# systemctl start autofs

192.168.1.2:/projectx on /projectx type nfs4 (rw,… ~]# systemctl enable autofs


~]# cd /mntdir
Tester les droits
~]# ll
~]# cd /projectx
~]# cat /proc/mounts | grep mntdir
~]# vi f1 #on peut modifier
~]# mkdir rep1 # le dossier sera crée (rw)
10- Réexporter /projectx en lecture seule pour 192.168.1.4
~]# vi /etc/exports
/projectx 192.168.1.3(rw) 192.168.1.4(ro)
Enregistrer
~]# exportfs -av
exporting 192.168.1.3:/projectx
exporting 192.168.1.4:/projectx
11- Accéder aux dossiers à partir des clients distants (sur linux2 192.168.1.4)
Modifier l’adresse IP du client Linux2
~]# ifconfig ens33 192.168.1.4

M.FILALI Linux : Administration des Serveurs 191 M.FILALI Linux : Administration des Serveurs 192
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°7-2 : Mise en place d’un serveur NFS (Devoir Libre) 7. Vérifiez sur le serveur les répertoires exportés avec la commande « showmount  -e » et
avec la commande exportfs?
Objectif : Savoir comment configurer et gérer un serveur NFS dans un réseau.
8. Vérifiez le contenu du fichier /var/lib/nfs/etab ?
Maquette de travail :
a. Quels sont les droits donnés par défaut à l’utilisateur root ?
Vous avez besoin de deux machines sous Linux. Une machine jouera le rôle du serveur
b. Quels sont les droits donnés par défaut aux autres utilisateurs ?
NFS et l’autre le rôle du client NFS. La figure suivante présente le schéma de la
c. Quel est le mode utilisé par défaut ?
maquette où le m désigne le numéro de Binôme.
d. Interprétez au moins trois des autres options par défaut ?
Attention : si vous montez une arborescence sur un répertoire local, et que ce
répertoire contient des fichiers, ils seront masqués le temps de montage.
9. Désactivez les parfeux sur la machine serveur et cliente ?
10. Depuis la machine cliente affichez les données exportées par le serveur ?
11. Créez sur le client deux points de montage : /montage/nfs2 et /montage/nfs1 ?
12. En utilisant la commande mount, montez les dossiers exportés par le serveur sur les
Manipulations
deux points de montage ?
1. Quel est le rôle d’un serveur NFS dans un réseau ?
13. Testez les accès aux ressources partagées à partir du client ?
2. Expliquez le fonctionnement de NFS ?
14. Vérifiez les permissions d’accès lecture/écriture ?
3. Est-ce que NFS est utilisé avec des machines Windows ? ou seulement avec des machines
a. A partir du client, créez un fichier sur le système de fichier accessible en lecture
Linux ?
seul (nfs2) ?
4. Utiliser le man pour les fichiers et commandes de configuration suivants et noter les
b. A partir du client, créez un fichier sur le système de fichier accessible en écriture
options et les informations utiles : exports, fstab, mount, showmount, exportfs, rpcinfo.
(nfs1) ?
I. Montage et export à la volé
15. Depuis la machine cliente, Vérifiez les fichiers montés à partir du serveur avec la
1. A partir des fichiers de configuration, Configurez correctement vos machines en leurs
commande « showmount –a » ?
donnant des adresses IP statiques ?
16. Démontez les systèmes de fichiers ?
2. Vérifiez la configuration en utilisant la commande ifconfig ?
17. Changez l’utilisateur avec lequel vous êtes connecté à la machine cliente ?
3. Testez la connectivité des deux machines avec la commande ping ?
18. Réessayez de monter l’un des répertoires exportés par le serveur ? que remarquez-
4. Activez et demarrez les services rpcbind et nfs-server ?
vous ?
5. Sur la machines serveur, créez deux répertoires de nom /partage/nfs2 et
19. Sur le serveur annuler le partage de /partage/nfs2 et /partage/nfs1 ? vérifiez
/partage/nfs1 ? créez un fichier fich1 et un répertoire rep1 dans /partage/nfs1 et un
l’annulation avec la commande exportfs ?
fichier fich2 et un répertoire rep2 dans /partage/nfs2 ?
II. Montage et export permanents
6. Partagez ces deux répertoires avec la commande exportfs tout en sachant que :
1. Vérifiez sur le serveur l’existence du fichier /etc/exports. S’il n’existe pas créez-le ?
 /partage/nfs2 sera partagé avec tout le monde en lecture seul 
2. Partagez d’une manière permanente les deux répertoires /partage/nfs2 avec tout le
 /partage/nfs1 sera partagé avec la deuxième machine en lecture/écriture
monde et /partage/nfs1 avec la machine cliente en spécifiant les options (rw et sync) et
(rw,async)?

M.FILALI Linux : Administration des Serveurs 193 M.FILALI Linux : Administration des Serveurs 194
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
3. sur le client, éditez et modifier le fichier /etc/fstab afin d’inclure les systèmes de fichiers CH8 : Implémenter le serveur de partage Samba
nfs exportés par le serveur en spécifiant les options (rw, sync et user) pour le partage
/partage/nfs2 et (rw et async) pour le partage /partage/nfs1? Ex :
192.168.m.1:/partage/nfs2 /montage/nfs2 nfs rw,sync,user 00
4. Redémarrez votre machine cliente et vérifiez que les modifications que vous avez
apportées dans le fichier fstab fonctionnent en utilisant la commande (showmount –a) ?
III. Montage automatique
1. Modifiez le fichier « fstab » afin de supprimer les montages permanents que vous avez
déjà configurés ? puis redémarrez votre machine cliente ?
2. Installer le package autofs
3. Activer et demarre le service autofs
4. Configurez correctement votre machine cliente afin de monter automatiquement les
répertoires déjà exportés dans la section précédente en utilisant les mêmes points de
montages et les mêmes options ?
~]# vi /etc/auto.master
#ajouter cette ligne à la fin
/- /etc/auto.mount
Editer le fichier Samba
~]# vi /etc/auto.mount Samba est une suite de programmes d'intéropérabilité Windows en source libre du
# Ajouter les points de montages Ex : protocole server message block (SMB). SMB permet à Microsoft Windows®, Linux,
/montage/nfs2 -fstype=nfs,rw,sync 192.168.m.1:/partage/nfs2 UNIX, et à d'autres systèmes d'exploitation d'accéder à des fichiers et à des

5. Redémarrez le service autofs ? imprimantes partagées à partir de serveurs qui prennent en charge ce protocole.

~]# service autofs restart L'utilisation de SMB par Samba leur permet d'apparaître comme serveur Windows

6. Utilisez les commandes tree et ls pour vérifier le montage automatique ? pour les clients Windows.
Note : Pour utiliser Samba, commencez par vous assurer que le paquet samba est
~]# tree point-de-montage
installé sur votre système en exécutant la commande suivante en tant
~]# ls point-de-montage
qu'utilisateur root :
7. Attendez 2min puis utilisez la commande tree pour vérifier le démontage
~]# yum install samba
automatique ?
~]# tree point-de-montage
1. Introduction à Samba
8. Enregistrer une copie des fichiers de configuration de votre machine Samba est un composant clé qui facilite l'intégration des serveurs Linux et des
9. Quitter par la commande : exit Desktops dans des environnements Active Directory (AD). Peut fonctionner soit en
10. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 195 M.FILALI Linux : Administration des Serveurs 196
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
contrôleur de domaine (NT4-style), soit en tant que membre de domaine standard (AD 2000, Windows XP, et LanManager. Il participte également aux protocoles de
ou NT4-style). navigation qui composent l'affichage du Voisinage réseau Windows. Le port par
Ce que Samba peut faire : défaut sur lequel le serveur écoute le trafic NMB et le port UDP 137.
 Servir des structures de répertoires et des imprimantes à des clients Linux, UNIX, Le démon nmbd est contrôlé par le service nmb.
et Windows Winbindd : Le service windbind résout les informations des utilisateurs et des groupes
 Assister lors de la navigation réseau (avec NetBIOS) reçues d'un serveur exécutant Windows NT, 2000, 2003, Windows Server 2008, ou
 Authentifier les connexions aux domaines Windows Windows Server 2012. Ceci rend les informations des utilisateurs et des groupes
 Fournir des résolutions de serveur de noms Windows Internet Name Service (WINS) Windows compréhensibles par les plateformes UNIX. Cela est effectué en utilisant des
 Agir en tant que contrôleur de domaine de sauvegarde (PDC) NT®-style Primary appels Microsoft RPC, PAM (« Pluggable Authentication Modules »), et NSS (« Name
Domain Controller Service Switch »). Cela permet aux utilisateurs de domaines Windows NT et d'AD
 Agir en tant que contrôleur de domaine de sauvegarde (BDC) Backup Domain (Active Directory) d'apparaître et d'opérer comme s'ils étaient des utilisateurs UNIX sur
Controller pour un PDC basé Samba une machine UNIX. Malgré qu'il soit combiné à la distribution Samba, le
 Agir en tant que serveur membre d'un domaine Active Directory service winbind est contrôlé séparément à partir du service smb.
 Joindre un serveur Windows NT/2000/2003/2008 PDC/Windows Server 2012 Le démon winbind est contrôlé par le service winbind et ne requiert pas que le
Ce que Samba ne peut pas faire : service smb soit lancé pour opérer. winbind est également utilisé lorsque Samba est un
 Agir en tant que BDC pour un PDC Windows (et vice-versa) membre d'Active Directory, et peut aussi être utilisé sur un contrôleur de domaines
 Agir en tant que contrôleur de domaine Active Directory Samba (pour implémenter des groupes imbriqués et une confiance interdomaines).
Comme winbind est un service côté client utilisé pour connecter des serveurs Windows
2. Démons Samba et services connexes
basés NT.
Samba comprend trois démons (smbd, nmbd, et winbindd). Trois services (smb, nmb,
et winbind) contrôlent la manière par laquelle les démons sont lancés, arrêtés, ainsi que 3. Se connecter à un partage Samba
d'autres fonctionnalités liées aux services. Ces services agissent comme scripts init Vous pouvez utiliser la commande Nautilus ou l'utilitaire de ligne de commande pour
différents. Chaque démon est répertorié de manière détaillée ci-dessous, ainsi que les vous connecter aux partages de Samba disponibles.
services spécifiques qui en possèdent le contrôle. Procédure pour Se connecter à un partage Samba via Nautilus
Smbd : Le démon du serveur smbd fournit des services d'impression et de partage de 1. Pour afficher une liste des groupes de travail Samba et des domaines sur votre
fichiers aux clients Windows. De plus, il est responsable pour l'authentification réseau, veuillez sélectionner Places → Réseau dans le panneau GNOME, puis
utilisateur, le verrouillage de ressources, et le partage de données via le protocole SMB. sélectionner le réseau souhaité. Vous pouvez également saisir smb: dans la
Les ports par défaut sur lesquels le serveur écoute le trafic SMB sont les barre Fichier → Ouvrir l'emplacement de Nautilus.
ports TCP 139 et 445. Une icône s'affiche pour chaque groupe de travail ou domaine SMB sur le réseau.
Le démon smbd est contrôlé par le service smb.
Nmbd : Le démon du serveur nmbd comprend et répond aux requêtes de service de
noms NetBIOS comme celles produites par SMB/CIFS sur des systèmes basés
Windows. Ces systèmes incluent des clients Windows 95/98/ME, Windows NT, Windows

M.FILALI Linux : Administration des Serveurs 197 M.FILALI Linux : Administration des Serveurs 198
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Remplacez hostname par le nom d'hôte ou par l'adresse IP du serveur Samba auquel
vous souhaitez vous connecter, sharename par le nom du répertoire partagé que vous
souhaitez parcourir, et username par le nom d'utilisateur Samba du système. Saisissez
le mot de passe correct ou appuyez sur Entrée si aucun mot de passe n'est requis pour
l'utilisateur.
Si vous voyez l'invite smb:\>, cela signifie que vous vous êtes connecté. Une fois
connecté, veuillez saisir help pour obtenir la liste des commandes. Si vous souhaitez
parcourir le contenu de votre répertoire personnel, remplacez sharename par votre nom
Groupes de travail SMB dans Nautilus
d'utilisateur. Si le commutateur -U n'est pas utilisé, le nom d'utilisateur de l'utilisateur
2. Faites un double clic sur l'icône de groupe de travail ou de domaine pour afficher la
actuel sera transmis au serveur Samba.
liste des ordinateurs dans ce groupe de travail ou dans ce domaine.
2. Pour quitter smbclient, saisissez exit à l'invite smb:\>.

4. Monter le partage
Parfois, il peut être utile de monter un partage Samba sur un répertoire afin que les
fichiers puissent être traités comme s'ils faisaient partie du système de fichiers local.
Pour monter un partage Samba sur un répertoire, veuillez créer un répertoire pour le
monter dessus (s'il n'existe pas déjà), et exécutez la commande suivante en tant
qu'utilisateur root :

Machines SMB dans Nautilus mount -t cifs //nom du serveur/nom partage /mnt/point/ -o username=nom

3. une icône existe pour chaque machine dans le groupe de travail. Faites un double d'utilisateurmot de passe =mot de passe

clic sur une icône pour afficher les partages Samba sur la machine. Si une Cette commande mont nom partage à partir de nom du serveur dans le répertoire
combinaison nom d'utilisateur et mot de passe est requise, celle-ci vous sera local /mnt/point/.
demandée. Note : L'utilitaire mount.cifs est un RPM séparé (indépendant de Samba). Pour
Alternativement, vous pouvez également spécifier le serveur Samba et le nom du utiliser mount.cifs, commencez par vous assurer que le paquet cifs-utils soit installé

partage dans la barre Location : de Nautilus en utilisant la syntaxe suivante sur votre système en exécutant la commande suivante en tant qu'utilisateur root :
(remplacez servername et sharename par les valeurs appropriées) : ~]# yum install cifs-utils
smb://servername/sharename Avertissement : Certains serveur CIFS requièremt des mots de passe en texte brut
Procédure pour Se connecter à un partage Samba par l'interface en ligne de pour l'authentification. La prise en charge de l'authentification des mots passe en texte
commande brut peut être activée en utilisant la commande suivante en tant qu'utilisateur root :
1. Pour se connecter à un partage Samba à partir d'une invite de shell, veuillez saisir la ~]# echo 0x37 > /proc/fs/cifs/SecurityFlags
commande suivante : Avertissement : Cette opération peut exposer les mots de passe en supprimant le
~]$ smbclient //hostname/sharename -U username chiffrement de mot de passe.

M.FILALI Linux : Administration des Serveurs 199 M.FILALI Linux : Administration des Serveurs 200
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

5. Configurer un serveur Samba L'exemple ci-dessus permet aux utilisateurs tfox et carole de lire et d'écrire sur le
Le fichier de configuration par défaut (/etc/samba/smb.conf) permet aux utilisateurs de répertoire /home/share/, situé sur le serveur Samba, à partir d'un client Samba.
voir leur répertoire personnel en tant que partage Samba. Il partage également toutes 5.3. Mots de passe chiffrés
les imprimantes configurées pour le système en tant qu'imprimantes partagées Samba. Les mots de passe chiffrés sont activés par défaut car il est plus sûr de les utiliser. Pour
Vous pouvez attacher une imprimante au système et l'utiliser à partir de machines créer un utilisateur avec un mot de passe chiffré, veuillez utiliser la
Windows sur votre réseau. commande smbpasswd :

5.1. Configuration graphique Smbpasswd -a username


Pour configurer Samba en utilisant une interface graphique, veuillez utiliser l'une des
interfaces utilisateur graphique Samba disponibles. 6. Lancer et arrêter Samba
Pour lancer un serveur Samba, veuillez saisir la commande suivante dans une invite de
5.2. Configuration en ligne de commande
Samba utilise /etc/samba/smb.conf comme fichier de configuration. Si vous modifiez shell en tant qu'utilisateur root :

cela, les changements n'entreront en vigueur que lorsque vous redémarrez le démon ~]# systemctl start smb.service
Samba avec la commande suivante, en tant qu'utilisateur root : Important : Pour paramétrer un serveur membre d'un domaine, vous devez tout
~]# systemctl restart smb.service d'abord joindre le domaine ou Active Directory en utilisant la commande net

Pour spécifier le groupe de travail Windows et pour faire une brève description du joinavant de lancer le service smb. Il est également recommandé

serveur Samba, veuillez modifier les lignes suivantes dans votre d'exécuter winbind avant smbd.

fichier /etc/samba/smb.conf : Pour arrêter le serveur, veuillez saisir la commande suivante dans une invite de shell

workgroup = WORKGROUPNAME en tant qu'utilisateur root :

server string = BRIEF COMMENT ABOUT SERVER ~]# systemctl stop smb.service

Remplacez WORKGROUPNAME par le nom du groupe de travail Windows auquel cette L'option restart est une façon rapide d'arrêter, puis de redémarrer Samba. Cette

machine doit appartenir. BRIEF COMMENT ABOUT SERVER est optionnel et est manière est la plus efficace pour que les changements de configuration puissent entrer

utilisé comme commentaire Windows sur le système Samba. en vigueur après avoir modifié le fichier de configuration de Samba. Remarquez que

Pour créer un répertoire de partage Samba sur votre système Linux, veuillez ajouter la l'option de redémarrage lance le démon même s'il n'était pas exécuté à l'origine.

section suivante à votre fichier /etc/samba/smb.conf (après l'avoir modifiée pour refléter Pour redémarrer le serveur, veuillez saisir la commande suivante dans une invite de

vos besoins et ceux de votre système) : shell en tant qu'utilisateur root :

Exemple de configuration de serveur Samba ~]# systemctl restart smb.service

[nom partage] L'option condrestart (redémarrage conditionnel, « conditional restart ») lance smb à


commentaire = Insérer un commentaire ici condition d'être actuellement en cours d'exécution. Cette option est utile pour les
chemin = /home/share/ scripts, car elle ne lance pas le démon s'il n'est pas en cours d'exécution.
utilisateurs valides = tfox carole Note : Lorsque le fichier /etc/samba/smb.conf est modifié, Samba le recharge
écriture = yes automatiquement après quelques minutes. Exécuter un redémarrage manuel
créer masque = 0765 (« restart ») ou un rechargement manuel (« reload ») est tout autant efficace.

M.FILALI Linux : Administration des Serveurs 201 M.FILALI Linux : Administration des Serveurs 202
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Pour redémarrer le serveur de manière conditionnelle, veuillez saisir la commande Partages d'invités Samba
suivante dans une invite de shell en tant qu'utilisateur root : Comme expliqué ci-dessus, le mode de sécurité niveau partage est déprécié. Pour
~]# systemctl try-restart smb.service configurer un partage d'invité Samba sans utiliser le paramètre security = share, suivre

Un rechargement manuel du fichier /etc/samba/smb.conf peut être utile en cas d'échec la procédure ci-dessous :

du rechargement automatique effectué par le service smb. Pour vous assurer que le Procédure pour  Configuration des partages d'invités Samba

fichier de configuration du serveur Samba soit rechargé sans redémarrer le service, 1. Créer un fichier de mise en correspondance des noms d'utilisateur, dans cet

veuillez saisir la commande suivante en tant qu'utilisateur root : exemple, /etc/samba/smbusers, et y ajouter la ligne suivante :

~]# systemctl reload smb.service nobody = guest

Par défaut, le service smb n'est pas lancé automatiquement pendant l'initialisation. 2. Ajouter la directive suivante à la section principale du fichier /etc/samba/smb.conf.

Pour configurer Samba pour qu'il soit lancé pendant l'initialisation, veuillez saisir ce Ne pas utiliser la directive valid users.

qui suit dans une invite de shell en tant qu'utilisateur root : [GLOBAL]

~]# systemctl enable smb.service security = user


map to guest = Bad User
7. Mode de sécurité de Samba username map = /etc/samba/smbusers
Il y a seulement deux types de modes de sécurité pour Samba, au niveau du partage et
La directive username map vous donne un chemin vers le fichier de mappage des noms
au niveau utilisateur, collectivement connus en tant que niveaux de sécurité. La sécurité
utilisateurs dans l'étape précédente.
au niveau du partage est obsolète et a été suprimée de Samba. Les configurations
3. Ajouter la directive suivante à la section partages dans le
contenant ce mode doivent être migrées pour utiliser la sécurité niveau utilisateur. La
fichier /ect/samba/smb.conf. Ne pas utiliser la directive valid users.
sécurité niveau utilisateur peut être implémentée d’une des trois manières. Les
[SHARE]
différentes façons d’appliquer un niveau de sécurité s'appellent les modes de sécurité
guest ok = yes
7.1. Sécurité Niveau utilisateur
La sécurité niveau utilisateur est la valeur par défaut et est recommandée avec Samba. Les sections suivantes décrivent d'autres implémentations de sécurité niveau

Même si la directive security = user n’est pas répertoriée dans le utilisateur.

fichier /etc/samba/smb.conf, elle sera utilisée par Samba. Si le serveur accepte le nom Mode de sécurité domaine (sécurité niveau utilisateur)

d'utilisateur et mot de passe du client, le client peut alors monter plusieurs partages En mode de sécurité de domaine, le serveur Samba dispose d’un compte machine

sans spécifier un mot de passe pour chaque instance. Samba peut également accepter (compte de confiance de sécurité de domaine) et fait que toutes les demandes

des demandes de noms et mots de passe basés sur une session utilisateur. Le client d’authentification passent par les contrôleurs de domaine. Le serveur Samba est

maintient plusieurs contextes d’authentification en utilisant un UID unique pour transformé en serveur membre de domaine selon les directives suivantes du

chaque ouverture de session. fichier /etc/samba/smb.conf :

Dans le fichier /etc/samba/smb.conf, la directive security = user qui détermine la [GLOBAL]

sécurité niveau utilisateur correspond à : security = domain

[GLOBAL] workgroup = MARKETING

security = user Mode de sécurité Active Directory (sécurité niveau utilisateur)

M.FILALI Linux : Administration des Serveurs 203 M.FILALI Linux : Administration des Serveurs 204
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
Si vous avez un environnement Active Directory, il est possible de rejoindre le domaine entre groupes de travail et sous-réseaux. Pour son propre réseau, l'explorateur principal
en tant que membre Active Directory natif. Même si une politique de sécurité restreint de domaines devrait préférablement être l'explorateur principal local.
l’utilisation de protocoles d’authentification NT-compatible, le serveur Samba peut 8.1. Exploration de domaines
rejoindre une ADS à l’aide de Kerberos. Samba en mode membre Active Directory peut Par défaut, un PDC de serveur Windows d'un domaine est également l'explorateur

accepter des tickets Kerberos. principal de domaines de ce domaine. Un serveur Samba ne doit pas être paramétré

Dans le fichier /etc/samba/smb.conf, les directives suivantes font de Samba un membre comme serveur principal de domaines dans ce type de situation.

d'Active Directory. Pour les sous-réseaux qui n'incluent pas le PDC du serveur Windows, un serveur

[GLOBAL] Samba peut être implémenté en tant qu'explorateur principal local. La configuration du

security = ADS fichier /etc/samba/smb.conf pour un explorateur principal local (ou sans aucune

realm = EXAMPLE.COM exploration) dans un environnement de contrôleur de domaine est la même chose

password server = kerberos.example.com qu'une configuration de groupe de travail

8.2. WINS (« Windows Internet Name Server »)


7.2. Sécurité Niveau partage
Un serveur Samba ou Windows NT peut fonctionner en tant que serveur WINS.
Avec la sécurité niveau partage, le serveur accepte uniquement un mot de passe sans
Lorsqu'un serveur WINS est utilisé avec NetBIOS activé, les monodiffusions UDP
nom d'utilisateur explicite de la part du client. Le serveur s'attend à un mot de passe
peuvent être acheminées, ce qui permet la résolution de noms à travers les réseaux.
pour chaque partage, indépendamment du nom d’utilisateur. Des rapports récents nous
Sans un serveur WINS, la diffusion UDP est limitée au sous-réseau local et ne peut
montrent que les clients de Microsoft Windows ont des problèmes de compatibilité avec
donc pas être acheminée vers d'autres sous-réseaux, groupes de travail, ou domaines. Si
les serveurs de sécurité au niveau du partage. Ce mode est obsolète et a été retiré de
la réplication WINS est nécessaire, n'utilisez pas Samba comme serveur WINS
Samba. Les configurations contenant security = share doivent être mises à jour pour
principal, car actuellement, Samba ne prend pas en charge la réplication WINS.
utiliser la sécurité au niveau utilisateur. Suivez les étapes de « Procédure pour
Dans un environnement Samba et serveur NT/2000/2003/2008 mélangé, il est
Configuration des partages d'invités Samba »  pour éviter d'utiliser la directive security
recommandé d'utiliser des capacités Microsoft WINS. Dans un environnement Samba
= share.
uniquement, il est recommandé d'utiliser un seul serveur Samba pour WINS.
8. Navigation réseau Samba Ci-dessous figure un exemple du fichier /etc/samba/smb.conf, dans lequel le serveur
La Navigation réseau permet aux serveurs Windows et Samba d'apparaître dans la
Samba sert de serveur WINS :
fenêtre Voisinage réseau. Dans la fenêtre du Voisinage réseau, des icônes
Exemple de configuration de serveur WINS
représentent des serveurs et si ouverts, les partages et imprimantes disponibles du
[global]
serveur sont affichés.
wins support = yes
Les capacités de navigation réseau requièrent l'utilisation de NetBIOS sur TCP/IP. La
Note : Tous les serveurs (y compris Samba) doivent se connecter à un serveur WINS
mise en réseau basée NetBIOS utilise une messagerie de diffusion (UDP) pour
pour résoudre les noms NetBIOS. Sans WINS, la navigation n'aura lieu que sur le sous-
accomplir la gestion de liste de parcours. Sans NetBIOS et WINS comme méthode
réseau local. De plus, même si une liste globale du domaine peut être obtenue, les hôtes
principale de résolution de nom d'hôte TCP/IP, d'autres méthodes comme les fichiers
ne pourront pas être résolus pour le client sans WINS.
statiques (/etc/hosts) ou DNS devront être utilisées.
Un explorateur principal de domaines assemble les listes de parcours des explorateurs 9. Programmes de distribution Samba
principaux locaux sur tous les sous-réseaux afin qu'une navigation puisse être effectuée net

M.FILALI Linux : Administration des Serveurs 205 M.FILALI Linux : Administration des Serveurs 206
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

net <protocol> <function> <misc_options> <target_options> querying trek on 10.1.59.255


L'utilitaire net est similaire à l'utilitaire net utilisé pour Windows et MS-DOS. Le 10.1.56.45 trek<00>
premier argument est utilisé pour spécifier le protocole à utiliser lors de l'exécution pdbedit
d'une commande. L'option protocol peut être ads, rap, ou rpc pour spécifier le type de pdbedit <options>
connexion serveur. Active Directory utilise ads, Win9x/NT3 utilise rap et Windows Le programme pdbedit gère les comptes situés dans la base de données SAM. Tous les
NT4/2000/2003/2008 utilise rpc. Si le protocole est omis, net tente de le déterminer serveurs principaux sont pris en charge, y compris smbpasswd, LDAP, et la
automatiquement. bibliothèque de base de données tdb.
L'exemple suivant affiche une liste des partages disponibles pour un hôte Ci-dessous figurent des exemples d'ajout, de suppression, et d'écoute d'utilisateurs :
nommé wakko : ~]$ pdbedit -a kristin
~]$ net -l share -S wakko new password:
Password: retype new password:
Enumerating shared resources (exports) on remote server: Unix username: kristin
Share name Type Description NT username:
---------- ---- ----------- Account Flags: [U ]
data Disk Wakko data share User SID: S-1-5-21-1210235352-3804200048-1474496110-2012
tmp Disk Wakko tmp share Primary Group SID: S-1-5-21-1210235352-3804200048-1474496110-2077
IPC$ IPC IPC Service (Samba Server) Full Name: Home Directory: \\wakko\kristin
ADMIN$ IPC IPC Service (Samba Server) HomeDir Drive:
L'exemple suivant affiche une liste d'utilisateurs Samba pour un hôte nommé wakko : Logon Script:
~]$ net -l user -S wakko Profile Path: \\wakko\kristin\profile
root password: Domain: WAKKO
User name Comment Account desc:
----------------------------- Workstations: Munged
andriusb Documentation dial:
joe Marketing Logon time: 0
lisa Sales Logoff time: Mon, 18 Jan 2038 22:14:07 GMT
nmblookup Kickoff time: Mon, 18 Jan 2038 22:14:07 GMT

nmblookup <options> <netbios_name> Password last set: Thu, 29 Jan 2004 08:29:28

Le programme nmblookup résout les noms NetBIOS en adresses IP. Le programme GMT Password can change: Thu, 29 Jan 2004 08:29:28 GMT

diffuse sa requête sur le sous-réseau local jusqu'à ce que la machine cible réponde. Password must change: Mon, 18 Jan 2038 22:14:07 GMT

L'exemple suivant affiche l'adresse IP du nom NetBIOS trek : ~]$ pdbedit -L


andriusb:505:
~]$ nmblookup trek

M.FILALI Linux : Administration des Serveurs 207 M.FILALI Linux : Administration des Serveurs 208
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

joe:503: ainsi que par un utilisateur ordinaire pour qu'il puisse modifier son propre mot de passe
lisa:504: Samba.
kristin:506: smbspool
~]$ pdbedit -x joe smbspool <job> <user> <title> <copies> <options> <filename>
~]$ pdbedit -L Le programme smbspool est une interface d'impression compatible avec CUPS sur
andriusb:505: lisa:504: kristin:506: Samba. Malgré sa conception destinée à une utilisation avec des imprimantes
rpcclient CUPS, smbspool peut également fonctionner avec des imprimantes n'utilisant pas
rpcclient <server> <options> CUPS.

Le programme rpcclient exécute des commandes administratives en utilisant des RPC smbstatus

Microsoft, qui fournissent accès aux interfaces utilisateur graphique (GUI) smbstatus <options>
d'administration Windows pour la gestion des systèmes. Ce programme est souvent Le programme smbstatus affiche le statut des connexions actuelles à un serveur Samba.
utilisé par des utilisateurs de niveau avancé, qui comprennent parfaitement la smbtar
complexité des RPC Microsoft. smbtar <options>
smbcacls Le programme smbcacls effectue des copies de sauvegarde et des restaurations de
smbcacls <//server/share> <filename> <options> fichiers et répertoires de partage basés Windows sur une bande d'archive locale. Malgré
Le programme smbcacls modifie les ACL Windows sur les fichiers et répertoires des similarités avec la commande tar, les deux ne sont pas compatibles.
partagés par un serveur Samba ou un serveur Windows. testparm
smbclient testparm <options> <filename> <hostname IP_address>
smbclient <//server/share> <password> <options> Le programme testparm vérifie la syntaxe du fichier /etc/samba/smb.conf. Si votre
Le programme smbclient est un client UNIX polyvalent offrant une fonctionnalité fichier smb.conf ne se trouve pas dans l'emplacement par défaut (/etc/samba/smb.conf),
similaire à ftp. vous n'aurez pas besoin de spécifier l'emplacement. La spécification du nom d'hôte et de
smbcontrol l'adresse IP sur le programme testparm vérifie si les
smbcontrol -i <options> fichiers hosts.allow et host.deny sont correctement configurés. Le
smbcontrol <options> <destination> <messagetype> <parameters> programme testparm affiche également un résumé du fichier smb.conf et le rôle du

Le programme smbcontrol envoie des messages de contrôle aux démons en cours serveur (stand-alone, domain, etc.), après avoir effectué des tests. Ceci est utile lors du

d'exécution smbd, nmbd, ou winbindd. L'exécution de smbcontrol -i exécute des débogage car les commentaires sont exclus et les informations sont présentées de façon

commandes de manière interactive jusqu'à ce qu'une ligne blanche ou que le concise pour permettre leur lecture à des administrateurs expérimentés.

caractère 'q'soit saisi(e). ~]$ testparm


smbpasswd …

smbpasswd <options> <username> <password> Loaded services file OK.

Le programme smbpasswd gère des mots de passe chiffrés. Ce programme peut être Server role: ROLE_STANDALONE

utilisé par un super-utilisateur pour modifier le mot de passe de tout autre utilisateur, Exemple :

M.FILALI Linux : Administration des Serveurs 209 M.FILALI Linux : Administration des Serveurs 210
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

# Global parameters TP-N°8-1 : Implémenter le serveur de partage Samba (Enoncé)


[global]
Partie I : Configurer un serveur linux et des clients Windows / linux
workgroup = MYGROUP
server string = Samba Server linux1 :192.168.1.100 ClientWindows :192.168.1.101
security = SHARE 1. Arreter les pare feu Linux
log file = /var/log/samba/%m.log
2. Configurer la carte réseau du serveur
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 3. Vérifier est ce que le package est installé si non installer le package
dns proxy = no 4. Lister et démarrer le statut du service samba par la commande chkconfig
[homes]
5. Editer le fichier /etc/samba/smb.conf
comment = Home Directories
read only = no 6. Créer le répertoire /smb-data1 et Générer un mot de passe samba pour user1
browseable = no 7. Tester l’accès au partage depuis le client windows
[printers]
8. Afficher le status du partage
comment = All Printers
path = /var/spool/samba 9. Creeer un deuxieme partage avec les specifications suivantes :
printable = yes L’emplacement de partage : /var/Partage2
browseable = no Le dossier sera partager avec 2 groupes G1 et G2 et des utilisateurs
[tmp]
Les membres de G1 sont : U1 , U2 et U3
comment = Wakko tmp
path = /tmp Les membres de G2 sont : U4 , U5 et U6
guest only = yes
[html] Utilisateur /Groupe G1 G2 U3 U6 U7 U8
comment = Wakko www Droit effectif LS LE LE AA CT LS
10.Definire tous les utilisateurs U1 à U8 comme utilisateurs SAMBA
path = /var/www/html
force user = andriusb 11.Tester à partire d’un client windows l’accès au partage
force group = users Partie II : Configurer un partage windows et des clients Linux
read only = no
Linux2 :192.168.1.102 Windows :192.168.1.101
guest only = yes
wbinfo 1. Vérifier est ce que les packages smbclient est installé

wbinfo <options> 2. Vérifier les fichiers de samba client


3. Créer un partage réseau sous windows
Le programme wbinfo affiche des informations du démon winbindd. Le
4. Trouver les partages réseau
démon winbindddoit être en cours d'exécution pour que wbinfo fonctionne.
5. Se connecter au partage réseau sur le client Win7
6. récupérer les fichiers test à partir de la machine Win7 vers linux
7. transférer les fichiers de linux vers windows 7
8. Enregistrer une copie des fichiers de configuration de votre machine
9. Quitter par la commande : exit
10.Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 211 M.FILALI Linux : Administration des Serveurs 212
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques

TP-N°8-1 : Implémenter le serveur de partage Samba (Corrigée) [global]


workgroup = WORKGROUP
Partie I : Configurer un serveur linux et des clients linux ou Windows
security = user
Serveur linux1 :192.168.1.100 ClientWindows : 192.168.1.101 passdb backend = tdbsam
Sous linux1 (Serveur SAMBA) printing = cups
printcap name = cups
1. Arreter les pare feu Linux
load printers = yes
~]# systemctl stop firewalld cups options = raw
~]# setenforce 0
[smb-data1]
2. Configurer la carte réseau du serveur
path=/smb-data1
~]# ifconfig ens33 192.168.1.100 netmask 255.255.255.0 up
writeable=YES
3. Vérifier est ce que le package Samba Server est installé si non installer le package
browseable=YES
~]# rpm -ivh python-talloc-2.1.8-1.fc25.i686.rpm
valid users=fedora
Préparation... ################################# [100%]
Verifier la configuration
~]# rpm -ivh samba-libs-4.5.0-3.fc25.i686.rpm
~]# testparm
Préparation... ################################# [100%]
Load smb config files from /etc/samba/smb.conf
~]# rpm -ivh samba-common-tools-4.5.0-3.fc25.i686.rpm
Processing section "[smb-data1]"
Préparation... ################################# [100%]
Loaded services file OK.
~]# rpm -ivh samba-4.5.0-3.fc25.i686.rpm
6. Créer le répertoire /smb-data1 et Générer un mot de passe samba pour
Préparation... ################################# [100%]
l’utilisateur fedora.
Verification:
~]# mkdir /smb-data1
~]# rpm -qa | grep samba
~]# chmod 777 /smb-data1/
samba-client-4.5.0-3.fc25.i686
~]# smbpasswd -a fedora
samba-4.5.0-3.fc25.i686
New SMB password: 123456
4. Lister et démarrer le statut du service samba par la commande systemctl
Retype new SMB password: 123456
~]# systemctl start smb nmb
Added user fedora.
~]# systemctl enable smb nmb
~]# systemctl restart smb nmb
Created symlink …
Sur la machine client Windows
~]# systemctl status smb
7. Tester l’accès au partage (Win + R)
● smb.service - Samba SMB Daemon
\\192.168.1.100
Loaded: loaded …
Active: active (running) since
Utilisateur : fedora et Mot de Passe : 123456
5. Editer le fichier smb.conf
~]# vi /etc/samba/smb.conf

M.FILALI Linux : Administration des Serveurs 213 M.FILALI Linux : Administration des Serveurs 214
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
10. Definire les utilisateurs samba

~]# smbpasswd -a nom-utilisateur

11. Tester l’accès au partage (Win + R)


8. Sous linux1 \\192.168.1.100
~]# smbstatus
Service pid Machine Connected at NB : Pour deconnecter un partage utilisé la commande
--------------------------------------------------------------------- C:\>net use
smb-data1 31592 192.168.1.101 jeu. févr. ..
fedora 31592 192.168.1.101 jeu. févr. .. - C:\>net use le-partage-a supprimer /delete

~]# findsmb
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION Partie II : partager un fichier sur une machine Windows et y accéder à partir
---------------------------------------------------------------------
192.168.1.101 SRV [WORKGROUP] [Windows 6.1] [Samba 4.5.0] d'une machine linux
9. Creation du partage2 Sur La Machine Linux2
Creer les utilisateurs et les groupes ~]# ifconfig ens33 192.168.1.102
~]#useradd ~]#groupadd 1- Vérifier est ce que le package samba-client est installé
Créer le dossier partagé
~]# rpm -qa|grep samba
~]#mkdir ~]#chmod
samba-client-4.5.0-3.fc25.i686
Ajouter le partage dans le fichier smb.conf

~]# vi /etc/samba/smb.conf
2- Vérifier les fichiers de samba client
~]# rpm -ql samba-client
#.......................... /usr/bin/findsmb -- trouver les clients samba dans votre subnet
[Partage2] /usr/bin/smbclient -- permet de se connecter aux partages
path = /var/Partage2 /usr/bin/smbtree -- équivalent de favoris réseaux
comment = Repertoir partage2
3- Créer un partage réseau sous windows
read only = yes
. C:\ >ipconfig
writeable = yes
Carte Ethernet VMnet0 :
browseable = yes
Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.101
valid users = @G1 @G2 U7 U8
Masque de sous-réseau. . . . . . . . . : 255.255.255.0
invalid users = U6
Créer un dossier partagé sous windows
write list = @G2 U3
PartageSamba avec droits CT pour tout le monde
read list = @G1 U8
Sous Linux2
admin users = U7
4- Trouver les partages réseau
#..........................
~]# findsmb

M.FILALI Linux : Administration des Serveurs 215 M.FILALI Linux : Administration des Serveurs 216
Guide de formation avec ateliers pratiques Guide de formation avec ateliers pratiques
5- Se connecter au partage réseau sur le (Serveur) Windows putting file fich1 as \fich1 (0,0 kb/s) (average 0,0 kb/s)
~]# smbclient -m smb3 -U Admin //MR-PC/PartageSamba
Enter Admin's password: ******* Exercice : Que font ces Commandes ?

Domain=[MR-PC] OS=[] Server=[] ~]# systemctl start smb nmb

smb: \> ~]# systemctl enable smb nmb

Admin: est un Compte crée sous Windows ~]# firewall-cmd --add-service=samba --permanent

MR-PC: est le nom de la machine windows ~]# firewall-cmd --reload


~]# setsebool -P samba_enable_home_dirs on
smb: \> mkdir TestSamba
~]# restorecon -R /home/share
Vérifié la création du dossier sous windows

Créer un document test.docx sous windows


6- récupérer le fichier test à partir de la machine Windows vers linux
smb: \> mget test*
Get file test.docx? y
getting file \test.docx of size 0 as test.docx (0,0 KiloBytes/sec) (average 0,0
KiloBytes/sec)
smb: \>!ls
smb: \>!pwd
# Pour voir l'emplacement de copie de fichier sous linux
smb: \>exit
7- transférer les fichiers de linux vers windows
~]# cd /home/fedora
~]# touch fich1
~]# smbclient -m smb3 -U Admin //MR-PC/PartageSamba
Enter Admin's password: *****
Domain=[MR-PC] OS=[] Server=[]
smb: \> mput fich1
Put file fich1? y

M.FILALI Linux : Administration des Serveurs 217 M.FILALI Linux : Administration des Serveurs 218
Guide de formation avec ateliers pratiques

TP-N°8-2 : Mise en Place d'un serveur Samba (Devoir Libre)


La société AA veut mettre en place un serveur SAMBA nommé Server1-A
L’administrateur désire réaliser les tâches suivantes :
 Créer deux groupes nommés respectivement : managers et comptables.
 Partager un dossier nommé /var/Gestion pour les membres des deux groupes.
 Le groupe comptables peut lire et écrire dans le dossier.
 Le groupe Mangers peut seulement lire.
 Tout autre utilisateur n’a aucun accès au dossier partagé.
 Les membres des deux groupes sont :
 Comptables : compatable1 et comptable2.
 Managers : manager1 et manager2.
Le serveur Linux est configuré comme suit :

 Nom d’hôte : Server1-A


 @IP : 172.16.100.1/24
 Passerelle par défaut : 172.16.100.254
 Serveurs DNS primaire : 172.16.100.10, 172.16.100.11

On vous demande de Configurer le service SAMBA sur le serveur Server1-A


01. Configurer le réseau sur Server1-A : Utiliser pour cela le fichier de configuration
02. Configurer le nom du serveur.
03. Démarrer le service réseau.
04. Vérifier l’existence du package SAMBA.
05. Configurer le service SAMBA pour qu’il démarre avec les niveaux 3 et 5.
06. Créer les deux groupes : comptables de gid 600 et managers de gid 601.
07. Créer les comptes d’utilisateurs (respecter l’appartenance aux groupes).
08. Créer un partage nommé Gestion avec les paramètres indiqués en haut.
09. Démarrer le serveur SAMBA.
10. Vérifier la configuration de votre serveur.
11. Définir les 4 utilisateurs comme utilisateurs SAMBA.
12. Créer le compte d’un client Windows nommé PC01 dans votre serveur SAMBA.
13. Enregistrer une copie des fichiers de configuration de votre machine
14. Quitter par la commande : exit
15. Rédiger un Rapport du TP (Commandes Résultats Interpretations)

M.FILALI Linux : Administration des Serveurs 219

Vous aimerez peut-être aussi