Avertissement : Cet article a été traduit de l’anglais par un LLM. La précision n’est pas garantie. Vous pouvez lire l’article original en anglais.
Dans le cadre de Network Watcher, je voulais avoir
quelque chose comme https://ifconfig.me/ip que je puisse auto-héberger sans avoir à installer ou
configurer quoi que ce soit de nouveau.
Comme j’ai un serveur Apache qui tourne en tant que serveur proxy quelque part, j’ai décidé d’explorer mes options.
J’ai découvert qu’on peut utiliser mod_include puisqu’il est déjà compilé dans httpd sur les
systèmes RHEL (bien qu’il ne soit pas actif par défaut ; il nécessite une configuration explicite
pour fonctionner.)
Le script .shtml s’est donc résumé à une seule ligne :
<!--#echo var="REMOTE_ADDR" -->Cela ne fonctionnerait pas tout seul, il a donc fallu ajouter de la configuration dans le fichier vhost d’Apache :
DocumentRoot /path/to/dir
<Directory /path/to/dir>
# S'assurer qu'on ne peut pas utiliser la fonction exec de SSI,
# ni écraser la configuration actuelle
Options IncludesNOEXEC
AllowOverride None
# Indique à Apache de servir les fichiers .shtml avec le type MIME text/html
# pour que la page soit affichée et non téléchargée.
AddType text/html .shtml
# On indique à Apache d'utiliser le processeur SSI pour parser les fichiers shtml
AddOutputFilter INCLUDES .shtml
DirectoryIndex index.shtml
Require all granted
</Directory>
RewriteEngine On
# Refuser les tokens invalides
RewriteCond %{HTTP:Authorization} !^Bearer\ dummy-password$
RewriteRule .* - [F]
# Refuser tout ce qui n'est pas /
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/index\.shtml$
RewriteRule .* - [F]Vous remarquerez peut-être la ligne RewriteCond %{HTTP:Authorization} avec un mot de passe codé en
dur. Je voulais avoir une autorisation Bearer simple sans rien faire de compliqué (et j’étais aussi
curieux de savoir si c’était possible.) Le mot de passe codé en dur n’est pas très élégant (on
pourrait le déplacer dans un fichier séparé via la directive Include d’Apache), mais il n’y a
pratiquement aucun risque même si quelqu’un accède à la page, donc ça me convient.
Ressources supplémentaires
Répondre par email