====== Aller plus loin avec Apache ====== ===== Ajouter le hostname du serveur dans les headers ===== On vérifie que le mod ''headers'' est bien actif : a2enmod headers On ajoute la ligne suivante au fichier ''/usr/sbin/apache2ctl'' pour générer une variable contenant le nom d’hôte : [...] export HOSTNAME=`hostname` Enfin, il faut récupérer la variable en ajoutant ces deux lignes à la fin du fichier ''/etc/apache2/apache2.conf'' : PassEnv HOSTNAME Header add X-Server-Name "%{HOSTNAME}e" ===== Autoriser ou bloquer des IP via .htaccess ===== Pour du Apache > 2.4. \\ \\ Pour bloquer des IP : Order allow,deny Deny from 10.1.1.10 Deny from 10.1.1.11 Allow from all Pour Autoriser seulement des IP : Order deny,allow Deny from all Allow from 10.1.1.21 Allow from 10.1.1.22 ===== Récupérer l'IP client réelle derrière un reverse proxy Nginx ===== Avec ''Apache > 2.4''. \\ \\ Dans la configuration du reverse proxy Nginx, on a : proxy_set_header X-Real-IP $remote_addr; On active le mod ''remoteip'' pour notre Apache : a2enmod remoteip On édite son fichier de configuration : nano /etc/apache2/conf-available/remoteip.conf # On récupère la vraie IP via le header RemoteIPHeader X-Real-IP # En faisant confiance à l'IP de notre reverse proxy RemoteIPTrustedProxy 10.0.0.1 ::1 On recharge la configuration dans Apache, et on relance le service : a2enconf remoteip service apache2 restart ===== Hardening .httaccess ===== Voir : [[https://perishablepress.com/6g/]] \\ \\ Plusieurs listes de snippets et tweaks pour le fichier ''.htaccess'' : * [[https://github.com/phanan/htaccess]] * [[https://perishablepress.com/stupid-htaccess-tricks/]] * [[https://www.askapache.com/htaccess/]] ===== htaccess : rediriger www.domain.tld vers domain.tld ===== RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] ===== Reverse proxy avec Apache en https, qui demande en simple http une ressource ===== Après la directive de ''ProxyPass'', ajouter : Header edit Location "(^http://)([^/]+)" "" Pour ne pas servir les ressources en ''http'' mais en ''https'' comme demandé, voir [[http://shaarli.guiguishow.info/?V1ejZg]] ===== Troll avec redirection ===== Dans un ''.htaccess'', on va rediriger l'url de la page de login Wordpress (qui n'est pas présent) vers un script de zipbomb (voir : ''https://blog.haschek.at/post/f2fda'') : RedirectPermanent "/wp-login.php" "/zipbomb.php" ===== Protéger un dossier par mot de passe ===== Via ''https://www.linuxtricks.fr/wiki/apache-proteger-un-dossier-par-mot-de-passe'' On édite le fichier ''.htaccess'' du dossier à protéger et on lui ajoute : AuthName "Restricted Content" AuthType Basic AuthUserFile /var/www/mysite/share/.htpasswd Require valid-user On génère un mot de passe pour l'utilisateur voulu : htpasswd -cm /var/www/mysite/share/.htpasswd