Precedent Haut Suivant


8.2.6 -  Serveur GrandeOurse :

8.2.6.A -  Annuaire OpenLDAP :

8.2.6.A.1 -  Serveur OpenLDAP :

La partie serveur de l’annuaire OpenLDAP (version 2.0.23-6) peut s’installer à l’aide de la commande suivante :

è      apt-get install slapd

 

Malheureusement la version compilée proposée par Debian ne permet pas la mise en place du protocole LDAPS (LDAP over SSL). Il faut donc effectuer les manipulations suivantes :

è      se placer dans un repertoire de travail quelconque

è      récupération des sources de slapd : apt-get source slapd

è      modification du fichier ./openldap2-2.0.23/debian/rules et remplacement de l’option without-tls par l’option with-tls

è      installation des packages suivants :

       - libdb3-dev

       - libwrap0-dev

       - libiodbc2-dev

       - libsasl-dev

       - libncurses5-dev

       - autoconf

       - debconf-utils

       - libssl-dev

è      cd openldap2-2.0.23

è      installation du package kernel-package (pour bénéficier de la commande dpkg-buildpackage)

è      génération du nouveau package : dpkg-buildpackage

è      installation du nouveau package serveur : dpkg -i ../*.deb

Le package slapd dépend des packages suivants :

   - libc6 (version >= 2.2.4-4) ;

   - libdb3 (version >= 3.2.9-16) ;

   - libiodbc2 ;

   - libldap2 (version >= 2.0.23-1) ;

   - libsasl7 ;

   - libssl0.9.6 ;

   - libwrap0 ;

   - debconf (version >= 0.2.50) ;

   - fileutils (version >= 4.0i-1);

   - psmisc.

 

La configuration du serveur s’effectue à l’aide du fichier « /etc/ldap/slapd.conf ». La configuration du serveur GrandeOurse est donnée ci-dessous :

#

# Emplacement : Maquette de test SGA

# Description : Fichier de configuration du serveur LDAP

#             : Voir slapd.conf(5) pour tous les details

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

 

# Liste des schemas a inclure à l'annuaire LDAP

include         /etc/ldap/schema/core.schema

include         /etc/ldap/schema/cosine.schema

include         /etc/ldap/schema/nis.schema

include         /etc/ldap/schema/inetorgperson.schema

include         /etc/ldap/schema/esentry.schema

include         /etc/ldap/schema/misc.schema

include         /etc/ldap/schema/samba.schema

 

# Verification de la des schemas au demarrage de l'annuaire

schemacheck     on

 

# Definition des fichiers utilisés pour controler le fonctionnement de LDAP

pidfile         /var/run/slapd.pid

argsfile        /var/run/slapd.args

replogfile /var/lib/ldap/replog

 

# Mise en place du LDAP Secure (TLS)

TLSCipherSuite HIGH:MEDIUM:+SSLv2

TLSCertificateKeyFile /etc/ldap/secure/GrandeOurse.key

TLSCertificateFile    /etc/ldap/secure/GrandeOurse.crt

TLSCACertificateFile  /etc/ldap/secure/ac.pem

TLSVerifyClient      0

 

# Niveau de logs souhaité

#   -1    active tous les niveaux de debug

#   0    pas de log

#    1    trace function calls

#    2    debug packet handling

#    4    heavy trace debugging

#    8    connection management

#    16   print out packets sent and received

#    32   search filter processing

#    64   configuration file processing

#    128  access control list processing

#    256  stats log connections/operations/results

#    512  stats log entries sent

#    1024 print communication with shell backends

#    2048 entry parsing

loglevel        512

 

# Type de base de données utilisé par l'annuaire LDAP (ldbm par defaut)

database        ldbm

 

# Point culminant de l'arbre LDAP gere par ce serveur

suffix          "ou=Maquette de test,o=sga"

 

# Repertoire de stockage LDAP

directory       "/var/lib/ldap"

 

# Gestion des index pour accelerer la recherche dans la base

#

# index {<attrlist>|default} [pres,eq,approx,sub,<special>]

# Specify the indexes to maintain for the given attribute. If only an

# <attr> is given, the indices specified for default are maintained. A

# number of special index parameters may be specified. The index type

# sub can be decomposed into subinitial, subany, and subinal indices.

# The special type lang may be specified to allow use of this index by

# language subtypes. The special type autolang may be specified to

# automatically maintain separate indices for each language subtypes.

# The special type subtypes may be specified to allow use of this index

# by named subtypes. The special type autosubtypes may be specified to

# automatically maintain separate indices for each other subtypes.

 

index objectClass eq

lastmod on

 

# Gestion des droits pour les differents utilisateurs

access to attribute=userPassword

        by dn="cn=admin,ou=Maquette de test,o=sga" write

        by dn="uid=esentry,ou=Special users,ou=Maquette de test,o=sga"              

                                              write

        by anonymous write

        by self write

        by * none

access to *

        by dn="cn=admin,ou=Maquette de test,o=sga" write

        by dn="uid=esentry,ou=Special users,ou=Maquette de test,o=sga" write

        by * read

access to dn=".*,ou=Roaming,o=morsnet"

        by dn="" write

        by dnattr=owner write

 

NB : le mot de passe de l’administrateur de l’annuaire est stocké dans le fichier /etc/ldap.secret : attention à mettre les protections adéquates pour que seul root puisse lire ce fichier !

 

 

Il ne reste plus qu’à activer le mode LDAPS et la mise en cage du démon « slapd ». Ceci s’effectue en modifiant le fichier « /etc/init.d/slapd » comme ci-dessous :

start() {

    echo -n "Starting OpenLDAP: slapd"

    start-stop-daemon --start --quiet --pidfile "$pf" --exec /usr/sbin/slapd -- -h "ldap://10.1.3.2 ldaps://10.1.3.2" -r "/cages/ldap"

    if [ "$doslurp" ] ; then

        echo -n " slurpd"

        start-stop-daemon --start --quiet --exec /usr/sbin/slurpd -- -t /var/spool/slurpd

    fi

    echo .

}


stop() {

    echo -n "Stopping OpenLDAP: slapd"

    start-stop-daemon --stop --quiet --pidfile "/cages/ldap/$pf" --exec /usr/sbin/slapd

    if [ "$doslurp" ] ; then

        echo -n " slurpd"

        start-stop-daemon --stop --quiet --exec /usr/sbin/slurpd

    fi

    echo .

}

 

8.2.6.A.2 -  Client OpenLDAP :

L’installation du client LDAP s’est effectuée lors de l’exécution de la commande dpkg –i *.deb décrite ci-dessus. Le client LDAP en mode ligne de commande permet de vérifier le bon comportement du serveur. Sa syntaxe est la suivante :

è      ldapsearch –Z –x –w “mot_passe” –D “cn=admin,ou=Maquette de test,o=sga” –b “ou=Maquette de test,o=sga”

      - -Z permet d’activer le mode ldaps

      - -x pour une authentification simple (nom/mot de passe)

      - -w pour specifier le mot de passe de connexion

      - -D pour specifier le dn de connexion

      - -b pour specifier la base de recherche

8.2.6.B -  Serveur Apache :

De manière à pouvoir bénéficier d’un navigateur LDAP convivial, un serveur Apache est installé sur GrandeOurse. L’installation du serveur Apache (version 1.3.26.1+1.48-0woody3) s’effectue de la manière suivante :

è       apt-get install apache-ssl

 

Ce package dépend des packages suivants :

   - libdb2 (version >= 2:2.7.7.0-7) ;

   - libc6 (version >= 2.2.4-4) ;

   - libexpat1 (version >= 1.95.2-6) ;

   - libssl0.9.6 ;

   - mime-support ;

   - apache-common (version >= 1.3.26-0, version <= 1.3.27-0) ;

   - perl5 ou perl ;

   - logrotate (version >= 3.5.4-1) ;

   - dpkg (version >> 1.9.0) ;

   - openssl (version >= 0.9.6).

 

Le serveur Apache se configure à l’aide du fichier « /etc/apache-ssl/httpd.conf ». Le fichier de configuration du serveur GrandeOurse est donné ci-dessous :

#

# Emplacement : Maquette de test SGA

# Description : Fichier de configuration du serveur Web compilé avec

#               support SSL

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

# Type de serveur : les serveurs SSL sont forcement standalone

ServerType standalone

 

# Chemin de depart pour tous les repertoires relatifs indiqués dans le fichier

# de configuration httpd.conf

ServerRoot /etc/apache-ssl

 

LockFile /var/lock/apache.lock

PidFile /var/run/apache-ssl.pid

ScoreBoardFile /var/run/apache-ssl.scoreboard

 

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

MinSpareServers 5

MaxSpareServers 10

StartServers 5

MaxClients 150

MaxRequestsPerChild 100

 

# Chargement des modules complementaires

LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config_ssl.so

LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so

LoadModule mime_module /usr/lib/apache/1.3/mod_mime_ssl.so

LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so

LoadModule status_module /usr/lib/apache/1.3/mod_status.so

LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so

LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so

LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so

LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so

LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so

LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so

LoadModule access_module /usr/lib/apache/1.3/mod_access.so

LoadModule auth_module /usr/lib/apache/1.3/mod_auth_ssl.so

LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so

LoadModule unique_id_module /usr/lib/apache/1.3/mod_unique_id.so

LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so

LoadModule apache_ssl_module /usr/lib/apache/1.3/libssl.so

LoadModule php4_module /usr/lib/apache/1.3/libphp4.so

 

# Directive controlant si Apache genere des informations de status

# completes ou juste les informations basiques lorsque le module status

# est chargé et que l'alias '/server-status' est declaré

ExtendedStatus On

 

# Port d'ecoute : 443 = SSL

Port 443

 

# Utilisateur non privilégié faisant tourner le serveur

User www-data

Group www-data

 

# Coordonnées de l'administrateur

ServerAdmin webmaster@GrandeOurse

 

# Nom du serveur renvoyé au clients : permet de dissimuler au besoin le

# veritable nom du serveur

ServerName GrandeOurse

 

# Racine de base des documents : c'est le '/' du serveur Web

DocumentRoot /var/www

 

# Definition des alias de repertoire

# Definition des options possibles :

#    - All                  : toutes les options sont activées sauf

#                            MultiViews, IncludesNOEXEC et

#                            SymLinksIfOwnerMatch (mais cette dernière

#                            est redondante si FollowSymLink est

#                            activée)

#   - ExecCGI               : l'execution des scripts CGI est autorisée

#                            et interdite sinon

#   - Includes              : les server-side includes sont autorisés

#                            et interdits sinon

#   - IncludesNOEXEC        : les server-side includes sont autorisés

#                            mais les commandes #exec et #include des

#                            scripts CGI sont desactivées

#   - Indexes               : si le client demande une URL

#                            correspondante à un répertoire et s'il ne

#                            s'y trouve aucun fichier index.html,

#                            cette option autorise l'utilisation de la

#                            suite des commandes d'indexation

#   - MultiViews            : les multiviews a contenu négocié sont

#                            gérés (ceci inclut AddLanguage et la

#                            négociation d'images)

#   - SymLinksIfOwnerMatch  : les liens symboliques sont suivis et

#                            conduisent aux fichiers detenus par le

#                            meme utilisateur

# Ces differentes options peuvent etre précédées de '+' ou de '-'

 

# Directive AllowOverride   : cette directive indique quelles

#                            directives du fichier .htaccess peuvent

#                            surcharger les directives precedentes.

#                            Elle peut prendre les valeurs suivantes :

#   - AuthConfig            : autorise des definitions individuelles de

#                            AuthDBMGroupFile,AuthDBMUserFile,

#                            AuthGroupFile, AuthName,

#                            AuthType,AuthUserFile et require

#   - FileInfo              : Autorise AddType, AddEncoding,

#                            AddLanguage, AddCharset, AddHandler,

#                            RemoveHandler, LanguagePriority,

#                            ErrorDocument,DefaultType, Action,

#                            Redirect, RedirectMatch, RedirectTemp,

#                            RedirectPermanent, PassEnv, SetEnv,

#                            UnsetEnv, Header, RewriteOptions,

#                            RewriteEngine, RewriteBase, RewriteCond,

#                            RewriteRule, CookieTracking et CookieName

#   - Indexes               : Autorise FancyIndexing, AddIcon,

#                            AddDescription

#   - Limit                 : Peut limiter l'acces sur la base du nom

#                            d'hote ou de l'adresse IP

#   - Options               : Autorise l'utilisation de la directive

#                            Options

#   - All                   : Tout ce qui precede

#   - None                  : Rien de ce qui precede

 

# Directive Order           : ce controle definit l'ordre d'application

#                            des directives allow et deny (allow,deny

#                            = application de la directive allow avant

#                           application de la directive deny)

<Directory />

    Options SymLinksIfOwnerMatch

    AllowOverride None

</Directory>

 

<Directory /var/www/>

    Options Indexes Includes FollowSymLinks MultiViews

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

 

# Ce module est implémenté dans le fichier mod_userdir.c, et est

# compilé par défaut. Il autorise la définition de répertoires propres

# à un utilisateur

 

# La directive UserDir définit le répertoire effectif accédé dans un

# répertoire personnel d'utilisateur lorsqu'une requête pour un

# document pointe dans l'espace de cet utilisateur.

# repertoire/nomFichier doit être l'un des suivants :

#    Le nom d'un répertoire ou un motif tel que ceux indiqués ci-

#     dessous.

#

#    Le mot clef disabled. Ceci désactive toute translation utilisateur

# vers répertoire qui n'auraient pas été explicitement définies par la

# clause enabled.

#

#    Le mot clef disabled suivi par une liste de noms d'utilisateurs

# séparée par des espaces. Il ne sera jamais fait de translation vers

# un répertoire pour les utilisateurs dans cette liste, même si ces

# utilisateurs sont associés à une clause enabled.

#

#    Le mot-clef enabled suivi par une liste de noms d'utilisateurs

# séparée par des espaces. Il sera fait une translation vers un

# répertoire même si ce service est globalement désactivé, mais pas si

# ces utilisateurs apparaissent dans une clause disabled.

#

#    Si aucun des deux mots-clefs enabled ou disabled n'aparaissent

# dans la directive Userdir, l'argument est considéré comme un motif de

# nom de fichier, et est utilisé pour constituer le répertoire

# translaté. Une requête vers http://www.foo.com/~bob/one/two.html sera

# translaté vers : ~bob/public_html/one/two.html

<IfModule mod_userdir.c>

    UserDir public_html

</IfModule>

 

<Directory /home/*/public_html>

    AllowOverride FileInfo AuthConfig Limit

    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

    <Limit GET POST OPTIONS PROPFIND>

        Order allow,deny

        Allow from all

    </Limit>

    <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

        Order deny,allow

        Deny from all

    </Limit>

