Vous êtes sur la page 1sur 24

Université Sultan Moulay Slimane

Ecole Supérieure de Technologie


-Fkih -Ben Salah-

Administration réseau sous GNU/Linux


1. Gestion des interfaces réseaux
a. Mode d’adressage
b. Nom des interfaces réseaux
c. La commande ifconfig
d. La commande dhclient
e. Configuration automatique au démarrage
f. Contrôle des services
g. Ip et Netplan
h. Configurations complémentaires (Résolution de noms d'hôte, liste des serveurs
DNS, le fichier hosts

2. Mettre en place d’un serveur NFS


a. Installation coté serveur
b. Configuration serveur (/etc/exports)
c. Installation coté client
d. Connexion au démarrage

3. Mettre en place d’un serveur Apache (serveur web)


a. Installation
b. Test
c. Configuration de base
d. Les hôtes virtuels
e. Configuration des hôtes virtuels

4. Mettre en place d’un serveur DHCP


a. Installation
b. Configuration
c. Interfaces
d. Adresse dynamique
e. Adresse fixe
f. Options
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Rôles d’un administrateur réseaux informatiques

L’administrateur réseau est responsable de ce qui peut se passer dans un réseau administré ; ainsi les
rôles d’un administrateur réseau peuvent se résumer comme suit :

▪ Mettre en place et maintenir l’infrastructure du réseau (organisation, ...) ;


▪ Installer et maintenir les services nécessaires au fonctionnement du réseau ;
▪ Assurer la sécurité des données internes au réseau (particulièrement face aux attaques
extérieures) ; S’assurer que les utilisateurs n’outrepassent pas leurs droits ;
▪ Gérer les systèmes de fichiers partagés et les maintenir.

1. Gestion des interfaces réseaux


a. Mode d’adressage
Chaque interface réseau nécessite de posséder une adresse IP.
▪ La configuration de cette adresse peut être réalisée :
o Manuellement : en utilisant une commande (ifconfig ou dhclient par exemple) ;
o Automatiquement : au démarrage de la machine, un service réseau (networking ou
systemd-networkd par exemple) lit les données de définition dans des fichiers
(/etc/network/interfaces ou /etc/netplan/*.yaml par exemple) et configure les interfaces
réseaux.
▪ L’adresse elle-même peut être :
o Statique (ou fixe) : c’est l’affectation d’une adresse IP fixe et d’un masque de sous-
réseau à une interface réseau ;
o Dynamique : c’est l’affectation automatique d’une adresse IP et d’un masque de sous-
réseau à une interface réseau. Par exemple, la machine dépourvue d’adresse IP fait une
demande vers un serveur DHCP pour obtenir une adresse dynamique pour une durée
limitée.
Habituellement, on configure les machines de la manière suivante :
o Serveur : adressage statique (ou fixe) ;
o Client : adressage dynamique.
L’utilisation d’un serveur DHCP permettra de centraliser la configuration des interfaces de
l’ensemble des machines (adressage dynamique et statique/fixe).

b. Nom des interfaces réseaux


Historiquement, les interfaces réseaux Ethernet étaient nommées ethx (x représentatnt un
chiffrecommençant à 0).
Pour rappel, udev est le gestionnaire de périphériques dans le noyau Linux (depuis la version
2.6). Sa fonction principale est de gérer les périphériques dans le répertoire /dev.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Depuis Ubuntu 15.10, udev intègre l’implémentation Stateless Persistent Network Interface
Names qui, depuis le passage à Systemd, renomme automatiquement les interfaces réseau.
Cette solution appelée ifnames permet de donner un nom persistant à un équipement, en se
basant sur les informations fournies par le BIOS et le firmware (numéro d’index, nom du slot
PCI, etc.).
Les noms commenceront toujours par un "e" pour Ethernet" et un "w" pour le WiFi.
Exemples :
o enp0s3 pour une carte Ethernet
o wlp0s3 pour une carte WiFi

Il est possible de fixer un nom d’interface dont on connaît l’adresse MAC avec le fichier
/etc/udev/rules.d/10-network.rules :

SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="aa:bb:cc:dd:ee:ff",NAME="xx"

c. La commande ifconfig
La commande ifconfig est utilisée pour configurer manuellement et maintenir les interfaces réseau.

Si aucun argument n’est donné, ifconfig affiche simplement l’état des interfaces actuellement
définies (actives).

ifconfig -a : permet de lister toutes les interfaces réseaux.

→ Paramétrage d’une adresse IP statique :

Pour attribuer une adresse IP à une interface réseau, on peut utiliser la commande ifconfig :
ifconfig <interface> <adresse ip>

$ sudo ifconfig enp0s3 192.168.1.2

Le masque de sous-réseau est déterminé automatiquement en fonction de la classe de l'adresse IP.


S'il est différent on peut le spécifier avec l'option netmask :
$ sudo ifconfig enp0s3 192.168.1.2 netmask 255.255.255.128

Note : Dans le cas d'un réseau local connecté à Internet, vous devez aussi ajouter l'adresse IP de la
passerelle et l'adresse IP d'un ou plusieurs serveurs DNS.

→ Passerelle, routage et adresse DNS

• Pour ajouter une passerelle, on peut utiliser la commande route : $ sudo route add default gw
192.168.1.1
• Pour afficher les routes vers les différents réseaux : $ sudo route -n
• Pour modifier l’adresse DNS # echo "nameserver 8.8.8.8" > /etc/resolv.conf (Attention faire une
copie de ce fichier avant d’exécuter cette commande)

Pour voir si la carte réseau est bien configurée, on peut utiliser la commande :

ifconfig enp0s3
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

→ La commande ifconfig permet aussi d’actviver (et désactiver) une interface réseau :

$ sudo ifconfig enp0s3 down

$ sudo ifconfig enp0s3 up

→ Tester le réseau
Pour tester si la carte réseau fonctionne, on peut essayer de communiquer avec une autre machine
avec la commande
ping <adresse ip>

d. La commande dhclient
La commande dhclient fournit un moyen de configurer une ou plusieurs interfaces réseau en
utilisant le protocole DHCP :
$ dhclient enp0s3

e. Configuration automatique au démarrage


Le fichier /etc/network/interfaces permet de configurer les cartes réseau de manière
permanente.
Par exemple :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

Cette configuration initialisera automatiquement les interfaces "lo" et "eth0".


- L'interface "lo" est souvent indispensable au système, il est important de l'initialiser.
Elle aura systématiquement l'adresse IP 127.0.0.1.
- L'interface "eth0" sera configurée avec l'adresse IP 192.168.1.2, le masque de sous
réseau 255.255.255.0 et la passerelle 192.168.1.1 (ce paramètre est facultatif).
Si l'interface eth0 doit être configurée automatiquement par un serveur DHCP, il faut
indiquer :
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

auto eth0
iface eth0 inet dhcp
Pour que les modifications de ce fichier soient prises en compte, il faut redémarrer le
service networking ou utiliser les commandes ifup et ifdown.
Par exemple : $ sudo ifup eth0

f. Contrôle des services


Suivant votre version de GNU Linux/Ubuntu, les services de votre machine se contrôlent :
▪ par des scripts system V situés dans /etc/init.d/ :
$ sudo /etc/init.d/<nomservice> [enable|disable|start|stop|restart|relaod|status]

// ou :
$ service <nom> [enable|diable|start|stop|restart|reload|status]
▪ par Upstart (un des successeurs des scripts system V) :
$ initctl [enable|disable|start|stop|restart|reload|status] <nom>
▪ par systemd (qui remplace upstart et son prédécesseur les scripts system V) :
$ sudo systemctl [enable|disable|start|stop|restart|reload|status] <nom>

g. Ip et Netplan
Étant donné que ifconfig est progressivement supprimé, il est temps de s'habituer au
nouveau système. Par défaut, Ubuntu 18.04 et plus n'utilise plus ifconfig et utilise à la place
les nouvelles commandes ip et netplan.
I. Avec la commande ip (pour plus de détails utiliser man ip) :
▪ Pour configurer l'interface réseau eth0 avec l'IP 192.168.1.100 : sudo ip addr add
192.168.1.100/24 dev eth0
▪ Afficher votre IP en utilisant ip : ip addr show
▪ Activer ou désactiver une interface en utilisant ip : ip link set eth1 up ip link set
eth1 down
▪ Affichage des routes en utilisant ip : ip route show

II. Netplan est un nouvel outil de configuration réseau qui utilise des fichiers de description
YAML, qui sont stockés sous /etc/netplan. Les interfaces de mise en réseau de fichiers par
défaut pour une nouvelle installation d'Ubuntu 20.04 sont /etc/netplan/00-installer-
config.yaml.

Depuis Ubuntu 18.04 le fichier /etc/network/interfaces n’est donc plus utilisé. Pour revenir à
cette utilisation : il faut installer le package ifupdown.
La configuration est centralisée dans /etc/netplan/.

Pour modifier le fichier netplan par défaut, utilisez la commande suivante.


$ sudo vim /etc/netplan/00-installer-config.yaml
Exemple pour une adressage IP statique :
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

!! Remarque importante : Il ne faut pas utiliser de tabulation dans ce fichier. L'indentation


doit utiliser des espaces
search : est une liste de domaines de recherche, qui sont utilisés lorsqu'un nom d'hôte non
qualifié est donné. Par exemple, si vous voulez faire un ping sur server1 plutôt que
server1.nomdomaine .
adresses : est une liste d'adresses IP IPv4 ou IPv6 pour les serveurs de noms DNS.
Exemple pour un adressage IP dynamique (DHCP) :

Note : Configuration de Netplan pour une attribution IP par un DHCP Windows Server
Si la configuration par défaut ne fonctionne pas alors que votre machine Ubuntu est soumise
au DHCP d’un serveur Windows, il est possible de lui ajouter une information « dhcp-
identifier » pour une meilleure compatibilité.
network:
version: 2
ethernets:
enp0s3:
dhcp4: yes
dhcp-identifier:mac

Après chaque modification au niveau de fichier de configuration de Netplan, vous devez


tester si cela fonctionne correctement, pour cela utiliser la commande netplan try

$sudo netplan try

S'il n'y a pas de problème, Il renvoie le message d'acceptation de configuration. Si le profil


échoue au test, Il reviendra à la configuration de travail précédente.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Pour appliquer les nouveaux paramétrages, vous devrez recharger vos configurations de
réseau Netplan.

$sudo netplan apply

Si vous voyez des erreurs , Essayez de déboguer pour enquêter sur le problème

$ sudo netplan –d apply

Pour relancer le service

systemctl restart systemd-networkd

h. Configurations complémentaires
1. Résolution de noms d'hôte
Le fichier /etc/host.conf indique comment les noms doivent être résolus (c'est à dire
comment passer d'une adresse IP à un nom, et inversement). Par exemple :
# D'abord traduire avec les serveurs DNS et ensuite avec /etc/hosts.
order bind,hosts
# Il existe des machines avec plusieurs adresses
multi on
# Vérifie l'usurpation d'adresse IP
nospoof on

2. Serveurs DNS
Le fichier /etc/resolv.conf contient les adresses IP des serveurs DNS. Par exemple :
nameserver 208.164.186.1
nameserver 208.164.186.2
search foo

3. Fichier hosts
Le fichier /etc/hosts contient une liste de résolutions de noms (adresses IP et noms de
machine). Par exemple:
192.168.105.2 serverestfbs

Cette ligne indique que serverestfbs correspond à l'adresse IP 192.168.105.2, qui sera
accessible par cet alias.

2. Mettre en place d’un serveur NFS (Network File System)

Le protocole NFS (Network file system ou système de fichiers en réseau) permet de partager
des fichiers entre des machines Unix, et donc Linux.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

C'est un modèle client-serveur : une machine met à disposition (exporte) des répertoires de
son système de fichier local sur le réseau. Suivant les droits d'accès, les autres stations
(clients ou serveurs) du réseau peuvent monter ces répertoires, qui seront alors vus comme
des répertoires locaux. Un ordinateur peut être à la fois client et serveur NFS.

a. Installation coté serveur


Commencer par vérifier que les demons NFS (nfsd) ne sont pas déjà lancés avec, par
exemple, la commande
ps ax | grep nfsd

Pour lancer les démons manuellement sous Debian :


/etc/init.d/nfs-kernel-server start

ou, si c'est le serveur NFS en espace utilisateur qui est installé :


/etc/init.d/nfs-user-server start
On peut remplacer start par restart pour redémarrer le serveur.

b. Configuration serveur (/etc/exports)


Pour partager (ou exporter) des répertoires, il faut renseigner le fichier /etc/exports. Il
indique la liste des répertoires partagés et le nom des machines qui y ont accès.
Dans ce fichier, chaque ligne est définie comme ceci :

<dossier partagé> <hôte>(<options>) <hôte2>(<options>)...

<dossier partagé> : chemin menant au dossier partagé.


<hôte> : indique quel est l'hôte qui peut accéder à ce partage, l'hôte peut être défini de
plusieurs manières :
▪ une IP : on indique simplement l'adresse IP de la machine pouvant accéder à ce
partage.
▪ un nom d'hôte : on indique le nom complet de l'hôte (pour peu qu'il soit connu du
système au travers d'un DNS ou du fichier hosts).
▪ un nom de groupe réseau NIS (NIS netgroup) qui s'indique sous la forme @<netgroup>.
▪ un domaine avec un joker qui indique les machines d'un domaine ou sous-domaine;
par exemple : *.ubuntu-fr.org.
▪ un intervalle d'IP avec le masque de sous-réseau; par exemple : 192.168.0.0/24 ou
192.168.0.*
<options> : indique les options de partage; nous n'allons pas parcourir toutes les options
ensemble mais uniquement les plus importantes.
Note : Si vous obtenez l'erreur suivante au montage : mount.nfs4: access denied by server
while mounting, vérifiez les droits d'accès au dossier partagé (le dossier est peut-être en
mode interdit pour "autres" ce qui le rend impossible à lire pour le serveur NFS).
Ce qui pourrait donner par exemple:
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

/home/bob ollinux(rw) station1(ro)


/projet station1(rw) (ro)
/brouillon
Le serveur exporte son répertoire /home/bob. La machine ollinux pourra le monter en
lecture/écriture (rw), station1 en lecture seule (ro), et les autres machines ne pourront pas
se connecter.
De même, station1 pourra accéder en lecture/écriture au répertoire projet et toutes les
autres stations en lecture seule.
Enfin, tout le monde pourra accéder en lecture/écriture au répertoire brouillon (l'option rw
est celle par défaut).
Pour connaitre la liste des options possibles et leur signification, consultez man exports.
→ Notez bien que les droits en écriture via le réseau seront toujours inhibés par les droits
sur le système de fichier.
Prenons par exemple un fichier test appartenant à root, situé dans le répertoire projet et
avec les droits 600 (lecture/écriture pour root uniquement, aucun droit pour les autres). Si
l'utilisateur toto accède via la station station1 au répertoire /projet, il ne pourra pas accéder
au fichier test, bien qu'il ait les "droits réseaux read-write".
Un fois le fichier /etc/exports correctement configuré, il suffit de relancer le service NFS par
la commande suivante pour que les modifications soient prises en compte :

/etc/init.d/nfs-kernel-server reload

La commande reload ne coupe pas les transferts en cours si la nouvelle configuration permet
toujours leur accès au serveur. Vous pouvez donc la lancer plus ou moins à n'importe quel
moment.
Pour vérifier que l'export a bien eu lieu, taper sur le serveur NFS la commande :

showmount -e

Si l'export n'est pas effectif, il faut faire restart du service NFS mais attention cela peut
interrompre les transferts en cours :

sudo service nfs-kernel-server restart

c. Installation coté client


Le paquet nécessaire pour accéder à un NFS est nfs-common.
Après avoir installé ce paquet, utiliser la commande showmount -e serveur.local pour
parcourir les partages NFS du serveur (ici : serveur.local, que vous pouvez remplacer par l'IP)

showmount -e serveur.local
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Export list for serveur.local:


/mnt/nas/media *.local,192.168.0.0/255.255.0.0

Pour accéder à un NFS, il faut le "monter". il s'agit de dire au service qui s'occupe des
disques durs (au niveau des machines clientes) que ce serveur NFS est comme un disque dur.
Pour monter un système de fichier distant, utiliser la commande mount avec l'option nfs :

mount -t nfs <machine distante>:<répertoire partagé> <répertoire local> -o <option


s>

Par exemple :

mount -t nfs 192.168.105.2:/armor/plages /mnt/cotes -o ro

Cette commande montera le répertoire /armor/plages, exporté par la station 192.168.105.2,


dans le répertoire local /mnt/cotes, en lecture seule.
Note : A la place d'une adresse IP, vous pouvez aussi donner un nom de machine, comme
par exemple serverestfbs. Pour cela, il faut que le nom serverestfbs puisse être converti en
adresse IP (en modifiant /etc/hosts par exemple, si on n'a pas de serveur DNS)

d. Connexion au démarrage
Il est possible de connecter les répertoires partagés au démarrage de la station.
Le plus simple est de renseigner le fichier /etc/fstab qui contient une liste des systèmes de
fichiers connus.
→ Modifier /etc/fstab
1. Il faut tout d'abord créer un dossier dans lequel le NFS viendra se loger. Ouvrez donc un
terminal sur vos clients puis tapez :

sudo mkdir /media/NFS

2. Modifier le fichier /etc/fstab pour y ajouter la ligne:

192.168.0.10:/<Dossier_à_partager>/ /media/NFS nfs defaults,user,auto,_netdev,bg 0


0

▪ 192.168.0.10 : ordinateur distant (serveur NFS)


▪ <Dossier_à_partager> : étant le dossier sur votre serveur que vous voulez recevoir
(doit correspondre à celui que le serveur veut envoyer)
▪ /media/NFS On précise le point de montage (dossier que vous avez créé juste avant
dans lequel vous souhaitez monter le partage NFS)
▪ nfs On précise le protocole utilisé.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

▪ defaults,user,auto,_netdev sont décrite dans fstab, vous pouvez ajouter ro à la fin


pour ne pas autoriser l'écriture.

▪ bg permet de ne pas bloquer le démarrage du client si le serveur n'est pas opérationnel.


▪ 0 0 dit à Linux de ne pas vérifier si le disque contient des erreurs (le serveur s'en
occupera)
La syntaxe générale est :

<ordinateur distant>:<répertoire distant> <répertoire local> nfs <options> 0 0

Les options sont décrites dans la page de man de mount.

3. Mettre en place d’un serveur Apache (serveur web)


Apache est un serveur HTTP libre, est l'un des serveurs Web les plus populaires pour servir des
pages Web dynamiques et statiques.

Explorer Un site web peut fournir tout type de contenu (des fichiers textes, HTML, Flash, zip…).
Ce contenu peut être statique (le serveur transmet un fichier au navigateur) ou dynamique (le
contenu est généré par un programme exécuté par le serveur). Les sites web contiennent
généralement plusieurs types de documents, certains étant statiques et d'autres dynamiques.

La version 2 d’Apache propose entre autres le support de plusieurs plates-formes (Windows,


Linux et UNIX, Solaris, BSD, MAC OS X), le support de processus légers UNIX (threads), une
nouvelle API et le support IPv6. [Source : http://fr.wikipedia.org/wiki/Apache_HTTP_Server]

$ apt-cache search apache | grep -E "^apache"

Fig 1. Liste des paquets qui commencent par le mot apache

$ apt-cache search libapache | grep -E "^libapache"


Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Fig 2. Liste des modules apache

a. Installation
Assurez-vous que votre système est à jour et corrigé. Pour ce faire, tapez la
commande apt suivante :

sudo apt update

4.sudo apt upgrade


Étape 1 : Installation du serveur Apache 2

sudo apt-get install apache2

Étape 2 - Assurez-vous que le service Apache a démarré au démarrage


Nous allons utiliser la commande systemctl comme suit pour activer apache2.service :

sudo systemctl is-enabled apache2.service

S'il n'est pas activé, activez-le, exécutez :

sudo systemctl enable apache2.service

Note : Pour démarrer, arrêter, redémarrer, puis retrouver l'état du service apache, utilisez les
commandes suivantes. Sudo systemctl [start/stop/restart/reload/status] apache2.service

Étape 3 — Réglage du pare-feu (ufw)

Avant de tester Apache, il est nécessaire de modifier les paramètres du pare-feu pour
permettre à l'extérieur d'accéder aux ports web par défaut, vous devriez avoir un pare-feu
UFW configuré pour restreindre l'accès à votre serveur.

Lors de l'installation, Apache s'enregistre auprès de l'UFW pour fournir quelques profils
d'application qui peuvent être utilisés pour activer ou désactiver l'accès à Apache à travers le
pare-feu.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

- Taper la commande sudo ufw [enable, disable, status] pour activer, désactiver et voir l’etat
du par-feau

Listez les profils d'application ufw en tapant :

$ sudo ufw app list

Vous recevrez une liste des profils d'application :

Comme le montre la sortie, il existe trois profils pour Apache :

▪ Apache : ce profil n'ouvre que le port 80 (trafic web normal, non crypté).
▪ Apache Full : ce profil ouvre à la fois le port 80 (trafic web normal, non crypté) et le
port 443 (trafic crypté TLS/SSL).
▪ Apache Secure : ce profil n'ouvre que le port 443 (trafic crypté TLS/SSL).

Activer le profil le plus restrictif qui autorisera tout de même le trafic que vous avez configuré.
Comme nous n'avons pas encore configuré le SSL pour notre serveur dans ce guide, nous
devrons seulement autoriser le trafic sur le port 80 :

sudo ufw allow 'Apache'

Vous pouvez vérifier le changement en saisissant :

sudo ufw status

La sortie fournira une liste du trafic HTTP autorisé.


Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Comme l'indique la sortie, le profil a été activé pour permettre l'accès au serveur web
Apache.

b. Tests
Après avoir vérifier que le serveur web apache est bien démarré (sudo systemctl status
apache2). Essayer accéder à la page d'accueil par défaut d'Apache pour confirmer que le
logiciel fonctionne correctement grâce à votre adresse IP : Si vous ne connaissez pas l'adresse
IP de votre serveur, vous pouvez l'obtenir de plusieurs façons différentes à partir de la ligne
de commande.
Exécutez l'une des commandes suivantes :
// Adresse local

Hostname -I
ip a
ip a s enp0s3

Note: Utiliser l'outil Icanhazip, qui devrait vous donner votre adresse IP publique telle qu'elle est lue
depuis un autre endroit sur Internet, constitue une autre option :

//adresse publique

curl -4 icanhazip.com

Une fois que vous avez l'adresse IP de votre serveur, saisissez-la dans la barre d'adresse de
votre navigateur : http://adresse_ip_serveur
Vous devriez voir la page web par défaut d'Apache Ubuntu 20.04 :
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Pour tester directement sur le serveur, il faut installer lynx, un navigateur en mode console :

sudo apt-get install lynx

Puis, on accède à la page :

$ lynx http://127.0.0.1/

Ou

$ lynx http://votre_adresse_retournée_par _la_commande_hostname_-I

c. Configuration de base
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

La configuration du serveur se trouve dans /etc/apache2/apache2.conf. Ce fichier contient


des instructions Include qui permettent de déplacer certaines parties de la configuration dans
d'autres fichiers.
Debian utilise cette fonctionnalité pour les modules (comme PHP) et la gestion des serveurs
virtuels :

▪ Configuration des modules


Le répertoire /etc/apache2/mods-available contient les modules installés.
Le répertoire /etc/apache2/mods-enabled contient les modules activés. Les modules activés
sont des liens symboliques vers les modules installés.
Pour activer ou désactiver un module, on peut manipuler directement les liens ou utiliser les
commandes a2enmod et a2dismod (voir les pages de man).
Ces deux programmes (a2enmod et a2dismod) ne font rien d’autre que de créer ou supprimer
des liens symboliques dans /etc/apache2/mods-enabled/ pointant vers des fichiers de
/etc/apache2/mods-available/.
▪ Configuration des sites
De la même manière, le répertoire /etc/apache2/sites-available contient les sites web
disponibles et /etc/apache2/sites-enabled les sites activés. Il en existe un préinstallé : le site
default.
Les sites peuvent s'activer ou se désactiver en manipulant les liens dans sites-enabled ou en
utilisant a2ensite et a2dissite.
Apache distingue deux types d’hôtes virtuels :
— ceux qui se basent sur l’adresse IP : cette méthode nécessite une adresse IP différente pour
chaque site ;
— ceux qui reposent sur le nom DNS du serveur web : celle-ci n’emploie qu’une adresse IP et
différencie les sites par le nom d’hôte communiqué par le client HTTP (ce qui ne fonctionne
qu’avec la version 1.1 du protocole HTTP, employée par tous les navigateurs web actuels).
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

D’autres fichiers de configuration :


▪ ports.conf contient la directive Listen qui spécifie les adresses et les ports d’écoutes ;
▪ envvars est utilisé pour définir des variables d’environnement propres à Apache, magic est lui
utilisé pour déterminer le type de contenu d’un document en regardant les quelques premiers
octets de ce contenu ;
▪ conf.d est un répertoire qui contient plusieurs fichiers qui seront analysés par apache. Par
exemple, le fichier charset permettra de spécifier l’encodage à utiliser par défaut pour tous les
fichiers ;

L’ensemble de ces fichiers définissent une configuration par défaut qui rend le serveur HTTP
Apache fonctionnel dès le départ.
Port d’écoute du serveur

cat /etc/apache2/ports.conf | grep -i "listen"

d. Les hôtes virtuels


La configuration par défaut d’Apache2 a déjà activé les hôtes virtuels basés sur le nom grâce
au fichier /etc/apache2/sites-enabled/000-default.conf.

Ce fichier décrit en outre un hôte virtuel par défaut qui sera employé si aucun hôte virtuel
correspondant n’existe.
Lorsque vous utilisez le serveur web Apache, vous pouvez utiliser des hôtes virtuels pour
encapsuler les détails de la configuration et héberger plusieurs domaines à partir d'un seul
serveur.

Nous allons configurer un domaine appelé estfbs.

Apache sur Ubuntu 20.04 a un bloc serveur activé par défaut qui est configuré pour servir des
documents à partir du répertoire /var/www/html. Même si cela fonctionne bien pour un seul
site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de
modifier /var/www/html, créons une structure de répertoire au sein de /var/www pour
un your_domain (estfbs), en laissant /var/www/html en place comme répertoire par défaut
qui sera utilisé si une demande du client ne correspond à aucun autre site.

Créez le répertoire pour your_domain comme suit :

sudo mkdir /var/www/estfbs

Ensuite, attribuez la propriété du répertoire avec la variable d'environnement $USER

sudo chown -R $USER:$USER /var/www/estfbs


Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Les autorisations de la racine de votre site Internet devraient être correctes si vous n'avez pas
modifié votre valeur umask, qui définit les autorisations de fichier par défaut. Pour vous assurer
que vos autorisations sont correctes et permettre au propriétaire de lire, écrire et exécuter les
fichiers tout en accordant uniquement des autorisations de lecture et d'exécution aux groupes
et aux autres, vous pouvez saisir la commande suivante :

sudo chmod -R 755 /var/www/estfbs

Ensuite, créez une page index.html à l'aide de nano ou de votre éditeur favori :

sudo nano /var/www/your_domain/index.html

À l'intérieur, ajoutez l'exemple de HTML suivant :

/var/www/estfbs /index.html

<html>
<head>
<title>Welcome to ESTFBS!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
<div><h2>Bienvenue Ecole Supérieure de Technologie Fkih Ben Salah</h2><br> En
construction…</div>
</body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour qu'Apache puisse servir ce contenu, il est nécessaire de créer un fichier d'hôte virtuel
avec les directives correctes. Au lieu de modifier directement le fichier de configuration par
défaut situé dans /etc/apache2/sites-available/000-default.conf, créons-en un
nouveau dans /etc/apache2/sites-available/estfbs.conf :

sudo nano /etc/apache2/sites-available/estfbs.conf

Copier le fichier par défaut cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-


available/estfbs.conf

Modifier le fichier estfbs.conf comme suit

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName estfbs
ServerAlias www.estfbs
DocumentRoot /var/www/estfbs
ErrorLog ${APACHE_LOG_DIR}/error.log
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

Notez que nous avons mis à jour le DocumentRoot dans notre nouveau répertoire et
le ServerAdmin dans un e-mail auquel l'administrateur du site estfbs peut accéder.
Nous avons également ajouté deux directives : ServerName, qui établit le domaine de
base qui doit correspondre à cette définition d'hôte virtuel, et ServerAlias, qui
définit d'autres noms qui doivent correspondre comme s'ils étaient le nom de base.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Activons le fichier avec l'outil a2ensite :

sudo a2ensite your_domain.conf

La commande a2ensite a créé un lien symbolique du fichier de sites-available/ vers sites-enabled/ :

Désactivez le site par défaut défini dans 000-default.conf :

sudo a2dissite 000-default.conf

Ensuite, effectuons un test à la recherche d'éventuelles erreurs de configuration :

sudo apache2ctl configtest

Vous devriez voir la sortie suivante :

Syntax OK

→ Si votre serveur DNS n’est pas fonctionnel, on assure alors la résolution de noms (ici en local sur le
serveur) :

$ sudo vim /etc/hosts

127.0.0.1 localhost
…..
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Youradresslocal estfbs

Redémarrez Apache pour implémenter vos modifications :

sudo systemctl restart apache2

On peut tester l’accès au vhost avec lynx :

$ lynx http://estfbs

!! En cas d’erreur 403 (Forbidden), il vous faut évidemment vérifier tout d’abord les droits d’accès
(XX5 pour les répertoires et XX4 pour les fichiers). En cas de présence d’une directive Directory sur
/srv dans /etc/apache2/apache2.conf pour une version 2.4.6-2 d’Apache, il vous faut appliquer la
règle : Require all granted au lieu de Require all denied.

$ sudo vim /etc/apache2/apache2.conf

...
<Directory /srv/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

e. Configuration des Virtual Hosts :


Comme on vient de le voir, les balises et permettent de créer un conteneur soulignant les
caractéristiques d’un hôte virtuel. Le conteneur VirtualHost accepte la plupart des directives de
configuration. Les balises et créent un conteneur utilisé pour entourer un groupe de directives de
configuration devant uniquement s’appliquer à ce répertoire et à ses sous-répertoires. Toute
directive applicable à un répertoire peut être utilisée à l’intérieur de balises Directory.

$ cat /etc/apache2/apache2.conf

...
<Directory /var/www>
Options Indexes FollowSymLinks
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

AllowOverride None
Require all granted
</Directory>

La directive Options contrôle les fonctionnalités spécifiques du serveur qui sont disponibles dans un
répertoire particulier. Elle est suivie d’une liste d’options à activer. L’option None désactive toutes les
options. Inversement, l’option All les active toutes sauf MultiViews.

Voici les options existantes :

— ExecCGI indique qu’il est possible d’exécuter des scripts CGI.

— FollowSymlinks indique au serveur qu’il doit suivre les liens symboliques et donc effectuer la
requête sur le fichier réel qui en est la cible.

— SymlinksIfOwnerMatch a le même rôle mais impose la restriction supplémentaire de ne suivre le


lien que si le fichier pointé appartient au même propriétaire.

— Includes active les inclusions côté serveur SSI (Server Side Includes). Il s’agit de directives
directement intégrées dans les pages HTML et exécutées à la volée à chaque requête.

— Indexes autorise le serveur à retourner le contenu du dossier si la requête HTTP pointe sur un
répertoire dépourvu de fichier d’index (tous les fichiers de la directive DirectoryIndex ayant été
tentés en vain).

— MultiViews active la négociation de contenu, ce qui permet notamment au serveur de renvoyer la


page web correspondant à la langue annoncée par le navigateur web.

La directive AllowOverride définit si des Options peuvent être annulées par les instructions présente
dans un fichier .htaccess. Par défaut, aussi bien le répertoire racine que le répertoire DocumentRoot
sont paramétrés pour ne permettre aucune annulation via .htaccess.

La directive DirectoryIndex précise la liste des fichiers à essayer pour répondre à une requête sur un
répertoire (une URL se terminant par /). Le premier fichier existant est appelé pour générer la
réponse.

S’il ne trouve aucun des fichiers et que Options Indexes est paramétrée pour ce répertoire, le serveur
génère et renvoie une liste au format HTML, des sous-répertoires et fichiers contenus dans le
répertoire (à moins que la fonctionnalité de listage des répertoires ne soit desactivée).

Les directives Allow from (autoriser en provenance de) et Deny from (refuser en provenance de), qui
s’appliquent à un répertoire et à toute l’arborescence qui en est issue, paramètrent les restrictions
d’accès.

La directive Order contrôle simplement l’ordre dans lequel les directives Allow et Deny sont
analysées.

La directive Allow spécifie le client pouvant accéder à un répertoire donné. Le client peut être all, un
nom de domaine, une adresse IP, une adresse IP partielle, une paire réseau/masque réseau, etc.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

La directive Deny fonctionne selon le même principe que Allow, sauf que cette fois-ci, l’accès est
refusé à un client donné.

<Directory /var/www/lib>
Order Deny,Allow
Deny from All
</Directory>

5. Mettre en place d’un serveur DHCP


Le protocole DHCP (pour Dynamic Host Configuration Protocol) est un protocole réseau dont le rôle
est d'assurer la configuration automatique des paramètres réseau d'une station, notamment en lui
assignant automatiquement une adresse IP et un masque de sous-réseau.

Le protocole DHCP est très souvent mis en oeuvre par les administrateurs de parc de stations car il
offre l'énorme avantage de centraliser la configuration des stations sur une unique machine : le
serveur DHCP. Le principal danger de DHCP est qu'en cas de panne du serveur DHCP, plus aucune
station n'accède au réseau.

Il y a deux utilisations principales d'un serveur DHCP :

• attribuer une configuration fixe à certains postes (on les reconnaît grâce à leur adresse MAC)

• et attribuer une configuration dynamique aux postes inconnus.

On peut par exemple donner une adresse IP fixe à certains serveurs, et attribuer des adresses
variables aux autres postes. Le protocole est prévu pour qu'un poste qui revient sur le réseau
récupère la même adresse qu'il avait la première fois. Elle lui est réservée un certain temps (le lease
time).

a. Installation
Par défaut, le package du serveur DHCP est inclus dans le référentiel par défaut d'Ubuntu. Vous
pouvez l'installer avec la commande suivante :

apt-get install isc-dhcp-server -y

Une fois l'installation terminée, démarrez le service DHCP et activez-le au redémarrage du système
avec la commande suivante :

systemctl start isc-dhcp-server


systemctl enable isc-dhcp-server

b. Configuration
Fichier de configuration par défaut du serveur DHCP situé dans /etc/dhcp/dhcpd.conf.
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

Il possède des options globales, généralement placées au début, et des sections pour chaque hôte ou
réseau à configurer.

Après chaque modification de la configuration, il faut relancer le serveur :

Sudo systemctl restart isc-dhcp-server

S'il ne se relance pas, le détail de l'erreur se trouve généralement dans /var/log/syslog

c. Interfaces
Par défaut, le serveur DHCP(Dynamic host configuration protocol) est lancé sur toutes les interfaces.
Dans ce cas il est impératif de configurer un réseau par interface dans dhcpd.conf.

Pour choisir les interfaces sur lesquels le serveur est lancé, il faut modifier /etc/default/isc-dhcp-
server en indiquant par exemple

INTERFACES="enp0s3 enp1s3"

Il est obligatoire d'avoir une section "subnet" (voir ci-dessous) pour le réseau de chaque interface.

d. Adresse dynamique
Pour configurer une plage d'adresses à attribuer dynamiquement aux adresses MAC inconnues, on
utilise une section subnet dans dhcpd.conf.

La section suivante attribuera par exemple des adresses comprises entre 192.168.1.101 et

192.168.1.199 :

subnet 192.168.1.0 netmask 255.255.255.0 {


range 192.168.1.101 192.168.1.199;
}

e. Adresse fixe
Pour donne une adresse fixe à un poste, il faut connaître son adresse MAC et écrire une section host.
Par exemple la section suivante attribue l'adresse 192.168.0.47 au poste cobalt dont l'adresse MAC
est 00:13:d4:bd:b7:9a :

host cobalt {
Université Sultan Moulay Slimane
Ecole Supérieure de Technologie
-Fkih -Ben Salah-

hardware ethernet 00:13:d4:bd:b7:9a;


fixed-address 192.168.0.47;
}

f. Options
Le serveur DHCP peut fournir d'autres informations que l'adresse IP. Ces options peuvent être définies
de manière globale en les plaçant en dehors de toute section. Elles s'appliqueront alors à toutes les
sections qui ne les redéfinissent pas. Si elles sont placées dans une section particulière, elles ne
s'appliquent qu'à celle-ci.

L'option domain-name-servers permet par exemple d'indiquer au poste les adresses des serveurs DNS.
L'option routers indique la passerelle.

Toutes les options sont décrites dans la page de man. On peut également consulter cette
documentation sur internet.

Vous aimerez peut-être aussi