Jitsi Meet lässt sich in 2 grundsätzlichen Einstellungen betreiben: Offen, d.h. jeder, der die URL kennt, kann Meetings erstellen oder geschlossen, d.h. nur authentifizierte Nutzer können Meetings erstellen.+

Wer seinen privaten Jitsi-Meet Server betreibt, will aus gutem Grund nicht, dass dieser von anderen Nutzern benutzt wird, um darauf Meetings zu veranstalten. Und überall, wo ein Login-Formular vorhanden ist, sind Brute-Force-Attacken nicht weit. Das Schweizer Taschenmesser gegen solche „Freunde“ aus den (Un)tiefen des Netzes ist fail2ban, das sich auch hier mit ein paar Handgriffen integrieren lässt.

Fail2ban

Ein paar grundsätzliche Worte zu fail2ban: Fail2ban überwacht Logdateien nach fehlgeschlagenen Logins oder auch nach anderen beliebigen Abfragemustern und nach zu vielen Anfragen einer IP-Adresse in einem definierten Zeitraum wird diese für einen ebenfalls frei definierbaren Zeitraum gesperrt.

Das ganze lässt sich dann z.B. mit Munin Monitor überwachen und visualisieren, sodass der Brute-Force-Verteidigungsstatus aufgezeichnet und visualisiert wird.

Fail2ban ist in den Linux Paketquellen vorhanden und kann auf debian-basierten Systemen mit

sudo apt install fail2ban

installiert werden. Standardmäßig ist sofort der Brute-Force-Schutz vom ssh-login aktiviert, für den Schutz weiterer Komponenten ist zusätzliche Anpassungen innerhalb von Fail2ban notwendig.

Prosody mod_log_auth für logging von Anmeldevorgängen mit IP-Adresse integrieren

Nun zurück zu Jitsi Meet: Prosody, die Komponente in Jitsi Meet, die für die Authentifizierung zuständig ist, muss fehlgeschlagene Authentifizierungen in die Logdatei schreiben. Standardmäßig wird dies von Prosody nicht gemacht, allerdings gibt es ein Plugin für Prosody, das dies erledigt: mod_log_auth

Prosody Module werden mit Mercurial installiert.

sudo apt install mercurial

Mit Mercurial wird das komplette Prosody Modul-Repository auf den lokalen Server kopiert, hier in den Ordner „prosody-modules“

hg clone https://hg.prosody.im/prosody-modules/ prosody-modules

Danach können wir auf unserem Server das Modul an die korrekte Stelle kopieren. Dazu müssen wir zunächst den Pfad auf unserem Server ermitteln, auf dem Module von Prosody erwartet werden:

sudo prosodyctl about

Im Output müssen wir nach den Zeilen

Plugin directories: 
 /usr/share/jitsi-meet/prosody-plugins/ 
 /usr/lib/prosody/modules/

suchen. Hier sind die Pfade aufgelistet, an denen Prosody Module inkludiert. Wir kopieren die mod_log_auth.lua aus der mit Mercurial oben heruntergeladenen Modulsammlung in einen der Plugin-Ordner von Prosody.

Dann muss das Modul noch aktiviert werden in der Datei /etc/prosody/prosody.cfg.lua im Block modules_enabled:

modules_enabled = {
"log_auth";
}

Bitte alle vorhandenen Zeilen im Block modules_enabled unverändert lassen, nur die Zeile

"log_auth";

ergänzen.

Danach Prosody neu starten und ab sofort schreibt Prosody die Login-Versuche in die Logdaten:

sudo service prosody restart

Fail2ban Filter für Prosody erstellen

Nun muss fail2ban noch die im Prosody-Log nun erscheinenden Logins entsprechend verarbeiten.

Dazu erstellen wird den Filter

/etc/fail2ban/filter.d/prosody.conf

mit folgendem Inhalt:

# catch prosody failed logins 

[Definition] 
failregex = Failed authentication attempt \(not-authorized\) for user .* from IP: <HOST> 
ignoreregex =

Dann noch in /etc/fail2ban/jail.d/prosody.conf den jail für den obigen Filter definieren, hier auf die Logdatei /var/log/prosody/prosody.log und bei 4 fehlgeschlagenen Logins innerhalb von 300 Sekunden von einer IP-Adresse wird selbige für 600 Sekunden gesperrt.

# Prosody/Jitsi
[prosody]
enabled = true
filter = prosody
logpath = /var/log/prosody/prosody.log
maxretry = 4
findtime = 300
bantime = 600
port = http,https

Danach fail2ban neu starten:

sudo service fail2ban restart

und ab sofort ist unser Brute-Force Schutz auf dem Jitsi Meet Login aktiv!