</Directory>

 

# Ce module est implémenté dans le fichier mod_dir.c, et est compilé

# par défaut. Il gère la redirection d'URL avec "slash final" et

# renvoie l'index de répertoire.

#

# La directive DirectoryIndex définit la liste des ressources à

# chercher lorsque le client requiert un index du répertoire par ajout

# du slash final à une URL pointant sur ce répertoire. url-locale est

# l'URL (%-encodée) d'un document sur le serveur relativement au

# répertoire requis. Ce sera usuellement le nom d'un fichier dans ce

# même répertoire. On pourra donner plusieurs URL, auquel cas le

# serveur renverra la premiere ressource qu'il trouve. Si aucune de ces

# ressources n'existe, et si l'option Indexes est active, le serveur

# génèrera sa propre liste.

<IfModule mod_dir.c>

    DirectoryIndex index.html index.php index.htm index.shtml index.cgi

</IfModule>

 

AccessFileName .htaccess

 

<Files ~ "^\.ht">

    Order allow,deny

    Deny from all

</Files>

 

# Dans beaucoup de situations, Apache doit construire des URL

# s'autoréférençant, autremnet dit, des URL référençant le même

# serveur. Avec la directive UseCanonicalName on (dans les versions

# d'Apache inférieures à 1.3) Apache utilise les valeurs des directives

