préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 1 : mise en place d'un serveur web
Introduction au serveur web Apache2
Présentation, installation, configuration
1. Linux LPIC2 noelmace.com
Noël Macé
Formateur et Consultant indépendant expert Unix et FOSS
http://www.noelmace.com
Mise en place d'un serveur web
Services web
Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
2. Linux LPIC2 noelmace.com
Plan
• Introduction
Apache
MPM : prefork ou worker ?
Virtual Hosts
• Configuration
httpd.conf : exemple
Options du serveur Apache
Contrôle des répertoires
Logging
• Modularité
Chargement d'un module Apache
mod_perl
• Installer mod_perl
PHP
Authentification et autorisation
• Mise en place
• Gestion des comptes
utilisateur
• Protection d'un dossier
par DAC
• Protection d'un dossier
par MAC
• apache2ctl
• Bonus : les outils Debian
3. Linux LPIC2 noelmace.com
Introduction
• Un des services primordiaux d'Internet
certainement le plus connu du grand public
beaucoup confondant World Wide Web et Internet
• HTTP
HyperText Transfer Protocol
Permettre aux utilisateurs d’accéder à des données (pages web)
sur un serveur
• via un client web (ex : Firefox)
4. Linux LPIC2 noelmace.com
Apache
• Né en avril 1995
ensemble de correctifs à NCSA HTTPd (du domaine publique)
• leader de l'époque (plus de 55 % de parts de marché)
• "mort" (0%) en juillet 1999
• Totalement réécrit en 2000 pour la version 2
plus aucune trace de NCSA HTTPd
• Libre (Licence Apache)
v2.0 (compatible GPL v3) depuis Janvier 2004
• Multi-plateforme
GNU/Linux, Mac OS X, BSD, Solaris, Windows
• LE serveur web de référence depuis avril 1996
54 % de parts de marché sur les sites actifs en avril
2013 selon netcraft.com
• contre 13 % pour Nginx, plus léger et performant, qui
connaît une progression certaine depuis 2007
• 12 % pour Microsoft-IIS et 8 % pour Google Servers
LAMP : Linux, Apache, MySQL, PHP
5. Linux LPIC2 noelmace.com
MPM : prefork ou worker ?
• Multi-Processing Module
Moteur de serveur : interprète les requêtes
• "duplique" apache
afin de répondre à plusieurs requêtes simultanément
• 2 principaux paquets : apache2-mpm-prefork ou worker
• Worker
Multi-threading : un thread par connexion
Meilleures performances
• pas ou peu de commutation de contexte
nécessite des modules compatibles
• exclue mod_php
• Prefork
Mode historique (apache 1.3)
multi-processing : un processus par
connexion
Meilleure isolation / Faibles performances
6. Linux LPIC2 noelmace.com
Virtual Hosts
• Héberger plusieurs sites sur un même serveur
• Deux types :
IP based
• Nécessite plusieurs interfaces (ou routage)
Named based
• Répond en fonction de l'url appelée
• Configurés dans httpd.conf
ou /etc/apache2/sites-available/ sur Debian et dérivés
cf cours suivant
7. Linux LPIC2 noelmace.com
Configuration
• Dans (suivant la distribution) :
/etc/apache/config/
ou /etc/apache2/
ou /etc/httpd/config/
• httpd.conf (ou apache2.conf)
fichier de configuration principal
• soit séparé en plusieurs parties (cf "Include")
• soit d'un bloc
• s'applique à tout le serveur
3 parties :
• global environment
- configuration générale du serveur
• paramètres du serveur par défaut
- requêtes non gérées par un virtual host
• configuration des virtuals hosts
• fichiers .htaccess
permettent une configuration spécifique pour chaque
dossier
à utiliser avec prudence
• uniquement si vous devez séparer la configuration
de certains contextes du fichier principal
- ie : interdire le droit d'accès à httpd.conf à certains
administrateurs
« En général, vous ne devriez jamais utiliser les
fichiers .htaccess à moins que vous n'ayez pas accès
au fichier principal de configuration du serveur. Il y a,
par exemple, une conception erronée qui prévaut
selon laquelle les droits des utilisateurs doivent
toujours être gérés dans le fichier .htaccess. Cela
n'est simplement pas le cas. Vous pouvez placer les
configurations des droits dans la configuration
principale du serveur, et cela est, en fait, la manière
favorisée de le faire. » - Documentation Apache
9. Linux LPIC2 noelmace.com
Options du serveur Apache
• Première section du fichier httpd.conf
nombreuses options de type clé valeur
• Nombre maximum de requêtes simultanées autorisées
• Nombre de serveurs à lancer au démarrage
• Nombre minimal et maximal de serveurs "en attente"
trop bas → perte de performance / trop haut → consommation excessive de ressources
• nombre maximal de connections (de clients) simultanées
ie : nombre maximal de serveurs
MaxKeepAliveRequests 100MaxKeepAliveRequests 100
StartServers 5StartServers 5
MaxKeepAliveRequests 100MaxKeepAliveRequests 100
MinSpareServers 5
MaxSpareServers 10
MinSpareServers 5
MaxSpareServers 10
10. Linux LPIC2 noelmace.com
Contrôle des répertoires
• Regrouper des directives pour qu'elles ne s'appliquent qu'au
répertoire concerné
• Exemple
voir : https://httpd.apache.org/docs/current/mod/core.html#directory
<Directory chemin répertoire> ... </Directory><Directory chemin répertoire> ... </Directory>
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
</Directory>
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
</Directory>
11. Linux LPIC2 noelmace.com
Logging
• généralement dans /var/log/apache2 ou httpd
• Configuration (httpd.conf)
Messages d'erreurs
Niveau de logging des messages d'erreurs
• Dans l'odre : debug, info, notice, warn, error, crit, alert et emerg
• Accès au serveur
• Pour aller plus loin : Documentation Apache des Logs
ErrorLog ${APACHE_LOG_DIR}/error.logErrorLog ${APACHE_LOG_DIR}/error.log
Loglevel warnLoglevel warn
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog ${APACHE_LOG_DIR}/access.log
LogFormat "%h %l %u %t "%r" %>s %b" common
CustomLog ${APACHE_LOG_DIR}/access.log
12. Linux LPIC2 noelmace.com
Modularité
• Apache repose sur une architecture modulaire
similaire à celle du kernel Linux
permet à l'administrateur de choisir les fonctionnalités à inclure
• DSOs (Dynamic Shared Objects)
Objets Dynamiques Partagés
séparés du fichier binaire principal httpd
soit compilés en même temps que le serveur
• peuvent être intégrés statiquement dans le binaire httpd
soit ajoutés ultérieurement
• grâce à apxs (Apache Extension Tool)
•
$ cd /chemin/vers/module_tiers
$ apxs -cia mod_foo.c
$ cd /chemin/vers/module_tiers
$ apxs -cia mod_foo.c
$ ./configure --prefix=/chemin/vers/installation --enable-foo
$ make install
$ ./configure --prefix=/chemin/vers/installation --enable-foo
$ make install
13. Linux LPIC2 noelmace.com
Chargement d'un module Apache
• Dans le fichier httpd.conf
• Remarque (pour ceux ayant travaillé sous Apache1) :
la directive AddModule n'est plus nécessaire
• Exemple
•
• Comportement conditionnel pour un module
LoadModule module filenameLoadModule module filename
LoadModule alias_module /usr/lib/apache2/modules/mod_alias.soLoadModule alias_module /usr/lib/apache2/modules/mod_alias.so
<IfModule [!]fichier module|identificateur module>
…
</IfModule>
<IfModule [!]fichier module|identificateur module>
…
</IfModule>
14. Linux LPIC2 noelmace.com
mod_perl
• Interpréteur Perl pour Apache
permet, grâce à des scripts Perl, de :
• produire du contenu dynamique
• gérer Apache
• et bien d'autres choses encore
sans faire appel à un interpréteur externe
• gain de performance significatif
• accès complet à l'API Apache
• "mod_perl is more than CGI scripting on steroids. It is a whole new way to create dynamic
content by utilizing the full power of the Apache web server to create stateful sessions,
customized user authentication systems, smart proxies and much more. Yet, magically, your
old CGI scripts will continue to work and work very fast indeed. With mod_perl you give up
nothing and gain so much!" - Lincoln Stein, un des principaux contributeurs de mod_perl
15. Linux LPIC2 noelmace.com
Installer mod_perl
• Sous Debian :
• Sous CentOS :
• Pour aller plus loin :
installation : https://perl.apache.org/docs/2.0/user/install/install.html
configuration : https://perl.apache.org/docs/2.0/user/config/config.html
# apt-get install libapache2-mod-perl2# apt-get install libapache2-mod-perl2
# yum install mod_perl# yum install mod_perl
16. Linux LPIC2 noelmace.com
PHP
• Langage de script, coté serveur, orienté Web et multi-plateforme
une référence (cf LAMP)
• Pour tester l'installation, créer une PHP info page
• Pour aller plus loin : documentation complète de l'installation
# apt-get install libapache2-mod-php5# apt-get install libapache2-mod-php5
# yum install php# yum install php
# echo -e "<?phpntphpinfo();n?>" > /var/www/html/info.php# echo -e "<?phpntphpinfo();n?>" > /var/www/html/info.php
17. Linux LPIC2 noelmace.com
Authentification et autorisation
• Deux méthodes :
discretionary access control (DAC) - Contrôle d'accès discrétionnaire
• où "un sujet avec une certaine autorisation d'accès est capable de transmettre cette permission (peut-être indirectement) à n'importe quel
autre sujet" - Trusted Computer System Evaluation Criteria
• ici : login + mot de passe
mandatory access controls (MAC) - Contrôle d'accès obligatoire
• décisions de protections imposées (non prises par les objets concernés)
• ici : Adresse IP, nom d'hôte, etc …
• Géré par des modules
mod_auth_basic : le plus courant - stock les informations dans des fichiers texte
• mod_auth_dbd : stockage dans une base SQL
• mod_auth_dbm : stockage dans des fichiers sous un format DBM
• mod_auth_digest : authentification basée sur les condensés MD5
mod_auth_anon : comportement similaire à un FTP anonymisé
mod_authz_host : restriction de l'accès en fonction du nom d'hôte ou de l'ip (depuis 2.3)
• pour les versions précédentes, voir mod_access
• Pour aller plus loin : https://httpd.apache.org/docs/current/howto/auth.html
18. Linux LPIC2 noelmace.com
Mise en place
• Soit dans httpd.conf (recommandé)
directives <Directory> ou <Limit>
• Soit dans des fichiers .htaccess
dans le répertoire à contrôler
non recommandé
• Pour autoriser la surcharge de ces directives
peu concerner les .htaccess, les sous-répertoires avec <Directory>, et
autres
AllowOverride AuthConfigAllowOverride AuthConfig
19. Linux LPIC2 noelmace.com
Gestion des comptes utilisateur
• Création d'un utilisateur
-c pour créer automatiquement le fichier si n'existe pas
le fichier ne DOIT pas être accessible aux autres utilisateurs
• et encore moins au web !
• Supprimer un utilisateur
• Créer un ou plusieurs groupes d'utilisateurs
Créer un fichier de groupe selon la syntaxe suivante
# htpasswd [-c] /usr/local/apache/passwd/passwords monutilisateur# htpasswd [-c] /usr/local/apache/passwd/passwords monutilisateur
# htpasswd -D /usr/local/apache/passwd/passwords monutilisateur# htpasswd -D /usr/local/apache/passwd/passwords monutilisateur
Nom-de-groupe: user1 user2 user3Nom-de-groupe: user1 user2 user3
20. Linux LPIC2 noelmace.com
Protection d'un dossier par DAC
• Dans une directive <Directory mondossier> ou un fichier .htaccess
dans le dossier
• Autoriser l'accès à tout les utilisateurs enregistrés
AuthType Basic
# message à afficher
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require user monutilisateur
Require group mongroupe
AuthType Basic
# message à afficher
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require user monutilisateur
Require group mongroupe
Require valid-userRequire valid-user
21. Linux LPIC2 noelmace.com
Protection d'un dossier par MAC
• adresse IP
sous-réseau
• ip partielle
• réseau / masque
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
Require ip 10.1
Require ip 10 172.20 192.168.2
Require ip 10.1
Require ip 10 172.20 192.168.2
Require localRequire local
Require ip 10.1.0.0/255.255.0.0
Require ip 10.1.0.0/16
Require ip 10.1.0.0/255.255.0.0
Require ip 10.1.0.0/16
Require host example.org
Require host .net example.edu
Require host example.org
Require host .net example.edu
• Hôte
Local
• Grâce au module mod_authz_host
• Dans une directive <Directory mondossier> ou un fichier .htaccess dans le dossier
22. Linux LPIC2 noelmace.com
apache2ctl
• Interface de contrôle du démon Apache
• Commandes
start
stop
restart
fullstatus : statut complet à partir de mod_status
• nécessite un navigateur web texte (comme Lynx)
• url d'accès modifiable (variable STATUSURL)
status : idem, sans la liste des requêtes actuellement traitées
graceful : redémarrage par l'envoi d'un SIGUSR1
• ne clos pas les connections actuellement ouvertes
configtest : teste de syntaxe des fichiers de configuration
help
# apache2ctl [commande] ...# apache2ctl [commande] ...
23. Linux LPIC2 noelmace.com
Bonus : les outils Debian
• activer / désactiver un site
créé / supprimer un lien symbolique de sites-availables/site dans sites-enables
• activer / désactiver un module
créé / supprimer un lien symbolique de sites-availables/site dans sites-enables
$ a2dismod [module]$ a2dismod [module]
$ a2enmod [module]$ a2enmod [module]
$ a2ensite [site]$ a2ensite [site]
$ a2dissite [site]$ a2dissite [site]
24. Linux LPIC2 noelmace.com
Ce qu’on a couvert
• Installation et configuration de Apache2
httpd.conf et .htaccess
fichiers journaux
nombre maximum de requêtes, nombres minimums et maximums de serveurs et de clients
• Gestion des modules
mod_perl
mod_php
mod_auth
• htpasswd
• Apache2ctl
Weight : 3
Description : Candidates should be able to install and configure a web server. This objective includes
monitoring the server's load and performance, restricting client user access, configuring support for
scripting languages as modules and setting up client user authentication. Also included is configuring
server options to restrict usage of resources.
208.1 Implementing a web server
25. Linux LPIC2 noelmace.com
Licence
Ce(tte) œuvre (y compris ses illustrations, sauf mention explicite) est mise à disposition selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou écrivez à :
Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
Vous êtes libre de :
partager — reproduire, distribuer et communiquer cette œuvre
remixer — adapter l’œuvre
Selon les conditions suivantes :
Attribution — Vous devez clairement indiquer que ce document, ou tout document dérivé de celui, est (issu de) l’œuvre
originale de Noël Macé (noelmace.com) (sans suggérer qu'il vous approuve, vous ou votre utilisation de l’œuvre, à moins
d'en demander expressément la permission).
Pas d’Utilisation Commerciale — Vous n’avez pas le droit d’utiliser cette œuvre à des fins commerciales (ie. l'intention
première ou l'objectif d'obtenir un avantage commercial ou une compensation financière privée). Pour obtenir ce droit, une
autorisation explicite de l'auteur est requise.
Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de
distribuer votre création que sous une licence identique ou similaire à celle-ci.
Pour toute demande de collaboration, d'utilisation commerciale ou de publication de ce support ou d'un dérivé de celui-ci sous une
licence incompatible, contacter l'auteur via les contacts indiqués sur le site http://www.noelmace.com. Vous êtes par ailleurs
vivement encouragé (sans obligation légale) à communiquer avec celui-ci si vous réalisez une œuvre dérivée ou toute amélioration
de ce support.