1. I K R A M B E N A B D E L O U A H A B
Introduction
Systèmes de fichiers (Rappel)
Types de fichiers sous Unix (Rappel)
Les droits d'accès classiques (Rappel)
Les droits d'accès spéciaux (Rappel)
Gestion des droits d'accès (Rappel)
Création manuelle d'un compte Unix (Rappel)
TP 1: DNS
TP 2: Apache
TP 3: OpenVPN et SSL
TP 4: Configuration de l'annuaire LDAP
TP 5: Authentification avec LDAP par un client Ubuntu
Cours:
TP Administration des services Unix
A d m i n i s t r a t i o n S y s t èm e
N O T E S D E C O U R S E T T P
2. Introduction
GNU/Linux ou Linux est un système d'exploitation associant des éléments essentiels du projet GNU
et le noyau Linux.
Fondé en 1984 par Richard Stallman, le système d'exploitation GNU resta jusqu'en 1991 au stade
expérimental car son noyau Hurd était toujours en développement. Cependant, Linus Torvalds
créa indépendamment le noyau Linux qui résolut le problème en remplaçant Hurd.
Néanmoins, cette mise en relation des deux projets engendra une controverse toujours d'actualité
autour du nom du système associant les deux éléments, certains, dont le grand public, appelant le
système simplement Linux, et d'autres, dont Richard Stallman, défendant le nom combiné
GNU/Linux.
Rappel : Systèmes de fichiers
Il existe 3 systèmes de fichiers : NTFS, FAT32, EXT4.
NTFS : Utiliser sous Windows
FAT32 : Utiliser sous Linux et Windows
Caractéristiques du FAT32 :
Un fichier ne peut pas dépasser 4Go (Lecture lourde)
Le système n’est pas journalier c’est-à-dire, il ne sauvegarde pas les éléments de
l’historique (les fichiers .log)
Le système de fichiers ne supporte pas le chiffrement (moins sécurisé)
Définition d’un système de fichiers :
Un système de fichiers est la méthode utilisée pour stocker de l’information sur un
disque dur.
UNIX
Linux (1991) BSD
MAC OS Windows
3. Pour stocker l’information, on utilise :
Physiquement : un disque dur.
Logiquement :
Windows : Forêt
Linux : Arbre
4. Rappel : Types de fichiers sous Unix
Sous Microsoft Windows, on distingue deux catégories de fichiers :
1. les fichiers réguliers, qui stockent des informations,
2. les répertoires, appelés aussi dossiers, qui regroupent un ensemble de fichiers (fichiers
réguliers ou dossiers)
Sur un système UNIX, la notion de fichiers est plus générale et ne se limite pas à ces deux types de
fichiers.
Rappel : Les droits d’accès Classiques
5. Rappel : Les droits d’accès spéciaux
Les setuid, setgid et sticky bit sont des droits dits spéciaux, ils s’ajoutent aux droits classiques
(lecture, écriture et exécution) et fonctionnent différemment suivant qu’on les applique sur un
fichier ou un répertoire.
Le Sticky bit
Le Sticky bit est un droit spécial dont le comportement est différent pour les fichiers exécutables et
les répertoires. Il correspond à la lettre t ou numériquement à 1000. Si les droits d'exécution ne sont
pas positionnés c'est la lettre T qui correspond.
les fichiers exécutables - le programme restera en mémoire pour une exécution ultérieure
les répertoires - si le sticky bit est positionné sur un répertoire, seul le propriétaire pourra
supprimer ses fichiers (c'est le cas des répertoires /tmp et /var/tmp sous GNU/Linux)
Les droits d'endossement
SetUID et SetGID
Les droits d'endossement dans GNU/Linux sont représentés par :
la lettre s (si le droit x est positionné)
la lettre S (si le droit x n'est pas positionné)
Le comportement des droits d'endossement.
Pour les fichiers programme ou exécutable
o SUID = 4000 - le processus a les droits du propriétaire du programme exécuté
o SGID = 2000 - le processus a les droits du groupe du programme exécuté
Pour les répertoires
o SGID = 2000 - les fichiers qui se trouvent dans le répertoire appartiennent au groupe
du répertoire
Les droits d'endossement sont très importants pour la sécurité.
Au lieu de donner l'accès à un fichier, on donne le droit d'accès à une commande.
Le kernel (ou noyau), au moment de l'exécution de la commande endosse l'identité du
propriétaire ou du groupe de la commande au lieu de celle de l'utilisateur qui a lancé la
commande. Donc l'accès au fichier se fait par le biais de la commande et non pas directement.
6. Rappel : Gestion des droits d’accès
Chmod
La commande chmod (CHangeMODe) permet de définir et de changer les droits d'accès d'un
fichier ou un ensemble de fichiers.
Parmi les options de la commande chmod on cite ces deux :
v pour verbose (affichage sur la sortie standard STDOUT du résultat de la commande)
R traiter les répertoires de façon récursive (application de la commande à l'arborescence
entière du répertoire en question)
Il y a deux modes d'utilisation de la commande chmod :
de façon littérale
de façon numérique
chmod utilise la notation suivante :
u - pour le propriétaire (user)
g - pour le groupe (group)
- pour les autres (other)
a - pour tous (all)
Une autre notation sera utilisée pour attribuer et/ou retirer des droits.
+ (plus) pour attribuer
- (moins) pour retirer
= (égale) pour fixer l'accès exact
Umask
La commande umask permet de définir les droits par défaut d'un fichier ou répertoire à sa
création. Autrement dit elle indique les droits qu'il faut retirer lors de leur création.
$ umask 0022 fichier
Chown
Pour changer le propriétaire d'un fichier il faut utiliser la commande : chown usager fichier
Usermod
Cette commande permet de modifier un user
$ usermod –G group0 user3
-g : Changer le groupe propriétaire
-G : Ajouter l’utilisateur à un autre groupe
Useradd
Cette commande permet la création d’un nouveau compte utilisateur.
On peut préciser le groupe lors de la création du compte utilisateur (sans créer le groupe par
défauts) :
$ useradd –gid 5000 user5
7. Rappel : Création manuelle d’un Compte Unix
Les fichiers à modifier :
/etc/passwd
/etc/group
/etc/shadow
/home
1. Editer le fichier : /etc/passwd
2. Editer le fichier : /etc/group
3. Editer le fichier : /etc/shadow
4. Création du répertoire personnel : /home/newUser
#mkdir /home/newUser
#chown newUser:newUser /home/newUser
5. /etc/skel
Le repertoire /etc/skel contient le profil par défauts càd les fichiers nécessaires au démarrage de la
session.
On doit copier le contenu du profil par défauts à partir de /etc/skel vers le répertoire personnel du
nouveau utilisateur.
N’oublier de modifier le propriétaire et le groupe du répertoire créer et son contenu.
9. Configuration d’un serveur DNS sous Debian, connecté à deux clients
Client 1 : Ubuntu ou Debian
Client 2 : Windows
Configuration du Serveur DNS
DNS : signifie soit Domain Name System ou Domain Name Server
La mise en place d'un serveur DNS sur un réseau permet de remplacer les adresses IP des machines
par un nom. Ainsi, il est même possible d'associer plusieurs noms à la même machine pour mettre en
évidence les différents services possibles.
1) Installer bind9
#apt-get install bind9
Les Ressources Records (RR)
Un DNS est constitué de plusieurs enregistrements, les RR ou Ressources Records, définissant les
diverses informations relatives au domaine.
Le premier enregistrement est consacré à la résolution de noms, dans notre cas, il s'agit du
fichier db.sir.lan.
Le second sera quant à lui en rapport avec la résolution de noms inverses ; il s'agit du fichier
db.sir.lan.inv.
2) Créer le fichier : /etc/bind/db.sir.lan
#nano /etc/bind/db.sir.lan
3) Créer le fichier : /etc/bind/db.sir.lan.inv
#nano /etc/bind/db.sir.lan.inv
$TTL 604800
@ IN SOA server1.sir.lan. root.sir.lan. (
201704151 ;Serial
604800 ;Refresh
86400 ;Retry
2414200 ;Expire
604800 ;Negative Cache TTL
)
@ IN NS server1.sir.lan.
server1 IN A 192.168.1.1
client1 IN A 192.168.1.20
client2 IN A 192.168.1.21
$TTL 604800
@ IN SOA server1.sir.lan. root.sir.lan. (
201704151 ;Serial
604800 ;Refresh
86400 ;Retry
2414200 ;Expire
604800 ;Negative Cache TTL
)
@ IN NS server1.
1 IN PTR server1.sir.lan.
20 IN PTR client1.sir.lan.
21 IN PTR client2.sir.lan.
10. Quelques explications
$TTL : (Time To Live) exprime la durée (en secondes) de validité, par défaut, des informations
que contiennent les RRs. Une fois ce délai expiré, il est nécessaire de vérifier à nouveau les
données. Les différents types :
SOA : permet de définir les informations relatives à la zone. En l'occurrence le nom du
serveur DNS primaire "server1.sir.lan." et l'adresse mail du contact technique.Il est compose
de plusieurs champs :
Serial : est un entier non signé 32 bits. C'est le numéro de série à incrémenter à
chaque modification du fichier. Il permet au serveur secondaire de recharger les
informations qu'ils ont. L'usage général vient à le formater de cette manière
YYYYMMDDXX, soit pour la première modification du 01/04/2007 -> 2007040101,
pour la seconde 2007040102.
Refresh : définit la période de rafraîchissement des données.
Retry : si une erreur survient au cours du dernier rafraîchissement, celle-ci sera
répétée au bout du délai Retry.
Expire : le serveur sera considéré comme non disponible au bout du délai Expire.
Negative cache TTL : définit la durée de vie d'une réponse NXDOMAIN de notre part.
NS : renseigne le nom des serveurs de noms pour le domaine.
A : associe une nom d'hôte à une adresse ipv4 (32 bits)
AAAA : associe une nom d'hôte à une adresse ipv6 (128 bits)
PTR : c'est simplement la résolution inverse (le contraire du type A).
Les classes : IN détermine l'association a la classe Internet.
4) Modifier le fichier : /etc/bind/named.conf.local
Ce fichier contient la configuration locale du serveur DNS, on y déclare les zones associées au
domaine. Ainsi on Informe le serveur DNS des fichiers de configuration.
5) Modifier le fichier : /etc/bind/named.conf.options
Ce fichier contient l'ensemble des options de configuration du serveur DNS.
Ici on fait la déclaration des serveurs externes par ordre.
#nano /etc/bind/named.conf.local
zone ″sir.lan″{
type master ;
file ″/etc/bind/db.sir.lan″ ;
forwarders {} ;
} ;
zone ″1.168.192.in-addr.arpa″{
type master ;
file ″/etc/bind/db.sir.lan.inv″ ;
forwarders {} ;
} ;
#nano /etc/bind/named.conf.options
. . .
forwarders{
8.8.8.8 ;
212.217.0.1 ;
} ;
. . .
11. 6) Modifier le fichier : /etc/hosts
#nano /etc/hosts
7) Modifier le fichier : /etc/resolv.conf
#nano /etc/resolv.conf
8) Démarrer le service DNS
#/etc/init.d/bind9 restart
Les outils de tests
La commande dig : Elle permet d'interroger directement le serveur DNS de son choix et
d'obtenir de nombreuses informations, en plus de la résolution de noms et la résolution
inverse.
La commande nslookup : Elle est moins performante mais reste utile.
named-checkconf : Elle permet de vérifier la syntaxe des fichers de configuration de Bind9.
named-checkzone : Elle permet de vérifier la validité des fichiers de zones avant de recharger
la configuration.
9) Tests de configuration
#cd /etc/bind
#named-checkzone sir.lan db.sir.lan
#named-checkzone sir.lan.inv db.sir.lan.inv
#named-checkconf named.conf.local
#named-checkconf named.conf.options
Si tout va bien, on passe aux tests de fonctionnement.
10)Tests de fonctionnement (au niveau du serveur)
Test 1 :
#host server1.sir.lan
Résultat attendue : Adresse IP
#host 192.168.1.1
Résultat attendue : Nom du domaine
Test 2 :
#nslookup server1.sir.lan
#nslookup @ 192.168.1.1
Test 3 :
#dig server1.sir.lan
#dig -X @ 192.168.1.1
127.0.0.1 localhost.localdomain localhost
127.0.1.1 server1.sir.lan server1
192.168.1.1 server1.sir.lan server1
domain sir.lan
search sir.lan
nameservers 192.168.1.1
12. Test 4 :
#ping 192.168.1.1
#ping server1.sir.lan
Configuration des Clients
Client Linux (Ubuntu)
1) Vérifier l’adresse IP : 192.168.1.20
2) Modifier le fichier : /etc/hosts
#nano /etc/hosts
3) Modifier le fichier : /etc/resolv.conf
#nano /etc/resolv.conf
4) Test de fonctionnement
#ping server1.sir.lan
#ping client1.sir.lan
Client Windows
Vérifier l’adresse IP de la machine : 192.168.1.21
Modifier l’adresse du serveur DNS préféré : 192.168.1.1
On peut ajouter des suffixes DNS : sir.lan
Tester avec le ping : #ping server1.sir.lan
127.0.0.1 localhost.localdomain localhost
127.0.1.1 server1.sir.lan server1
192.168.1.1 server1.sir.lan server1
search sir.lan
nameservers 192.168.1.1
14. Création d’une page personnelle avec Apache
1) Installation d’Apache
Apache est un serveur http.
2) Modifier le fichier apache2.conf
3) Activer le module : userdir
Le serveur HTTP Apache est un programme modulaire permettant à l'administrateur de choisir les
fonctionnalités qu'il souhaite activer, au moyen de modules.
Le module userdir est désactivé par défauts.
Il faut ensuite redémarrer le service apache :
Après l’activation du module userdir les fichiers userdir.conf et userdir.load s’ajoutent dans
le dossier /etc/apache2/mods_enabled
4) Automatisation des tâches
On modifie le squelette de la création des nouveaux users. L’avantage est de ne pas avoir besoin à
chaque fois de devoir créer le répertoire public_html et logs quand on crée un nouvel utilisateur,
mais aussi d'avoir directement une page d'accueil.
Une fois le squelette créé, on peut créer un nouvel utilisateur (toto).
5) Création d’un nouvel utilisateur
-g : pour spécifier le groupe propriétaire
-m : pour demander de créer le répertoire personnel (/home/toto)
On redémarre de serveur
6) Test
Normalement, si tout est bien passé, on va pouvoir accéder à http://localhost/~toto et y voir Mon
Espace Personnel.
#nano /etc/apache2/apache2.conf
User www-data
Group www-data
DirectoryIndex index.html index.php index.xhtml
UserDir public_html
#apt-get install apache2
#cd /etc/apache2/mods_available
#a2enmod userdir
#/etc/init.d/apache2 restart
#mkdir /etc/skel/public_html
#mkdir /etc/skel/logs
#echo ″<h1>Mon Espace Personnel</h1>″ > /etc/skel/public_html/index.html
#useradd –g www-data –m toto
#/etc/init.d/apache2 restart
15. Virtual Host
Le Serveur Web Apache2 est capable de gérer simultanément plusieurs arborescences Web grâce à
la notion d'hôtes Virtuels (Virtual Hosts).
Il y a 3 méthodes pour mettre en place plusieurs sites web dans un même serveur :
1. VirtualHosts basé sur les cartes réseaux
2. VirtualHosts basé sur le numéro de ports
3. VirtualHosts basé sur le nom de domaine
1) VirtualHosts basée sur les cartes réseaux
a. Ajout de carte réseau physique
Cette solution est très limitée, et n’est pas pratique.
b. Ajout des cartes réseaux virtuelle
Création des cartes virtuelle
D’abord, on crée deux carte réseaux virtuelles qui pointent sur la carte réseaux physique eth0.
#ifconfig eth0:0 192.168.2.1
#ifconfig eth0:1 192.168.2.2
Modifier le fichier : /etc/hosts
Créer le fichier : /etc/apache2/site-available/fstt1.conf
Créer le fichier : /etc/apache2/site-available/fstt2.conf
Créer le répertoire : /var/www/html/fstt1.lan
#nano /etc/hosts
. . .
192.168.2.1 fstt1.lan
192.168.2.2 fstt2.lan
. . .
#nano /etc/apache2/site-available/fstt1.conf
<VirtualHost 192.168.2.1:80>
DocumentRoot /var/www/html/fstt1.lan
ServerName fstt1.lan
</VirtualHost>
#nano /etc/apache2/site-available/fstt2.conf
<VirtualHost 192.168.2.2:80>
DocumentRoot /var/www/html/fstt2.lan
ServerName fstt2.lan
</VirtualHost>
#mkdir /var/www/html/fstt1.lan
#chmod -R 755 /var/www/html/fstt1.lan
16. Le contenu de la première page web
#echo ″<h1>FSTT 1</h1>″ > /var/www/html/fstt1.lan/index.html
Créer le répertoire : /var/www/html/fstt2.lan
#mkdir /var/www/html/fstt2.lan
#chmod -R 755 /var/www/html/fstt2.lan
Le contenu de la deuxième page
#echo ″<h1>FSTT 2</h1>″ > /var/www/html/fstt2.lan/index.html
Activer les sites
#cd /etc/apache2/sites-available
#a2ensite fstt1.conf
#a2ensite fstt2.conf
#etc/init.d/apache2 reload
Test : dans le navigateur
fstt1.lan
fstt2.lan
2) VirtualHost basée sur le numéro de port
Modifier le fichier : /etc/hosts
Dans un premiers temps, nous allons éditer le fichier /etc/hosts afin de déclarer les 2 noms de
domaine associés à la seule et unique adresse IP de notre interface réseau. Ceci permettra la
résolution de nom (Nom ⇒ Adresse Ip).
Modifier le fichier : /etc/apache2/ports.conf
Précisez au serveur Apache2 d'écouter sur plusieurs ports, en ajoutant les lignes suivantes dans le
fichier /etc/apache2/ports.
Modifier le fichier : /etc/apache2/sites-available/fstt1.conf
Modifier les numéros des ports dans les fichiers de configuration des deux sites.
#nano /etc/hosts
192.168.4.126 fstt1.lan fstt2.lan
#nano /etc/apache2/ports.conf
Listen 80
Listen 81
Listen 82
#nano /etc/apache2/sites-available/fstt1.conf
<VirtualHost 192.168.4.126:81>
DocumentRoot /var/www/html/fstt1.lan
ServerName fstt1.lan
</VirtualHost>
17. Modifier le fichier : /etc/apache2/sites-available/fstt2.conf
Activer les sites :
#cd /etc/apache2/sites-available
#a2dissite fstt1.conf
#a2dissite fstt2.conf
#etc/init.d/apache2 reload
#a2ensite fstt1.conf
#a2ensite fstt2.conf
#etc/init.d/apache2 reload
Test :
fstt1.lan:81
fstt2.lan:82
3) VirtualHost basée sur le nom de domaine
Modifier le fichier : /etc/hosts
Supprimer les deux ports 81 et 82 qu’on a ajoutés dans la configuration précédente. Garder
seulement le ports par défauts 80.
Créer le fichier : /etc/apache2/sites-available/fstt1.conf
Modifier le port des deux site web en 80.
#nano /etc/apache2/sites-available/fstt1.conf
Créer le fichier conf.d
#mkdir conf.d
#echo ″NameVirtualHost 192.168.4.126 :80″ > /etc/apache2/conf.d/virtual-
host.conf
Activer les sites
#cd /etc/apache2/sites-available
#a2dissite fstt1.conf
#a2dissite fstt2.conf
#etc/init.d/apache2 reload
#a2ensite fstt1.conf
#a2ensite fstt2.conf
#etc/init.d/apache2 reload
Test :
fstt1.lan
fstt2.lan
#nano /etc/apache2/sites-available/fstt2.conf
<VirtualHost 192.168.4.126:82>
DocumentRoot /var/www/html/fstt2.lan
ServerName fstt2.lan
</VirtualHost>
<VirtualHost 192.168.4.126:80>
DocumentRoot /var/www/html/fstt1.lan
ServerName fstt1.lan
</VirtualHost>
#nano /etc/apache2/ports.conf
Listen 80
19. VPN : VIRTUAL PRIVATE NETWORK
Le réseau privé virtuel est vu comme une extension des réseaux locaux et préserve la sécurité logique que l'on peut
avoir à l'intérieur d'un réseau local. Il correspond en fait à une interconnexion de réseaux locaux via une technique
de « tunnel ».
PRINCIPE GENERAL
Un réseau VPN repose sur un ou des protocoles, appelé protocoles de tunnelisation (ou tunneling). Ce sont des
protocoles permettant aux données passant entre deux réseaux physiques d’être sécurisées par des algorithmes de
chiffrage. Le terme de « tunnel » est utilisées pour mettre l’accent
sur le fait qu’entre l’entrée et la sortie d’un VPN les données sont
chiffrées et protégées.
Lorsqu’un VPN est établi entre deux réseaux physiques, l’élément
qui permet de chiffrer et de déchiffrer les données du coté client
(ou utilisateur) est nommé « Client VPN ».
On appelle « Serveur VPN » l’élément qui chiffre et qui déchiffre les
données du côté du serveur.
POURQUOI UTILISER VPN ?
Lorsque nous utilisons un VPN, nous rendons notre connexion Internet privée, anonyme, protégée et celui-ci cache
notre adresse IP sur Internet.
Un autre intérêt est le faible coût de l’accès à Internet, que ce soit à haut débit ou via une ligne téléphonique. C’est
pour cela que les VPN sont de plus en plus répandus au sein des entreprises.
LES PRINCIPAUX PROTOCOLES DE TUNNELING
L2F(Layer Two Forwarding) qui est un protocole de niveau 2 (obsolète).
PPTP (Point-to-Point Tunneling Protocol) qui est aussi un protocole de niveau 2.
L2TP (Layer Two Tunneling Protocol), protocole de niveau 2 s’appuyant sur PPP, et qui fait converger les
fonctionnalités de PPTP et L2F.
IPSec, un protocole de niveau 3. Il permet de transporter des données chiffrées pour les réseaux IP.
SSL (Secure Sockets Layer), quant à lui, offre une très bonne solution de tunnelisation. L'avantage de cette
solution est de permettre l'utilisation d'un navigateur Web comme client VPN : on peut accéder à ce type
de VPN avec un navigateur web via «https». Dans les faits, il permet aux utilisateurs de mettre en place une
connexion sécurisée au réseau depuis n’importe quel navigateur Web.
LOGICIEL VPN
Dans ce TP on va utiliser la solution VPN libre et gratuite la plus utilisée, OpenVPN. Et OpenSSL pour la sécurisation
des données. On aura besoin aussi de openssh-server pour l’échange des clés.
20. INSTALLATION ET CONFIGURATION DE VPN COTE SERVEUR
INSTALLATION D’OPENVPN
GENERATION DES CERTIFICATS ET DES CLES D’AUTHENTIFICATION
L'installation d'OpenVPN crée un dossier dans /usr/share/easy-rsa/ contenant tous les scripts permettant de
générer facilement tous les certificats et clés d'authentification nécessaire au fonctionnement d'OpenVPN.
Avant toute chose, copier les scripts originaux dans /etc/openvpn afin de centraliser applications et scripts :
INITIALISATION DES VARIABLES DE GENERATION
A partir du dossier /etc/openvpn/easy-rsa/, il faut dans un premier temps éditer le fichier vars afin d'initialiser
différentes variables servant à la génération des certificats :
On entre les informations personnelles comme suit :
Enfin, on exécute le script afin d'initialiser les variables :
On remarque la création du répertoire keys et d’autres.
GENERATION DU CERTIFICAT ET DE LA CLE D'AUTORITE DE CERTIFICATION
L'exécution du script build-ca entraîne la création du certificat ca.crt et de la clé ca.key dans le répertoire
/etc/openvpn/easy-rsa/keys.
#apt-get install openvpn
#apt-get install openssl
#apt-get install openssh-server
#cp /usr/share/easy-rsa /etc/openvpn -R
#cd /etc/openvpn/easy-rsa
#ls
build-ca
#cd /etc/openvpn/easy-rsa
#nano vars
Export KEY_COUNTRY=”MA”
Export KEY_PROVINCE=”MA”
Export KEY_CITY=”Tanger”
Export KEY_ORG=”FSTT”
#. ./vars
#./clean-all
#./build-ca
Common Name : server
#cd keys
#ls
21. GENERATION DU CERTIFICAT ET DE CLE POUR LE SERVEUR
La génération du certificat et de la clé du serveur VPN se fait simplement, par l'exécution du script build-key-server,
toujours à partir du dossier /etc/openvpn/easy-rsa :
Différentes informations sont demandées pendant l'exécution de ce script, comme le mot de passe.
Ce script conduit à la création des fichiers server.crt et server.key dans le dossier /etc/openvpn/easy-rsa/keys.
GENERATION DU CERTIFICATS ET DE CLES POUR LES CLIENTS
On fait la même démarche pour les clients existant. Dans notre TP, on a deux clients on peut faire la configuration
manuel. Si on a un grand nombre de clients, on doit écrire un script qui permet de générer tous ces certificats.
Ce script entraine la création des fichiers client1.crt et client1.key dans le dossier /etc/opnevpn/easy-rsa/keys.
CREATION DES PARAMETRES DE DIFFIE-HELLMAN
Le protocole Diffie-Hellman est un protocole de cryptographie utilisé dans les échanges de clés. Les paramètres de
Diffie-Hellman sont générés par l'exécution du script build-dh à partir du dossier /etc/openvpn/easy-rsa :
Il en résulte la création du fichier dh2048.pem dans le dossier /etc/openvpn/easy-rsa/keys.
DEPLACER LES CERTIFICATS ET CLES DU SERVEUR
CONFIGURATION
La création des clés et certificats d'authentification est terminés. Nous allons passer à la configuration du serveur et
des clients.
Des exemples de fichiers de configuration sont présents dans le dossier /usr/share/doc/openvpn/examples/sample-
config-files/. On décompresse le fichier server.conf.gz. Puis on place les différents fichiers de configuration
nécessaires dans /etc/openvpn/ :
La mise en route du serveur entraine l'attribution automatique d'une adresse IP à l'interface tun0 du serveur.
#./build-key-server server
#./build-key client1
#./build-dh
#cd /etc/openvpn/easy-rsa/keys
#cp ca.crt ca.key client1.crt client1.key dh2048.pem /etc/openvpn
#cd /usr/share/doc/openvpn/examples/sample-config-files/
#gunzip server.conf.gz
#cp server.conf /etc/openvpn/
22. On va vérifier les paramètres au fichier /etc/openvpn/server.conf :
Pour démarrer le serveur, la commande est :
CONFIGURATION VPN COTE CLIENT
Le client Linux nécessite la même installation que le serveur :
Pour permettre le transfert du certificat et clé du client, il faut d’abord autoriser ssh au niveau du serveur :
Transfert du certificat et clé par ssh :
On vérifie maintenant le contenu du fichier client.conf permettant de se connecter au serveur défini
précédemment.
port 1194
…
;proto tcp
proto udp
…
;dev tap
dev tun
…
ca ca.crt
cert server.crt
key server.key
…
dh dh2048.pem
…
verb 3
#/etc/init.d/openvpn start
#openvpn server.conf
#apt-get install openvpn
#nano /etc/ssh/sshd-config
permitRootLogin Yes
#/etc/init.d/ssh restart
#cd /etc/openvpn
#scp root@192.168.4.126:/etc/openvpn/easy-rsa/keys/client1.crt .
#scp root@192.168.4.126:/etc/openvpn/easy-rsa/keys/client1.key .
#scp root@192.168.4.126:/etc/openvpn/easy-rsa/keys/ca.crt .
#openvpn client.conf
#ping 10.8.0.1
24. INTRODUCTION
LDAP, Lightweight Directory Access Protocol, est un protocole standard permettant de gérer des annuaires, c'est-à-
dire d'accéder à des bases d'informations sur les utilisateurs d'un réseau par l'intermédiaire de protocoles TCP/IP.
Le protocole LDAP définit la méthode d'accès aux données sur le serveur au niveau du client, et non la manière de
laquelle les informations sont stockées.
D'autre part le protocole LDAP (dans sa 3ème
version) propose des mécanismes de chiffrement (SSL, ...) et
d'authentification (SASL) permettant de sécuriser l'accès aux informations stockées dans la base.
PRESENTATION DE L’ANNUAIRE LDAP
LDAP présente les informations sous forme d'une arborescence d'informations hiérarchique appelée DIT (Directory
Information Tree), dans laquelle les informations, appelées entrées (ou encore DSE, Directory Service Entry), sont
représentées sous forme de branches. Une branche située à la racine d'une ramification est appelée racine ou
suffixe (en anglais root entry). Chaque entrée est constituée d'un ensemble de paires clés/valeurs appelées
attributs.
CONSULTATION DES DONNEES
LDAP fournit un ensemble de fonctions (procédures) pour effectuer des requêtes sur les données afin de
rechercher, modifier, effacer des entrées dans les répertoires.
LE FORMAT D’ECHANGE DE DONNEES LDIF
LDAP fournit un format d'échange (LDIF, Lightweight Data Interchange Format) permettant d'importer et
d'exporter les données d'un annuaire avec un simple fichier texte. La majorité des serveurs LDAP supportent ce
format, ce qui permet une grande interopérabilité entre eux.
OPENLDAP
OpenLDAP est une implémentation libre du protocole LDAP développée par The OpenLDAP Project.
Le projet OpenLDAP implémente un serveur LDAP, mais également les commandes clientes permettant de
manipuler des informations contenues dans l’annuaire.
On va utiliser le serveur LDAP afin de centraliser les informations utilisateurs des sites et services du serveur. En
effet la plus par des services telles que les serveurs web, ftp, proxy peuvent s’authentifier sur un serveur LDAP.
PHPLDAPADMIN
C’est un outil graphique, qui permet de simplifier la tâche d’administration de l’annuaire LDAP.
25. CONFIGURATION DE OPENLDAP
INSTALLATION DES PAQUETS NECESSAIRES
MODIFIER LE NOM DU DOMAINE
REDEMARRER LE SERVICE DU SERVEUR LDAP
S'il y a un problème, entrer la commande suivante afin de reconfigurer le serveur :
Pour accéder à l'interface graphique de phpldapadmin, via un navigateur : localhost/phpldapadmin
AJOUTER DES ENTREES
Dans ce TP, on a ajouté des entrées avec trois méthodes :
1. En ligne de commande
2. Importation d’un fichier LDIF
3. Script dans l’interface graphique
#apt-get install slapd ldap-utils
#apt-get install apache2 php5 php5-mysql
#apt-get install phpldapadmin
#nano /etc/phpldapadmin/config.php
...
$servers->setValue('server','name','LDAP Server FSTT);
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','base',array('dc=fstt,dc=lan'));
#/etc/init.d/slapd restart
#dpkg-reconfigure slapd
27. CONFIGURATION DU CLIENT UBUNTU
BACKUP
Il est très important de faire des copies de backup des fichiers de configuration avant de les modifier.
Garder une session Root ouverte !
INSTALLER LES OUTILS NECESSAIRES
MODIFIER LA CONFIGURATION LDAP
Dans l’URI, on met l’adresse IP du serveur distant.
INSTALLER LE MODULE LDAP POUR NSS
NSS = Name Service Switch
INSTALLER LE MODULE PAM POUR LDAP
PAM = Pluggable Authentification Module
#cd /etc/pam.d
#cp common-password common-password-B
#cp common-session common-session-B
#cp common-account common-account-B
#cp common-auth common-auth-B
#cp /etc/nsswitch.conf /etc/nsswitch.conf-B
#apt-get install slapd ldap-utils
#cd /etc/ldap/ldap.conf
BASE dc=fstt,dc=lan
URI ldap://192.168.4.108
#apt-get install libnss-ldap
Adresse du serveur LDAP 192.168.4.108
Annuaire dc=fstt,dc=lan
Version du protocole LDAP 3
Authentification nécessaire à la base Non
Lisible et modifiable uniquement par propriétaire Non
#apt-get install libpam-ldap
Création d’une BD locale pour l’admin Oui
Authentification nécessaire à la base Non
Compte privilégié de l’annuaire cn=admin,dc=fstt,dc=lan
Password 123456
Chiffrement des password chiffré
28. CONFIGURER NSS
Dans ce fichier de configuration, on modifie les méthodes d’authentification. Par défauts, on a compat c’est-à-dire
les fichiers d’authentification classique sous Linux (/etc/passwd, /etc/shadow …).
MODIFIER LA PILE DE L’AUTHENTIFICATION
La configuration minimal nécessite la modification d’au moins deux fichiers :
COMMON-AUTH
COMMON-ACCOUNT
REDEMARRER LE SERVEUR LDAP
Avant de faire le test, on va créer un compte LDAP dans le serveur : Ali
TEST DU CLIENT
#cd /etc/nsswitch.conf
passwd: ldap compat
group: ldap compat
shadow: ldap compat
#cd /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth required pam_deny.so
#cd /etc/pam.d/common-account
account sufficient pam_ldap.so
account sufficient pam_unix.so use_first_pass
#/etc/init.d/slapd restart
dn: uid=ali,ou=users,dc=fstt,dc=lan
cn: ali
description: ali
gecos: ali
gidNumber: 2000
homeDirectory: /home/ali
loginShell: /bin/bash
objectClass: account
objectClass: posixAccount
objectClass: top
uid: ali
uidNumber: 10001
#login
Ali
pwd