Cette page est un court exemple d'installation et configuration d'Anubis. Elle ne prétend absolument pas être un tutoriel complet, juste une présentation de la configuration de base.
Concrètement, Anubis se présente comme un reverse-proxy qui se place entre les internautes et votre site web. Il est assez léger (le .deb fait moins de 6 Mo), ne nécessite que 3 fichiers de configuration (exemples fournis) et ne consomme qu'une vingtaine de méga-octets de mémoire vive.
Site officiel : https://anubis.techaro.lol/
Pour voir à quoi ressemble le challenge, ouvrez une fenêtre de navigation privée sur le site officiel d'Anubis (ci-dessus). Notez qu'à partir du moment où vous avez activé Anubis pour un site, les internautes devront avoir javascript et les cookies d'activés, sans quoi ils ne pourront pas accéder à votre site.
Pour notre exemple, nous allons partir du principe que nous avons déjà un site web fonctionnel qui répond en http sur le port 80. Les chemins des fichiers et commandes sont ceux d'une Debian.
anubis_1.18.0_amd64.deb
sudo apt install ./anubis_1.18.0_amd64.deb
Nous avons besoin de 3 fichiers:
.env
pour Anubis qui indique sur quel port écouter, vers quel port rediriger, et quelles policies (règles) appliquer..botPolicies.yaml
pour les règles.Anubis fournit des fichiers d'exemple qu'on peut utiliser comme base.
sudo cp /etc/anubis/default.env /etc/anubis/monsite.env sudo cp /usr/share/doc/anubis/botPolicies.yaml /etc/anubis/monsite.botPolicies.yaml
Nous allons modifier le fichier /etc/anubis/monsite.env
et y mettre:
BIND=:9999 BIND_NETWORK=tcp DIFFICULTY=4 METRICS_BIND=:9090 SERVE_ROBOTS_TXT=0 METRICS_BIND_NETWORK=tcp POLICY_FNAME=/etc/anubis/monsite.botPolicies.yaml TARGET=http://localhost:80
Avec ce fichier, Anubis va agir comme un reverse-proxy en écoutant sur le port 9999 et en renvoyant le trafic vers le port 80. On ne touche pas pour le moment au fichier monsite.botPolicies.yaml
qui contient des règles par défaut.
On va maintenant activer le service Anubis:
sudo systemctl enable --now anubis@monsite.service
Et vérifier qu'il répond (la commande suivante doit vous renvoyer plusieurs pages de texte) :
curl http://localhost:9090/metrics
(Le port 9090 est juste un port de service pour Anubis)
Anubis ne parlant qu'en http, il faut utiliser Apache comme reverse-proxy pour décapsuler le trafic https. Pour tester, on va pour le moment le mettre en écoute sur le port 9443. On créé le fichier /etc/apache2/sites-available/anubis-monsite.conf
contenant:
Listen 9443 <VirtualHost *:9443> ServerName monserveur.mondomaine.org DocumentRoot /var/www ErrorLog /var/log/apache2/anubis-error.log CustomLog /var/log/apache2/anubis.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/monserveur.mondomaine.org/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/monserveur.mondomaine.org/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf Protocols h2 http/1.1 # Enable only strong encryption ciphers and prefer versions with Forward Secrecy SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5 SSLHonorCipherOrder on # Disable insecure SSL and TLS versions SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 # These headers need to be set or else Anubis will # throw an "admin misconfiguration" error. RequestHeader set "X-Real-Ip" expr=%{REMOTE_ADDR} RequestHeader set X-Forwarded-Proto "https" ProxyPreserveHost On ProxyRequests Off ProxyVia Off ProxyPass / http://[::1]:9999/ ProxyPassReverse / http://[::1]:9999/ </VirtualHost>
Puis on active cette config:
sudo a2ensite anubis-monsite.conf
et on demande à Apache de recharger sa config :
sudo systemctl reload apache2
On se retrouve donc dans la situation suivante:
Vous pouvez essayer d'accéder à votre site https://monsite.monserveur.org:9443
Si vous constatez que tout fonctionne bien, vous pouvez changer le port 9443 en 443 (et désactiver votre ancien virtualhost du port 443 dans la config Apache).
Je vous encourage à plonger dans le fichier de policies d'Anubis (.botPolicies.yaml
) pour le modifier selon vos préférences (par exemple pour laisser explicitement passer certaines URLs ou certains User-Agents). C'est un sujet que nous n'aborderons pas ici.
La documentation se trouve là : https://anubis.techaro.lol/docs/admin/policies/
Par défaut:
Il est à noter que quand un client est refusé, Anubis n'envoie pas un code HTTP 4xx, mais un 200 ("ok"), car il semble que les bots insistent quand on leur renvoie autre-chose qu'un 200.
Au lieu de bloquer les bots, certains préfèrent les pourrir avec un labyrinthe de pages contenant des textes bidons. C'est aussi une manière d'entraver les sociétés d'IA, mais cela va augmenter la charge de votre serveur, non la diminuer.