From 3c45e7e71cb5e4a316052364f678f3abaa8fcf14 Mon Sep 17 00:00:00 2001 From: gcolpart Date: Wed, 5 Oct 2016 03:57:46 +0200 Subject: [PATCH] on migre de nouvelles sections --- HowtoApache.md | 119 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/HowtoApache.md b/HowtoApache.md index c3754771..d33eed18 100644 --- a/HowtoApache.md +++ b/HowtoApache.md @@ -130,7 +130,7 @@ Exemple d'un VirtualHost basé sur un nom de domaine via `/etc/apache2/sites-ava ## Gestion des droits -### Séparation complèe des différents VirtualHosts +### Séparation complète des VirtualHosts L'utilisation d'Apache-ITK nous permet d'utiliser des utilisateurs/groupes Unix distincts pour chaque VirtualHost. Il est donc impossible pour un utilisateur d'accéder en lecture à des fichiers d'un autre site, même si un langage dynamique comme PHP est utilisé. @@ -196,6 +196,50 @@ Pour une configuration avancées des paramètres SSL : + +~~~ +# a2enmod proxy_http +~~~ + +Exemple avec un service HTTP local : + +~~~{.apache} +ProxyPreserveHost On +ProxyPass /foo http://127.0.0.1:8080/bar +ProxyPassReverse /foo http://127.0.0.1:8080/bar +~~~ + +Exemple avec renvoi vers un service HTTP externe (utile pour une migration) : + +~~~ +TODO +~~~ + +### mod_rpaf / mod_remoteip + +En Jessie, on utilisera mod_remoteip + +En Wheezy, pour éviter d'avoir l'IP d'un reverse-proxy dans les logs et utiliser les directives mod_access (Allow/Deny From), on installe mod_rpaf + +~~~ +# aptitude install libapache2-mod-rpaf +# cat /etc/apache2/mods-enabled/rpaf.conf + +RPAFenable On +RPAFsethostname On +#RPAFheader X-Forwarded-For +RPAFproxy_ips 127.0.0.1 192.0.2.10 + +~~~ + +Note : Attention, bien modifier la directive IfModule? qui est incorrecte dans le paquet : IfModule? mod_rpaf.c -> IfModule? mod_rpaf-2.0.c + +Note 2 : bien mettre l'IP du reverse-proxy dans RPAFproxy_ips + + ### mod_xsendfile Le module xsendfile permet de rediriger l'envoi d'un fichier vers Apache via un Header HTTP, notamment utilisé pour servir des fichiers via Apache tout en permettant de gérer le contrôle d'accès via une application web. @@ -277,6 +321,16 @@ Note : pour utiliser *ldaps* avec un certificat non reconnu par le système, il ## Rewrite Rules + + +Voici quelques motifs classiques de redirection vers un nouveau domaine (HTTP 302) ...du plus simple au plus compliqué : + +- RedirectPermanent / http://new.example.com +- RedirectMatch ^/(.*)$ http://new.example.com/$1 +- RewriteRule ^/(.*) http://new.example.com/$1 [L,R=permanent] + +Pour supprimer un Query String avec une Rewrite Rule : + ## Attaques DOS (Denial Of Service) ou XSS ### mod_evasive @@ -356,3 +410,66 @@ SetEnv AWSTATS_FORCE_CONFIG example ## Monitoring +### log2mail + +Pour être alerté en cas de *Segmentation fault*, on ajoute la configuration suivante au logiciel [log2mail]() : + +~~~ +file = /var/log/apache2/error.log + pattern = "Segmentation fault" + mailto = security@example.com + template = /etc/log2mail/template.apache +~~~ + +~~~ +# adduser log2mail adm +# servicectl restart log2mail +~~~ + +### apachetop + +~~~ +$ apachetop -f access.log -T 3600 +~~~ + +### server-status + +L'activation du server-status est utile pour une observation manuelle ou automatique. + +~~~ + +ExtendedStatus On + + SetHandler server-status + Deny from all + Include ... + Allow from 192.0.2.43 + + +~~~ + +### Munin + + Enfin, un autre outil indispensable pour surveiller et optimiser Apache : Munin. + +Pour cela, on édite le fichier etc/munin/plugin-conf.d/munin-node en ajoutant : + +[apache_*] +env.url http://127.0.0.1:%d/server-status-jesUgNads2?auto +env.port 80 + +En parallèle, on s'assure que les plugins pour Apache sont bien activés. Si non, on fera : + +# cd /etc/munin/plugins +# ln -s /usr/share/munin/plugins/apache_accesses +# ln -s /usr/share/munin/plugins/apache_processes +# ln -s /usr/share/munin/plugins/apache_volume + +Une fois Munin et Apache redémarrés, les graphes devraient commencer à se tracer. On pourra tester sans attendre le bon fonctionnement via la commande : + +# sudo -u munin munin-run apache_accesses + +Ceci doit vous renvoyer une valeur du type accesses80.value 19372070. Si la commande vous renvoie U, vous avez un soucis d'accès à la page, vérifiez alors que vous avez bien ouvert les ports sur votre serveur Web en local. + +## FAQ +