Administration Reseau Sous Linux Debian Et Ubuntu
Administration Reseau Sous Linux Debian Et Ubuntu
Administration Reseau Sous Linux Debian Et Ubuntu
Rémy Malgouyres
LIMOS UMR 6158, IUT, département info
Université Clermont 1
B.P. 86
63172 AUBIERE cedex
http://malgouyres.org
2 Serveur DHCP 9
2.1 Client DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Configuration d’un serveur DHCP . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Partage de fichiers 11
3.1 Installation de NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Installation de Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Configuration d’Apache 27
5.1 Configuration de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Contrôle des accès à un répertoire . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Configurer l’accès aux scripts CGI . . . . . . . . . . . . . . . . . . . . . . . . 31
5.4 Le module PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.5 Gérer les pages WEB personnelles . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.6 Virtual hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.7 Gestion des ressources du serveur . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.8 Statistiques WEB avec awstats . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1
TABLE DES MATIÈRES
7 SSL et TLS 41
7.1 Cryptographie asymétrique et l’attaque “Man In The Middle” . . . . . . . . . 41
7.2 Sécurisation d’un serveur web par SSL/TLS . . . . . . . . . . . . . . . . . . . 41
7.3 Exemple : la génération d’un cerificat autosigné . . . . . . . . . . . . . . . . . 42
IV LDAP 70
12 Protocole d’annuaire LDAP 71
12.1 Le Directory Information Tree (DIT) et les entrées . . . . . . . . . . . . . . . 71
12.2 Le Distinguished Name (DN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
12.3 Le modèle Fonctionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
12.4 LDIF : LDAP Data Interchange Format . . . . . . . . . . . . . . . . . . . . . 75
12.5 Accès à la base à partir d’un client internet . . . . . . . . . . . . . . . . . . . 76
12.6 Administrer OpenLDAP : slapd.conf . . . . . . . . . . . . . . . . . . . . . . 77
2
Première partie
3
Chapitre 1
Un ordinateur communique avec les autres ordinateurs par des interfaces réseaux. En général,
on a une interface réseau pour chaque carte réseaux (pour les ordinateurs qui ont plusieurs
cartes réseaux). Une carte réseau (ethernet ou wifi) possède une adresse MAC, qui identifie la
carte réseau sur le réseau. Pour faire fonctionner une carte réseau, il faut configurer l’interface
qui li correspond.
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:B2:3A:24:F3:C4
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::2c0:9fff:fef9:95b0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:5
collisions:0 txqueuelen:1000
RX bytes:1520 (1.4 KiB) TX bytes:2024 (1.9 KiB)
Interrupt:10
4
Chapitre 1 : Configuration d’une station
collisions:0 txqueuelen:0
RX bytes:6040 (5.8 KiB) TX bytes:6040 (5.8 KiB)
Pour obtenir ce résultat, il faut que la machine soit connectée par un cable ethernet à un
routeur (ou un modem-routeur) qui définisse le sous-réseau 192.168.0. On configure alors la
station avec ifconfig :
# ifconfig eth0 192.168.0.2
Pour déconfigurer l’interface eth0
# ifconfig eth0 down
(vérifier avec ifconfig : l’interface eth0 n’apparaît plus).
192.168.0.1 router
192.168.0.17 printer
208.77.188.166 example.com
...
5
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
# /etc/init.d/networking start
Pour réinitialiser le réseau après un changement dans les fichiers de configuration, il faut faire :
# /etc/init.d/networking restart
# cat /etc/network/interfaces
auto lo eth0
iface lo inet loopback
# cat /etc/network/interfaces
auto lo
6
Chapitre 1 : Configuration d’une station
Le ESSID et la clef WEP doivent correspondre et être correctement configurés sur le serveur
sans fil.
Voici à quoi ressemble la configuration du réseau lors d’un connection sans fil :
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:92 errors:0 dropped:0 overruns:0 frame:0
TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6040 (5.8 KiB) TX bytes:6040 (5.8 KiB)
# iwconfig
lo no wireless extensions.
7
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
8
Chapitre 2
Serveur DHCP
# cat /etc/network/interfaces
auto lo eth0
iface lo inet loopback
Lorsque le client ainsi configuré démare le réseau, cela lance un processis dhclient qui
cherche à contacter un serveur DHCP. Le serveur DHCP répond en allouant une adresse IP
pour un certain temps.
# /etc/init.d/dhcp3-server restart
/etc/dhcp3/dhcpd.conf
• subnet Donne une idée au serveur DHCP de la topologie du réseau. Cette option ne
change pas les accès ou les attributions d’adresses.
Exemple :
9
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
Définit un sous-réseaux sur lequel les machines se connecteront par DHCP. Dans cet
exemple, on précise les plages d’adresses allouées, ainsi que la durée pendant laquelle les
IP sont réservées (leased) aux clients avant renouvellement.
• host guest {
hardware ethernet 67:42:AB:E3:74:00;
fixed-address 192.168.0.3;
}
Réserve une adresse IP fixe particulière un un certain client identifié par son adresse
MAC.
On peut limiter les serveur DHCP à une (ou plusieurs) intefaces en éditant le fichier /etc/default/dhcp3-ser
10
Chapitre 3
Partage de fichiers
3.1.1.a Configuration
Le fichier de configuration du serveur NFS est /etc/exports. On y indique la liste des réper-
toires qui peuvent être partagés (exportés). Une entrée dans ce répertoire se décompose de la
manière suivante :
”répertoire local” ”liste des machines autorisées à se connecter avec les options collées entre
parenthèses”
par exemple :
11
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
L’ordinateur exporte son répertoire /home : la machine ollinux pourra le monter en lec-
ture/écriture (rw), la machine station1 en lecture seule (ro), les autres machine ne pour-
ront 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).
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.
\textit{/etc/init.d/nfs-kernel-server reload}
Par exemple :
12
Chapitre 3 : Partage de fichiers
Les options sont les mêmes que pour le système de fichier local (ext2fs) avec en plus, spécifiques
à NFS.
• workgroup = nom du groupe de travail windows (qui est en général Workgroup par
défaut sous windows)
• server string = nom_du_serveur (c’est le nom qui va être vu dans voisinage réseaux)
• security = user pour que seuls les titulaires d’un compte unix sur le serveur puissent
utiliser samba.
• printcap name = /etc/printcap (chemin du fichier qui contient la liste des imprimantes)
• load printers = yes (va avec printcap et permet de charger toutes les imprimantes
installé sur le system, ça évite de les configurer une à une dans le smb.conf)
D’autres options sont possibles pour par exemple configurer samba pour qu’il utilise un
serveur windows Nt comme domaine primaire, ou pour qu’il résolve les noms d’hôtes, etc...
(voir les howto sur le web).
13
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
• comment = commentaire
• hosts allow = 192.168.0 restreint l’accès à partir des sous-réseaux ou d’une adresse
IP.
Voici un exemple de fichier de configuration. Notons que le fichier smb.conf contient déjà
des options par défaut lors de l’installation et qu’il faut seulement modifier les options si besoin
créer les répertoires partagés.
workgroup = MON_WORKGROUP
dns proxy = no
security = user
encrypt passwords = true
[homes]
comment = Home Directories
browseable = no
14
Chapitre 3 : Partage de fichiers
writable = yes
create mask = 0775
directory mask = 0775
Avec l’option public = no ou les options valid users =, les utilisateurs doivent s’auten-
tifier lors de la connexion aux ressources partagées. Il faut alors créer des comptes samba pour
tous les utilisateur concernés (ces comptes samba peuvent éventuellement être syncronisés avec
les comptes unix.
Pour créer un compte samba pour l’utilisateur toto :
\# smbpasswd -a toto
Cette commande demande le mot de passe samba de l’utilisateur.
15
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
• Favoris réseaux ;
Seuls les répertoires avec l’option browsable = yes apparaîssent dans l’interface de l’ex-
polrateur Windows.
16
Deuxième partie
17
Chapitre 4
<html>
<head>
<title>Ma première page HTML</title>
</head>
18
Chapitre 4 : Initiation à la programmation WEB
<body>
<p>
On met le texte dans un paragraphe
<br>
On peut aller à la ligne avec une balise BR
</p>
<p>
Quand on crée un nouveau paragraphe, on saute une ligne.
</p>
<p>
On peut mettre un lien : <a href="http://google.fr">Cliquez ici</a>
pour aller sur google.
</p>
</body>
</html>
• <BODY> </BODY> Le corps de la page html (après l’entête) ; contient le corps du document
proprement dit.
Il existe de nombreuses autres balises, que l’on peut trouver dans un cours ou tutorial d’HTML.
19
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
#!/bin/bash
echo -e "Content-type: text/html\n\n"
echo "<html>"
echo "<body>"
echo -n "Bonjour, ceci est le script \$(basename \$0)"
echo "du répertoire \$(pwd)"
echo "<BR>"
echo "Nous sommes le \$(date +%d/%m/%Y) et il est \$(date +%Hh%Mmn)".
echo "</body>"
echo "</html>"
<FORM NAME="nom\_du\_formulaire"
ACTION="url du programme que vous appelez"
METHOD= POST {\em ou} GET>
Corps du formulaire
</FORM>
Deux méthodes d’appel de programme sont proposées : les méthodes GET ou POST.
• Méthode Get : Par défaut, la méthode GET est utilisée. Les arguments que vous pouvez
donner au programme appelé (voir INPUT) passent dans la variable d’environnement
QUERY_STRING et sont visibles depuis le navigateur. Il faut le moins possible utiliser
cette méthode, notamment pour des raisons de sécurité.
• Méthode Post : Dans le cas d’une méthode POST, les arguments sont émis vers l’entrée
standard stdin du programme appelé. Les données ne sont pas visibles par le navigateur.
20
Chapitre 4 : Initiation à la programmation WEB
4.4.1 INPUT
La balise INPUT crée des des champs dans une page HTML permettant de recueillir soit du
texte, soit un choix parmis une liste, soit un booléen. Voici la syntaxe d’INPUT :
<INPUT TYPE="text" {\em ou} "submit" {\em ou} checkbox {\em ou} radio...
NAME=nom\_de\_l'entrée
SIZE=taille du champs
VALUE="valeur par defaut du champ ou étiquette du bouton submit"
>
• Le type ”text” indique qu’il s’agit d’une input permettant de recueillir des données
texte.
• Le type ”submit” permet la création d’un bouton. Lorsque l’on clique dessus et que
l’on a crée un formulaire, le programme cgi est appelé.
• Dans tout les cas, l’attribut NAME indique le nom de l’entrée. Il est inutile avec le
type submit mais dans les autres cas il permet au script CGI de s’y retrouver entre les
différents champs du formulaire.
• Size indique la taille d’un champ de type texte dans la page HTML (nombre de carac-
tères).
4.4.2 SELECT
La balise SELECT crée une liste déroulante où l’utilisateur n’a plus qu’à sélectionner sur l’un
des choix proposés. Voici sa syntaxe :
<SELECT NAME="nom\_de\_l'entrée">
<OPTION> un des choix que vous voulez mettre
<OPTION> un autre choix
</SELECT>
21
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
4.5 Un exemple
Voici (voir figure 4.2) un exemple de formulaire HTML avec les script CGI écrit en bash qui
traite les données. Ici, le chemin au script my_script.cgi est donné en relatif.
<html>
<head>
<title>Exemple de formulaire</title>
</head>
<body>
<p>
Veuillez saisir les données suivantes :
</p>
<br>
<form name="formulaire exemple"
action=/cgi-bin/my_script.cgi method="post">
<p>
Nom patronymique
<input type="text" name=nom size=12 value="">
</p>
<p>
Genre
<select name=sexe value="Choisissez">
<option>Choisissez
<option>Homme
<option>femme
<option>autre
</select>
</p>
<p>
Cochez ici pour accepter les conditions
<input type="checkbox" name=accepte value="true" unchecked>
</p>
<p>
<input type="submit" value="Envoyer">
<input type="reset" value="Tout effacer">
</p>
</form>
</body>
</html>
#!/bin/bash
echo -e "Content-type: text/html\n\n"
read ENTREE
22
Chapitre 4 : Initiation à la programmation WEB
echo "<br>"
echo $ENTREE
echo "<br>"
if [ -n "$CHAMP3" ]
then
echo "Vous avez accepté les conditions"
else
echo "Vous avez refusé les conditions"
fi
Une alternative à la checkbox est le type radio, qui crée deux choix qui s’excluent mutuelle-
ment.
<form>
...
<input type="radio" name=accepte value="true"> J'accepte les conditions
<br>
<input type="radio" name=accepte value="false"> Je refuse les conditions
...
23
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
</form>
La fonction mail permet à un script PHP d’envoyer un mail. Cette fonction prend en
paramètre l’adresse du destinataire, le sujet, et le corps du message.
<?php
mail('webmaster@localhost',
'Erreur 202',
'Il s'est produit une erreur 202 sur le serveur');
?>
24
Chapitre 4 : Initiation à la programmation WEB
for(\$i=0;\$i<sizeof(\$prenom);\$i++)
{
echo \$prenom[\$i].'<br>';
}
?>
</body>
</html>
<html>
<head>
<title>Exemple de formulaire</title>
</head>
<body>
<p>
Veuillez saisir les données suivantes :
</p>
<br>
<form name="formulaire exemple"
action=./my_script.php method="post">
<p>
Nom patronymique
<input type="text" name=nom size=12 value="">
</p>
<p>
Genre
<select name=sexe value="Choisissez">
<option>Choisissez
<option>Homme
<option>femme
<option>autre
25
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
</select>
</p>
<p>
Cochez ici pour accepter les conditions
<input type="checkbox" name=accepte value="true" unchecked>
</p>
<p>
<input type="submit" value="Envoyer">
<input type="reset" value="Tout effacer">
</p>
</form>
</body>
</html>
<html>
<head>
<title>Traitement d'un formulaire en PHP</title>
</head>
<body>
<?php
if (\$_POST['sexe'] == 'Choisissez')
{
echo 'Erreur, vous devez obligatoirement faire un choix ';
echo '<a href="./formulaire.html">Cliquez ici</a> pour vous ressaisir.';
}else
{
echo 'Votre nom est ';
echo htmlspecialchars(\$_POST['nom']);
echo '<br>Vous êtes de genre ';
echo \$_POST['sexe'];
if (\$_POST['accepte'] == 'true')
echo '<br>Vous avez accepté les conditions';
else
echo '<br>Vous avez refusé les conditions';
}
?>
</body>
</html>
26
Chapitre 5
Configuration d’Apache
Apache est un serveur http libre, c’est un des serveurs http les plus utilisé sur Internet avec
plus de 60% des sites d’Internet (contre environ 20% pour IIS).
En résumé, un serveur http est un serveur hébergeant un ou plusieurs sites Web c’est à
dire des pages html ou des programmes générant des pages html (programmes cgi) qui sont
accessibles par des navigateurs de type mozilla ou autre. Le protocole, permettant l’échange de
pages html est le protocole http, d’ou le nom de serveur http. Ce protocole utilise généralement
le port 80.
On trouvera une documentation complète sur apache (en anglais) sur le site suivant :
http://httpd.apache.org/docs/.
Premièrement, sous Debian, il faut savoir lancer le démon apache :
# /etc/init.d/apache2 start.
# ps -ef|grep apache
# /etc/init.d/apache2 start.
27
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
Port 80
Apache écoute sur le port tcp usuel
ServerRoot /etc/apache2
Il s’agit du répertoire où le serveur trouvera son répertoire de configuration. On trouve dans
/etc/apache, un lien vers /var/log/httpd/access_log, le fichier-journal des accès aux ressources,
réussis ou non (le consulter)
PidFile /var/run/httpd.pid
C’est le fichier où le serveur en exécution stocke son premier numéro de processus (PID), ce
qui peut être utile à d’autres processus.
ErrorLog /var/log/apache2/error.log
C’est le fichier qui contient l’historique des erreurs qui se sont produites (exemple : script cgi
qui n’a pas marché...).
ServerAdmin webmaster@localhost
S’il a un problème, le serveur écrit un message à cette adresse
28
Chapitre 5 : Configuration d’Apache
5.2.1 Exemple.
NameVirtualHost *
<VirtualHost *>
DocumentRoot /home/monRepertoire/ # racine du site
<Directory /> # droits du répertoire racine
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/monRepertoire/> # droits sur l'ensemble du site
Options Indexes FollowSymLinks MultiViews
AllowOverride None # interdit les .htaccess
Order allow,deny # donnne l'ordre des permissions
allow from all # autorise tous les clients
# avec la directive suivante, il faut mettre la
# page d'acueil dans /home/monRepertoire/apache2-default/
# Commentez si vous voulez mettre les fichiers à la
# racine de /home/monRepertoire/
RedirectMatch ^/\$ /apache2-default/
</Directory>
etc...
</VirtualHost>
29
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
3. Indexes : Permet aux utilisateurs d’avoir des index généré par le serveur. C’est à dire si
l’index du répertoire (index.html ou index.php par exemple) est manquant, cela autorise
le serveur a lister le contenu du répertoire (dangereux suivant les fichiers contenu dans
ce répertoire).
7. IncludesNOEXEC : Permet mais les includes mais empêche la commande EXEC (qui
permet d’executer du code).
8. Multiviews : Autorise les vue multiples suivant un contexte. Par exemple permet d’af-
ficher les pages dans une langue différente suivant la configuration du client.
Order allow,deny
allow from all # autorise tous les clients
deny from 192.168.0.67 # interdit l'accès par une IP
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0
Allow from .mydomain.com
le webmaster peut mettre les droits suivants dans un fichier .htaccess d’un répertoire conte-
nant des fichiers de l’intranet de son entreprise :
30
Chapitre 5 : Configuration d’Apache
Options ExecCGI
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0
Les types de directives que l’on peut mettre après AllowOverride son les suivants
# a2enmod cgi
31
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
<Directory /monRepertoire/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>
# cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/php5.* .
ou plus simplement :
# a2enmod php5
# cat /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
# cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/userdir.* .
ou plus simplement :
32
Chapitre 5 : Configuration d’Apache
# a2enmod userdir
# cat /etc/apache2/mods-enabled/userdir.conf
<IfModule mod_userdir.c>
UserDir public_html # pour tous les utilisateurs
UserDir disabled root badguy # désactivé pour certains
NameVirtualHost *
<VirtualHost *>
ServerName mon_nom_d_hote
...
suivi de la déclaration du répertoire racine du site. En général, on met bien évidement plusieurs
répertoires racine différents pour les différents hôtes, ce qui permet d’avoir plusieurs sites WEB.
33
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
cd /etc/awstats/
cp awstats.conf awstats.default.conf
• DNSLookup=1 : pour activer la recherche des noms de domaines des clients du site par
des requêtes DNS. A éviter sur les sites très actifs. Mettre la valeur 2 pour ne pas faire de
recherche DNS.
Pour consulter, dans votre navigateur, tapez l’URL vers le fichier HTML awstats.default.html
dans les répertoire donné à awstats_buildstaticpages.pl, soit en local sur le serveur, soit
à partir d’une station distante dûment autorisée dans la configuration d’Apache.
Pour bien faire, il faut mettre à jour la base de données d’awstats régulièrement car les logs
d’Apache net restents pas très longtemps. On peut créer un cronjob avec crontab -e.
34
Chapitre 6
FTP est un protocole d’échange de fichiers. Le serveur indique quels sont les répertoires par-
tagées et gère les mots de passe.
Un client ftp peut se connecter à un serveur en donnant le nom de la machine serveur, en
donnant un login et mot de passe.
Sous linux, le serveur le plus couramment utilisé est wu-ftp. Or celui-ci est très peu sécurisé
et laisse passer les mots de passe en clair.
ProFTP est un serveur ftp demandant moins de ressources et offrant une sécurité accrue.
Les mots de passe sont cryptés par défaut (si le client le supporte !), les données peuvent l’être
grâce à un système de certificats. De plus, la gestion des droits d’accès et la configuration sont
proches de celles d’apache. Il faut cependant être conscient qu’FTP est loin d’offrir les mêmes
condition de sécurité qu’SSH ou SFTP.
On démare proftpd par la commande :
/etc/init.d/proftpd start
/etc/init.d/proftpd restart
/etc/init.d/proftpd stop
• User et Group : l’utilisateur sous l’UID duquel le serveur tournera (par sécurité, il vaut
mieux ne pas mettre root mais un utilisateur avec peu de privilèges).
35
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
• Umask 022 : la valeur 022 permet d’interdire la création d’un nouveau fichier par un
accès en écriture ; seule la mise à jour d’un fichier existant est autorisée.
• Déclaration d’un virtual host : par exemple pour un virtual host GLOBAL :
<GLOBAL>
<LIMIT...>
# mettre ici des restrictions d'accès
</LIMIT>
etc...
</GLOBAL>
• <Limit Commande > DenyAll </Limit> Placé dans un virtual host, refuse l’utilisation
de commandes par les utilisateurs se connectant au serveur ftp.
Les commandes peuvent être READ, WRITE, LOGIN, MKD RNFR RNTO DELE RMD STOR
CHMOD SITE_CHMOD SITE XCUP XRMD PWD XPWD,....
Les commandes plus utilisées sont READ, WRITE, et LOGIN.
Les permissions sont similaires aux drois d’accès aux répertoires d’apache : Allow All,
Deny All. On peut par exemple limiter l’accès à certains utilisateurs :
<Limit WRITE>
DenyAll
</Limit>
• UseFtpUsers on : définit dans le fichier /etc/ftpusers les utilisateur qui n’ont pas accès
au serveur ftp. Par exemple, il faut ajouter anonymous pour interdire l’accès ftp anonyme.
36
Chapitre 6 : Configurer un serveur FTP avec proftp
• UserRatio toto N... permet la gestion des ratios. Permet de controler la quantité de
fichiers et d’octets que les utilisateurs sont autorisés à transférer.
• SaveRatios 1 : sert à préciser que nous souhaitons sauvegarder les crédits de chaque
utilisateur entre 2 sessions.
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 on
ServerName "Debian"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayFirstChdir .message
ListOptions "-l"
DenyFilter \*.*/
37
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
# Set the user and group that the server normally runs at.
User proftpd
Group nogroup
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# Normally, we want files to be overwriteable.
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
<IfModule mod_quota.c>
QuotaEngine on
</IfModule>
<IfModule mod_ratio.c>
Ratios on
</IfModule>
38
Chapitre 6 : Configurer un serveur FTP avec proftp
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine on
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>
<Global>
DefaultChdir /home/ftp
DefaultRoot /home/ftp
UseFtpUsers on
AllowForeignAddress on
RequireValidShell off
<Directory /home/ftp>
<Limit READ>
AllowAll
</Limit>
<Limit LOGIN>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Global>
39
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
serveur utiliser la commande put. Pour clôturer la session, utilisez la commande quit.
Il existe de nombreuses autres commandes. Tapez help pour avoir la liste des commandes
et help cmd pour avoir la description d’une commande cmd.
40
Chapitre 7
SSL et TLS
Pour la communication sécurisée entre un serveur (web, de mail par exemple) et un client
sur internet, la connection doit être cryptée. La plupart des systèmes actuels reposent sur le
cryptage asymétrique, ou cryptographie à clé plublique, dont RSA est un paradime phare. La
faiblesse de ces systèmes repose dans la nécessité pour le destinataire du message de communi-
quer la clef publique à l’expéditeur du message. Lorsque l’expéditeur du message est un client
web qui doit crypter ses données pour les envoyer à serveur, comment ce client peut-il s’assurer
qu’il a bien affaire au bon serveur et n’utilise pas la clef publique d’un site pirate ?
41
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
ne peut pas signer lui-même sa clef publique car il faudrait la clef publique pour vérifier la
signature (c’est le fameux serpent qui se mord la queue). Pour cette raison, on fait appel à
une autorité de certification pour signer la clef publique du serveur. Il faut que l’autorité de
certification, qui a en principe pignon sur rue, mette à disposition des clients potentiels sa clé
publique pour que le client puisse vérifier la signature et par là l’authenticité de la clé publique
du serveur. (vous me suivez ?) Le schéma d’une connexion cryptée à un site web de e-commerce
suivant le protocole SSL ou TLS est représenté sur la figure 7.6.
$ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: My Certificate Authority
Organizational Unit Name (eg, section) []:Technical department
Common Name (e.g. server FQDN or YOUR name) []:www.remysprogwebtuto.org
Email Address []:[email protected]
42
Chapitre 7 : SSL et TLS
$ openssl x509 -req -CA ca.crt -CAkey ca.key -in apache.csr -out apache.crt
Signature ok
subject=/C=FR/L=Billom/O=Remy's tech tests/OU=Technical tests department/CN=www.remystuto
Getting CA Private Key
Enter pass phrase for ca.key:**********
On stocke les clefs publique et privée dans le même répertoire pour apache2 Attention aux
droits des fichiers contenant une clef privée !
Dans la réalité, ca.key est conservée précieusement sur une autre machine sécurisée !
$ ls -l /etc/apache2/certs
insgesamt 24
-rw-r--r-- 1 root www-data 1123 Mai 24 08:46 apache.crt
43
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
44
Chapitre 7 : SSL et TLS
message clair
de A pour B
A Chez A
crypte
+ message chiffre
de A pour B
cle publique de B
envoie
communique
message chiffre
cle publique de B cle privee de B de A pour B
B decrypte
Chez B
message clair
de A pour B
45
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
A Chez A
genere
communique envoie
message signe
cle publique de A de A pour B
B decode
46
Chapitre 7 : SSL et TLS
message clair
de A pour B
A Chez A
crypte
+ message chiffre
de A pour B
cle publique de X intercepte
message chiffre
envoie de A pour B
communique
genere message clair
de A pour B
intercepte
communique X
envoie
faux message chiffre cle publique de B
cle publique de B cle privee de B de A pour B
faux message chiffre crypte
de A pour B
Boite aux lettres de B faux message clair
genere de A pour B Chez X
B decrypte
Chez B
faux message clair
de A pour B
Figure 7.3 : L’attaque dite “Man In The Middle” dans le cas d’envoi d’un message crypté.
Figure 7.4 : Idée simple et naïve d’une connexion à un site de e-commerce (non recommandé).
47
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
2) intercepte
éro que
sa
num cl e
6) 7) pub
tra liqu
n sm e
et
num
éro
de
ca r
1) initie une connection te
b an
ca i
re
c ryp
té
Client Serveur web
Figure 7.5 : Application de l’attaque “Man In The Middle” à un site e-commerce (non re-
commandé).
Certificate Authority
)
ture
gn a 1)
t i o n si de
ma
a
rific nd
o u r vé eu
e (p (id nc
liqu en er t
pub tifi 2) ific
clé an Fo at
o u rnit td u rn
it
au
pr
F us cer éa
er v tifi l ab
eu ca le
rs t
i gn
é p
3) initie une connection ar
le
CA
)
Figure 7.6 : Principe d’une connection SSL ou de sa version plus récente TLS.
48
Chapitre 8
myhostname = mondomaine.com
49
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_recipient_restrictions=
# règles eliminant une partie du spam
# en vérifiant la conformité des paramètres
# (expéditeur, destinataire,...) a certains protocoles
reject_invalid_hostname,
# commenter cette ligne pour les utilisateurs d'outlook :
# reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
# vérifie que l'expediteur est bien enregistré DNS
reject_unknown_sender_domain,
# vérifie que le destinataire est bien enregistré DNS
reject_unknown_recipient_domain,
# rejette certains logiciels d'envoi de mail non conformes
reject_unauth_pipelining,
# autorise a partir du réseau local
permit_mynetworks,
# éviter de servir de relai de spammer avec pop-before-smtp
# (nécessite l'installation de pop-before-smtp)
check_client_access hash:/var/lib/pop-before-smtp/hosts,
# ne pas changer sans savoir pourquoi
reject_unauth_destination,
# activer le greylisting postgrey :
# nécessite l'installation de postgrey
check_policy_service inet:[127.0.0.1]:60000,
# politique par défaut
permit
50
Chapitre 8 : Configurer un serveur de mail avec postfix
# antivirus amavis
# (nécessite l'instalation d'amavis)
content_filter = smtp-amavis:[127.0.0.1]:10024
# cat /etc/postfix/aliases
#secretariat
secretariat:emilie
#pour le webmaster
webmaster:tom,martin
# cat /etc/postfix/access
harrass.com REJECT
[email protected] REJECT
51
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
check_policy_service inet:[127.0.0.1]:60000,
De plus, il faut configurer postgrey (notamment le temps que le SMTP expéditeur doit at-
tendre avant de représenter le mail) dans le fichier /etc/default/postgrey :
# cat /etc/default/postgrey
# postgrey startup options, created for Debian
# (c)2004 Adrian von Bidder <[email protected]>
# Distribute and/or modify at will.
8.3 spamassassin
Le logiciel spamassassin permet de détecter les spams, et éventuellement de les rediriger. Pour
celà, spamassassin attribue un score à chaque mail. Plus le score est élevé, plus le mail a de
chances d’être un spam.
Pour utiliser spamassassin, il faut l’activer dans postfix en modifiant le fichier /etc/postfix/master.c
1) Rajouter l’option -o content_filter=spamassassin au service smtp :
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args # (yes) (yes
# ==========================================================================
smtp inet n - - - - smtpd
-o content_filter=spamassassin
52
Chapitre 8 : Configurer un serveur de mail avec postfix
# cat /etc/spamassassin/local.cf
# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# Only a small subset of options are listed below
#
###########################################################################
# Set file-locking method (flock is not safe over NFS, but is faster)
#
# lock_method flock
53
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
Enfin, pour plus d’efficacité, il faut charger des modules dans /etc/spamassassin/v310.pre.
Pour activer un module, décommentez la ligne correspondante. Chaque module correspond à
une technique de détection de spam qui fait augmenter le score des mails.
54
Chapitre 8 : Configurer un serveur de mail avec postfix
8.5 spamass-milter
Le logiciel spamass-milter est un milter qui permet d’éliminer certains mails qui sont des spams.
spamassassin est un antispam qui attribue un score aux mails suivant leurs chances d’être des
spams. Plus le score est élevé, plus le mail a de chances d’être un spam. On peut mettre
spamass-milter en sortie de spamassassin pour rejeter les mails qui ont un score élevé dans
spamassassin. Il vaut mieux mettre un seuil élevé (>15 par exemple) pour éviter tout faux
positifs (il n’est pas trop grave d’accepter un faux négatif : l’utilisateur reçoit un spam, mais
c’est très génant de rejeter un faux positifs : un vrai mail ne parvient pas au client)
8.5.1 Configuration
a) main.cf Dans le fichier de configuration de postfix /etc/postfix/main.cf , ajoutez les lignes :
# spamass-milter configuration
# l'option accept est plus sûre pour ne pas perdre de mails
milter_default_action = accept
smtpd_milters = unix:/var/run/spamass.sock
55
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
8.5.2 /etc/default/spamass-milter
Voici le fichier /etc/default/spamass-milter
# Default, use the nobody user as the default user, ignore messages
# from localhost
SOCKET="/var/spool/postfix/var/run/spamass.sock"
SOCKETOWNER="postfix:postfix"
SOCKETMODE="0660"
mkdir /var/spool/postfix/var
mkdir /var/spool/postfix/var/run
(si j’ai bien compris, postfix tourne en chrooté et pas spamass-milter et il faut créer les
deux sockets à deux endroits différents pour qu’il y ait communication entre les deux sockets.
feedback wellcome)
Comme il faut faire ces quatres dernières commandes à chaque reboot, on peut les mettre
dans un script (par exemple) appelé /etc/init.d/initspamass et faire lancer ce script au déma-
rage
# chown +x /etc/init.d/initspamass
# update-rc.d initspamass defaults 99
Il faut mettre 99 pour être sûr que ce script est exécuté après le démon /etc/init.d/spamass-
milter au démarage.
56
Chapitre 8 : Configurer un serveur de mail avec postfix
57
Troisième partie
Routage, firewall
58
Chapitre 9
Routage
• Son adresse IP : une adresse IP (version 4, protocole IPV4) permet d’identifier un hôte
et un sous-réseau. L’adresse IP est codée sur 4 octets. (les adresses IPV6, ou IP next
generation seront codées sur 6 octets).
Une adresse IP permet d’identifier un hôte. Une passerelle est un ordinateur qui possède
plusieurs interfaces et qui transmet les paquets d’une interface à l’autre. La passerelle peut ainsi
faire communiquer différents réseaux. Chaque carte réseau possède une adresse MAC unique
garantie par le constructeur. Lorsqu’un ordinateur a plusieurs plusieurs interfaces, chacune
possède sa propre adresse MAC et son adresse IP. On peut voir sa configuration réseau par
ifconfig.
$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:B2:3A:24:F3:C4
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::2c0:9fff:fef9:95b0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:5
collisions:0 txqueuelen:1000
RX bytes:1520 (1.4 KiB) TX bytes:2024 (1.9 KiB)
Interrupt:10
59
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
9.2 Sous-réseaux
9.2.1 Classes de sous-réseaux
Les addresses IPV4 sont organisées en sous-réseaux. Chaque sous-réseau possède une adresse,
qui est une partie de l’adresse IP des machines de ce sous-réseau.
Par exemple, l’adresse IP 192.168.4.35 appartient au sous-réseau 192.168.4, parfois aussi
noté 192.168.4.0.
Les sous-réseaux sont organisés en classes. Chaque classe de sous-réseaux correspond à des
réseaux pouvant contenir un certain nombre de machines.
9.3 Routage
Le routage permet de faire communiquer plusieurs sous-réseaux. Une passerelle (en anglais
gateway) est en communication avec différents sous-réseaux sur différentes interfaces, et assure
la communication entre les différents sous-réseaux (voir figure 9.1).
9.3.1 Routes
Une route définie sur une station est un chemin que doivent prendre les paquets à destination
d’un certain sous-réseau. Prenons l’exemple (voir figure 9.1) d’une station, appelée station 1,
60
Chapitre 9 : Routage
d’adresse IP 121.65.77.8 sur un réseau 112.0.0.0/8. Elle est connectée à une passerelle qui a
pour IP dans ce réseau 112.65.123.3 sur son interface eth0. La passerelle est aussi connectée
au réseau 192.168.0.0/24 via son interface eth1 qui a pour IP 192.168.0.1. Si la station 1
• Une route doit être définie sur la station 1 indiquant que les paquets à destination du
réseau 192.168.0.0/24 doivent passer par la passerelle 112.65.123.3. Pour celà, on
peut utiliser la commande route :
• Une route doit être définie sur la station 6 indiquant que les paquets à destination du
réseau 112.0.0.0/8 doivent passer par la passerelle 192.168.0.1 ; Pour celà, on peut
utiliser la commande route :
• La passerelle doit être configurée pour transmettre (ou forwarder) les paquets IP d’un
réseau à l’autre, ce qui se fait par la commande :
# echo 1 >/proc/sys/net/ipv4/ip_forward
Remarque 9.3.1 Il faut refaire ces commandes après un reboot. Pour éviter de relancer ces
commandes manuellement, on peut les mettre dans des scripts d’initialisation au démarage
avec la commande update-rc.d (sous debian)). Pour ajouter une script my_ script à l’initia-
lisation :
# mv my_script /etc/init.d
# update-rc.d my_script defaults
61
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
On peut voir l’état des routes avec la commande route -n. Par exemple, sur la station 1 :
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 112.65.123.3 255.255.255.0 U 0 0 0 eth2
etc...
Sur la station 6
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
112.0.0.0 192.168.0.1 255.0.0.0 U 0 0 0 wlan0
etc...
Pour supprimer une route, par exemple vers le réseau 193.86.46.0/24 via une passerelle
196.24.52.1, on fait :
# route del -net 193.86.46.0/24 gw 196.24.52.1
62
Chapitre 10
$ cat /etc/protocols
# Internet (IP) protocols
ip 0 IP # internet protocol, pseudo protocol number
#hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883]
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
igp 9 IGP # any private interior gateway (Cisco)
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
etc... etc...
63
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
• Fiabilité. Suite au transfert de données, des tests sont faits pour vérifier qu’il n’y a pas
eu d’erreur dans la transmission. De plus, les données arrivent dans l’ordre où elles ont
été émises.
• Possiblilité de communiquer sous forme de flot de données, comme dans un tube (par
exemple avec les fonctions read et write).
64
Chapitre 10 : Protocoles, services, ports
65
Chapitre 11
Le pare-feu (en anglais firewall) netfilter, configuré avec la commande iptables, permet de
filtrer les paquets réseau entrants, sortants, et transmis, sur une machine. On peut filtrer par
interface, par port, par adresse de source ou de destination des paquets. La configuration
d’iptables permet aussi de partager une adresse IP (par exemple sur internet) entre plusieurs
machines d’un réseau local.
66
Chapitre 11 : Firewall configurés avec iptables
L’ordre des règles est important. Si l’on met, par exemple, un politique de rejet systématique
d’un certain type de paquets, on peut ensuite mettre une règles qui accepte ce type de paquet
à partir d’une certaine machine ou d’un certain sous réseau. C’est la différence entre -A et -I.
Le -A rajoute la règle à la fin d’une chaîne et le -I au début.
Pour vider toutes les règles :
iptables -F chaîne
Pour mettre une politique par défaut (qui s’applique à tous les paquets sauf règle contraire) :
En général, on met toutes les règles dans un script qui va créer toutes les tables. On peut aussi
lancer ce script automatiquement au démarage avec update-rc.d.
67
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
68
Chapitre 11 : Firewall configurés avec iptables
Lorqu’un hôte ayant une adresse IP sur un réseau local cherche à se connecter sur un réseau
plus vaste, par exemple sur internet, via une passerelle, cet hôte a besoin d’une adresse IP sur
le réseau vaste. Pour celà, soit on demande à ce que les adesses du réseau local soient routées
sur le réseau global, mais il faut alors demander à réserver un plage d’adresses sur le réseau
global, soit l’administrateur de la passerelle a la possibilité de prêter l’IP de la passerelle aux
machines du réseau local. Pour cela, on utilise iptables avec NAT. Par exemple, si la passerelle
se connecte à internet via son interface eth0, il suffit d’exécuter la commande suivante sur la
passerelle :
Toute machine du réseau local (par exemple 192.168.0.0/24) qui se connecte à internet
via cette passerelle aura alors l’adresse IP de la passerelle sur internet. On peut aussi donner
aux machines du réseau local une autre adresse IP que l’on spécifie avec --to :
On peut aussi changer l’adresse de destination avec DNAT. Celà permet de rediriger, par
exemple, un accès sur un certain port vers une autre machine. Par exemple, la passerelle peut
rediriger les accès WEB (port 80) via son interface eth1 sur un serveur web situé sur une autre
machine d’IP 192.168.0.5 sur le réseau local :
69
Quatrième partie
LDAP
70
Chapitre 12
LDAP (Lightweight Directory Access Protocol) est le protocole d’annuaire sur TCP/IP. Un
annuaire est une base de données pouvant représenter des personnes ou des éléments d’infra-
structure réseau ou autre. Le but est l’accès rapide à l’information des attributs des objets en
lecture via des requêtes. Les accès en écriture sont moins optimisés. C’est ce qui différencie les
services d’annuaire des système de gestion de bases de données (SGBD) traditionnels. Pour
celà, les données de l’annuaire sont organisées de manière arborescente.
Chaque noeud est une entrée de l’annuaire (Directory Service Entry, DSE).
Au sommet de l’arbre se trouve Root Entry (ou Suffix ou BaseDN) qui caractérise la base
de données.
Les autres entrées appartiennent à différentes classes (objectClass) qui représentent dif-
férentes sortes d’objets (des groupes (objectClass organizationalUnit, ou), ou des personnes
(objectClass person ou inetOrgPerson, uid), ou des sevices, etc.)
Chaque objectClass comporte des attributs qui caractérisent les différents objets de la classe.
Il y a des atributs obligatoires (must) et des attributs facultatifs (may).
71
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
Par exemple, une personne de l’object class person doit avoir un objectclass, un nom
de famille sn, nom usuel ou nom complet cn, et peut avoir un prénom (givenname), une
description, un telephonenumber, un userpassword,...
Les classes peuvent dériver les unes des autres comme inetOrgPerson qui hérite des attri-
buts de person.
Lorsqu’on crée une nouvelle objectClass, il faut la soumettre à l’Internet Assigned Num-
bers Authority (IANA) pour que la classe soit officiellement référencée dans LDAP.
12.3.1 Requêtes
Les requêtes permettent de rechercher des objets et d’afficher leurs attributs suivant différents
critères.
• base object : l’endroit de l’arbre où doit commencer la recherche (voir figure 12.3). En
effet, on n’effectue pas nécessairement la recherche dans l’arbre entier. Par exemple, si
l’on recherche une personne, dans l’exemple de la figure 12.1, on recherchera en dessous
de l’ou personnes. On évite ainsi le coût de la recherche dans le reste de l’arbre.
72
Chapitre 12 : Protocole d’annuaire LDAP
• (cn~=Malgoire)
approximation le nom sonne comme ”Malgoire”
73
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
• -x : authentification simple non cryptée. Pour une connection plus sûre, utiliser par
exemple SASL.
Affichage du nom commun (cn) et de la description de tous les objets de la classe simpleSecurityObject
Connection en tant qu’administrateur avec prompt de mot de passe.
74
Chapitre 12 : Protocole d’annuaire LDAP
• add : Ajout d’une entrée qui n’existe pas. Le parent de l’entrée doit avoir été préalablement
créé. Les attributs objigatoires de l’entrée (suivant son objectClass) doivent être spécifiés.
• rename : Modification du DN d’une entrée. La nouvelle entrée doit avoir un parent exis-
tant. Tout le sous-arbre de cette entrée est déplacé.
• delete : suppression d’une entrée. L’entrée ne doit pas avoir d’enfants. Supprimer les
sous-arbres récursivement.
75
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
76
Chapitre 12 : Protocole d’annuaire LDAP
ldap://ldap.societe.com/sn=Malgouyres,ou=personnes,dc=societe,dc=com?telephonenumber
ldap://ldap.societe.com/ou=personnes,dc=societe,dc=com?mail?subtree?mail=*@gmail.com
#######################################################################
# ldbm database definitions
#######################################################################
# Choix du format de base de données pour le stockage des informations.
database ldbm
# L'administrateur de l'annuaire
rootdn "cn=Manager,dc=societe,dc=com"
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
77
Rémy Malgouyres, http://malgouyres.org Administration système et réseaux
index objectClass,uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial
# Directives de replication
# sinon les mettre dans un fichier à part et utiliser
# replogfile /chemincomplet/du/fichier
#replica host:ldap-1.example.com:389
# bindmethod=simple
# binddn="cn=replicat_slave1, dc=mydomain, dc=fr"
# credential=UnMotDePasse
78