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>