essentiel linux ps2

Upload: eligessono

Post on 16-Oct-2015

99 views

Category:

Documents


2 download

TRANSCRIPT

  • Cursus Linux PS2

    EssentielEssentiel

    Laboratoire des Technologies Linux,SUPINFORvision date du 12-12-2007Copyright 2006 SUPINFOAll rights reserved.

  • Table des matires1. Mettre en place un serveur HTTP avec Apache ............................................................................................................ 1

    1.1. Rappel sur le protocole HTTP ........................................................................................................................ 11.2. Compilation et installation ............................................................................................................................ 21.3. Configuration (le fichier httpd.conf) ................................................................................................................ 3

    1.3.1. Environnement du serveur .................................................................................................................. 31.3.2. Les directives d'environnement serveur ................................................................................................. 41.3.3. Gestion des connexions ...................................................................................................................... 51.3.4. Informations personnelles ................................................................................................................... 61.3.5. Emplacement des documents par dfaut (rpertoires et fichiers) ................................................................. 61.3.6. Les droits sur le systme de fichiers ...................................................................................................... 71.3.7. Gestion des modules .......................................................................................................................... 91.3.8. Mapper les URL avec le systme de fichiers .........................................................................................101.3.9. Les pages d'erreurs personnalises ......................................................................................................12

    1.4. Dmarrage, arrt du serveur .........................................................................................................................131.4.1. apachectl ........................................................................................................................................131.4.2. Les fichiers de logs ..........................................................................................................................14

    1.5. Configuration avance .................................................................................................................................151.5.1. Authentification, autorisations et contrle d'accs ..................................................................................151.5.2. Utilisation de SSL/TLS .....................................................................................................................171.5.3. Les htes virtuels .............................................................................................................................211.5.4. Les fichiers .htaccess ........................................................................................................................241.5.5. Gestion d'espaces Web personnels ......................................................................................................26

    2. Chiffrement et scurit avec OpenSSL ......................................................................................................................282.1. Introduction ..............................................................................................................................................282.2. SSLv3 ......................................................................................................................................................282.3. Mthodes utilises ......................................................................................................................................29

    2.3.1. Chiffrement symtrique ....................................................................................................................292.3.2. Cryptographie par cls publiques ........................................................................................................292.3.3. Certificats x509 et x509v3 .................................................................................................................30

    2.4. OpenSSL ..................................................................................................................................................322.4.1. Prsentation ....................................................................................................................................322.4.2. Utilisation basique ...........................................................................................................................32

    3. Administration distance avec SSH .........................................................................................................................353.1. Introduction ..............................................................................................................................................35

    3.1.1. Mcanismes ....................................................................................................................................353.1.2. Les outils de la suite OpenSSH ...........................................................................................................38

    3.2. Le client SSH ............................................................................................................................................383.2.1. Configuration du client SSH ..............................................................................................................383.2.2. Utilisation du client ..........................................................................................................................39

    3.3. Cration de cls .........................................................................................................................................403.3.1. Gnration de cls RSA ....................................................................................................................403.3.2. Gnration de cls DSA ....................................................................................................................41

    3.4. Le serveur SSH ..........................................................................................................................................413.5. Administration du serveur SSH .....................................................................................................................413.6. Copie scurise (scp) ..................................................................................................................................423.7. Authentification par cl publique ...................................................................................................................433.8. X-Forwarding ............................................................................................................................................44

    3.8.1. Dport d'une application graphique .....................................................................................................453.8.2. Dport d'une session graphique complte .............................................................................................453.8.3. Scurit .........................................................................................................................................46

    3.9. TCP-Forwarding (Tunneling) .......................................................................................................................463.10. Sftp: Secure FTP ......................................................................................................................................47

  • 4. Le serveur X ........................................................................................................................................................484.1. Introduction ..............................................................................................................................................48

    4.1.1. L'architecture de X-window et ses limites .............................................................................................484.1.2. Le projet XFree86 ............................................................................................................................494.1.3. Le projet Xorg .................................................................................................................................49

    4.2. Configuration ............................................................................................................................................494.2.1. Gnration d'un fichier de configuration ...............................................................................................494.2.2. Edition du fichier de configuration ......................................................................................................49

    4.3. Lancement du serveur X ..............................................................................................................................534.4. X-Distant ..................................................................................................................................................53

    4.4.1. X-Distant en local ............................................................................................................................544.4.2. Configuration d'XFree86 et X.org .......................................................................................................544.4.3. Afficher des applications distance .....................................................................................................554.4.4. Afficher un environnement complet ....................................................................................................56

    4.5. Utilitaire Mandriva .....................................................................................................................................564.5.1. DrakxConf .....................................................................................................................................564.5.2. Configuration du bureau KDE ............................................................................................................574.5.3. Configuration du bureau Gnome .........................................................................................................57

    5. Le noyau .............................................................................................................................................................585.1. Qu'est ce qu'un noyau ? ...............................................................................................................................585.2. Compilation et installation du noyau ..............................................................................................................59

    5.2.1. Pourquoi recompiler son noyau ? ........................................................................................................595.2.2. Les modules du noyau ......................................................................................................................605.2.3. Avant de commencer... .....................................................................................................................605.2.4. Compilation du noyau .......................................................................................................................625.2.5. Configuration ..................................................................................................................................635.2.6. Compilation ....................................................................................................................................65

    5.3. Installation du noyau ...................................................................................................................................665.3.1. Installation du noyau ........................................................................................................................665.3.2. Configuration du bootloader ..............................................................................................................67

    5.4. Gestion des modules ...................................................................................................................................696. Mettre en place un serveur FTP avec ProFTPd ...........................................................................................................71

    6.1. Introduction ..............................................................................................................................................716.2. Rappels sur le protocole FTP ........................................................................................................................716.3. FTP et la scurit .......................................................................................................................................726.4. Introduction aux utilisateurs virtuels ..............................................................................................................726.5. Installation de ProFTPd ...............................................................................................................................72

    6.5.1. Installation partir des sources ...........................................................................................................736.5.2. Options du script ./configure .......................................................................................................73

    6.6. Lancement du serveur Proftpd ......................................................................................................................746.6.1. La configuration de Proftpd ...............................................................................................................746.6.2. Exemple de fichier de configuration ....................................................................................................756.6.3. La ligne de Commande .....................................................................................................................76

    6.7. Gestion des Utilisateurs Virtuels ...................................................................................................................766.7.1. La commande ftpasswd .....................................................................................................................776.7.2. Les options de la commande ftpasswd ..................................................................................................786.7.3. Ajouter/Modifier un utilisateur Virtuel .................................................................................................796.7.4. Changer le mot de passe d'un utilisateur virtuel ......................................................................................796.7.5. Supprimer un utilisateur Virtuel ..........................................................................................................79

    6.8. Administration du serveur ............................................................................................................................806.8.1. Lister les utilisateurs connects au serveur ............................................................................................806.8.2. Les fichiers de logs ..........................................................................................................................80

    6.9. Utilisation de SSL/TLS ...............................................................................................................................806.9.1. Les Directives de Bases ....................................................................................................................806.9.2. Exemple de Configuration .................................................................................................................81

    6.10. Conclusion ..............................................................................................................................................827. Network File System (NFS) ....................................................................................................................................83

    7.1. Prsentation du NFS/RPC ............................................................................................................................83

    Cursus Linux PS2

  • 7.1.1. Le protocole NFS ............................................................................................................................837.1.2. RPC ..............................................................................................................................................83

    7.2. Installation d'un client/serveur NFS ...............................................................................................................847.2.1. La partie Noyau ...............................................................................................................................847.2.2. La partie logicielle ...........................................................................................................................85

    7.3. Configuration du serveur .............................................................................................................................857.3.1. Modes synchrone et asynchrone .........................................................................................................867.3.2. Gestion des UID/GID .......................................................................................................................867.3.3. Options de configuration de NFS ........................................................................................................88

    7.4. Administration/Maintenance d'un serveur NFS ................................................................................................897.4.1. Les diffrents daemons .....................................................................................................................897.4.2. Lancement et arrt du serveur NFS ......................................................................................................897.4.3. Commandes d'administration et de maintenance ....................................................................................90

    7.5. Utilisation du client NFS .............................................................................................................................927.5.1. Montage dun rpertoire distant ..........................................................................................................927.5.2. Montage dun rpertoire au dmarrage du systme .................................................................................93

    7.6. Conclusion ................................................................................................................................................938. Gestion du RAID ..................................................................................................................................................94

    8.1. Les priphriques loop ................................................................................................................................948.1.1. Introduction aux priphriques loop ....................................................................................................948.1.2. Manipulation des priphriques loop ...................................................................................................948.1.3. Cration d'un fichier loop ..................................................................................................................958.1.4. Associer le fichier une entre dans /dev .............................................................................................95

    8.2. Introduction au RAID .................................................................................................................................968.3. Le RAID matriel .......................................................................................................................................978.4. Mise en place du RAID logiciel ....................................................................................................................97

    8.4.1. Prparation du noyau ........................................................................................................................978.4.2. Installation de mdadm .......................................................................................................................988.4.3. Prparation des disques .....................................................................................................................988.4.4. Nommage des priphriques RAID .....................................................................................................99

    8.5. Utilisation et configuration du RAID logiciel ...................................................................................................998.5.1. Mise en place d'un RAID 1 ................................................................................................................998.5.2. Mise en place d'un RAID 5 .............................................................................................................. 1008.5.3. Mise en place d'un RAID 0+1 .......................................................................................................... 1018.5.4. Le fichier /etc/mdadm.conf .............................................................................................................. 102

    8.6. Maintenance et surveillance ....................................................................................................................... 1028.6.1. Ajout et retrait d'un priphrique chaud ........................................................................................... 1028.6.2. Surveiller ses priphriques Raid ...................................................................................................... 103

    8.7. L'utilitaire DiskDrake ............................................................................................................................... 1059. Introduction aux bases de donnes ......................................................................................................................... 106

    9.1. Prsentation ............................................................................................................................................ 1069.2. Rles et fonctions dun SGBD .................................................................................................................... 1069.3. Le SQL .................................................................................................................................................. 1079.4. Les Bases de donnes Fichiers .................................................................................................................... 1089.5. Les SGBD .............................................................................................................................................. 1089.6. Tableau Comparatif .................................................................................................................................. 1089.7. Conclusion .............................................................................................................................................. 109

    10. Mettre en place un gestionnaire de base de donnes avec MySQL .............................................................................. 11010.1. Introduction ........................................................................................................................................... 110

    10.1.1. Histoire ...................................................................................................................................... 11010.1.2. Prsentation ................................................................................................................................ 111

    10.2. Installation ............................................................................................................................................ 11210.2.1. Installation par les binaires ............................................................................................................. 11210.2.2. Lancement du serveur ................................................................................................................... 113

    10.3. Configuration ........................................................................................................................................ 11310.3.1. Configuration du Serveur ............................................................................................................... 11310.3.2. Configuration des clients ............................................................................................................... 11510.3.3. Fichier de configuration my.cnf .................................................................................................... 116

    Cursus Linux PS2

  • 10.4. Utilisation ............................................................................................................................................. 11610.4.1. Mise Jour des Privilges .............................................................................................................. 11610.4.2. Cration d'une base de donnes ....................................................................................................... 11710.4.3. Suppression d'une base de donnes .................................................................................................. 11810.4.4. Cration/suppression d'une table ..................................................................................................... 118

    10.5. Rplication ............................................................................................................................................ 11910.5.1. Mise en place d'une rplication sur un server MySQL 5.0 .................................................................... 119

    10.6. Outils ................................................................................................................................................... 12110.7. Ressources ............................................................................................................................................ 12210.8. Conclusion ............................................................................................................................................ 122

    11. Mise en place des services DHCP et DNS .............................................................................................................. 12311.1. Introduction, bases DNS/DHCP ................................................................................................................ 123

    11.1.1. Introduction, bases DNS/DHCP ...................................................................................................... 12311.2. Mise en place d'un serveur DHCP .............................................................................................................. 123

    11.2.1. Installation .................................................................................................................................. 12311.2.2. Configuration .............................................................................................................................. 12411.2.3. relay .......................................................................................................................................... 12811.2.4. Lancement et tests ........................................................................................................................ 131

    11.3. Mise en place d'un serveur DNS ................................................................................................................ 13311.3.1. Rappel sur la notion de DNS .......................................................................................................... 13311.3.2. Notion de nom de domaine pleinement qualifi .................................................................................. 13411.3.3. Installation de BIND ..................................................................................................................... 13511.3.4. Bind DLZ ................................................................................................................................... 153

    12. Partage de fichiers avec SAMBA ...................................................................................................................... 15612.1. Prsentation ........................................................................................................................................... 15612.2. Pr requis .............................................................................................................................................. 15612.3. Samba .................................................................................................................................................. 157

    12.3.1. Historique ................................................................................................................................... 15712.3.2. Daemons .................................................................................................................................... 15712.3.3. Nouveauts ................................................................................................................................. 157

    12.4. Le protocole SMB .................................................................................................................................. 15812.4.1. Le format SMB ............................................................................................................................ 158

    12.5. Le protocole NetBIOS ............................................................................................................................. 16012.5.1. Fonctionnement de NetBIOS .......................................................................................................... 160

    12.6. Utilisation du client ................................................................................................................................. 16212.7. smbmount ............................................................................................................................................. 16212.8. nmblookup ............................................................................................................................................ 16312.9. findsmb ................................................................................................................................................ 16312.10. Smb4k ................................................................................................................................................ 16312.11. Configuration du serveur ........................................................................................................................ 16312.12. Prsentation des diffrentes sections ......................................................................................................... 163

    12.12.1. Section global ............................................................................................................................ 16312.12.2. Section homes ........................................................................................................................... 16512.12.3. Section printers et print$ .............................................................................................................. 16512.12.4. Section netlogon ......................................................................................................................... 16612.12.5. Sections de partages .................................................................................................................... 166

    12.13. Validit du fichier smb.conf .................................................................................................................... 16712.14. Gestion des utilisateurs .......................................................................................................................... 16712.15. SWAT ................................................................................................................................................ 167

    12.15.1. Installation ................................................................................................................................ 16712.15.2. Utilisation ................................................................................................................................. 168

    12.16. Utilisation de Samba en Contrleur de domaine .......................................................................................... 16812.17. Cration des rpertoires sur le serveur samba .............................................................................................. 16912.18. Modification dans smb.conf .................................................................................................................... 16912.19. Ajouter des comptes pour les ordinateurs ................................................................................................... 169

    Cursus Linux PS2

  • Chapitre 1. Mettre en place un serveurHTTP avec Apache

    Table des matires1.1. Rappel sur le protocole HTTP ............................................................................................ 11.2. Compilation et installation ................................................................................................ 21.3. Configuration (le fichier httpd.conf) .................................................................................... 3

    1.3.1. Environnement du serveur ...................................................................................... 31.3.2. Les directives d'environnement serveur ..................................................................... 41.3.3. Gestion des connexions .......................................................................................... 51.3.4. Informations personnelles ....................................................................................... 61.3.5. Emplacement des documents par dfaut (rpertoires et fichiers) ..................................... 61.3.6. Les droits sur le systme de fichiers .......................................................................... 71.3.7. Gestion des modules .............................................................................................. 91.3.8. Mapper les URL avec le systme de fichiers .............................................................101.3.9. Les pages d'erreurs personnalises ..........................................................................12

    1.4. Dmarrage, arrt du serveur .............................................................................................131.4.1. apachectl ............................................................................................................131.4.2. Les fichiers de logs ..............................................................................................14

    1.5. Configuration avance .....................................................................................................151.5.1. Authentification, autorisations et contrle d'accs ......................................................151.5.2. Utilisation de SSL/TLS .........................................................................................171.5.3. Les htes virtuels .................................................................................................211.5.4. Les fichiers .htaccess ............................................................................................241.5.5. Gestion d'espaces Web personnels ..........................................................................26

    1.1. Rappel sur le protocole HTTPL'HyperText Transport Protocol (HTTP) est un protocole permettant la transmission de donnes - quelqu'ellessoient - travers un systme d'information multi-utilisateurs. On accde ces ressources par le biaisd'identifants uniques appels Uniform Ressources Locator (URL) qui permettent de spcifier la localisation pr-cise de la ressource recherche. Ces URLs sont construites suivant cette mthode :[transport]://[machine]/[chemin vers la ressource], o [transport] est le protocole utiliser pour contacter le ser-veur dont l'adresse est [machine] et pour trouver la ressource situe l : [chemin vers la ressource].

    Exemple 1.1. Exemple d'URL

    Voici un example d'URL : http://www.labo-linux.org/cours/module-2

    L'utilisation principale du protocole HTTP est la mise disposition de documents (via HTTP GET) et l'envoi deformulaires (via HTTP POST). Mais ce protocole est trs riche et a t conu pour effectuer toute sorted'change de donnes : en plus des requtes GET et POST que vous connaissez probablement, il existe aussi,entre autres, les requtes PUT et DELETE. La pleine utilisation du protocole HTTP commence prendre sonenvol avec les web services de type REST (Representational State Transfert).Ce protocole fonctionne selon le modle client - serveur :

    1

  • Figure 1.2. Illustration

    Un serveur Web attent les requtes des clients et renvoie les ressources demandes. Nous allons voirl'installation et la configuration d'un serveur Web qui va renvoyer des documents par le biais du protocoleHTTP.

    1.2. Compilation et installationApache est disponible sur le site de l'Apache Software Foundation : http://httpd.apache.org. Dans le cadre de cecours, la version 2.0 sera utilise.

    Les sources du serveur Apache sont disponibles l'adresse suivante : http://httpd.apache.org/download.cgi

    Aprs dcompression de l'archive, il suffit de configurer et de compiler :

    Tableau 1.1. Options de compilation d'ApacheOption Valeur par dfaut Description

    --prefix= /usr/local/apache2 Rpertoire d'installation-

    -sysconf-dir=

    $PREFIX/etc Rpertoire des fichiers de configu-ration

    --bindir= $PREFIX/bin Emplacement des binaires utilisa-teurs

    --sbindir= $PREFIX/sbin Emplacement des binaires systme--enable-ssl Active le support pour SSL

    --with-ssl= Chemin vers les sourcesd'OpenSSL

    --enable-vhost-alias Active le module pour les htesvirtuels

    --enable-auth-digest Active l'authentification en modedigest

    --enable-suexec Active le suEXEC wrapper--enable-so Active le support pour les modules

    DSO

    Mettre en place un serveur HTTP avec Apache 2

  • Exemple 1.2. Exemple

    [root@linux ~]# tar zxvf httpd-2.2.4.tar.gz[root@linux ~]# cd httpd-2.2.4/[root@linux httpd-2.2.4]# ./configure \

    > --prefix=/usr/apache2 \> --sysconfdir=/etc/apache2 \> --bindir=/usr/bin \> --sbindir=/usr/sbin \> --enable-ssl \> --with-ssl=/chemin/vers/OpenSSL \> --enable-vhost-alias \> --enable-auth-digest \> --enable-suexec \> --enable-so[ ... ]

    [root@linux httpd-2.2.4]# make && make install[ ... ]

    1.3. Configuration (le fichier httpd.conf)Apache utilise un fichier de configuration principal appel httpd.conf. Par dfaut, il est situ dans /etc/apache/conf et contient tous les paramtres ncessaires au bon fonctionnement de ce programme.

    NoteCe fichier peut aussi tre divis en plusieurs fichiers afin de regrouper les directives de mme typedans des fichiers spars.

    Ce fichier est divis en deux grandes parties :

    La partie contrlant l'environnement du serveur

    La configuration du serveur, comprenant les ressources que le serveur va renvoyer aux clients

    1.3.1. Environnement du serveurCette partie comprend toutes les directives permettant de modifier les paramtres du serveur. Cela permet demodifier, par exemple, le nombre maximum de clients que le serveur va pouvoir servir simultanment, ou alorsle rpertoire de base pour le serveur.

    Tout d'abord, il faut rgler le mode de fonctionnement du serveur, l'aide de la directive ServerType, quiprend un argument parmi ceux ci :

    inetd : ce paramtre n'est support que sur les plateformes Unix/Linux et permet de grer les demandes deconnexions par le daemon. Pour cela il faut que le daemon inetd soit correctement configur et soit en fonc-tionnement

    Mettre en place un serveur HTTP avec Apache 3

  • standalone : le serveur gre directement les connexions que les clients tablissent

    Viennent ensuite des directives permettant de modifier l'environnement du serveur, puis la manire dont Apachetraite les connexions et enfin comment limiter les adresses sur lesquelles le serveur coute.

    1.3.2. Les directives d'environnement serveur

    Tableau 1.2. Les directives d'environnement serveur

    Directive Argument DescriptionServerRoot Un rpertoire Rpertoire de base du serveur.

    C'est--dire l o est install le ser-veur ($PREFIX)

    LockFile Un fichier Ce fichier doit tre sur un disquelocal obligatoirement. Vous ne de-vez changer cette directive que sile ServerRoot est mont tra-

    vers le rseauPidFile Un fichier Le fichier contenant le PID

    d'ApacheScoreBoardFile Un fichier Fichier utilis pour stocker des in-

    formations internes du processusd'Apache. Ce n'est pas requis partoutes les architectures, et ce fi-chier ne doit pas tre partag parplusieurs instances diffrentes

    d'ApacheUser Un nom d'utilisateur Apache utilisera cet utilisateur lors

    de son fonctionnement, une foisqu'il aura effectu toutes les opra-

    tions o il doit tre rootGroup Un groupe Apache utilisera ce groupe lors de

    son fonctionnement, une fois qu'ilaura effectu toutes les oprations

    o il doit tre root

    Les deux dernires directives sont trs importantes en termes de scurit, cela permet de ne pas excuter le ser-vice en tant qu'utilisateur root et donc de pouvoir dfinir des droits restreints pour le compte utilis.

    Exemple 1.3. Exemple

    ServerRoot /usr/apache2LockFile /etc/apache2/apache.lockPidFile /var/run/apache.pidScoreBoardFile /etc/apache2/apache.scoreUser wwwGroup www

    Mettre en place un serveur HTTP avec Apache 4

  • 1.3.3. Gestion des connexions

    Tableau 1.3. Directives de gestion des connexions

    Directive Argument DescriptionTimeout Un temps en secondes Dure de timeout

    KeepAlive on ou off Accepter plus d'une requte parconnexion.

    MaxKeepAliveRequests Un nombre positif ou nul Le nombre maximum de requtespar connexion (0 pour illimit).

    KeepAliveTimeout Un temps en secondes Le nombre de secondes attendrepour la requte suivante du mme

    client sur la mme connexion.MinSpareServers MaxSpareSer-

    versUn entier, par dfaut 5 et 10 Spcifie les limites pour le nombre

    de processus serveurs faire tour-ner. Ces valeurs peuvent tre d-

    passes pour faire face la chargeet les valeurs par dfaut sont cor-rectes pour la majorit des sites.

    StartServers Un entier, par dfaut 5 Le nombre de processus serveurs dmarrer initialement.

    MaxClients Un entier Le nombre maximum de clientsqui pourront se connecter en mmetemps. Si ce nombre est atteint, les

    clients suivants seront bloqus.MaxRequestsPerChild Un nombre ou 0 pour illimit Le nombre maximum de requtes

    servis par un processus avant qu'ilne meure. Cela est fait pour les pla-teformes (Solaris par exemple) surlesquelles Apache ou ses librairies

    ont des fuites de ressources.

    Exemple 1.4. Exemple

    Timeout 10KeepAlive onMaxKeepAliveRequests 10KeepAliveTimeout 5MinSpareServers 5MaxSpareServers 10StartServers 7MaxClients 140MaxRequestsPerChild 10000

    Afin de limiter les adresses IP et/ou ports sur lesquels Apache va couter pour attendre des requtes, c'est la di-rective Listen qui est utilise. Elle est obligatoire et peut prendre comme arguments une adresse IP et/ou unport. Si l'on ne spcifie qu'une adresse IP, alors le serveur coutera sur le port 80 de cette adresse, et si l'on nespcifie qu'un port, alors le serveur coutera les demandes sur ce port, mais pour toutes les interfaces du sys-tme. Il est possible de spcifier plusieurs fois cette directive afin qu'Apache coute sur plusieurs interfaces et/ou ports.

    Mettre en place un serveur HTTP avec Apache 5

  • Exemple 1.5. Exemple

    # Apache coute sur le port 80 pour toutes les interfaces# et sur le port 8080 pour l'adresse IP 192.168.1.1Listen 80Listen 192.168.1.1:8080

    1.3.4. Informations personnellesLes directives qui permettent de changer les informations personnelles qu'Apache va renvoyer chaque de-mande, comme par exemple l'adresse de l'administrateur du serveur contacter pour tous renseignements :

    ServerAdmin : sert prciser l'adresse de l'administrateur du serveur. Cette adresse apparat sur quelquespages gnres par le serveur, telles que les messages d'erreurs

    ServerName : si vous ne voulez pas que les utilisateurs voient le vritable nom d'hte de la machine, vouspouvez spcifier ici le nom utiliser la place.

    Exemple 1.6. Exemple

    # L'adresse de l'administrateur du serveur est [email protected] [email protected]

    # Les clients voient comme nom : www.labo-linux.org plutt# que www-server qui est le nom d'hte du serveurServerName www.labo-linux.org

    1.3.5. Emplacement des documents par dfaut (rpertoireset fichiers)

    Lorsque Apache reoit une requte, il doit savoir dans quel dossier il doit rechercher la ressource par dfaut renvoyer au client, mais il doit aussi connatre les diffrents noms de fichier que peut avoir cette ressource. Pourcela, les directives suivantes sont utilises :

    DocumentRoot : spcifie le rpertoire dans lequel Apache va rechercher la ressource par dfaut si la demandene correspond aucune directive telle que Alias, permettant de changer l'emplacement. Ce rpertoire doit trespcifi sans "/" final.

    DirectoryIndex : spcifie la liste de tous les fichiers rechercher dans le rpertoire courant lorsqu'aucune res-source prcise n'est demande. Il faut inscrire les entres multiples en les sparant par des espaces.

    Exemple 1.7. Exemple

    Mettre en place un serveur HTTP avec Apache 6

  • # La base de nos fichiers sera : /srv/wwwDocumentRoot /srv/www

    # On veut chercher les fichiers s'appelant index.html,# index.shtml, index.php, index.php3 et labo-linux.html# comme tant des ressources par dfaut pour les rpertoiresDirectoryIndex index.html index.shtml index.php index.php3 labo-linux.html

    La section suivante permet de spcifier des droits sur les diffrents rpertoires utiliss.

    1.3.6. Les droits sur le systme de fichiersUne fois l'environnement du serveur configur, il est ncessaire de limiter les accs au systme de fichiers endfinissant des permissions sur celui-ci. Il ne faut pas oublier que le systme de fichiers est toujours le dernierlment octroyer ou refuser l'accs aux donnes en fonction de l'utilisateur qui veut y accder. Il ne faut doncpas oublier de bien laisser l'utilisateur excutant le serveur Apache le droit de lire les donnes qu'il doit distri-buer, sinon elles ne s'afficheront jamais, mme avec tous les droits dans le fichier de configuration d'Apache.Les droits sur les rpertoires se grent avec des blocs Directory qui permettent de spcifier des directives deconfiguration par rpertoire. Les rpertoires ne possdant pas de droits dfinis explicitement avec cette directivehriteront des droits du rpertoire parent. Un bon point pour la scurit est donc de commencer par mettre desdroits trs restrictifs (aucun droit) sur la racine du systme de fichier, puis de dfinir des droits particuliers pourchaque rpertoire que l'on veut rendre accessible nos visiteurs.

    Un bloc Directory se construit de la manire suivante :

    [ Directives de configuration ]

    [/chemin/vers/le/rpertoire] correspond au chemin absolu vers le rpertoire dont on veut dfinir les droits. Onpeut aussi utiliser des expressions rgulires la place d'un chemin absolu. Il faut dans ce cas faire prcder lechemin contenant l'expression rgulire par un "~ ", ou bien vous pouvez utiliser le bloc DirectoryMatch la place de Directory ~. Voici maintenant les diffrentes directives qui sont disponibles pour la configura-tion de nos rpertoires :

    La premire directive est Options, qui permet de spcifier ce que l'on peut faire sur ce rpertoire. Elle peutprendre un argument ou une combinaison d'arguments, tout en sachant qu'un argument prcd d'un caractre "-" le dsactive et d'un "+" l'active. Pour combiner des arguments, il faut les sparer par des espaces. Voici les dif-frents arguments disponibles :

    Tableau 1.4. Arguments de la directive OptionArgument Description

    Indexes Permet aux clients d'afficher un listing du rpertoire,donc de voir le contenu du rpertoire.

    Includes Permet d'inclure des fichiers ct serveur. Ceci estutilisable grce au module mod_include.

    IncludesNOEXEC Cette directive est semblable la prcdente, mais onne peut pas excuter de scripts grce celle-ci.

    FollowSymlinks Permet de suivre les liens symboliques dans le rper-toire courant. Attention, cela ne change pas le chemin

    Mettre en place un serveur HTTP avec Apache 7

  • Argument Descriptionutilis pour les droits dfinis dans des blocs Direc-

    tory.

    ExecCGI Permet d'excuter les scripts CGI (Common GatewayInterface) dans ce rpertoire. Ces scripts peuvent trecrits et excuts dans n'importe quel langage, pourvuqu'Apache sache comment les excuter. Par exemplepour utiliser des scripts crits en Perl, il vous faudra

    charger le module mod_perl.MultiViews Permet la ngociation de contenu grce au module

    mod_negociation.All Permet d'activer toutes ces options sauf Multi-

    Views qui doit tre prcis explicitementNone Inverse de l'argument All, c'est dire que l'on enlve

    toutes les options sur ce dossier

    Il faut ensuite dfinir qui aura accs ce rpertoire. Cela se configure l'aide de deux directives qui permettentsoit d'autoriser Allow, soit de refuser Deny.

    Une dernire directive permet de spcifier dans quel ordre seront utilises ces directives : Order. La directiveOrder accepte en argument soit allow,deny, soit deny,allow. Le premier argument permet d'excutertout d'abord les directives allow et ensuite les directives deny, et l'autre argument permet d'valuer les direc-tives dans l'ordre inverse.

    Les autorisations d'accs sont dfinies grce aux directives Allow et Deny suivies du mot cl from suivi d'unargument ou d'une combinaison des arguments suivants :

    un nom DNS : tel que labo-linux.org, permet de limiter l'accs aux clients appartenant au domaine spcifiainsi qu' ses sous domaines. Pour cela Apache effectuera deux recherches DNS, une premire pour vrifierque l'adresse IP du client fait partie du domaine, puis une seconde afin de vrifier que le nom de domaine pos-sde bien l'adresse IP du client.

    une adresse IP : permet de n'autoriser que l'adresse IP spcifie.

    une partie d'adresse IP : tel que 172.16, qui permet de limiter l'accs pour toutes les adresses IP commenantpar 172.16.

    une adresse IP et un masque de sous rseau : tel que le prcdent mais autorise plus de souplesse dans la dfi-nition. Le masque de sous rseau peut tre spcifi sous la forme de 4 chiffres entre 0 et 255 ou bien sousforme dcimale.

    all ou none : permet de limiter l'accs pour tout le monde ou personne.

    On peut de la mme manire dfinir des droits sur les fichiers l'aide du bloc Files prenant en argument lenom du fichier, ou bien une expression rgulire l'aide de la directive Files ~ ou bien du bloc Files-Match. On ne peut spcifier que des Allow ou Deny pour les fichiers.

    Exemple 1.8. Exemple

    # Rien n'est autoris la racine

    Options NoneOrder deny,allowDeny from All

    Mettre en place un serveur HTTP avec Apache 8

  • # Quelques options sont acceptes pour le rpertoire de base# Pas d'excution des scripts CGI# Accs pour le sous rseau 172.16.0.0 avec le masque 255.255.0.0# Les trois notations sont quivalentes

    Options +Indexes -ExecCGIOrder allow,denyAllow from 172.16 172.16.0.0/255.255.0.0 172.16.0.0/16Deny from All

    # Dfinition de rpertoires avec une expression rgulire# Tous les rpertoires de /srv/www/ contenant# une suite d'au moins 3 chiffres.# Autorise l'accs pour tous les htes des domaines "labo-linux.org"# et "labo-mandriva.org"

    Options -IndexesOrder allow,denyAllow from labo-linux.org labo-mandriva.org

    # Personne ne peut accder aux fichiers commenant par ".ht"

    Order deny,allowDeny from all

    1.3.7. Gestion des modulesApache est construit selon une approche modulaire, c'est--dire que le coeur de l'application ne contient que lesfonctionnalits basiques du programme, et que des fonctionnalits peuvent tre ajoutes par le biais de modulesque l'on charge son dmarrage.

    Il est possible de compiler certains modules dans le coeur du programme lors de l'installation de celui ci, maisaussi d'en compiler tout moment afin de rajouter des fonctionnalits au serveur : par exemple le support pourles scripts PHP.

    Le choix des modules utiliser se fait dans le fichier de configuration principal. Deux directives sont dispo-nibles pour grer les modules :

    LoadModule : qui permet de charger un module au dmarrage

    : permet d'activer certaines parties du fichier de configuration si un module est prsent

    La syntaxe est la suivante :

    LoadModule

    : est le nom de l'identifiant du module dans le fichier. Plus particulirement, c'est la va-riable de type module dans le fichier source. Cet identifiant est fourni dans la documentation du module.

    Mettre en place un serveur HTTP avec Apache 9

  • : est le chemin complet vers le fichier objet du module. Soit c'est un chemin absolu, soit un che-min relatif au "ServerRoot".

    [ directives de configuration ]

    Cette directive permet de charger des directives de configuration spcifiques suivant qu'un module est charg ounon. Le point d'exclamation "!" indique qu'il faut utiliser ces directives si le module spcifi n'est pas charg.

    Exemple 1.9. Exemple

    # On veut charger le module status_module qui est dans le fichier# /usr/lib/apache2/modules/mod_status.so# charger un bloc "" spcifique lorsque l'on utilise ce module# et ne pas charger un autre bloc de configuration lorsque# l'on utilise ce module.ServerRoot /usr/apache2LoadModule status_module /usr/apache2/modules/mod_status.so# On aurait aussi pu crire :LoadModule status_module modules/mod_status.so

    [ directives de configuration ]

    [ autres directives de configuration ]

    1.3.8. Mapper les URL avec le systme de fichiersNous avons vu que lorsque qu'un client demande une URL telle que "http://monsite/un_rpertoire", cela le redi-rige dans le rpertoire dfini par la directive DocumentRoot, et que si ce rpertoire n'existait pas, cela conduit l'affichage d'une page d'erreur pour le client.

    Il est galement possible de lier une URL un rpertoire hors du DocumentRoot par dfaut, mais aussi depersonnaliser les messages d'erreurs renvoys. Pour effectuer ces tches, le mod_alias.c est utilis, il fautdonc l'activer grce la ligne suivante dans le fichier de configuration :

    LoadModule alias_module modules/mod_alias.so

    Pour mapper une URL avec un rpertoire spcifique, hors du DocumentRoot, il faut utiliser la directiveAlias :

    Alias /nom /un/repertoire

    Mettre en place un serveur HTTP avec Apache 10

  • Cette commande mappe toutes les demandes faites sur l'URL "http://server/nom" vers le rpertoire /un/repertoire.

    Exemple 1.10. Exemple

    Si un client demandait http://server/nom/test.html, alors il lui serait renvoy le fichier /un/repertoire/test.html. Ilne faut pas oublier de mettre les bonnes permissions sur ce rpertoire l'aide de la directive "". At-tention aussi la manire dont vous crivez cette directive, car si vous utilisez cela :

    Alias /nom/ /un/repertoire

    la redirection ne fonctionnerait pas.

    AttentionAttention au "/" la fin du nom de l'alias. Dans ce cas, les demandes vers"http://server/nom/foo.html" seront bien rediriges, mais les demandes vers "http://server/nom" neseront pas rediriges.

    Il existe aussi la directive ScriptAlias qui fonctionne comme la directive Alias, mais elle marque le r-pertoire de destination comme contenant des scripts cgi-bin (Common Gateway Interface) qui seront excuts.Par exemple, si le rpertoire /var/www/cgi-bin contient des scripts cgi-bin que l'on veut excuter lorsquele client demande les pages contenues dans "http://server/binaire" :

    ScriptAlias /binaire /var/www/cgi-bin

    Il est galement possible de rediriger le client vers une ressource situe un autre emplacement avec un mes-sage de statut HTTP.

    Pour cela il existe la directive Redirect qui prend trois arguments : une option indiquant la raison de la redi-rection, puis l'emplacement de la ressource qui change et enfin le nouvel emplacement de la ressource. La raisonde la redirection est optionnelle et si elle n'est pas spcifie, alors le serveur renverra une erreur 302, indiquantque la ressource a temporairement chang d'emplacement. Les autres diffrentes raisons sont :

    permanent : renvoie un statut 301 indiquant que la ressource a change d'emplacement de manire perma-nente.

    temp : renvoie un statut 302 indiquant que la ressource a change temporairement d'emplacement. C'est le sta-tut par dfaut.

    seeother : renvoie un statut 303 indiquant que la ressource a t remplace.

    gone : renvoie un statut 410 indiquant que la ressource a change d'emplacement de faon permanente. Quandon utilise ce statut, on n'est pas oblig de spcifier un nouvel emplacement pour la ressource.

    Il existe un alias pour cette directive utiliser pour le statut "permanent" : RedirectPermanent. Cette di-rective ne prend que deux arguments : l'ancien emplacement de la ressource, puis le nouvel emplacement de laressource.

    Mettre en place un serveur HTTP avec Apache 11

  • Exemple 1.11. Exemple

    # On veut rediriger toutes les demandes de ressources# de /mail vers http://mail.labo-linux.org# en indiquant que la ressource a chang d'emplacement# de manire permanente.Redirect permanent /mail http://mail.labo-linux.org

    # Ou ceci, les deux directives sont exactement# quivalentes :RedirectPermanent /mail http://mail.labo-linux.org

    # On veut indiquer que la ressource /documents# n'existe plus cet emplacement.Redirect gone /documents

    # On a remplac la page /articles par# http://www.labo-linux.org/newarticles# mais cette page n'est pas exactement la mme que l'ancienne.Redirect seeother /articles http://www.labo-linux.org/newarticles

    1.3.9. Les pages d'erreurs personnalisesDans le cas d'une erreur ou d'un problme, Apache peut tre configur pour effectuer quatre actions diffrentes :

    afficher le message d'erreur par dfaut

    afficher un message personnalis

    rediriger vers un document local pour traiter l'erreur

    rediriger vers une URL externe (un autre site web par exemple)

    Pour cela on va utiliser la directive ErrorDocument, qui prend deux arguments : le numro de l'erreur pourlaquelle on va changer le message d'erreur, puis le document utiliser pour cette erreur.

    ErrorDocument

  • Exemple 1.12. Exemple

    # On veut rediriger toutes les erreurs 404 (document non trouv)# vers la page http://www.labo-linux.orgErrorDocument 404 http://www.labo-linux.org

    # On veut afficher le message "Notre serveur a rencontr une erreur"# pour toutes les erreurs 500 (erreur interne au serveur)ErrorDocument 500 "Notre serveur a rencontr une erreur"

    # On veut afficher la page "/var/www/error/404.html"# pour toutes les erreurs 404 mais on veut afficher# le message d'erreur par dfaut pour le rpertoire# /var/www/htdocs.ErrorDocument 404 /var/www/error/404.html

    ErrorDocument 404 default[ autres directives de configuration ]

    1.4. Dmarrage, arrt du serveur1.4.1. apachectl

    apachectl est un script permettant de contrler le daemon Apache partir de la ligne de commande. Ce scriptpeut tre utilis suivant deux modes :

    il peut tre utilis comme un front end httpd (le binaire du serveur) en prenant les mmes options que leprogramme httpd.

    comme un script d'initialisation qui prend un argument tel que start ou stop.

    Tableau 1.5. Arguments de apachectl

    Directive Descriptionstart Lancement du serveur, les fichiers de configuration

    sont tests avant le lancementstartssl Lancement du serveur avec SSL activstop Arrt propre du serveur

    restart Arrte et relance le serveur, s'il n'est pas en fonction-nement, alors il est lanc. Les fichiers de configura-

    tion sont tests avant le lancementconfigtest Teste les fichiers de configuration pour des erreurs de

    typographie ou de syntaxefullstatus Affiche l'tat complet du serveur. Cela ncessite que

    le mod_status soit activ et qu'un navigateur textede type lynx soit install.

    status Affiche l'tat du serveur. C'est la mme chose que

    Mettre en place un serveur HTTP avec Apache 13

  • Directive Descriptionl'option prcdente, sauf que la liste des requtes en

    cours n'est pas affichegraceful Relance le serveur ou le lance s'il n'tait pas en fonc-

    tionnement. Cela est diffrent de restart car les re-qutes en cours ne sont pas annules, mais le pro-

    blme est que cela laisse les anciens fichiers de logsouverts, tant que les requtes ne sont pas finies

    Exemple 1.13. Exemple

    Test de la configuration :[root@linux ~]# apachectl configtestOn veut lancer le serveur web :[root@linux ~]# apachectl start

    1.4.2. Les fichiers de logsApache dispose de plusieurs fichiers de logs permettant de surveiller son bon fonctionnement, ainsi que les re-qutes qu'il a reues pendant qu'il fonctionnait.

    Pour configurer la faon dont Apache gre les logs, nous disposons des directives suivantes :

    AccessLog chemin/vers/un/fichier | syslog[:facility] : indique le fichier contenant toutes les requtes reuesdes clients. Soit on indique un chemin vers un fichier, s'il n'est pas absolu, alors il sera relatif au Server-Root ou alors on peut utiliser syslog en prcisant une facility (par dfaut c'est local7). Une dernire op-tion est d'utiliser un excutable en commenant le chemin par un pipe "|".

    ErrorLog chemin/vers/un/fichier | syslog[:facility] : indique le fichier qui contiendra toutes les erreursqu'aurait rencontres Apache lors des requtes qu'il a traits.

    LogLevel : permet d'indiquer quels sont les messages crire dans le fichier de log. Si l'on spcifie un niveau,tous les messages des niveaux prcdents seront aussi inclus. Voici les diffrents niveaux disponibles en ordredcroissant d'importance :

    Tableau 1.6. Les diffrents niveaux d'erreursNiveau Description Exempleemerg Urgences : le systme n'est pas uti-

    lisable"Child cannot open lock file. Exi-

    ting"alert Actions qui doivent tre prises im-

    mdiatement"getpwuid: couldn't determine user

    name from uid"crit Conditions critiques "socket: Failed to get a socket, exi-

    ting child"error Conditions d'erreurs "Premature end of scripts headers"warn Messages d'avertissement "child process did not exit, sending

    another SIGHUP"notice Messages normaux, mais avec une "httpd : caught SIGBUS, attemp-

    Mettre en place un serveur HTTP avec Apache 14

  • Niveau Description Exemplecertaine importance ting to dump core in ..."

    info Messages d'information "Server seems busy, (you mayneed to increase StartServers, or

    Min/MaxSpareServers)..."debug Messages de debug "Opening config file ..."

    Exemple 1.14. Exemple

    # on va logger toutes les requtes faites au serveur# dans le fichier logs/access_logAccessLog logs/access_log

    # On veut avoir tous les messages d'erreur# qui seront cris dans le fichier logs/error_logLogLevel emergErrorLog logs/error_log

    1.5. Configuration avanceNous allons voir comment effectuer des configurations qui dpassent le simple partage de ressources dans desrpertoires choisis. Nous allons voir par exemple comment scuriser les changes entre le client et le serveur, oubien comment configurer le serveur afin d'avoir un rpertoire pour chaque utilisateur accessible par adresse"http://server/~luser".

    1.5.1. Authentification, autorisations et contrle d'accsL'authentification permet de demander aux utilisateurs un nom d'utilisateur ainsi qu'un mot de passe avant qu'ilsne puissent accder une ressource. Pour cela, on dispose des directives suivantes :

    AuthType : permet de spcifier le type d'autorisation utiliser : soit basic soit digest. Il est conseilld'utiliser le mode basic, car le mode digest n'est pas implment sur tous les navigateurs.

    AuthName : permet de dfinir le realm utiliser pour l'authentification. Ce realm est tout simplement unechane de caractres. C'est utile pour indiquer au client quel nom d'utilisateur et mot de passe il doit utiliser.

    AuthUserFile : spcifie le fichier contenant les noms d'utilisateurs et leurs mots de passe respectifs. Nous ver-rons plus tard comment crer ces fichiers.

    AuthGroupFile : permet de spcifier le nom du fichier contenant les groupes auxquels appartiennent les utili-sateurs.

    Require : permet de spcifier les utilisateurs ou les groupes tant autoriss se connecter cette ressource.Pour spcifier un ou plusieurs groupes, on utilise la directive :

    Require group nom_du_groupe1 [ ... nom_du_groupeN ]

    , et pour spcifier des utilisateurs, on utilise cela

    Mettre en place un serveur HTTP avec Apache 15

  • Require user user1 [ ... userN ]

    , ou bien

    Require valid-user

    afin de spcifier tous les utilisateurs prsents dans le fichier de mots de passe

    Satisfy : n'est utile que lorsque plusieurs directives d'authentification sont spcifies, telles que par adresse etpar mot de passe. Cette directive peut prendre en argument soit All qui indique que le client doit satisfairetous les tests pour se voir accorder l'accs (c'est le dfaut), ou bien Any indiquant que le client ne doit satis-faire que l'une des mthodes d'authentification pour avoir l'accs.

    Pour crer le fichier de mots de passe, la commande htpasswd est utilise :

    htpasswd [ -c ] /chemin/vers/le/fichier utilisateur

    Le drapeau -c permet de crer un fichier vide puis d'y crire. Il faut utiliser ce drapeau lors de la cration dufichier, ou bien lorsque l'on veut dtruire les anciens utilisateurs et recommencer avec des nouveaux.

    /chemin/vers/le/fichier : permet de spcifier le chemin vers le fichier de mots de passe que l'onveut modifier

    utilisateur : spcifie le nom de l'utilisateur pour lequel il faut modifier le mot de passe

    Les fichiers de groupe sont de simples fichiers textes avec la syntaxe suivante :

    # Contenu d'un fichier de groupe `labo-linux':user root

    Ici nous avons dfini un groupe s'appelant [labo-linux] et possdant les membres suivants : [user] et [root].

    Exemple 1.15. Exemple

    # Une authentification basique# Seul l'utilisateur user1 est autoris # se connecter la ressource# Les utilisateurs devront s'authentifier pour# accder aux "fichiers secrets".AuthType basicAuthName "Authentification pour les fichiers secrets"AuthUserFile /etc/apache2/passwd/secret_file.passwdRequire user user1# Si on voulait que tous les utilisateurs prsents dans le fichier# de mots de passe puissent se connecter, on aurait utilisRequire valid-user

    # Une authentification digest# Tous les utilisateurs du groupe "labo-linux" pourront se connecter

    Mettre en place un serveur HTTP avec Apache 16

  • AuthType digestAuthName "Authentification pour les fichiers secrets"AuthUserFile /etc/apache2/passwd/secret_file.passwdAuthGroupFile /etc/apache2/passwd/secret_file.groupRequire group labo-linux

    On cre les utilisateurs root et user pour le fichier /etc/apache2/passwd/secret_file.passwd.

    [root@linux ~]# htpasswd -c /etc/apache2/passwd/secret_file.passwd user[root@linux ~]# htpasswd /etc/apache2/passwd/secret_file.passwd root

    1.5.2. Utilisation de SSL/TLSApache peut tre utilis pour servir des ressources de manire scurise. Ceci est trs utile par exemple pour lessites de vente en ligne au moment du paiement. Cette fonctionnalit est ralise par le biais du mod_ssl.

    NoteLe but de cette partie n'est pas d'expliquer comment crer des certificats et/ou des cls utiliseravec SSL, cette partie tant explique dans le chapitre sur OpenSSL.

    1.5.2.1. Directives de basesVoici les directives indispensables permettant de configurer Apache pour utiliser le SSL. Tout d'abord, le portutilis par dfaut pour le HTTPS (HTTP Scuris) est le port 443, et est donc spcifier dans la directive Lis-ten.

    Tableau 1.7. Directives de configuration d'OpenSSLDirective Argument Description

    SSLEngine on ou off (dfaut) Permet de spcifier si le protocoleSSL doit tre utilis pour un hteVirtuel ou le serveur principal.

    SSLCertificateFile chemin vers un fichier de certificat Indique le chemin vers le fichiercontenant le certificat encod du

    serveur, et optionnellement les clspour ce certificat.

    SSLCertificateKeyFile chemin vers un fichier de cl Permet de spcifier le chemin versles cls prives pour le serveur.

    Vous pouvez spcifier cette direc-tive plusieurs fois pour utiliser plu-

    sieurs cls (par exemple une clRSA et une cl DSA). Si vos cls

    sont protges par des pass-phrases, alors elles vous serontdemandes chaque dmarrage du

    serveur.

    Mettre en place un serveur HTTP avec Apache 17

  • Directive Argument DescriptionSSLPassPhraseDialog builtin (dfaut) ou

    exec:/chemin/vers/un/executablePermet de spcifier comment

    Apache va demander les pass-phrases pour les cls au dmar-rage. Builtin : elles seront de-

    mandes sur l'entre standard de lamachine

    exec:/chemin/vers/un/fichier : Apache interrogera un

    excutable pour obtenir les pass-phrases. Il passera en argumentsle nom du serveur et l'algorithme

    pour la cl et la passphrase doittre renvoye sur la sortie standard.

    SSLRequireSSL aucun Permet de refuser l'accs une res-source si la connexion n'est pas

    crypte. Permet de poser un gardefou contre les erreurs de configura-

    tionSSLSessionCache none, dbm:/chemin/vers/un/fichier

    oushm:/chemin/vers/un/fichier[:taille

    ]

    Permet de spcifier la mthode ducache pour les sessions SSL. Si

    vous utilisez none, cela ne posepas de problme mais le cache per-

    met d'amliorer la vitesse desconnexions de type keep-alive.dbm utilise un fichier de hachageDBM sur le serveur et il en rsulteune augmentation des Input / Out-

    put. L'utilisation de DBM estconseille. shm utilise quant elle,une table en RAM et est beaucoupplus performante, mais n'est dispo-nible que sur certaines plateformes.

    SSLSessionCacheTimeout un temps en secondes Combien de temps doit durer lecache SSL pour les sessions des

    clients.

    Exemple 1.16. Exemple

    # On configure le serveur pour accepter les connexions SSL sur le port 443.# Le certificat du serveur se trouve dans le fichier /etc/apache2/ssl/labo-linux.crt.# La cl prive du serveur se trouve dans le fichier /etc/apache2/ssl/labo-linux.key.# La passphrase de la cl sera demande chaque dmarrage du serveur.# Le fichier stockant les sessions sera /adresses/apache2/ssl/session.cache# Le timeout pour les sessions ssl sera de 300 secondes soit 5 minutes.

    Listen 443SSLEngine onSSLCertificateFile /etc/apache2/ssl/labo-linux.crtSSLCertificateKeyFile /etc/apache2/ssl/labo-linux.keySSLPassPhraseDialog builtinSSLSessionCache dbm:/etc/apache2/ssl/session.cacheSSLSessionCacheTimeout 300

    Mettre en place un serveur HTTP avec Apache 18

  • 1.5.2.2. Directives avancesNous allons voir ici les directives permettant de modifier le comportement interne du moteur SSL. Voici doncces diffrentes directives :

    SSLMutex : permet de modifier le comportement du blocage, pour permettre d'effectuer simultanment plu-sieurs oprations, sans qu'elles ne se chevauchent : c'est le mutex (Mutual Exclusion, ou exclusion mutuelle).Cette directive accepte plusieurs arguments, qui ne sont disponibles que si la plateforme les supporte (parexemple sur les environnements Win32 vous devez utiliser un smaphore), ainsi que l'APR (Apache PortableRuntime librairies) : none | no : n'utilise pas de mutex, il peut en rsulter un cache SSL incohrent. Utilisez-le votre propre

    risque, mais il est conseill d'utiliser un vritable mutex (Mutual Exception) la place. C'est la valeur pardfaut.

    posixsem : un smaphore Posix lgant.

    sysvsem : utilise un smaphore SystemV qui peut amener des fuites de ressources si le processus `crashe'avant d'avoir retir le smaphore.

    sem : indique Apache d'utiliser la meilleure implmentation des smaphores disponible.

    pthread : utilise des threads Posix.

    fcntl:/chemin/vers/un/fichier : c'est une mthode permettant de spcifier un fichier qui servira de `lock'. Cefichier doit tre obligatoirement sur un systme de fichiers local, et le numro de processus (PID) d'Apachesera ajout au nom de ce fichier.

    flock:/chemin/vers/un/fichier : mthode similaire la prcdente, mais celle ci utilise la fonction `flock',tandis que la directive prcdente utilise la fonction `fcntl'.

    file:/chemin/vers/un/fichier : indique Apache d'utiliser la meilleure implmentation entre les deux direc-tives prcdentes.

    default | yes : indique Apache de choisir la meilleure implmentation possible pour le Mutex. SSLOptions : permet de modifier des options du `moteur' SSL lors de son fonctionnement. Cette directive

    peut tre utilise par rpertoire et les options se combinent si vous prcdez les arguments d'un signe "+"(rajouter l'option) ou "-" (enlever l'option). Voici donc les arguments disponibles : StdEnvVars : le moteur SSL gnrera les variables d'environnement, au prix d'une utilisation CPU plus in-

    tense. Il est recommand de n'utiliser cette option que pour les scripts CGI et autres qui en ont vraiment be-soin.

    CompatEnvVars : des variables d'environnement supplmentaires sont cres pour une meilleure compati-bilit avec les autres solutions SSL pour Apache.

    ExportCertData : permet de crer les variables supplmentaires suivantes : SSL_SERVER_CERT,SSL_CLIENT_CERT et SSL_CLIENT_CERT_CHAINn (avec n=0,1,2,...) qui vont contenir les certificatsdu client et du serveur.

    FakeBasicAuth : permet de faire une authentification basique en rcuprant le Distinguished Namedu certificat client et on l'applique une authentification basique d'Apache. Tous les utilisateurs devant treidentifis par cette mthode doivent possder le mot de passe encod en DES ("xxj31ZMTZzkVA") oubien en MD5 ("$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/") suivant votre systme.

    StrictRequire : si plusieurs schmas d'authentification sont utiliss, alors grce cette directive, lemod_ssl aura la dernire position, c'est donc lui qui dterminera si l'accs est accord ou non.

    Mettre en place un serveur HTTP avec Apache 19

  • OptRenegotiate : permet d'optimiser les rengociations de connexions SSL lorsque la configuration est sp-cifie par rpertoire. Cette directive permet de sauter des tapes de l'authentification qui ont dj t rali-ses auparavant.

    La gestion des certificats clients se fait par le biais des directives suivantes :

    SSLCACertificateFile : indique le chemin vers un fichier contenant un ou plusieurs certificats clients. Cettedirective est utilise pour identifier les clients par rapport leurs certificats.

    SSLCACertificatePath : indique le chemin vers un rpertoire contenant les certificats clients dans des fichiersqui sont encods en PEM. Les fichiers doivent tre accds par un nom contenant leur hash. Pour ce faire, unMakefile founit avec le mod_ssl vous permet de faire cela simplement.

    La directive SSLRandomSeed permet de spcifier les sources d'entropie, ou plus simplement d'alatoire utilispar le serveur en mode SSL. Cette option n'est disponible que pour la configuration globale d'Apache. Cette di-rective accepte deux arguments : le contexte puis la source d'entropie. Le contexte peut tre :

    startup : source d'entropie utiliser au dmarrage

    connect : source utiliser chaque connexion.

    Les sources peuvent tre :

    builtin : permet d'utiliser le gnrateur d'entropie interne Apache qui est toujours disponible et quiconsomme le moins de temps processeur. Son seul dfaut est de ne pas fournir une entropie trs forte.

    file:/chemin/vers/la/source [ bytes ] : permet de spcifier un fichier spcial qui sera la source de l'entropie, telque /dev/random. Si l'option bytes est spcifie, alors l'entropie ne sera que les premiers bytes du fi-chier, sinon tout le fichier forme l'entropie. Attention au fichier et au nombre de bytes que vous spcifiez carsur certaines plateformes lorsque la source est vide, l'appel ne se finit que lorsque la source a retrouv suffi-samment d'entropie.

    exec:/chemin/vers/un/excutable [ bytes ] : permet d'utiliser un programme pour gnrer de l'entropie. Ce pro-gramme doit renvoyer sur la sortie standard l'entropie qu'il a gnr. Il est conseill de n'utiliser cela qu'au d-marrage du serveur, car cela ralentit considrablement les performances du serveur. L'option bytes fonc-tionne comme pour la directive prcdente.

    egd:/chemin/vers/le/socket/egd : permet d'utiliser le programme EGD (Entropy Gathering Daemon). Celan'est disponible que pour les plateformes Unix et il ne faut l'utiliser que si aucune autre source d'entropien'existe.

    Exemple 1.17. Exemple

    # On veut qu'Apache utilise la meilleure implmentation# possible pour le MutexSSLMutex default

    # On veut avoir les variables d'environnement gnres# pour toutes les pages en SSL et on veut que mod_ssl# dfinisse si l'autorisation est accorde ou non.SSLOptions +StdEnvVars +StrictRequire

    Mettre en place un serveur HTTP avec Apache 20

  • # Les certificats clients sont stocks dans le fichier# /adresses/apache2/ssl/clients.crtSSLCACertFile /adresses/apache2/ssl/clients.crt

    # On va dfinir plusieurs sources d'entropie :SSLRandomSeed startup builtinSSLRandomSeed startup file:/dev/randomSSLRandomSeed startup file:/dev/urandom 2048SSLRandomSeed startup exec:/usr/local/bin/randomize 32SSLRandomSeed connect builtinSSLRandomSeed connect file:/dev/randomSSLRandomSeed connect file:/dev/urandom 2048

    1.5.3. Les htes virtuelsL'utilisation des htes virtuels avec Apache permet d'hberger plusieurs sites web sur la mme machine(hbergement mutualis par exemple). Cela permet d'afficher diffrents sites en fonction de l'URL demande.Pour ce faire, Apache peut utiliser deux techniques diffrentes :

    En fonction de l'IP demande

    En fonction du nom DNS demand

    1.5.3.1. Htes virtuels par IPIl est ncessaire au pralable de vrifier que le serveur coute bien sur les diffrentes IP qui vont tre utilises.L'exemple sera ralis avec le serveur suivant :

    Figure 1.17. Illustration

    Pour cela, nous allons commencer par voir le bloc VirtualHost, qui permet de dfinir un hte virtuel. Vouspouvez spcifier des noms DNS la place des adresses IP des sites, il faut juste que ces noms se rsolvent audmarrage d'Apache et lors des demandes. Voici les directives que nous utiliserons pour notre exemple :

    ServerName www.labo-linux.orgServerAdmin [email protected] /srv/www/labo-linuxErrorLog /srv/www/labo-linux/logs/error_logTransferLog /srv/www/labo-linux/logs/access_log

    Mettre en place un serveur HTTP avec Apache 21

  • ServerName www.labo-mandriva.comServerAdmin [email protected] /srv/www/labo-mandrivaErrorLog /srv/www/labo-mandriva/logs/error_logTransferLog /srv/www/labo-mandriva/logs/access_log

    Le bloc VirtualHost est donc ainsi structur :

    [ paramtres personnalis pour l'hte ]

    Il est ncessaire de remplacer [ IP ] par l'adresse IP, ou le nom DNS de cet hte. Dans l'exemple, il aurait tpossible de remplacer les adresses IP par les noms DNS en supposant que notre DNS soit bien configur.

    Les principales options disponibles pour les paramtres sont :

    Tableau 1.8. Options de configuration de Virtual HostOption Argument Description

    ServerAdmin une adresse e-mail l'adresse e-mail de l'administrateurde cet hte virtuel.

    DocumentRoot un rpertoire le chemin de base pour cet hte,toutes les demandes auront ce r-

    pertoire comme rpertoire de base.ServerName un nom le nom personnalis du serveur.

    ErrorLog un fichier le fichier d'erreur personnalis duserveur.

    TransferLog un fichier toutes les requtes pour cet hte se-ront loggues dans ce fichier.

    Il est possible d'utiliser les autres directives de configuration d'Apache dans cette section, l'exception de cellesqui contrlent les processus et quelques autres. Vous ne pouvez pas limiter le nombre de processus crer pourun seul hte virtuel par exemple.

    1.5.3.2. Les htes virtuels par nomCette section permet d'hberger plusieurs sites diffrents, mais en ne possdant qu'une seule adresse IP. Pour ef-fectuer cela, Apache attend du client qu'il lui envoie le nom d'hte dans les en-ttes HTTP. Il faut noter quel'envoi du nom d'hte dans les en-ttes HTTP n'est requis que dans la version 1.1 du protocole HTTP, mais quetous les navigateurs Web modernes l'implmentent en tant qu'extension du protocole HTTP 1.0. Il faut aussiprciser que cette technique ne fonctionne pas avec des serveurs scuriss par SSL d la nature de ce proto-cole.

    On peut reprendre l'exemple prcdent, mais en supposant que notre serveur n'ai plus qu'une seule adresse IPpour les deux sites Web : 172.16.0.1, ce qui nous donne cette configuration :

    Figure 1.20. Illustration

    Mettre en place un serveur HTTP avec Apache 22

  • Pour cette section, il faut obligatoirement un serveur DNS correctement configur, sinon les requtesn'arriveront jamais sur le serveur en question.

    Exemple 1.18. Exemple

    NameVirtualHost *:80

    ServerName www.labo-linux.orgServerAlias labo-linux.org *.labo-linux.orgDocumentRoot /srv/www/labo-linux/

    ServerName www.labo-mandriva.comDocumentRoot /srv/www/labo-mandriva/

    Tableau 1.9. Options de configuration de la directive Virtual HostOption Argument Description

    NameVirtualHost adresse IP[:port] Spcifie sur quelle adresse IPApache doit servir les htes vir-

    tuels (le numro de port est option-nel).

    ServerAlias nom_d'hte0 [ ... Nom_d'hteN ] Un ou plusieurs alias pour cet htevirtuel.

    Dans cette configuration, l'important est de bien spcifier la mme adresse IP en argument NameVirtualHost,ainsi que pour les adresses IP des htes virtuels (NameVirtualHost IP et doivent tre iden-tiques).Dans l'exemple, le site du labo-linux sera accessible par les noms DNS suivants : www.labo-linux.org, labo-li-nux.org, tout sous-domaine de labo-linux.org, tandis que le site du labo-mandriva ne sera accessible que par lenom DNS : exact www.labo-mandriva.com, tous les autres noms ne seront pas servis par Apache.

    1.5.3.3. Htes virtuels par dfautDans le cas de plusieurs htes virtuels, il est possible d'en dfinir un qui sera celui par dfaut, lorsque les utilisa-

    Mettre en place un serveur HTTP avec Apache 23

  • teurs demandent un site qui n'est pas dfini. Pour cela, la syntaxe suivante pour la dfinition de votre hte virtuelest disponible :

    Le remplacement de l'adresse IP du site par un _default_ permet d'effectuer cela. Dans l'exemple, le site dulabo-linux s'affiche par dfaut, lorsque les utilisateurs demandent un nom DNS qui n'est pas dfini pour le sitedu labo-mandriva :

    NameVirtualHost *:80

    ServerName www.labo-linux.orgDocumentRoot /srv/www/labo-linux/

    ServerName www.labo-mandriva.orgServerAlias labo-mandriva.org *.labo-mandriva.orgDocumentRoot /srv/www/labo-mandriva/

    ImportantUne fois qu'un hte virtuel est dfini, les blocs , , etc. se trouvant l'extrieur des blocs ne sont plus pris en compte.

    1.5.4. Les fichiers .htaccessCes fichiers permettent de spcifier une configuration d'Apache spcifique pour chaque rpertoire. Ces fichierspermettent de raliser la mme configuration que celle d'un bloc dans le fichier de configura-tion principal. Ces fichiers seront appels ".htaccess" par souci de simplicit.

    1.5.4.1. Pourquoi, comment les utiliser et pourquoi ne pas les utiliserCes fichiers sont utiliser si l'on veut laisser l'utilisateur la possibilit de modifier partiellement la configura-tion pour leurs rpertoires personnels. Un fichier ".htaccess" compris dans un rpertoire modifiera la confi-guration pour tous les sous rpertoires qu'il contient.

    Ces fichiers ne doivent pas tre utiliss lorsque l'on a accs au fichier de configuration principal. En effet, toutesles directives contenues dans ces fichiers peuvent tre incluses au fichier de configuration principal dans desblocs "". Il faut aussi prendre en compte la surcharge que cela inclut pour le serveur lorsque l'on ac-tive cette option.

    En effet, pour toutes les demandes effectues le serveur devra regarder dans tous les rpertoires parents pour sa-voir s'il n'y a pas un fichier ".htaccess" inclure.

    Exemple 1.19. Exemple

    Si un client demande le fichier contenu l'emplacement : /var/www/users/foo/bar.html, alors le ser-veur devra chercher les fichiers suivants : /.htaccess, /var/.htaccess, /var/www/.htaccess, /var/www/users/.htaccess et enfin /var/www/users/foo/.htaccess. Pour une simple requte,

    Mettre en place un serveur HTTP avec Apache 24

  • cela ajoute cinq accs au disque dur pour chercher ces fichiers.

    AttentionCes fichiers permettent aux utilisateurs de modifier des directives de configuration et doncconduisent une configuration qui n'est plus matrise par l'administrateur. Il faut donc bien dfi-nir quelles sont les ressources modifiables par les utilisateurs pour viter que des problmes de s-curit apparaissent.

    Ces fichiers peuvent galement tre utiliss pour l'authentification.

    1.5.4.2. Configuration d'Apache pour les .htaccessPour utiliser les fichiers ".htaccess", une seule directive de configuration est ncessaire :

    AccessFileName

    Ici est dfinit le nom donn aux fichiers ".htaccess". Le serveur recherchera ces fichiers dans tous les rper-toires dfinis par les blocs et qui contiennent une directive AllowOverride diffrente de none.

    La directive AllowOverride permet de spcifier les directives que peuvent grer les utilisateurs dans les fi-chiers ".htaccess", et est dfinie ainsi :

    AllowOverride option1 ... optionN

    Tableau 1.10. Options de la directive AllowOverrideOption Description

    All les utilisateurs peuvent modifier toutes les directivesaccessibles dans les fichiers ".htaccess"

    None les utilisateurs ne peuvent modifier aucune directivedes fichiers ".htaccess" et le serveur ne prendra

    pas la peine de chercher ces fichiersAuthconfig permet d'utiliser les directives d'authentification

    Fileinfo permet d'utiliser les directives qui modifient les typesde documents (DefaultType par exemple, et les

    directives dfinies par le mod_mime)Indexes permet de modifier la configuration pour l'affichage

    des rpertoires (AddDescription et AddIconpar exemple)

    Limit permet d'utiliser les directives de contrle d'accs(Allow, Deny et Order)

    Options permet d'utiliser les directives Options et Xbi-tHack

    Exemple 1.20. Exemple

    Mettre en place un serveur HTTP avec Apache 25

  • # les fichiers .htaccess auront le nom : .config# Les utilisateurs auront le droit de changer les# types de documents dans leurs rpertoires personnels.AccessFileName .config

    AllowOverride FileInfo[ Autres directives de configuration ]

    # Possibilit de mettre dans le fichier /home/luser/public_html/.config# pour afficher des documents textes par dfaut au lieu de fichiers htmlDefaultType text/plain

    1.5.5. Gestion d'espaces Web personnelsTraditionnellement sur les systmes Unix, les utilisateurs peuvent accder