MacTopics.de

Mit Anubis Webanwendungen vor KI-Bots schützen

Für www.sesam2050-literaturdatenbank.de betreue ich das technische Hosting und die Datenkonvertierung einer Citavi-basierten Literaturdatenbank, die über VuFind im Netz verfügbar ist. Aufgebaut und inhaltlich gepflegt wird sie von Prof. Birgit Dankert, für die dies nicht das einzige Projekt ist. Seit einiger Zeit hatte ich zunehmend mit dem Traffic von KI-Crawlern zu kämpfen, die wahllos Seiten der Katalog-Oberfläche abgegrast haben. Der Server war spürbar belastet, ohne dass echte Nutzer etwas davon hatten.

Erster Versuch: Cloudflare Under Attack Mode

Bevor ich bei Anubis gelandet bin, hatte ich es mit dem “Under Attack Mode” von Cloudflare versucht. Der funktioniert im Grundsatz super. Jeder Besucher bekommt eine Zwischenseite mit Prüfung vorgeschaltet, bevor er auf die eigentliche Seite darf. Aber genau das ist auch das Problem für den Dauerbetrieb: Diese Zwischenseite bekommt dann eben auch jeder normale Nutzer bei jedem Besuch zu sehen, inklusive sehr spürbarer Verzögerung. Für ein paar Stunden während eines akuten Angriffs ist das ein geniales, kostenloses Feature, aber als Dauerlösung nervte es ein wenig. Obendrein lief auch die automatische SSL-Erneuerung mit Let’s Encrypt nicht mehr reibunglos.

Die Lösung: Anubis

Anubis ist ein Reverse Proxy, der sich vor deine eigentliche Anwendung schaltet und jedem Besucher zunächst eine kleine Proof-of-Work-Aufgabe lösen lässt, bevor er durchgelassen wird. Für einen normalen Browser mit JavaScript ist das kaum spürbar – ein, zwei Sekunden Rechenzeit im Hintergrund. Für Massen-Scraper, die tausende Seiten pro Minute abklappern wollen, wird das schnell unwirtschaftlich, weil jede einzelne Anfrage die Challenge neu lösen muss.

Umbau auf dem Server

Der Grundgedanke: Apache läuft weiter genau wie vorher – nur eben nicht mehr direkt auf Port 80/443, sondern dahinter. Anubis übernimmt die öffentlichen Ports und reicht alles, was die Challenge besteht, an Apache weiter.

1. Apache vHost auf einen internen Port verschieben

Der bestehende vHost für die Literaturdatenbank lief vorher direkt auf 80/443. Ich habe ihn auf Port 8888 verschoben:

<VirtualHost *:8888>
    ServerName www.sesam2050-literaturdatenbank.de
    DocumentRoot /var/www/vufind/public

    # ... der Rest der bestehenden VuFind-Konfiguration bleibt unverändert
</VirtualHost>

Wichtig dabei: Apache soll auch wirklich auf diesem Port zugreifen, dafür in ports.conf ergänzen:

Listen 8888

2. Anubis installieren und konfigurieren

Ich habe Anubis als systemd-Service auf demselben Ubuntu-Server installiert (es geht auch als Docker-Container, ich wollte hier aber möglichst nah an der bestehenden Infrastruktur bleiben). Die Kernkonfiguration sagt Anubis, wohin es die durchgelassenen Anfragen weiterleiten soll:

# /etc/anubis/config.yaml (vereinfacht)
BIND: ":443"
BIND_HTTP: ":80"
TARGET: "http://127.0.0.1:8888"

Anubis nimmt also den kompletten öffentlichen Traffic auf 80/443 an und reicht bestandene Anfragen an das intern lauschende Apache auf 8888 weiter.

3. Ausnahmen für erwünschte Bots

Nicht jeder Bot ist unerwünscht. Suchmaschinen wie Google oder Bing sollen die Datenbank natürlich weiter indexieren können. Anubis erlaubt Regeln, die bestimmte User-Agents oder IP-Ranges ohne Challenge durchlassen:

- name: allow-good-bots
  user_agent_regex: "(Googlebot|Bingbot)"
  action: ALLOW

Das lässt sich beliebig erweitern, falls sich weitere legitime Crawler melden – etwa Dienste, mit denen Bibliothekskataloge normalerweise zusammenarbeiten.

Der Haken an der Sache

Ganz ohne Nachteile ist Anubis auch nicht. Der größte davon ist eher kosmetischer Natur: Die Challenge-Seite kommt mit einem auffälligem Farbschema und einem sehr eigenwilligen Anime-Maskottchen daher – und beides lässt sich in der kostenlosen Version nicht abschalten oder anpassen. Wer das Branding entfernen oder individualisieren möchte, muss zur kostenpflichtigen Version greifen, oder das Projekt selbst kompilieren. Für mein kleines Ehrenamtsprojekt war mir das dann doch egal, aber wer eine seriöse Corporate-Website betreibt, wird sicher lieber zur kostenpflichtigen Version greifen wollen.

Screenshot von https://anubis.techaro.lol

Quelle: anubis.techaro.lol

Ergebnis

Seit Anubis läuft, ist der Bot-Traffic auf dem Server spürbar zurückgegangen. Die Last durch wahlloses Crawling ist deutlich geringer, während normale Besucher – abgesehen von der kurzen Challenge beim ersten Aufruf – nichts von der Umstellung mitbekommen.

Für ein kleines, ehrenamtlich betriebenes Projekt wie SESAM 2050 ist das genau die richtige Balance: kein Login, kein CAPTCHA, keine Hürde für echte Nutzer – aber eine wirksame Bremse für die Bots, die den Server sonst einfach als kostenlose Trainingsdatenquelle behandeln würden.