Fail2Ban для Teamspeak3 Server
Fail2Ban für Teamspeak3 Server
(На немецком языке, переведу позже)
Fail2Ban schützt (Linux-)Server vor Angriffen, indem es Logfiles auswertet und bei unerwünschten Vorgängen, wie z.B. zu vielen fehlgeschlagenen Logins, die Client-IP per Firewall für eine bestimmt Zeit sperrt. Man kann damit auch einen Teamspeak3 Server absichern, vorallem wenn man Admin-Zugriffe (Server-Query) von außen zulässt. Wer ab hier weiter liest, sollte bereits etwas Erfahrung mit Fail2Ban und eine lauffähige Version davon in Gebrauch haben.
Teamspeak3 vorbereiten Hier ist nicht viel nötig. Man muss nur wissen, in welchem Verzeichnis sich die Logfiles des TS3 Servers befinden. In meinem Beispiel ist das: /usr/local/bin/teamspeak/logs/ Fail2Ban vorbereiten Die Datei /etc/fail2ban/filter.d/teamspeak.conf anlegen und bearbeiten:
[INCLUDES] before = common.conf [Definition] failregex = ^(.*)query from [0-9]{1,} :[0-9]{1,5} attempted to login with account "(.*)" and failed!$ ignoreregex =
Dieser Filter findet später Einträge im Teamspeak3 Logfile, die in etwa so aussehen:
2015-08-20 12:12:45.825529 | INFO | Query | | query from 5 192.168.0.10:56971 attempted to login with account "serveradmin" and failed!
Die Datei /etc/fail2ban/jail.local (ggf. anlegen und) bearbeiten:
[teamspeak] enabled = true port = 2008,2010,9987,10011,30033,41144 filter = teamspeak logpath = /usr/local/bin/teamspeak/logs/ts3server*.log # deswegen zuerst den Logfile-Pfad von Teamspeak suchen maxretry = 3 # Anzahl der erlaubten Fehlversuche bantime = 86400 # = 1 Tag findtime = 7800 # siehe Anmerkungen weiter unten action = iptables-multiport[name="teamspeak", port="2008,2010,9987,10011,30033,41144"]
Danach fail2ban neu starten und fertig. Der Parameter findtime ist sehr hoch. Das hat den Grund, dass TS3 Einträge im Logfile immer in UTC Zeit schreibt. Das lässt sich auch nicht ändern. Da wir in Deutschland zwischen +1 und +2 Stunden Verschiebung zu UTC haben, müssen wir also 2x 3600 Sekunden (=1 Stunde) + die eigentlich gewünschte FindTime angeben. Also nicht wundern. Wer eine elegantere Lösung weiß, möge mir das bitte sagen.
ToDo / offene Punkte Bisher werden nur Server-Query Logins überwacht. Da ich keinen TS3 mit Passwort betreibe, kann ich keine Fail2Ban-Regeln für normale User-Logins mit falschem Passwort erstellen. Es wäre schön, wenn mir jemand mal entsprechende Logfiles als Beispiel zusenden könnte.