# ServerName et Port pour construire un nom canonique du serveur. Ce

# nom est utilisé pour toutes les URL autoréférentes et pour les

# valeurs de SERVER_NAME et SERVER_PORT pour les scripts CGI.

#

# Avec UseCanonicalName off, Apache formera les URLS autoréférentes en

# utilisant le nom d'hôte le numéro de port fourni par le client si

# ceux ci sont fournis (sinon il utilisera le nom canonique). Ces

# valeurs sont les mêmes qui sont employées pour implémenter les hôtes

# virtuels basés sur des noms, et sont disponibles pour les mêmes

# clients. Les variable CGI SERVER_NAME et SERVER_PORT seront aussi

# construites à partir des valeurs fournies par les clients.

 

UseCanonicalName On

 

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>

    MIMEMagicFile share/magic

</IfModule>

 

# Ne cherche pas a resoudre les noms des clients par resolution DNS

# inverse

HostnameLookups Off

 

# Gestion des logs et formats de logs

ErrorLog /var/log/apache-ssl/error.log

LogLevel warn

 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" full

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P %T" debug

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

CustomLog /var/log/apache-ssl/access.log combined

 

# La directive ServerSignature permet la configuration d'une ligne de

# bas de page pour les documents générés par le serveur (messages

# d'erreur, liste des répertoires ftp, affichage de mod_info, ...)

