Table des matières

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 :

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 <my-user>