Cette astuce permet de sélectionner les clients qui se connecteront à un site web, hébergé par Apache. Je rédige cette bidouille car j’ai bien galéré lors de mon passage de la version 2.2.22 à la version 2.4. La syntaxe a effectivement changé. En bonus donc, la même bidouille mais valable pour 2 versions d’Apache!
L’exemple ici démontre comment n’autoriser que les utilisateurs surfant avec Firefox ou Chrome. Idéalement, ces directives sont à insérer dans un VirtualHost:
Version Apache 2.2:
SetEnvIfNoCase User-Agent "Firefox" get_in
SetEnvIfNoCase User-Agent "Chrome" get_in
<Location /folder>
Order Deny,Allow
Deny from All
Allow from env=get_in
</Location>
Version Apache 2.4.x:
SetEnvIfNoCase User-Agent Firefox get_in
SetEnvIfNoCase User-Agent Chrome get_in
<Location /folder>
Require env get_in
</Location>
Cette bidouille est efficace pour barrer la route à tout types de robots, du légal à l’illégal. Efficace donc contre les systèmes venus scanner votre arborescence et laissant des signatures de ce type: Morfeus Fucking Scanner
, ZmEu/blackhat
et autres. Évidement, si quelqu’un sait modifier la signature de son navigateur (User Agent) de telle sorte qu’elle intègre le mot « Chrome » ou « Firefox », cela n’aura pas d’effet.
En complément, il est possible de sécuriser le serveur Apache via l’ensemble des options disponibles dans /etc/apache2/mods-enabled/security.conf
. Par l’activer:
a2enconf security
a2enmod headers
service apache2 restart
Concernant les pages d’erreur, il est aussi possible de les réduire au strict minimum afin qu’elles ne contiennent plus aucune information, mise à part le code d’erreur:
ErrorDocument 404 "4xx Error"
ErrorDocument 403 "4xx Forbidden"