Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:apache2:tp01 [22/09/2014 12:14] Hypathie [Configurations d'un site web] |
doc:reseau:apache2:tp01 [23/09/2014 15:02] Hypathie [Créer un site web avec apache2] |
||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
**Nota : Ce wiki est écrit par une débutante ** | **Nota : Ce wiki est écrit par une débutante ** | ||
- | Contributeurs, merci de compléter [[atelier:chantier:apache2#securiser-son-site|la partie sur la sécurité]] ! FIXME | + | Contributeurs, merci de compléter/vérifier [[atelier:chantier:apache2?&#verifier-l-appartenance-et-les-droits-des-fichiers-utilises-par-apache|la partie sur les droits posix sur les fichiers utiles à apache]] ! FIXME |
===== Introduction ===== | ===== Introduction ===== | ||
Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ | Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ | ||
Ligne 260: | Ligne 260: | ||
</code> | </code> | ||
- | =====Sécuriser son site ===== | + | ===== Installer le module php===== |
+ | ===Installer libapache2-mod-php5 === | ||
+ | Ce paquet casse le MPM worker(([[http://httpd.apache.org/docs/2.2/mod/worker.html]])) et engendre l'installation du MPM prefork(([[http://httpd.apache.org/docs/2.2/mod/prefork.html]])).\\ | ||
+ | |||
+ | <code root>apt-get install libapache2-mod-php5</code> | ||
+ | |||
+ | |||
+ | Une fois l'installation effectuée on peut vérifier que php5 est apparu dans /etc/apache2/mod-available. | ||
+ | |||
+ | <code root>ls -l /etc/apache2/mods-available/php5*</code> | ||
+ | <code>-rw-r--r-- 1 root root 898 août 21 10:49 /etc/apache2/mods-available/php5.conf | ||
+ | -rw-r--r-- 1 root root 59 août 21 10:49 /etc/apache2/mods-available/php5.load</code> | ||
+ | |||
+ | Dans /etc/apache2/mod-enabled, ce sont des liens symboliques qui activent ce module: | ||
+ | <code root>ls -l /etc/apache2/mods-enabled/php5*</code> | ||
+ | <code>lrwxrwxrwx 1 root root 27 sept. 20 11:40\ | ||
+ | /etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf | ||
+ | lrwxrwxrwx 1 root root 27 sept. 20 11:40\ | ||
+ | /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load</code> | ||
+ | |||
+ | -> Puisque les liens sont là, le module est activé. | ||
+ | |||
+ | |||
+ | |||
+ | ===Activer/désactiver un module === | ||
+ | |||
+ | * ''a2enmod'' : (apache2 enable module) : active un module apache2 | ||
+ | * ''a2dismod'' : (apache2 disable module) : désactive un module apache2 | ||
+ | |||
+ | Le module est activé par défaut, mais si ce n'était pas le cas : | ||
+ | |||
+ | <code root>a2enmod php5</code> | ||
+ | Si on active ou désactive un module ne pas oublier après l'opération de réactiver apache : ''service apache2 restart'' | ||
+ | |||
+ | ===Créer la page de test === | ||
+ | |||
+ | |||
+ | <code root>mv /var/www/index.html /var/www/index.php</code> | ||
+ | <code root>vim /var/www/index.php</code> | ||
+ | <code> | ||
+ | <html> | ||
+ | <body> | ||
+ | <h1>It works!</h1> | ||
+ | <p>This is the default web page for this server.</p> | ||
+ | <?php | ||
+ | echo "La date du jour est " . date("d/m/Y") . "!\n"; | ||
+ | ?> | ||
+ | </body> | ||
+ | </html> | ||
+ | </code> | ||
+ | |||
+ | * Recharger apache : | ||
+ | |||
+ | <code root>service apache2 restart</code> | ||
+ | |||
+ | * Tester en tapant dans le navigateur : | ||
+ | ''http://ip-du-serveur/'' | ||
+ | |||
+ | <code>It works! | ||
+ | |||
+ | This is the default web page for this server. | ||
+ | La date du jour est 20/09/2014! </code> | ||
+ | |||
+ | Tous les outils sont en place pour apprendre les langages html et php ! 8-) | ||
+ | |||
+ | |||
+ | =====Sécuriser son site web===== | ||
+ | |||
+ | ====Sécuriser Apache2 ==== | ||
Ce n'est là qu'un minimum et non une sécurisation optimale. | Ce n'est là qu'un minimum et non une sécurisation optimale. | ||
- | FIXME | + | |
- | ===Éditer le fichier /etc/apache2/conf.d/security === | + | ====Diffuser le minimum d'information sur apache ==== |
- | * Il s'agit de diffuser le minimum d'information sur apache. | + | * Éditer le fichier /etc/apache2/conf.d/security. |
<code root>vim /etc/apache2/conf.d/security</code> | <code root>vim /etc/apache2/conf.d/security</code> | ||
Ligne 282: | Ligne 350: | ||
<code root>service apache2 restart</code> | <code root>service apache2 restart</code> | ||
- | ===Limiter l'accès à toute l'arborescence du système Linux=== | + | ====Modifier certaines options <Directory> de son Virtualhost==== |
- | * Désactiver le site "sites-available/efault" : | + | * Désactiver le site "sites-available/default" : |
<code root>a2dissite default</code> | <code root>a2dissite default</code> | ||
- | * Ensuite on va modifier les directives du site "/etc/apache2/sites-available/monsite.com" : | + | * Désactiver le site "monsite.com" : |
- | Pour ce faire, on le désactive d'abord : | ||
<code root>a2dissite monsite.com</code> | <code root>a2dissite monsite.com</code> | ||
- | Et on recharge : ''service apache2 reload''.\\ | + | * Ensuite on va modifier les directives du site "/etc/apache2/sites-available/monsite.com" : |
+ | |||
+ | On édite "/etc/apache2/sites-available/monsite.com" : | ||
- | Puis on édite "/etc/apache2/sites-available/monsite.com". | ||
<code root>vim /etc/apache2/sites-available/monsite.com</code> | <code root>vim /etc/apache2/sites-available/monsite.com</code> | ||
Ligne 304: | Ligne 372: | ||
ServerAlias www.monsite.com | ServerAlias www.monsite.com | ||
- | DocumentRoot /var/www/monsite.com/public_html | + | DocumentRoot /var/www/monsite.com |
<Directory /> | <Directory /> | ||
- | Options FollowSymLinks | + | Options -FollowSymLinks |
AllowOverride None | AllowOverride None | ||
</Directory> | </Directory> | ||
Ligne 327: | Ligne 395: | ||
> ''Options -ExecCGI'' : Pour désactiver l'option permettant à apache l'utilisation de scripts CGI. Désactiver cette option seulement si on n'utilise pas de script CGI(([[http://fr.wikipedia.org/wiki/Common_Gateway_Interface]])). | > ''Options -ExecCGI'' : Pour désactiver l'option permettant à apache l'utilisation de scripts CGI. Désactiver cette option seulement si on n'utilise pas de script CGI(([[http://fr.wikipedia.org/wiki/Common_Gateway_Interface]])). | ||
- | * On réactive le site : | + | > Si on ne peut pas mettre l'option ''-FollowSymLinks'' dans le fichier "sites-available/default", on peut dans celui de son site. |
- | <code root>a2ensite monsite.com</code> | + | |
+ | > S'il s'agit d'un usage personnel local, on peut restreindre l'accès au serveur avec les IP des clients du réseau local. | ||
+ | |||
+ | Pour connaître la signification des différentes options à mettre soit dans "sites-avaible" soit dans le fichier de son site voir : [[http://httpd.apache.org/docs/2.2/mod/core.html]] | ||
+ | |||
+ | ====Création d'un nouvelle utilisateur du système Linux==== | ||
+ | On développera son site dans le répertoire de cet utilisateur. Il est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ ! | ||
- | Et comme indiqué : ''service apache2 reload''. | + | Cela évitera aussi de mettre en place le module [[http://httpd.apache.org/docs/current/fr/mod/mod_userdir.html|userdir]], ce qui est déconseillé par la documentation d'apache(("De même, soyez méfiant en jouant avec la directive UserDir")) |
- | =====Développer son site web dans un /home/ et restreindre l'accès par mot de passe===== | ||
- | ====Création d'un utilisateur apache2==== | ||
- | Pas forcément du même nom que celui de l'utilisateur du système Linux | ||
* Par exemple du nom de "web" | * Par exemple du nom de "web" | ||
<code root>adduser --system web --ingroup www-data</code> | <code root>adduser --system web --ingroup www-data</code> | ||
Ligne 342: | Ligne 413: | ||
* On crée les fichiers du site web, "monsite.com" dans /home/web/: | * On crée les fichiers du site web, "monsite.com" dans /home/web/: | ||
+ | <code root>cd /home/web/</code> | ||
<code>mkdir -p monsite.com/public_html</code> | <code>mkdir -p monsite.com/public_html</code> | ||
- | * On corrige l'appartenance et les droits : | + | * On édite un index pour le dossier /home/web/monsite.com/public_html/ : |
+ | Le module php5 est en place et a été testé, donc on peut créer un "index.php". | ||
- | <code root>chown -R root:www-data /home/web/ && chmod -R 755 /home/web/</code> | + | <code root>vim /home/web/monsite.com/public_html/index.php</code> |
+ | <code><html> | ||
+ | <body> | ||
+ | <h1>Bienvenue sur monsite.com</h1> | ||
+ | <p>Site en cours de réalisation !</p> | ||
+ | <?php | ||
+ | echo "La date du jour est " . date("d/m/Y") . "!\n"; | ||
+ | ?> | ||
+ | </body> | ||
+ | </html></code> | ||
+ | |||
+ | ====Restreindre l'accès à "monsite.com" par login et mot de passe apache2==== | ||
+ | La création d'un mot de passe sécurise un peu l'accès du site qu'on va crée pour le nouvel virtualhost.\\ | ||
+ | **Pour ce faire on va créer en correspondance au utilisateur "web" du système Linux, un mot de passe apache avec la commande ''htpasswd''**. | ||
- | * On édite un index.html : | + | ===Création d'un mot de passe pour accéder à "monsite.com"=== |
- | <code root>vim /home/web/monsite.com/public_html/index.html</code> | + | Le dossier /etc/local est un bon endroit pour créer les fichiers de mots de passe apache. |
- | ===Création du compte et du mot de passe=== | ||
- | Le dossier /etc/local est un bon endroit pour créer les fichiers de mots de passe. | ||
<code root>cd /usr/local/ && ls</code> | <code root>cd /usr/local/ && ls</code> | ||
<code>bin etc games include lib man sbin share src</code> | <code>bin etc games include lib man sbin share src</code> | ||
Ligne 370: | Ligne 454: | ||
-> le mot de passe est chiffré. | -> le mot de passe est chiffré. | ||
- | * On peut aussi créer un groupe par exemple aussi dans le même dossier /usr/local/apache/passwd/ | + | <note tip> |
+ | **Pour supprimer un utilisateur :** | ||
+ | |||
+ | <code root>htpasswd -D /usr/local/apache/passwd/passwords utilisateur</code> | ||
+ | </note> | ||
+ | |||
+ | * Pour créer un groupe par exemple aussi dans le même dossier /usr/local/apache/passwd/ | ||
Par exemple du nom de "groups" : | Par exemple du nom de "groups" : | ||
<code root>vim groups</code> | <code root>vim groups</code> | ||
- | <code>goupe1 web toto</code> | + | <code>goupe1: web</code> |
- | ====Création d'un virtualhost avec restriction d'accès ==== | + | ====Modifier les fichiers des sites actifs de /etc/apache2/sites-available ==== |
- | Pour restreindre l'accès à l'utilisateur apache afin qu'un login et mot de passe soit requis pour accéder au site du Virtualhost qui sera crée, il faut modifier d'abord le virtualhost "/etc/apache2/sites-available/default" | + | Pour restreindre l'accès à "monsite.com", il faut modifier d'abord le virtualhost "/etc/apache2/sites-available/default" |
- | ===Configurer le site "default" === | + | |
- | Cela est nécessaire pour restreindre l'accès du site qui sera crée dans le répertoire de l'utilisateur du système ($USER). | + | |
- | * On désactive "default" : ''a2dissite default'' | + | ===Pour "/etc/apache2/sites-available/default" === |
+ | Cela est nécessaire pour restreindre l'accès du site qui est développé dans le répertoire de l'utilisateur /home/web/monsite.com qu'on a créé. | ||
* On modifie "/etc/apache2/sites-available/default" comme ceci : | * On modifie "/etc/apache2/sites-available/default" comme ceci : | ||
Ligne 393: | Ligne 482: | ||
Options FollowSymLinks | Options FollowSymLinks | ||
AllowOverride AuthConfig | AllowOverride AuthConfig | ||
+ | Order deny,allow | ||
+ | deny from all | ||
+ | allow from 192.168.0.0/24 | ||
</Directory> | </Directory> | ||
<Directory /var/www/> | <Directory /var/www/> | ||
- | Options Indexes FollowSymLinks MultiViews | ||
- | AllowOverride AuthConfig | ||
- | Order allow,deny | ||
- | allow from all | ||
- | AuthType Basic | ||
AuthName "Ma zone est restreinte !" | AuthName "Ma zone est restreinte !" | ||
AuthBasicProvider file | AuthBasicProvider file | ||
AuthUserFile /usr/local/apache/passwd/passwords | AuthUserFile /usr/local/apache/passwd/passwords | ||
AuthGroupFile /usr/local/apache/passwd/groups | AuthGroupFile /usr/local/apache/passwd/groups | ||
- | Require valid-user | + | Require user web |
+ | require group group1 | ||
+ | | ||
</Directory> | </Directory> | ||
+ | |||
+ | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ||
+ | <Directory "/usr/lib/cgi-bin"> | ||
+ | AllowOverride None | ||
+ | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
+ | Order allow,deny | ||
+ | Allow from all | ||
+ | </Directory> | ||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | |||
+ | # Possible values include: debug, info, notice, warn, error, crit, | ||
+ | # alert, emerg. | ||
+ | LogLevel warn | ||
+ | |||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
</code> | </code> | ||
<note> | <note> | ||
**Bien remarquer que pour pouvoir ajouter cette directive**\\ | **Bien remarquer que pour pouvoir ajouter cette directive**\\ | ||
- | -> on a mis ''AllowOverride AuthConfig'' à la place de ''AllowOverride none''. | + | -> on a mis ''AllowOverride AuthConfig'' à la place de ''AllowOverride None'' non seulement dans la directive "<Directory /var/www/>".\\ mais aussi dans "<Directory />". |
**Pour autoriser l'accès à tous les utilisateurs** qui ont un mot de passe apache :\\ | **Pour autoriser l'accès à tous les utilisateurs** qui ont un mot de passe apache :\\ | ||
- | -> ''Require valid-user''\\ | ||
- | |||
- | **On aurrait pu mettre** :\\ | ||
-> ''Require user web''\\ | -> ''Require user web''\\ | ||
-> ''Require group groupe1''\\ | -> ''Require group groupe1''\\ | ||
- | **On remarque que l'option ''Options -FollowSymLinks''** : qui évite de suivre les liens symbolique depuis la racine /var/www | + | **On aurrait pu mettre** :\\ |
- | </note> | + | -> ''Require valid-user''\\ |
+ | Voir aussi la directive "Satisfy" : [[http://httpd.apache.org/docs/2.2/howto/auth.html]] | ||
- | ===Création d'un compte système pour le Virtualhost à créer=== | ||
- | * Par exemple du nom de "web" | ||
- | <code root>adduser --system web --ingroup www-data</code> | ||
- | * On lui crée un mot de passe système : | + | **Pour sécuriser l'accès au système de fichier** :\\ |
- | <code root> passwd web</code> | + | ''Require all denied'' : interdire aux clients de parcourir l'ensemble du système de fichiers. Ceci va interdire l'accès par défaut à tous les fichiers du système de fichiers; Ensuite on autorise section par section. Voir [[http://httpd.apache.org/docs/trunk/fr/misc/security_tips.html]] et [[http://httpd.apache.org/docs/2.2/mod/core.html#require| require directive]]\\ |
- | ===Création du répertoire et des fichiers pour le site web "monsite.com" === | + | Pour l'utiliser avec une zone restreinte, il faut alors l'inclure dans <Directory /> et créer la zone restreinte dans une directive séparée :\\ |
- | * On crée des dossiers principaux : | + | ''<Directory /var/www/restricted/> ... </Directory>'' |
+ | </note> | ||
- | <code root>cd /home/web/ && mkdir -p monsite.com/public_html</code> | + | * Pour "/etc/apache2/sites-available/monsite.com" : |
- | + | <code root>vim /etc/apache2/sites-available/monsite.com</code> | |
- | * On corrige l'appartenance et les droits : | + | |
- | + | ||
- | <code root>chown -R root:www-data /home/web/ && chmod -R 755 /home/web/</code> | + | |
- | + | ||
- | * On édite un index.html : | + | |
- | <code root>vim /home/web/monsite.com/public_html/index.html</code> | + | |
- | <code><html> | + | |
- | <body> | + | |
- | <h1>Bienvenue sur monsite.com</h1> | + | |
- | <p>Site en cours de réalisation !</p> | + | |
- | </body> | + | |
- | </html></code> | + | |
- | + | ||
- | * On supprime "monsite.com" de /var/www/ : | + | |
- | <code root>cd /var/www/</code> | + | |
- | <code root>rm -r monsite.com</code> | + | |
- | + | ||
- | * On crée un lien symbolique "monsite.com" dans /var/www/ : | + | |
- | <code root>ln -s /home/web/monsite.com/ /var/www/monsite.com</code> | + | |
- | + | ||
- | ===Création d'un virtualhost pour le nouveau site "monsite.com=== | + | |
- | + | ||
- | <code root>vim /etc/apache2/sites-available/monsite.com</code> | + | |
<code> | <code> | ||
Ligne 469: | Ligne 545: | ||
Options -FollowSymLinks | Options -FollowSymLinks | ||
AllowOverride AuthConfig | AllowOverride AuthConfig | ||
+ | Order deny,allow | ||
+ | deny from all | ||
+ | allow from 192.168.0.0/24 | ||
</Directory> | </Directory> | ||
- | <Directory /var/www/> | + | <Directory /var/www/monsite.com> |
Options -Indexes | Options -Indexes | ||
Options -FollowSymLinks | Options -FollowSymLinks | ||
Ligne 476: | Ligne 555: | ||
Options -ExecCGI | Options -ExecCGI | ||
Options MultiViews | Options MultiViews | ||
- | AllowOverride None | + | AllowOverride AuthConfig |
- | Order deny,allow | + | AuthType Basic |
- | deny from all | + | AuthName "Ma zone est restreinte !" |
- | allow from 192.168.0.0/24 | + | AuthBasicProvider file |
+ | AuthUserFile /usr/local/apache/passwd/passwords | ||
+ | AuthGroupFile /usr/local/apache/passwd/groups | ||
+ | Require user web | ||
</Directory> | </Directory> | ||
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ||
Ligne 498: | Ligne 580: | ||
</code> | </code> | ||
- | * On active le site "monsite.com" | + | ===On supprime le fichier "monsite.com" de /var/www/ === |
+ | (Si on a suivi précédemment : [[atelier:chantier:apache2#creation-du-site-web-dans-var-www|création de "monsite.com" dans /var/www/]]) | ||
+ | <code root>cd /var/www/</code> | ||
+ | <code root>rm -r monsite.com</code> | ||
+ | |||
+ | ===On crée un lien symbolique à la place=== | ||
+ | Le nom symbolique doit avoir pour nom celui du site ("monsite.com") et il faut le placer dans /var/www/ et le faire pointer vers les répertoires et fichiers où le site est développé (/home/web/monsite.com/) : | ||
+ | |||
+ | <code root>ln -s /home/web/monsite.com/ /var/www/monsite.com</code> | ||
+ | |||
+ | ====Vérifier l'appartenance et les droits des fichiers utilisés par "apache"==== | ||
+ | FIXME | ||
+ | |||
+ | ===Modifier le groupe de /var/www === | ||
+ | Le groupe www-data ne doit pas être propriétaire de /var/www/ mais ce répertoire peut appartenir au groupe www-data. L'idée est ainsi de diminuer au maximum les droits du groupe www-data, tout en laissant possible la consultation du site web. | ||
+ | |||
+ | <code root>chown -R root:www-data /var/www/*</code> | ||
+ | |||
+ | ===On vérifie les droits POSIX de /var/www/ === | ||
+ | <note important> | ||
+ | A priori le fichier /var/www/index.php, au même titre que n'importe quelle page web accessible depuis un navigateur web, devrait avoir les droits suivants : | ||
+ | |||
+ | <code>-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php</code> | ||
+ | |||
+ | On utilise les droits suivants : | ||
+ | * droits en lecture <nowiki>(r)</nowiki> écriture (w) sur les fichiers réguliers, | ||
+ | * droits en lecture <nowiki>(r)</nowiki> écriture (w) exécution (x) sur les répertoires. | ||
+ | </note> | ||
+ | |||
+ | * **Pour le répertoire /var/www** , il faut donc :\\ ''drwxr-xr-x 2 root root 4096 sept. 22 11:47 www'' | ||
+ | <code root>chmod 755 /var/www</code> | ||
+ | |||
+ | * **Pour /var/www/index.php**, il faut donc :\\ ''-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php'' | ||
+ | <code root>chmod 640 /var/www/index.php</code> | ||
+ | |||
+ | * **Pour /home/web/monsite.com**, il faut donc :\\ ''drwxr-xr-x 3 root www-data 4096 sept. 22 11:44 monsite.com'': | ||
+ | <code root>chmod 755 /home/web/monsite.com/</code> | ||
+ | |||
+ | * **Pour /home/web/monsite.com/public_html**, il faut donc :\\ ''drwxr-xr-x 2 root www-data 4096 sept. 22 11:44 public_html'': | ||
+ | <code root>chmod 755 /home/web/monsite.com/public_html/</code> | ||
+ | |||
+ | * **Pour /home/web/monsite.com/public_html/index.php**, il faut donc :\\ ''-rw-r----- 1 root www-data 4096 sept. 22 11:44 index.php'' | ||
+ | <code root>chown root:www-data /home/web/monsite.com/public_html/index.php\ | ||
+ | && chmod 640 /home/web/monsite.com/public_html/index.php</code> | ||
+ | |||
+ | * **Pour le lien symbolique /var/www/monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique. | ||
+ | |||
+ | ===On vérifie depuis son navigateur=== | ||
+ | |||
+ | * On ré-active le site "default" | ||
+ | |||
+ | <code root>a2ensite default</code> | ||
+ | |||
+ | * On ré-active le site "monsite.com" | ||
<code root>a2ensite monsite.com</code> | <code root>a2ensite monsite.com</code> | ||
+ | |||
+ | * On recharge apache2 : | ||
<code root>service apache2 reload</code> | <code root>service apache2 reload</code> | ||
- | * On vérifie : | + | Enfin depuis son navigateur :\\ ''http://ip-serveur/monsite.com/''\\ |
- | Depuis son navigateur : ''http://ip-serveur/monsite.com/''\\ | + | |
- | 8-) **Le login du compte apache (nom de l'utilisateur du système Linux) est demandé ainsi que son mot de passe.** | + | {{http://pix.toile-libre.org/upload/img/1411461721.png?250}} -> {{http://pix.toile-libre.org/upload/img/1411461425.png?250}} |
- | <note tip> | ||
- | **__À ne pas confondre avec le module userdir__**. | ||
- | Il permet de créer une page web servie par apache dans le répertoire utilisateur.\\ | ||
- | Par exemple comme ceci : | ||
- | <code root>a2enmod userdir </code> | + | 8-) **Le login du compte apache (nom de l'utilisateur du système Linux) est demandé ainsi que son mot de passe et on peut accéder à ses pages d'index !** |
- | Cela vient de créer un lien symbolique pour chacun de ces fichier dans "/etc/apache2/mods-enabled" | + | |
- | * On recharge apache : ''service apache2 restart'' | + | ====La journalisation (Logging) ==== |
+ | Il en faut consulter régulièrement au moins deux : Les logs d'erreur et les logs d'accès au serveur. | ||
- | **__Pour tester le module__** : | + | ===Paramétrer la journalisation === |
+ | Le niveau de consignation souhaité dépend de la directive ''LogLevel'', dans le fichier de configuration par défaut ''/etc/apache2/apache2.conf'' qui est réglé par défaut sur : | ||
- | D'abord il faut se loger en user ''exit'' | + | LogLevel warn |
- | * On crée un index.html dans le répertoire de l'utilisateur principal du système : | + | |
- | <code user>cd /home/$USER</code> | + | |
- | <code user>mkdir ~/public_html && echo\ | + | |
- | "<html><body>Notre test du module UserDir</body></html>"\ | + | |
- | > ~/public_html/index.html</code> | + | |
- | * On recharge apache : ''service apache2 restart'' | + | |
- | * On vérifie que la page est accessible : | + | |
- | Dans le navigateur : ''http://ip-serveur/~utilisateur'' | + | |
- | <code>Notre test du module UserDir</code> | + | |
- | </note> | + | |
- | Il reste à ajouter un module par exemple pour le php. | + | **Ainsi paramétrer apache inscrit des logs d'erreur.** |
- | ===== Installer le module php===== | + | On peut mettre l'un des neuf niveau d'alerte, pour être alerter de la moindre information jusqu'au alerte grave : |
- | ===Installer libapache2-mod-php5 === | + | -''trace'' : traçage des informations de différents niveaux (produit une grande quantité d'informations);\\ |
- | Ce paquet casse le MPM worker(([[http://httpd.apache.org/docs/2.2/mod/worker.html]])) et engendre l'installation du MPM prefork(([[http://httpd.apache.org/docs/2.2/mod/prefork.html]])).\\ | + | - ''debug'' : informations de débogage qui peut être utile pour repérer où un problème ;\\ |
+ | - ''info'': message d'information qui pourrait être bon à savoir;\\ | ||
+ | - ''notice'' : signal un événement normal, mais à noter;\\ | ||
+ | - ''warn'' : signal un événement anormal, mais pas très préoccupant;\\ | ||
+ | - ''error'' : signal que quelque chose a échoué;\\ | ||
+ | - ''crit'' : problèmes importants qui doivent être pris en compte;\\ | ||
+ | - ''alert'' : situation grave qui nécessite rapidement une action;\\ | ||
+ | - ''emerg'' : urgence de la situation, le système est dans un état inutilisable.\\ | ||
- | <code root>apt-get install libapache2-mod-php5</code> | + | -> Par défaut, on est informé à partir du niveau choisi jusqu'au niveau le plus grave.\\ |
+ | ===Où Apache conserve-t-il ses journaux? === | ||
- | Une fois l'installation effectuée on peut vérifier que php5 est apparu dans /etc/apache2/mod-available. | + | Dans le fichier général **/etc/apache2/apache2.conf** une ligne indique le fichier où sont consigné les logs : |
- | <code root>ls -l /etc/apache2/mods-available/php5*</code> | + | ErrorLog ${APACHE_LOG_DIR}/error.log |
- | <code>-rw-r--r-- 1 root root 898 août 21 10:49 /etc/apache2/mods-available/php5.conf | + | |
- | -rw-r--r-- 1 root root 59 août 21 10:49 /etc/apache2/mods-available/php5.load</code> | + | |
- | Dans /etc/apache2/mod-enabled, ce sont des liens symboliques qui activent ce module: | + | > Cette directive nomme le fichier où Apache tiendra ses messages d'erreur. Comme vous pouvez le voir, il utilise une variable d'environnement appelée "APACHE_LOG_DIR" pour obtenir le préfixe du chemin de répertoire. |
- | <code root>ls -l /etc/apache2/mods-enabled/php5*</code> | + | > Pour savoir vers quel fichier renvoie cette variable d'environnement il faut consulter le fichier **''/etc/apache2/envvars''** |
- | <code>lrwxrwxrwx 1 root root 27 sept. 20 11:40 /etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf | + | |
- | lrwxrwxrwx 1 root root 27 sept. 20 11:40 /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load</code> | + | |
- | -> Puisque les liens sont là, le module est activé. | + | export APACHE_LOG_DIR=/var/log/apache2$SUFFIX |
- | ===Activer/désactiver un module === | + | > Cela signifie que lorsqu'il est combiné avec la directive (variable "SUFFIX") dans le fichier "apache2.conf", **Apache enregistre les logs d'erreur dans un fichier appelé ''/var/log/apache2/error.log''**. |
- | * ''a2enmod'' : (apache2 enable module) : active un module apache2 | + | <code root>ls /var/log/apache2</code> |
- | * ''a2dismod'' : (apache2 disable module) : désactive un module apache2 | + | <code>access.log error.log other_vhosts_access.log</code> |
- | Si on active ou désactive un module ne pas oublier après l'opération de réactiver apache : ''service apache2 restart'' | + | ===Les logs d'accès au serveur === |
+ | Très important pour la sécurisation du serveur. On peut savoir s'il y a eu des tentatives de piratage.\\ | ||
- | ===Créer la page de test === | + | Ces logs sont consignés par défaut dans le fichier **''/var/log/apache2/access.log''**.\\ |
- | <code>mv /var/www/index.html /var/www/index.php</code> | + | Le paramétrage des logs d'accès n'est pas dans le fichier de configuration générale /etc/apache2/apache2.conf, mais dans le fichier de l'hôte par défaut.\\ |
- | <code root>vim /var/www/index.php</code> | + | |
- | <code> | + | |
- | <html> | + | |
- | <body> | + | |
- | <h1>It works!</h1> | + | |
- | <p>This is the default web page for this server.</p> | + | |
- | <?php | + | |
- | echo "La date du jour est " . date("d/m/Y") . "!\n"; | + | |
- | ?> | + | |
- | </body> | + | |
- | </html> | + | |
- | </code> | + | |
- | * Recharger apache : | + | La déclaration du journal d'accès se trouve donc dans : **''/etc/apache2/sites-available/default''**. |
- | + | ||
- | <code root>service apache2 restart</code> | + | |
- | * Tester en tapant dans le navigateur : | + | Nous pouvons y trouver trois valeurs distinctes concernant l'exploitation des logs d'accès.\\ |
- | ''http://ip-du-serveur/'' | + | |
- | <code>It works! | + | <code>ErrorLog ${APACHE_LOG_DIR}/error.log |
- | This is the default web page for this server. | + | LogLevel warn |
- | La date du jour est 20/09/2014! </code> | + | |
- | Puisque tout fonctionne, pour utiliser php dans les autres sites, il n'y a qu'à modifier le nom de leur page d'index.html en index.php et entrer du code php bien sûr. | + | CustomLog ${APACHE_LOG_DIR}/access.log combined</code> |
- | * Par exemple pour "monsite.com" : | + | La définition du journal des erreurs (ErrorLog et Loglevel) correspond à celle dans le fichier de configuration par général. Il n'est pas nécessaire d'avoir cette ligne dans les deux fichiers, mais ce doublon permet à modifier ici l'emplacement des logs pour celui qu'on souhaite. |
- | <code root>mv /home/web/monsite.com/public_html/index.html /home/web/monsite.com/public_html/index.php</code> | + | ===Paramétrer la directive "CustomLog" pour améliorer la sécurité === |
- | <code root>vim /home/web/monsite.com/public_html/index.php</code> | + | CustomLog ${APACHE_LOG_DIR}/access.log combined |
- | <code><html> | + | |
- | <body> | + | |
- | <h1>Bienvenue sur monsite.com</h1> | + | |
- | <p>Site en cours de réalisation !</p> | + | |
- | <?php | + | |
- | echo "La date du jour est " . date("d/m/Y") . "!\n"; | + | |
- | ?> | + | |
- | </body> | + | |
- | </html></code> | + | |
- | * Recharger apache : | + | Elle est constituée de deux partie : |
- | + | * ${APACHE_LOG_DIR}/access.log : localisation des logs d'accès | |
- | <code root>service apache2 reload</code> | + | * combined : le format des logs par défaut\\ il s'agit d'une étiquette qui renvoie à la directive ''LogFormat'' ( personnalisable) dans le fichier de configuration par général ''/etc/apache2/apache2.conf'' . |
- | * Tester en tapant dans le navigateur : | + | ===La directive "LogFormat" /etc/apache2/apache2.conf === |
- | ''http://ip-du-serveur/monsite.com'' | + | Par défaut : |
- | et cliquer sur ''public_html/'' : | + | LogFormat "%h %l %u %t \"%r\" %>s %O \"{Referer}i\" \"%{User-Agent}i\"" combined |
- | <code>Bienvenue sur monsite.com | + | Pour comprendre chacune de ces variables [[http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats|voir la documentation d'apache]]. |
- | Site en cours de réalisation ! | + | * Voici par exemple ma configuration : |
- | La date du jour est 20/09/2014! </code> | + | |
- | + | ||
- | Tous les outils sont en place pour apprendre les langages html et php ! 8-) | + | |
+ | <code>LogFormat "%h %l %u %t \"%r\" %s %b" common</code> | ||
+ | > ''%h'' : sera remplacée par le nom de l'hôte distant | ||
+ | > %l : sera remplacée par logname a distance. Il faut que [[http://httpd.apache.org/docs/2.2/en/mod/mod_ident.html|le module "mod_ident"]] soit présent et que [[http://httpd.apache.org/docs/2.2/en/mod/mod_ident.html#identitycheck|la directive "IdentityCheck"]] soit activé ("On"). | ||
+ | > u% : sera remplacée par utilisateur distant. | ||
+ | > %t : sera remplacée par moment où la demande a été reçue (format standard anglais) | ||
+ | > \"%r\" : sera remplacée par la ligne de demande. | ||
+ | > %s : sera remplacée par le statut de la demande. | ||
+ | > %b : sera remplacée par la taille de la réponse en octets, à l'exception des en-têtes HTTP. Dans le format CLF, I.S. un «-» plutôt que d'un 0 si aucune octets sont envoyés. | ||
+ | Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://httpd.apache.org/docs/trunk/fr/logs.html]] |