Admin Version0.01
Admin Version0.01
Admin Version0.01
25 mars 2022
Table des matières
1 Netplan 4
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Répertoire de fichier de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Structure générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Routage IPv4 7
2.1 D’une façon temporaire (jusqu’au prochain démarrage) . . . . . . . . . . . . . . . . . . . . . 7
2.2 D’une façon permanant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 NAT 8
3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 Créer un service 9
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Init.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3 Les RunLevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4 Mise à jour des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5 Demarrage et arrêt des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5.1 La commande service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5.2 La commande systemctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5.3 depuis l’éxécutable du service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 LOGs 14
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2 Liste des logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.3 Consulter les LOGs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4 Ajouter une ligne de LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
6 DHCP 16
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.2 isc-dhcp-server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3.1 /etc/dhcp/dhcpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.3.2 Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.3.3 Blocs « subnet » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.3.4 /etc/default/isc-dhcp-server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7 En pratiques 19
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2 Installation des outils sur Ubuntu Desktop 20.04 . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2.1 Virtualbox 6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2.2 GNS3 et WireShark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2.3 Installation de Ubuntu Server sur une machine virtuelle . . . . . . . . . . . . . . . . . 20
7.2.4 Cloner la machine pour une future utilisation . . . . . . . . . . . . . . . . . . . . . . . 21
7.2.5 Préparer l’environnement GNS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2
Introduction :
Pour aborder ce module vous devez garder en tête les basiques sur les réseaux tel que les notions d’adressage
IPv4 les protocoles tel que TCP, UDP, ICMP ou autre notion basique des réseaux locaux, il est aussi
important de ne pas perdre de vue les manipulations de base d’un système linux tel que l’édition des fichiers
en ligne de commandes, la manipulation des droits d’accès, les scriptes Bash.
Vus qu’on va utiliser des outil Open Sources et que ces outils sont en constante évolution, l’un de mes
objectifs est de vous habituer a utilisé les documentations officielles des outils qu’on manipule afin de pouvoir
faire face à n’importe quelle situation future. Par conséquent je vous demande de noter que les manipulation
et information de ce résumé sont réalisé en 2021/2022 sur la distribution Ubuntu server 20.04 LTS
3
Chapitre 1
Netplan
1.1 Introduction
Depuis la version 17.10 de Ubuntu, on peut configurer le réseau sur une machine en ligne de commande
avec l’outil Netplan. On a un ou plusieurs fichiers de configuration au format YAML sur lequel on peut
décrire notre configuration, attention le fichier est structuré (comme un code python) avec des indentations
et ces indentations doivent impérativement être des espaces et non des tabulations. NetPlan n’ait pas un
gestionnaire de réseaux en lui-même mais permet de configurer un gestionnaire tel que “networked” ou
“Network Manager” l’objectif du projet NetPlan et d’unifier la configuration et facilité le déploiement des
systèmes.
Pour net plan on peut trouver des fichiers de configuration au format YAML sous l’un des répertoires
suivants :
« /run/netplan/ », « /etc/netplan/ », « /lib/netplan/ » Si un fichier de configuration portant le même
nom sur ces différents répertoires existe un ordre de priorité est appliqué, les fichier sur /run/netplan/ son
plus prioritaires et masque les fichiers de mêmes noms des autres répertoires, si un fichier sur /etc/netplan/
porte le même nom qu’un fichier sur /lib/netplan/ ce dernier sera masqué
Le nœud de niveau supérieur dans un fichier de configuration netplan est "Network: " qui contiens "Version:
2" puis les définitions de périphériques regroupées par leur type, telles que "ethernets:" , "modems :", "wifis:",
ou "bridges :"
Sur chaque groupe on peut identifier l’équipement a configuré par son nom ou par une directive “match:”
qui permet d’identifier l’équipement a configuré par son nom, son adresse MAC ou son driver
Exemples :
#tout les cards sur le second bus PCI:
match:
name: enp2*
#adresse MAC fixe:
4
match:
macaddress: 11:22:33:AA:BB:FF
#première carte du driver ixgbe(sur n'importe que bus PCI):
match:
driver: ixgbe
name: en*s0
#première carte avec le driver bcmgenet ou smsc*(sur n'importe que bus PCI:
match:
driver: ["bcmgenet", "smsc*"]
name: en*
REMARQUE : il faut noter ici que linux attribue les noms des périphériques depuis les emplacements sur
les quel ils sont installés sur la carte mère et la directive « match » permet de localiser un périphérique
selon ces critères
REMARQUE : s’il s’agit d’une configuration standard on peut se passer de la directive match et utilisé
directement les noms des cartes réseaux qu’on peut obtenir depuis la commande « ip a »
Ensuit on peut utiliser les directives suivantes pour configurer nos interfaces :
Exemple
1 network:
2 version: 2
3 ethernets:
4 enp0s3:
5 addresses: [ "192.168.0.100/23" ]
6 nameservers:
7 addresses: [ "8.8.8.8", "8.8.4.4" ]
8 #on peut utiliser routes ou gateway4
9 #gateway4: 192.168.1.1
10 routes:
11 -to: default
12 via: 192.168.1.1
13 enp0s8:
14 dhcp4: true
15 addresses: ["100.100.100.1/31"] # ici l'interface aura 2 addresses IP
5
16 routes:
17 -to: 123.100.100.0/24
18 via: 100.100.100.2
6
Chapitre 2
Routage IPv4
Par défaut les noyaux linux son capable de faire le routage et on peut activer/desactivé cette fonctionnalité
par deux moyens :
7
Chapitre 3
NAT
3.1 Définition
NAT (Network Address Translation) est un processus de modification des adresses IP et des ports source
et de destination. La traduction d’adresses réduit le besoin d’adresses publiques IPv4 et masque les plages
d’adresses réseau privées. Le processus est généralement effectué par des routeurs ou des pares-feux.
Bien que notre machine linux est capable de faire du routage. Sans la technique NAT les paquet IP routé
vers les réseaux externes seront perdu vu que les routeurs des réseaux externes ne peuvent pas localiser notre
réseau privé dans leurs tables de routage.
3.2 Iptables
Iptables est un outil puissant de manipulation des paquets IP il est présent par defaut sur la pluspart des
distribution linux et peut facilement gérer la translation d’adresses avec la règle suivante :
iptables t nat o <interface de sortie> -A POSTROUTING j MASQUERADE
Option Déscription
-t nat La table conserné par cette regle
-A POSTROUTING Ajouté la règle a la chaine POSTROUTING (après le
routage)
-j MASQUERADE L’opération de translation d’adresse
-o <interface> Permet d’identifier les paquets auquel s’applique
cette règle, soit les paquets sortant de l’interface
<interface>
8
Chapitre 4
Créer un service
4.1 Introduction
Un service ou un daemon, est un type de programme informatique, un processus ou un ensemble de
processus qui s’exécute en arrière-plan plutôt que sous le contrôle direct d’un utilisateur.
4.2 Init.d
Sous linux on peut créer un service en ajoutant un programme exécutable sous le répertoire /etc/init.d/
ce programme doit pouvoir prendre en paramètre certaines option pour démarrer, arrêté où redémarrer le
service en question pour simplifier on peut utiliser un scripte créer pour exécuter des programmes en tant
que service qu’on pourra configurer avec nos besoins. Ici le scripte en question
1 #!/bin/sh -e
2
3 #la partie configurable du script
4
5 DAEMON="<NomDuProgramme>" #ligne de commande du programme.
6 daemon_OPT="<ParamètreDuProgramme>" #argument à utiliser avec le programme
7 DAEMONUSER="<NomD'utilisateur>" #utilisateur du programme
8 daemon_NAME="<NomDuDaemon>" #Nom du programme (doit être identique au nom de ce fichier).
9
10 #fin de la config
11
12 PATH="/sbin:/bin:/usr/sbin:/usr/bin"
13 #Verifier que le programme est exécutable
14 test -x $DAEMON || exit 0
15 #importer les fonctions de gestion des daemons
16 . /lib/lsb/init-functions
17
18 #fonction qui demarre le service
19 d_start () {
20 #ecrir sur les LOGs du système que le démon a démarré
21 log_daemon_msg "Starting system $daemon_NAME Daemon"
22 #démarrer le programme en arière plant en tant que $DAEMONUSER
9
23 start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --
exec $DAEMON -- $daemon_OPT
24 # ecrir dans les LOGs l'état de sortie du programme (code d'erreur)
25 log_end_msg $?
26 }
27 d_stop () {
28 log_daemon_msg "Stopping system $daemon_NAME Daemon"
29 start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet --name $daemon_NAME
30 log_end_msg $?
31 }
32 case "$1" in
33 start|stop)
34 d_${1}
35 ;;
36 restart|reload|force-reload)
37 d_stop
38 d_start
39 ;;
40 force-stop)
41 d_stop
42 killall -q $daemon_NAME || true
43 sleep 2
44 killall -q -9 $daemon_NAME || true
45 ;;
46 status)
47 status_of_proc "$daemon_NAME" "$DAEMON" "system-wide $daemon_NAME" && exit 0 || exit
$?
48 ;;
49 *)
50 echo "Usage: /etc/init.d/$daemon_NAME {start|stop|force-stop|restart|reload|force-
reload|status}"
51 exit 1
52 ;;
53 esac
54 exit 0
Une fois le scripte est bien configuré on s’assure qu’il est exécutable ensuite on va devoir décider à quel
moment le service va être démarrer ou arrêter
10
Niveau Description
Runlevel 0 Arrêt du system
Runlevel 1 Mode exécution mono utilisateur
Runlevel 2 Mode exécution multi-utilisateur sans réseau
Runlevel 3 Mode exécution multi-utilisateur avec réseau
Runlevel 4 Non utilisé
Runlevel 5 Niveaux 3 avec moteur graphique
Runlevel 6 Redémarrage du système
Pour chaque niveau d’exécution le système dispose d’un répertoire nommer /etc/rcX.d/ (X étant le numéro
du niveaux).
Pour que notre service démarre ou s’arrête à un niveau d’exécution on va créer un lien symbolique de
l’exécutable de ce service dans l’un de ces répertoires en ajoutant un préfix au nom du service indiquant si
on va démarrer ou arrêter le service et avec quelle priorité de cette façon :
EXX<NomDuService> avec
E = S pour démarrer le service ou K pour arrêter le service
XX est une priorité entre 01 et 99, 01 étant plus prioritaire
11
Fig. 4.3.2 : ls -l sur /etc/rc0.d
12
4.5.3 depuis l’éxécutable du service
13
Chapitre 5
LOGs
5.1 Introduction
Comme tout système d’exploitation, Linux enregistre des journaux et logs. Ces derniers permettent d’ob-
tenir des informations sur l’exécution des processus systèmes mais aussi aider lorsque vous avez des plantages
ou des erreurs.
• /var/log/boot.log : Journal de démarrage du système (le journal de démarrage stocke toutes les
informations relatives aux opérations de démarrage)
• /var/log/auth.log : journaux d’authentification (le journal d’authentification stocke tous les journaux
d’authentification, y compris les tentatives réussies et échouées)
• /var/log/debug : journaux de débogage (le journal de débogage stocke des messages détaillés liés au
débogage et est utile pour dépanner des opérations système spécifiques)
• /var/log/daemon.log : journaux des démons (le journal des démons contient des informations sur les
événements liés à l’exécution de l’opération Linux)
• /var/log/maillog : journaux du serveur de messagerie (le journal de messagerie stocke les informations
relatives aux serveurs de messagerie et à l’archivage des e-mails)
• /var/log/kern.log : Journaux du noyau (le journal du noyau stocke les informations du noyau Ubuntu
Linux)
• /var/log/btmp : enregistrements d’échecs de tentatives de connexion
• /var/log/utmp : état de connexion actuel, par utilisateur
• /var/log/wtmp : historique des connexions / déconnexions
• /var/log/lastlog : informations sur les dernières connexions pour tous les utilisateurs. Ce fichier binaire
peut être lu par la commande lastlog.
14
Certaines daemon et applications peuvent y mettre leurs fichiers journaux, c’est le cas d’apache, postfix,
mysql, nginx et bien d’autres.
On peut aussi utiliser l’option -f de tail pour voir les LOGs en temps réel
Exemple
sudo tail -f /var/log/apache2/access.log
15
Chapitre 6
DHCP
6.1 Introduction
Le protocole DHCP (Dynamic Host Configuration Protocol (en) : « Protocole de configuration dynamique
des hôtes » (fr)) est un service réseau TCP/IP. Il permet aux ordinateurs clients l’obtention automatique
d’une configuration réseau. Il évite la configuration de chaque ordinateur manuellement. Les ordinateurs
configurés pour utiliser DHCP n’ont pas le contrôle de leur configuration réseau qu’ils reçoivent du serveur
DHCP. La configuration est totalement transparente pour l’utilisateur.
Tout ordinateur d’un réseau TCP/IP nécessite une adresse IP pour pouvoir communiquer avec les autres
ordinateurs du réseau. Ces adresses IP sont attribuées :
ATTENTION !!! Ne pas confondre fixe et statique : le serveur DHCP peut attribuer des adresses IP fixes
(toujours la même) en fonction de l’adresse MAC reçue.
Configurée pour utiliser le protocole DHCP, une carte réseau à son démarrage envoie une demande sur le
réseau (une requête DHCP). Le serveur DHCP, à l’écoute sur le réseau, débute la procédure d’identification
et lui attribue une adresse en fonction de celle-ci.
6.2 isc-dhcp-server
pour installer le ce service il suffis de taper les commandes
sudo apt update
sudo apt -y install isc-dhcp-server
6.3 Configuration
Le service dispose de deux fichier de configuration.
16
6.3.1 /etc/dhcp/dhcpd.conf
6.3.2 Directives
Directive type Déscription
default-lease-time entier Temps en seconde du bail1
max-lease-time entier Temps maximale en seconde du bail2
option subnet-mask @IP Masque sous réseaux
option broadcast-address @IP Adresse de diffusion
option routers @IP Passerelle par défaut
option domain-name-servers @IPs Ensemble d’adresses des serveurs DNS
option domain-name nom de domaine (chaine) Ensemble de nom de domaine de
recherche
option ntp-servers @IPs/noms de domaine noms ou adresses IPs des serveur de
temps
deny unknown-clients ; Si cette directive est présente, seul les
adresses fix sont distribuer
un bloc subnet definie la plage d’adresse a distribuer il se présente sous la forme suivante :
Exemple :
1 default-lease-time 86400; # 1 jour
2 max-lease-time 604800; # 1 semaine
3 option subnet-mask 255.255.254.0;
4 option broadcast-address 192.168.1.255;
5 option routers 192.168.1.1;
6 option domain-name-servers 8.8.8.8, 8.8.4.4;
7 option domain-name "essat-gabes.lan";
8 option ntp-servers 192.168.1.254;
9
10 subnet 192.168.1.0 netmask 255.255.254.0 {
11 range 192.168.0.1 192.168.0.250;
12 range 192.168.1.10 192.168.1.150;
13 range 192.168.1.160 192.168.1.250;
14 host Server1 {
17
15 hardware ethernet DD:FC:DF:E5:F7:D7;
16 fixed-address 192.168.1.254;
17 }
18 host Server2 {
19 hardware ethernet 00:AA:FF:38:AC:45;
20 fixed-address 192.168.1.253;
21 }
22 host Printer1 {
23 hardware ethernet 00:BB:DD:38:00:41;
24 fixed-address 192.168.1.152;
25 }
26 }
6.3.4 /etc/default/isc-dhcp-server
Sur ce fichier de configuration on peut spécifier le ou les noms des interfaces réseaux sur les quel le service
DHCP est activé
on utilise la directive :
INTERFACESv4="<interface1> <interface2>"
Exemple :
INTERFACESv4="enp0s8"
18
Chapitre 7
En pratiques
7.1 Introduction
Les outils utilisés pour ce module sont :
VirtualBox 6.1 pour virtualiser nos serveurs + ISO Ubuntu Server 20.04 LTS
GNS3 pour la virtualisation du réseau
Wire Shark pour le débogage et l’observation du trafique réseaux
19
Je vous conseille ensuite de télécharger et d’installer le VirtualBox Extension Pack depuis la page de
téléchargement de VirtualBox : https://www.virtualbox.org/wiki/Downloads Il n’est pas obligatoire mais
très utiles si on a besoin de certaines fonctionnalités tel que le support des USB 2 et 3.
20
Type de fichier du disque dur : VDI
Stockage sur disque dur physique : dynamiquement alloué
On configure la machine pour :
Ajouter l’ISO de Ubuntu Server 20.04 dans la section Stockage –> unité de stockage –> Contrôleur : IDE
–> Vide ==> Lecteur Optique : –> choose a disque file
Modifier le mode d’accès réseaux de NAT a accès par pont dans la section Réseaux
Avancé –> mode promiscuité : Allow All
On valide et on démarre la machine.
Sur l’assistant d’installation on choisit :
la langue : Français
Mise a jours de l’assistant d’installation : Continu without updating
Configuration du clavier : identifier le clavier (et répondre aux questions de l’assistant)
Connection Réseaux : si tout va bien vous devriez voir que l’interface enp0s3 à récupérer une adresse IP
en DHCPv4 et on valide simplement cette étape si non on vérifie que l’accès par pont est configuré pour
fonctionner sur l’interface de votre ordinateur qui est connecté à internet (wifi ou câble)
Adresse du proxy : vide
Mirror address : ne pas changer
Guided storage configuration : décoché la case “Set up this disk as an LVM group” et terminer
Storage Configuration : Terminer et Continuer
Configuration du profil : remplir simplement le formulaire
SSH setup : cocher la case Install OpenSSH server et terminer
Featured Server Snaps : ne rien cocher et terminé
Attendre la fin de l’installation
Vers la fin de l’installation on sélectionne “Redémarrer maintenant”
Une fois la machine à démarrer on se connecte et on met la machine à jour avec la commande
Sudo apt update ; sudo apt –y full-upgrade
Et on arrete la machine avec
Sudo shutdown –h now
Sur VirtualBox on fait un clique droit sur la machine –> cloner –> suivant –> Clone Integrale –> Cloner
21
On édite la machine pour lui ajouter une interface reseaux dans l’anglet Network on augmente le nombre
d’adapters a 2
Au choix on peut lui ajouter une icône de routeur vu qu’on s’en servira en tant que routeur
Préparer le réseau
Depuis le menu All Devises ajouter notre machine virtuelle un switch et un VPC au projet connecté le
port Ethernet 1 (attention le port Ethernet 0 reste vide coté GNS3, il est géré par VirtualBox et connecte
notre machine au réseau externe) du routeur au switch et connecté le VPC au switch
ATTENTION !!! A partir de ce moment on ne démarre cette machine qu’à partir de GNS3
On cherche à transformer notre machine en routeur pour cela on va gérer le réseau, activer le routage
activer la translation d’adresse, créer des services et installer des serveurs.
22