Post on 16-Apr-2017
Mise en place d'un serveur web
Nol Mac
Formateur et Consultant indpendant expert Unix et FOSS
http://www.noelmace.com
Mise en place d'un serveur webServices web
Licence Creative Commons
Ce(tte) uvre est mise disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mmes Conditions 3.0 France.
Plan
IntroductionApache
MPM: prefork ou worker?
Virtual Hosts
Configurationhttpd.conf: exemple
Options du serveur Apache
Contrle des rpertoires
Logging
ModularitChargement d'un module Apache
mod_perlInstaller mod_perl
PHP
Authentification et autorisationMise en place
Gestion des comptes
utilisateur
Protection d'un dossier
par DAC
Protection d'un dossier
par MAC
apache2ctl
Bonus: les outils Debian
Introduction
Un des services primordiaux d'Internetcertainement le plus connu du grand public
beaucoup confondant World Wide Web et Internet
HTTPHyperText Transfer Protocol
Permettre aux utilisateurs daccder des donnes (pages web) sur un serveurvia un client web (ex: Firefox)
Apache
N en avril 1995ensemble de correctifs NCSA HTTPd (du domaine publique)leader de l'poque (plus de55% de parts de march)
"mort" (0%) en juillet 1999
Totalement rcrit en 2000 pour la version 2plus aucune trace de NCSA HTTPd
Libre (Licence Apache)v2.0 (compatible GPL v3) depuis Janvier 2004
Multi-plateformeGNU/Linux, Mac OS X, BSD, Solaris, Windows
LE serveur web de rfrence depuis avril 199654% de parts de march sur les sites actifs en avril 2013 selon netcraft.comcontre 13% pour Nginx, plus lger et performant, qui connat une progression certaine depuis 2007
12% pour Microsoft-IIS et 8% pour Google Servers
LAMP: Linux, Apache, MySQL, PHP
MPM: prefork ou worker?
Multi-Processing ModuleMoteur de serveur: interprte les requtes"duplique" apache
afin de rpondre plusieurs requtes simultanment2 principaux paquets: apache2-mpm-prefork ou worker
WorkerMulti-threading: un thread par connexion
Meilleures performancespas ou peu de commutation de contexte
ncessite des modules compatiblesexclue mod_php
PreforkMode historique (apache 1.3)
multi-processing: un processus par connexion
Meilleure isolation / Faibles performances
Virtual Hosts
Hberger plusieurs sites sur un mme serveur
Deux types:IP basedNcessite plusieurs interfaces (ou routage)
Named basedRpond en fonction de l'url appele
Configurs dans httpd.confou /etc/apache2/sites-available/ sur Debian et drivs
cf cours suivant
Configuration
Dans (suivant la distribution):/etc/apache/config/
ou /etc/apache2/
ou /etc/httpd/config/
httpd.conf (ou apache2.conf)fichier de configuration principalsoit spar en plusieurs parties (cf "Include")
soit d'un bloc
s'applique tout le serveur
3 parties:global environmentconfiguration gnrale du serveur
paramtres du serveur par dfautrequtes non gres par un virtual host
configuration des virtuals hosts
fichiers .htaccesspermettent une configuration spcifique pour chaque dossier
utiliser avec prudenceuniquement si vous devez sparer la configuration de certains contextes du fichier principalie: interdire le droit d'accs httpd.conf certains administrateurs
En gnral, vous ne devriez jamais utiliser les fichiers .htaccess moins que vous n'ayez pas accs au fichier principal de configuration du serveur. Il y a, par exemple, une conception errone qui prvaut selon laquelle les droits des utilisateurs doivent toujours tre grs 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 manire favorise de le faire. - Documentation Apache
httpd.conf: exemple
un exemple sur internet
Options du serveur Apache
Premire section du fichier httpd.confnombreuses options de type cl valeur
Nombre maximum de requtes simultanes autorises
Nombre de serveurs lancer au dmarrage
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) simultanesie: nombre maximal de serveurs
MaxKeepAliveRequests 100
StartServers 5
MaxKeepAliveRequests 100
MinSpareServers 5MaxSpareServers 10
Contrle des rpertoires
Regrouper des directives pour qu'elles ne s'appliquent qu'au rpertoire concern
Exemple
voir: https://httpd.apache.org/docs/current/mod/core.html#directory
...
Options Indexes FollowSymLinks
Logging
gnralement 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
Accs au serveur
Pour aller plus loin: Documentation Apache des Logs
ErrorLog ${APACHE_LOG_DIR}/error.log
Loglevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog ${APACHE_LOG_DIR}/access.log
Modularit
Apache repose sur une architecture modulairesimilaire celle du kernel Linux
permet l'administrateur de choisir les fonctionnalits inclure
DSOs (Dynamic Shared Objects)Objets Dynamiques Partags
spars du fichier binaire principal httpd
soit compils en mme temps que le serveurpeuvent tre intgrs statiquement dans le binaire httpd
soit ajouts ultrieurementgrce apxs (Apache Extension Tool)
$ cd /chemin/vers/module_tiers$ apxs -cia mod_foo.c
$ ./configure --prefix=/chemin/vers/installation --enable-foo$ make install
Chargement d'un module Apache
Dans le fichier httpd.conf
Remarque(pour ceux ayant travaill sous Apache1):la directive AddModule n'est plus ncessaire
Exemple
Comportement conditionnel pour un module
LoadModule module filename
LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so
mod_perl
Interprteur Perl pour Apachepermet, grce des scripts Perl, de: produire du contenu dynamique
grer Apache
et bien d'autres choses encore
sans faire appel un interprteur externegain de performance significatif
accs 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
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
# yum install mod_perl
PHP
Langage de script, cot serveur, orient Web et multi-plateformeune rfrence (cf LAMP)
Pour tester l'installation, crer une PHP info page
Pour aller plus loin: documentation complte de l'installation
# apt-get install libapache2-mod-php5
# yum install php
# echo -e "" > /var/www/html/info.php
Authentification et autorisation
Deux mthodes:discretionary access control (DAC) - Contrle d'accs discrtionnaireo "un sujet avec une certaine autorisation d'accs 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) - Contrle d'accs obligatoiredcisions de protections imposes (non prises par les objets concerns)
ici: Adresse IP, nom d'hte, etc
Gr par des modulesmod_auth_basic: le plus courant - stock les informations dans des fichiers textemod_auth_dbd: stockage dans une base SQL
mod_auth_dbm: stockage dans des fichiers sous un format DBM
mod_auth_digest: authentification base sur les condenss MD5
mod_auth_anon: comportement similaire un FTP anonymis
mod_authz_host : restriction de l'accs en fonction du nom d'hte ou de l'ip (depuis 2.3)pour les versions prcdentes, voir mod_access
Pour aller plus loin: https://httpd.apache.org/docs/current/howto/auth.html
Mise en place
Soit dans httpd.conf (recommand)directives ou
Soit dans des fichiers .htaccessdans le rpertoire contrler
non recommand
Pour autoriser la surcharge de ces directives
peu concerner les .htaccess, les sous-rpertoires avec , et autres
AllowOverride AuthConfig
Gestion des comptes utilisateur
Cration d'un utilisateur
-c pour crer automatiquement le fichier si n'existe pasle fichier ne DOIT pas tre accessible aux autres utilisateurset encore moins au web!
Supprimer un utilisateur
Crer un ou plusieurs groupes d'utilisateursCrer un fichier de groupe selon la syntaxe suivante
# htpasswd [-c] /usr/local/apache/passwd/passwords monutilisateur
# htpasswd -D /usr/local/apache/passwd/passwords monutilisateur
Nom-de-groupe: user1 user2 user3
Protection d'un dossier par DAC
Dans une directive ou un fichier .htaccess dans le dossier
Autoriser l'accs tout les utilisateurs enregistrs
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-user
Protection d'un dossier par MAC
adresse IP
sous-rseauip partielle
rseau / masque
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 local
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
Hte
Local
Grce au module mod_authz_host
Dans une directive ou un fichier .htaccess dans le dossier
apache2ctl
Interface de contrle du dmon Apache
Commandesstart
stop
restart
fullstatus: statut complet partir de mod_statusncessite un navigateur web texte (comme Lynx)
url d'accs modifiable (variable STATUSURL)
status: idem, sans la liste des requtes actuellement traites
graceful: redmarrage par l'envoi d'un SIGUSR1ne clos pas les connections actuellement ouvertes
configtest: teste de syntaxe des fichiers de configuration
help
# apache2ctl [commande] ...
Bonus: les outils Debian
activer / dsactiver un site
cr / supprimer un lien symbolique de sites-availables/site dans sites-enables
activer / dsactiver un module
cr / supprimer un lien symbolique de sites-availables/site dans sites-enables
$ a2dismod [module]
$ a2enmod [module]
$ a2ensite [site]
$ a2dissite [site]
Ce quon a couvert
Installation et configuration de Apache2httpd.conf et .htaccess
fichiers journaux
nombre maximum de requtes, nombres minimums et maximums de serveurs et de clients
Gestion des modulesmod_perl
mod_php
mod_authhtpasswd
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
Licence
Ce(tte) uvre (y compris ses illustrations, sauf mention
explicite) est mise disposition selon les termes de la Licence
Creative Commons Attribution - Pas dUtilisation Commerciale -
Partage dans les Mmes 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 luvre
Selon les conditions suivantes :Attribution Vous devez clairement indiquer que ce document, ou tout document driv de celui, est (issu de) luvre originale de Nol Mac (noelmace.com) (sans suggrer qu'il vous approuve, vous ou votre utilisation de luvre, moins d'en demander expressment la permission).
Pas dUtilisation Commerciale Vous navez pas le droit dutiliser cette uvre des fins commerciales (ie. l'intention premire ou l'objectif d'obtenir un avantage commercial ou une compensation financire prive). Pour obtenir ce droit, une autorisation explicite de l'auteur est requise.
Partage dans les Mmes Conditions Si vous modifiez, transformez ou adaptez cette uvre, vous navez le droit de distribuer votre cration 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 driv de celui-ci sous une licence incompatible, contacter l'auteur via les contacts indiqus sur le site http://www.noelmace.com. Vous tes par ailleurs vivement encourag (sans obligation lgale) communiquer avec celui-ci si vous ralisez une uvre drive ou toute amlioration de ce support.
Linux LPIC2 noelmace.com
Linux LPIC2 noelmace.com
Linux LPIC2 noelmace.com