# L'utilité de l'emploi d'une telle ligne apparaît dans la cas

# d'enchaînement de proxy, où l'utilisateur souvent n'a aucune

# possibilité de déterminer quel élément de la chaîne de proxies a

# produit un message d'erreur.

 

# La valeur par défaut Off supprime la ligne d'erreur (et est

# compatible avec le comportement d'Apache 1.2 et précédents). La

# valeur On ajoute une ligne contenant la version du serveur, la valeur

# de ServerName de l'hôte virtuel et la valeur EMail ajoute une

# référence "mailto:" vers l'adresse ServerAdmin du document demandé.

 

ServerSignature On

 

Alias /icons/ /usr/share/apache/icons/

<Directory /usr/share/apache/icons>

    Options Indexes MultiViews

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

 

<Directory /usr/lib/cgi-bin/>

    AllowOverride None

    Options ExecCGI

    Order allow,deny

    Allow from all

</Directory>

 

<IfModule mod_autoindex.c>

    # La directive FancyIndexing permet de faciliter l'indexation des

    # fichiers. L'utilisateur peut cliquer sur le titre d'une colonne

    # pour trier les entrées par valeur. Un autre clic inverse l'ordre

    # de tri. Le tri peut être desactivé par le mot clé

    # SuppressColumnSorting d'IndexOptions.

    # Il est possible d'indiquer une description de fichiers

    # individuels ou une liste de fichiers. Il est possible d'exclure

    # des fichiers de la liste à l'aide de la directive IndexIgnore.

    #

    IndexOptions FancyIndexing NameWidth=*

    

    # La directive AddIcon permet d'indiquer quelle icone afficher en

    # fonction de l'extension du fichier rencontrée. Ces icones ne sont

    # activées que pour les repertoires indéxées.

    #

    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

    AddIconByType (TXT,/icons/text.gif) text/*

    AddIconByType (IMG,/icons/image2.gif) image/*

    AddIconByType (SND,/icons/sound2.gif) audio/*

    AddIconByType (VID,/icons/movie.gif) video/*

    AddIcon /icons/binary.gif .bin .exe

    AddIcon /icons/binhex.gif .hqx

    AddIcon /icons/tar.gif .tar

    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv

    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip

    AddIcon /icons/a.gif .ps .ai .eps

    AddIcon /icons/layout.gif .html .shtml .htm .pdf

    AddIcon /icons/text.gif .txt

    AddIcon /icons/c.gif .c

    AddIcon /icons/p.gif .pl .py

    AddIcon /icons/f.gif .for

    AddIcon /icons/dvi.gif .dvi

    AddIcon /icons/uuencoded.gif .uu

    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl

    AddIcon /icons/tex.gif .tex

    AddIcon /icons/bomb.gif core

    AddIcon /icons/deb.gif .deb

    AddIcon /icons/back.gif ..

    AddIcon /icons/hand.right.gif README

    AddIcon /icons/folder.gif ^^DIRECTORY^^

    AddIcon /icons/blank.gif ^^BLANKICON^^

    #

    # Definition de l'icone par defaut quand aucun type de fichier ne

    # correspond.

    DefaultIcon /icons/unknown.gif

    #

    # La directive AddDescription permet de placer une description

    # apres le nom de fichier lors d'un repertoire indéxé avec

    # FancyIndexed

    #

    # Format: AddDescription "description" extension_fichier

    # AddDescription "GZIP compressed document" .gz

    # AddDescription "tar archive" .tar

    # AddDescription "GZIP compressed tar archive" .tgz

 

    # La directive ReadmeName permet de definir le nom du fichier

    # qu'Apache va rechercher et ajouter a la fin de la liste des

    # fichiers

    # La directive HeaderName permet de definir le nom du fichier

    # qu'Apache va rechercher et ajouter avant la liste des fichiers

    # Dans les deux cas, Apache va rechercher README.html ou

    # HEADER.html puis s'ils n'existent pas les fichiers README.txt et

    # HEADER.txt

    ReadmeName README

    HeaderName HEADER

 

    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

</IfModule>

<IfModule mod_mime.c>

# Ce module est implémenté dans le fichier mod_mime.c, et est compilé

# par défaut. Il permet à Apache de déterminer le type de contenu des

# fichiers à partir de leur nom.

#

# Les directives AddEncoding, AddHandler, AddLanguage et AddType sont

# toutes utilisées pour associer des extensions de noms de fichiers aux

# meta-informations associées à ce fichier. Elles définissent

# respectivement le type d'encodage (content-encoding), le gestionnaire

# associé (handler), la langue du document (content-language) et le

# type MIME (content-type) des documents.

#

# La directive TypesConfig sert à définir un fichier qui contiendra

# également ces associations. Les directives ForceType et SetHandler

# sont utilisées pour associer tous les fichiers d'un espace

# particulier (ex. un certain répertoire) à un type MIME ou à un

# gestionnaire donnés.

    AddEncoding x-compress Z

    AddEncoding x-gzip gz tgz

 

# La directive AddLanguage ajoute une définition à la liste

# d'extensions de noms de fichiers en précisant comment un nom de

# fichier doit finir pour être considéré comme écrit dans la langue

# spécifiée. Mime-lang est le code mime de la langue associé aux

# fichier d'extension extension, une fois que toutes les extensions

# associées sémantiquement à un type d'encodage ont été supprimées.

# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)

# French (fr) - German (de) - Greek-Modern (el)

# Italian (it) - Portugese (pt) - Luxembourgeois* (ltz)

# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)

# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)

    AddLanguage da .dk

    AddLanguage nl .nl

    AddLanguage en .en

    AddLanguage et .ee

    AddLanguage fr .fr

    AddLanguage de .de

    AddLanguage el .el

    AddLanguage it .it

    AddLanguage ja .ja

    AddCharset ISO-2022-JP .jis

    AddLanguage pl .po

    AddCharset ISO-8859-2 .iso-pl

    AddLanguage pt .pt

    AddLanguage pt-br .pt-br

    AddLanguage ltz .lu

    AddLanguage ca .ca

    AddLanguage es .es

    AddLanguage sv .se

    AddLanguage cz .cz

 

# Ce module est implémenté dans le fichier mod_negotiation.c, et est

# compilé par défaut. Il met en oeuvre la négociation de contenu.

# La directive LanguagePriority détermine la précédence des variantes

# de langues par défaut pour la recherche MultiViews, au cas où le

# client n'exprime pas de préférence. La liste de mime-lang est donné

# par préférence décroissante.

    <IfModule mod_negotiation.c>

        LanguagePriority en da nl et fr de el it ja pl pt pt-br ltz ca es sv

    </IfModule>

 

# La directive AddType ajoute une définition à la liste d'extensions de

# noms de fichiers en précisant comment un nom de fichier doit finir

# pour être considéré comme ayant le contenu spécifié. Mime-type est le

# code mime de type de média à prendre en compte pour les documents

# terminant par extension, une fois les extensions sémantiquement

# associées aux métainformations d'encodage et de langues supprimées.

    #AddType application/x-httpd-php3 .php3

    #AddType application/x-httpd-php3-source .phps

    # And for PHP 4.x, use:

    #AddType application/x-httpd-php-source .phps

    AddType application/x-httpd-php .php

    AddType application/x-tar .tgz

    AddType image/bmp .bmp

    # hdml

    AddType text/x-hdml .hdml

 

# La directive AddHandler associe aux fichiers d'extension extension,

# le gestionnaire nom-handler. Par exemple, pour activer des scripts

# CGI écrits dans des fichiers d'extension ".cgi", vous écrirez :

# AddHandler cgi-script cgi

    #AddHandler cgi-script .cgi .sh .pl

    #AddType text/html .shtml

    #AddHandler server-parsed .shtml

    # Uncomment the following line to enable Apache's send-asis HTTP

    # file feature.

    #AddHandler send-as-is asis

    # If you wish to use server-parsed imagemap files, use

    #AddHandler imap-file map

    # To enable type maps, you might want to use

    #AddHandler type-map var

</IfModule>

 

# Cette directive spécifie le nom de la table de caractères qui sera

# ajouté à toutes les réponses qui n'ont aucun paramètre sur le type de

# contenu dans l'en-tête HTTP. Elle remplace la table de caractère

# spécifié dans le corps du document par l'utilisation du marqueur

# META. La mise de AddDefaultCharset Off désactive cette

# fonctionnalité. AddDefaultCharset On active la table de caractère

# iso-8859-1 par défaut d'Apache. Vous pouvez également définir une

# autre table de caractères à employer. Par exemple AddDefaultCharset

# utf-8.

 

AddDefaultCharset on

 

<IfModule mod_setenvif.c>

# Ce module est implémenté dans le fichier mod_setenvif.c, et est

# compilé par défaut. Il permet de définir des variables

# d'environnement sur la base d'attributs de la requête.

#

# Le module mod_setenvif vous permet de définir des variables

# d'environnement suivant différents aspects de la requête détectés au

# moyen d'expressions régulières. Ces variables d'environnement

# pourront être utilisées dans d'autres parties du serveur pour décider

# des actions à exécuter.

#

# La directive BrowserMatch définit des variables d'environnement sur

# la base du contenu du champ d'en-tête HTTP User-Agent: de la requête.

# Le premier argument est une rexpression régulière POSIX.2 étendue

# (similaire à celles utilisées pour les fonctions de la famille

# egrep()). Le reste des arguments donne la liste des variables à

# définir, aisni que des valeurs optionnelles pour les initialiser.

# Les formes acceptées pour ces variables sont :

#               nomVariable, ou

#               !nomVariable, ou

#               nomVariable=valeur

#

# La première forme définit la variable et lui attribue une valeur

# initiale de "1". La seconde supprimera une variable déjà définie

# auparavant, la troisième définira la variable au besoin

# l'initialisera à la valeur mentionnée. Si le contenu d'un champ

# User-Agent: correspond à plusieurs directives, les variables

# d'environnement seront combinées, et seront crées ou modifiées en

# fonction de l'ordre dans lequel les directives qui les manipulent

# apparaissent dans les fichiers de configuration. Ainsi des directives

# postérieures peuvent surcharger l'action de directives antérieures.

    BrowserMatch "Mozilla/2" nokeepalive

    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

    BrowserMatch "RealPlayer 4\.0" force-response-1.0

    BrowserMatch "Java/1\.0" force-response-1.0

    BrowserMatch "JDK/1\.0" force-response-1.0

</IfModule>

 

<IfModule mod_perl.c>

  Alias /perl/ /var/www/perl/

  <Location /perl>

# Lorsqu'elle est inscrite dans un fichier .htaccess ou à l'intérieur

# de sections <Directory> ou <Location>, la directive SetHandler force

# tous les fichiers qui correspondent à la description à être servis

# après traitement par le gestionnaire nommé nom-handler.

    SetHandler perl-script

# Apache::Registry est le module qui permet de lancer des scripts Perl

# à partir d'un serveur web Apache, comme si c'étaient des CGI. Mais en

# fait, ce ne sont pas des CGI : ils ne sont compilés qu'une seule

# fois, ils restent en mémoire, et leurs variables globales sont

# réellement globales, elles sont préservées entre deux exécutions.

# (Attention, toutefois : comme il y a plusieurs serveurs web (Apache

# se forke), il y aura une copie différente du programme

# dans chaque serveur.)

    PerlHandler Apache::Registry

    Options +ExecCGI

  </Location>

</IfModule>

 

Alias /doc/ /usr/share/doc/

<Location /doc>

  order deny,allow

  deny from all

  allow from 127.0.0.0/255.0.0.0

  Options Indexes FollowSymLinks MultiViews

</Location>

 

# Ce module est implémenté dans le fichier mod_proxy.c pour les

# versions 1.1.x d'Apache, ou le sous-répertoire modules/proxy pour la

# version 1.2 d'Apache, et n'est pas compilé par défaut. Il met en

# oeuvre un serveur de cache proxy sous HTTP 1.0. Il n'est disponible

# qu'à partir de la version 1.1 d'Apache.

#

# La directive ProxyRequests active ou désactive la gestion des

# requêtes en proxy par Apache. Définir ProxyRequests sur 'off'

# n'interdit cependant pas d'utiliser la directive ProxyPass.

#

# La directive ProxyPass permet d'assigner des serveurs distants à une

# portion d'espace du serveur local ; le serveur local ne se comporte

# pas comme un serveur proxy au strict sens du terme, mais apparaît

# comme étant un miroir du serveur distant. <chemin> est le chemin

# local virtuel ; <url> est l'URL partielle du serveur distant.

#

# La directive ProxyPassReverse permet de redefinir la source apparente

# des pages en mode ReverseProxy. Elle permet d'eviter que l'url de

# retour comporte le nom du serveur sur lequel le reverse proxy est

# allé chercher la page.

#

# La directive CacheRoot définit le nom du répertoire qui contient les

# fichiers caches ; celui-ci doit être ouvert à l'écriture pour

# l'utilisateur sous lequel tourne le serveur httpd.

<IfModule mod_proxy.c>

    #ProxyRequests On

    #<Directory proxy:*>

    #    Order deny,allow

    #    Deny from all

    #    Allow from .your_domain.com

    #</Directory>

</IfModule>

 

# Definition des ports d'ecoute du serveur

Listen 443

 

# Activation du mode SSL

SSLEnable

 

SSLCacheServerPath /usr/lib/apache-ssl/gcache

SSLCacheServerPort /var/run/gcache_port

# Definit la valeur du timeout de la session (mettre 15 pour debug, une

# valeur plus elevee apres : ex 300) : a l'issue du timeout, la session

# SSL est renegociée

SSLSessionCacheTimeout 15

SSLCACertificatePath /etc/apache-ssl

 

# Definition du fichier contenant le certificat de l'autorité de

# certification du certificat du serveur

SSLCACertificateFile /etc/apache-ssl/conf/ac.pem

 

# Definition du certificat utilisé par le serveur

SSLCertificateFile /etc/apache-ssl/conf/GrandeOurse.crt

 

# Definition du fichier contenant la clé privée associée au certificat

# du serveur

SSLCertificateKeyFile /etc/apache-ssl/GrandeOurse.key

 

# Permet de definir si le serveur doit ou non verifier la présence d'un

# certificat client

#         SSLVerifyClient à 0 => pas de certificat client requis

#         SSLVerifyClient à 1 => le client peut presenter un certificat

#                                valide

#         SSLVerifyClient à 2 => le client doit presenter un certificat

#                                valide

#         SSLVerifyClient à 3 => le client peut presenter un certificat

#                                mais il n'est pas obligé d'emaner

#                                d'une AC reconnue par le serveur

SSLVerifyClient 2

 

# Profondeur de verification des certificats

SSLVerifyDepth 10

SSLFakeBasicAuth

 

# Definition des formats de logs

CustomLog /var/log/apache-ssl/ssl.log "%t %{version}c %{cipher}c %{clientcert}c"

 

# Prise en compte des modifications ldapexplorer (cf. paragraphe

# 8.2.6.C - )

Include /etc/ldapexplorer/apache.conf

 

PS : le binaire /usr/sbin/apache-sslctl (ou apachectl) permet de piloter le fonctionnement du serveur Apache. Il faut garder présent à l’esprit que pour demarrer la partie ssl il faut passer le paramètre startssl et non start à apachectl !!!

8.2.6.C -  Navigateur LDAP :

De manière à pouvoir naviguer confortablement au sein de l’annuaire OpenLdap il a été installé un navigateur LDAP sur le serveur GrandeOurse. Ce navigateur dénommé « ldapexplorer » (version 1.17-4) s’installe de la manière suivante :

è      apt-get install ldapexplorer

 

Ce package dépend des packages suivants :

   - php4 ou php3 ou php4-cgi ou php3-cgi ;

   - php4-ldap ou php4-cgi-ldap ou php3-ldap ou php3-cgi-ldap ;

   - apache ou httpd ;

   - wwwconfig-common (version >= 0.0.7) ;

   - debconf.

 

Il se paramètre à l’aide du fichier « /etc/ldapexplorer/apache.conf ». Ce fichier tiré du serveur GrandeOurse est donné ci-dessous :

Alias /ldapexplorer /usr/share/ldapexplorer

 

<DirectoryMatch /usr/share/ldapexplorer/>

Options +FollowSymLinks

AllowOverride None

order allow,deny

allow from all

<IfModule mod_php3.c>

  php3_magic_quotes_gpc Off

  php3_track_vars On

  php3_include_path .

</IfModule>

<IfModule mod_php4.c>

  php_flag magic_quotes_gpc Off

  php_flag track_vars On

  php_value include_path .

</IfModule>

</DirectoryMatch>

 

Une fois le serveur Apache redémarré, il est possible de se connecter sur l’url de connexion du serveur LDAP : http://grandeourse/ldapexplorer/index.php.

 

Figure 67 : Ecran de connexion LDAPEXPLORER

 

Cet écran de connexion permet d’obtenir la page suivante :

Figure 68 : Detail LDAPEXPLORER

8.2.6.D -  Authentification des utilisateurs sur l’annuaire LDAP :

L’annuaire LDAP étant maintenant opérationnel, il faut indiquer aux systèmes UNIX d’utiliser cet annuaire comme référentiel de compte. Cette opération s’effectue en paramétrant les méthodes utilisées par les modules PAM pour identifier les utilisateurs.

 

La première étape consiste à installer les modules PAM permettant de réaliser cette authentification sur l’annuaire LDAP. Une fois encore les packages proposés par Debian ne permettent pas de réaliser une connexion LDAPS. Il faut donc effectuer les manipulations suivantes :

è      Se placer dans un répertoire de travail quelconque

è      installation des bibliotheques necessaires :

      - apt-get install debhelper libldap2-dev libpam0g-dev libtool automake

è      récupération des sources pam-ldap : apt-get source libpam-ldap

è      modification du fichier libpam-ldap-140/debian/rules pour modification de l’option disable-ssl en enable-ssl

è      cd libpam-ldap-140

è      dpkg-buildpackage

è      dpkg –i ../ libpam-ldap_140-1_i386.deb

è      récupération des sources nss-ldap : apt-get source libnss-ldap

è      modification du fichier libnss-ldap-186/debian/rules pour modification de l’option disable-ssl en enable-ssl

è      cd libnss-ldap-186

è      dpkg-buildpackage

è      dpkg –i ../ libnss-ldap_186-1_i386.deb

 

Les modules PAM se paramètrent à l’aide des fichiers « /etc/libnss-ldap.conf », « /etc/nsswitch.conf » et « /etc/pam_ldap.conf ». Ces trois fichiers tirés du serveur GrandeOurse sont donnés ci-dessous :

#

# Emplacement : Maquette de test SGA

# Description : Fichier de configuration permettant l'interaction entre

#              les modules PAM et le serveur LDAP

#             : Fichier a recréer avec dpkg-reconfigure libnss-ldap !!

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

 

# Serveur LDAP a contacter

host grandeourse

 

# Base de recherche des utilisateurs

base ou=People,ou=Maquette de test,o=sga

 

# Version du serveur LDAP

ldap_version 3

 

# Contact du serveur LDAP en SSL

uri ldaps://grandeourse.sga.def:636/

port 636

 

# Bases de recherche pour les utilisateurs et les groupes

# Attention : le ?sub permet de lancer une recherche sur tout ce qui

#             est dessous ou=Maquette de test,o=sga et non simplement

#             dans ou=People,ou=Maquette de test,o=sga.

#             C'est utile dans le cas ou les users sont dans plusieurs

#             ou. Cette configuration a permis de tester le             

#             probleme des ordinateurs du domaine SAMBA qui ne sont pas

#             sous ou=People mais sous ou=Ordinateurs.

 

nss_base_passwd ou=Maquette de test,o=sga?sub

nss_base_group          ou=Group,ou=Maquette de test,o=sga

 

#

# Emplacement : Maquette de test SGA

# Description : Fichier de configuration permettant l'interaction entre

#              les modules PAM et le serveur LDAP.

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

 

# Serveur a contacter

host grandeourse.sga.def

 

# Base de recherche des utilisateurs

base ou=People,ou=Maquette de test,o=sga

 

# Version du serveur LDAP a utiliser

ldap_version 3

 

# Contact du serveur LDAP en SSL

uri ldaps://grandeourse.sga.def:636/

port 636

 

# Parametrage du mode ssl

#ssl start_tls

#tls_cacertfile /etc/apache-ssl/ac.pem

#uri ldaps://grandeourse/

 

# Utilisateur root sur LDAP

rootbinddn cn=admin,ou=Maquette de test,o=sga

 

# Maniere de gerer les mots de passe

# libpam_ldap supports many types of hashes for passwords, the possible

# choices for pam_password are explained here.

#

# clear : Don't set any encryptions, this is useful with servers that

#         automatically encrypt userPassword entry.

# crypt : make userPassword use the same format as the flat filesystem.

#        this will work for most configurations

# nds   : Use Novell Directory Services-style updating, first remove

#        the old password and then update with cleartext password.

# ad    : Active Directory-style. Create Unicode password and update

#        unicodePwd attribute

# exop  : Use the OpenLDAP password change extended operation to update

#        the password.

pam_password crypt

#

# Emplacement  :  Maquette de test SGA

# Description  :  Fichier de configuration des bases de données systemes

#                et des services de noms.

#              :  Voir nsswitch(5) pour tous les details

# Serveur      :  GrandeOurse

# Copyright    :  marc.boget@gendarmerie.org

#

 

passwd         :  files ldap

group          :  files ldap

hosts          :  files dns ldap

services       :  files ldap [NOTFOUND=return]

networks       :  files ldap [NOTFOUND=return]

protocols      :  files ldap [NOTFOUND=return]

rpc            :  files ldap [NOTFOUND=return]

ethers         :  files ldap [NOTFOUND=return]

netmasks       :  files

bootparams     :  files

publickey      :  files

automount      :  files

aliases        :  files

sendmailvars   :  files

netgroup       :  files nis

 

Il faut également définir les méthodes d’authentification PAM regroupées sous « /etc/pam.d/* ». A titre d’exemple les fichiers correspondants à la procédure de login via une console et via ssh du serveur GrandeOurse sont donnés ci-dessous :

#

# Emplacement : Maquette de test SGA

# Description : Fichier de description des mécanismes

#               d’authentification face à un login SSH

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

auth        sufficient pam_ldap.so debug

account     required    pam_ldap.so debug

password    sufficient pam_ldap.so debug

 

#

# Emplacement : Maquette de test SGA

# Description : Fichier de description des mécanismes

#               d’authentification face à un login console

# Serveur     : GrandeOurse

# Copyright   : marc.boget@gendarmerie.org

#

auth       requisite   pam_securetty.so

auth       requisite   pam_nologin.so

auth       required    pam_env.so

auth        sufficient  pam_ldap.so

auth       required    pam_unix.so nullok

 

account    sufficient pam_ldap.so

account     required    pam_unix.so

 

session    sufficient pam_ldap.so

session     required    pam_unix.so

session     optional    pam_lastlog.so

session     optional    pam_motd.so

session     optional    pam_mail.so standard noenv

 

password    sufficient pam_ldap.so use_authtok nullok md5

password    required    pam_unix.so nullok obscure min=4 max=8 md5

Il est souhaitable d’installer également le démon « nscd » qui permet de cacher les résultats des requêtes LDAP. Ce démon n’est pas indispensable au fonctionnement mais permet d’éviter les attentes dues aux interrogations LDAP. Ce démon (version 2.2.5-11.2) s’installe de la manière suivante :

è      apt-get install nscd

8.2.6.E -  Population de l’annuaire LDAP :

La population de l’annuaire LDAP peut être effectué de trois manières différentes :

-                     par l’importation d’un fichier LDIF dont le mécanisme est donné ci-dessous :

è      création d’un fichier LDIF nom_fichier contenant les lignes suivantes

dn: ou=Maquette de test,o=sga

objectClass: organizationalUnit

ou: Maquette de test

 

dn: cn=admin,ou=Maquette de test,o=sga

objectClass: organizationalRole

objectClass: simpleSecurityObject

cn: admin

userPassword:: e0NSWVBUfUF1UHRsSlU5eWZpRC4=

description: Administrateur LDAP Maquette de test

 

dn: uid=user-test,ou=People,ou=Maquette de test,o=sga

objectClass: InetOrgPerson

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowaccount

objectClass: sambaAccount

uid: user-test

cn: user-test

sn: user-test

shadowLastChange: 11111

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 106

gidNumber: 12003

homeDirectory: /home/user-test

gecos: user-test

description: Utilisateur SAMBA user-test

pwdLastSet: 0

logonTime: 0

logoffTime: 2147483647

kickoffTime: 2147483647

pwdCanChange: 0

pwdMustChange: 2147483647

displayName: roro

acctFlags: [UX       ]

rid: 1212

primaryGroupID: 25007

smbHome: \\GrandeOurse\homes\roro

homeDrive: Z:

profilePath: \\GrandeOurse\profiles

userPassword:: e2NyeXB0fTkwNWRMS21WZDBnNzY=

lmPassword: 4C5F150641E823D2AAD3B435B51404EE

ntPassword: 5E753BCAAA9CA365F51AA2C5990A3951

 

è      ldapadd –f nom_fichier

-                     par l’installation des outils de migration OpenSource développés par la société  PADL Software Pty Ltd ;

-                     par l’utilisation du script (mélange de perl et de shell) réalisé pour gérer l’ensemble des opérations ayant trait aux utilisateurs sur l’annuaire LDAP (cf annexe 4 - 5 - ).

 

NB : Une bonne méthode pour tester la connexion LDAP est de lancer la commande suivante :

è      getent passwd

Dans le cas ou l’accès à OpenLDAP peut s’effectuer, les utilisateurs retournés seront les utilisateurs locaux et les utilisateurs récupérés dans l’annuaire.

8.2.6.F -  Serveur SSH :

L’installation du serveur SSH est décrite dans le paragraphe 8.2.3.E - .

8.2.6.G -  Déport des logs :

Le paramétrage du déport des logs est décrit dans le paragraphe 8.2.3.C - .



Precedent Haut Suivant