Home
tobias edited this page 6 years ago

ScraperWall / Apache / Captcha Integration

Dieses Dokument beschreibt die Requirements für die ScraperWall-Integration in den Apache-Webserver mit mod_lua

Requirements

Funktionsweise

Im Apache läuft via mod_lua ein Content-Handler, der in Redis nachsieht, ob eine IP auf der Blacklist steht.

ScraperWall pusht die Blacklist auf redis.

Falls die IP geblacklistet ist, leitet das lua-Modul die Anfrage an den ScraperWall-Captcha-Server weiter, wo der User beweisen muss, dass er ein Mensch ist.

Falls die IP nicht geblacklistet ist, wird der User zum gewünschten Inhalt weitergeleitet.

Die Redis-Abfrage findet nur bei Applikations-URLs statt. Der Overhead dafür beträgt pro Request ca 1 ms.

Konfiguration

Apache

lua/scw.lua wird in den Apache-Konfigurationsordner kopiert http-lua.conf wird in den Apache-Konfigurationsordner kopiert

Die folgenden Apache-Module müssen aktiv sein:

  • lua_module
  • slotmem_shm_module

Die folgenden Environment-Variablen konfigurierern Das lua-Modul:

  • SCW_IGNORE: legt fest, welche URLs das lua-Modul nicht verarbeiten soll. So kann bestimmt werden, dass z.B. nur Applikations-URLs auf den Blacklist-Status der aufrufenden IP geprüft werden, z.B. (^/assets/|\.(png|jpe?g|svg|gif|js|css)$$)
  • SCW_KEY: 32 Byte langer, Base64-encodeter Secret Key für die Verschlüsselung des Cookies, das festlegt, dass ein User ein Mensch ist, z.B. ixXOPExYjK3aUuGzCCfTfNQB0AU76n/o0o6vETuAq5U=
  • SCW_COOKIE: der Name des Cookies, das bestimmt, ob ein User ein Mensch ist
  • SCW_CAPTCHA_URL: die URL, unter der der Captcha-Service erreichbar ist, z.B. http://docker.scw.systems:8003/?src=%s&r=%s
  • SCW_REDIS_HOST: der Hostname oder die IP, unter der der ScraperWall-Redis-Server erreichbar ist
  • SCW_REDIS_PORT: der Port, auf dem der Redis-Server erreichbar ist

Captcha

Captcha wird über die folgenden Environment-Variablen konfiguriert:

  • COOKIE_NAME: der Name des Cookies, das bestimmt, ob ein User ein Mensch ist
  • COOKIE_KEY: 32 Byte langer, Base64-encodeter Secret Key für die Verschlüsselung des Cookies, das festlegt, dass ein User ein Mensch ist, z.B. ixXOPExYjK3aUuGzCCfTfNQB0AU76n/o0o6vETuAq5U=
  • BIND: Die IP, an die Captcha sich bindet, z.B. 127.0.0.1 oder 0.0.0.0
  • REDIS_HOST: der Hostname oder die IP, unter der der ScraperWall-Redis-Server erreichbar ist
  • REDIS_PORT: der Port, auf dem der Redis-Server erreichbar ist

Captcha ist in mehreren Sprachen lokalisiert und erledigt seine Aufgabe ohne weitere Konfiguration. Man kann ein Logo in den Public-Ordner legen, damit die Captcha-Seite es anzeigt.

Redis

Redis kann in der Standardkonfiguration betrieben werden