Das Registrierungsformular von Discourse gegen Bots absichern

Wer ein Forum betreibt, ist natürlich daran interessiert, daß neue Mitglieder sich unproblematisch und ohne Aufwand seitens der Administration registrieren können. Die geringen Hürden beim Zugang werden dann leider auch oft von Trollen oder gar kriminellen Geistern ausgenutzt.
Um sich als Betreiber dagegen zu schützen, kommen dann üblicherweise Captchas zum Einsatz, die den allgemeinen Zugang wiederum erschweren. Manche sind so schwierig zu lösen, daß es schon lästig ist, sich zu registrieren.

Man sollte auch beachten, daß bei jeder Registrierung mindestens eine E-Mail verschickt wird. Das ist unumgänglich, wenn man sonst keine Single Sign-On (SSO) Services für die Registrierung anbietet. Ist man mit seinem Registrierungsformular mal das Ziel eines Bots geworden, der seine Angriffe mit echten E-Mailadressen ausführt, kann das für den Mailserver brenzlig werden. Es kann sehr schnell gehen, daß dessen IP dann auf einer Blacklist landet.

Zur Absicherung des Registrierungsformulars sollte man daher auch die Logfiles des Webservers im Auge behalten und von dieser Seite her schon Vorkehrungen treffen. Im folgenden Beispiel beobachtet fail2ban das Logfile der Discourse-Instanz, die über einen nginx-Proxy zugänglich ist:

/etc/fail2ban/filter.d/nginx-discourse.conf

[Definition]
failregex = ^<HOST>.*"GET /u/account-created HTTP/2.0" 200.*$

/etc/fail2ban/jail.d/defaults-debian.conf

[nginx-discourse]
enabled = true
port = http,https
filter = nginx-discourse
logpath = /var/log/nginx/your.discourse.access.log
bantime = 43200
findtime = 3600
maxretry = 3
banaction = ufw

Wenn jemand innerhalb einer Stunde dreimal versucht, sich von der gleichen IP aus zu registrieren, wird diese IP für 12 Stunden gesperrt. Passe diese Werte und Pfade zu den Konfigurationsdateien für Deinen Zweck und Deine Systemumgebung an!