Verständnisfrage zu fail2ban (multiple bantime)

thommy

Member
Hoi,

mein Debian webserver ist nach der Perfect-Server-Methode mit fail2ban installiert und funktioniert auch prächtig. Danke Till für die Installationsdoku!

Angesichts zunehmender Angriffsversuche will ich fail2ban mit mehreren, aufsteigenden bantimes anpassen, sodass jemand nach 3 erfolglosen Loginversuchen für 10min gesperrt wird (Standard), nach weiteren 2 Versuchen dann für 24h und nach einem weiteren Versuch für 7d.

Die jail.local schaut derzeit so aus:
Code:
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 2

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 2

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 2

Ausgehend von der Doku unter http://blog.shanock.com/fail2ban-increased-ban-times-for-repeat-offenders/ müsste eine überarbeitete jail.local dann also so aussehen:

Code:
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 2

[pureftpd2]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
bantime = 86400 ;1 day
findtime = 259200 ;3 days
maxretry = 4

Die findtime setzt natürlich vorraus, dass die einzelne logfile (hier: syslog) auch min. drei Tage lang ist...
Wobei ich mir derzeit noch die Frage stelle, ob der ignoreregex "[pureftpd2]" dann tatsächlich greift, da "pureftpd" nicht explizit aufgerufen wird...

Ist das soweit richtig?

Danke für die Unterstützung!
Thomas
 
Zuletzt bearbeitet:

thommy

Member
um mir mal selber zu antworten... :D

Code:
[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 2

[pureftpd2]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
bantime = 86400 ;1 day
findtime = 259200 ;3 days
maxretry = 4

[pureftpd3]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
bantime = 864000 ;10 days
findtime = 259200 ;3 days
maxretry = 6

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 3

[postfix-sasl]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
maxretry = 2

[postfix-sasl2]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
bantime = 86400 ;1 day
findtime = 259200 ;3 days
maxretry = 3

[postfix-sasl3]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
bantime = 864000 ;10 days
findtime = 259200 ;3 days
maxretry = 4

läuft! die jail.conf habe ich nicht angefasst, nur die jail.local entsprechend modifiziert.
Theoretisch müsste man bei der bantime = 10 tage noch die findtime auf zumindest 14 tage anpassen - das setzt aber voraus, dass das syslog auch entsprechend vergrößert wird, was dann wieder auf die systemleistung geht.

Was macht das nun?
Beim ersten Auslösen von Fail2ban mit zwei Fehlversuchen greift die in der jail.conf definierte bantime = 600s (10 Min.) Nach diesen 10Min. gibt es am FTP weitere 2 Freiversuche, am postfix nur einen. Geht der auch daneben, wird das als tatsächlicher Angriff gewertet und die IP für 24h blockiert. Nach 24h gibt es weitere zwei bzw. einen Freiversuch, bevor die IP dann für 10 Tage blockiert wird. Ausgewertet wird immer das logfile der letzten 3 Tage.

in der jail.conf habe ich noch den IP-bereich meines VPN in die whitelist gepackt.

Nächste Aufgabe: fail2ban als grundlage für automatisch gesetzte Firewall-rules, um eingehenden Müll direkt an der pfSense abzufangen und gar nicht erst ins LAN reinzulassen....
 

robotto7831a

Well-Known Member
Meine Erfahrung zeigt aber, wenn ich eine IP für 24 Stunden blockiert habe, dass diese so gut wie nie noch mal kommt. Hast Du andere Beobachtungen gemacht?
 

methos

Member
Würde hier anders vorgehen. Der erste ban erfolgt ganz normal nach 3 Fehlversuchen. Das wird dann wiederum im /var/log/fail2ban.log protokolliert.
Wird in diesem logfile eine IP häufiger gebannt, erfolgt dann ein zweiter Bann der nach Bedarf mehrere Tage anhält.
Das hat den Vorteil das die logfiles nicht so lange vorgehalten werden müssen.
 

thommy

Member
Meine Erfahrung zeigt aber, wenn ich eine IP für 24 Stunden blockiert habe, dass diese so gut wie nie noch mal kommt. Hast Du andere Beobachtungen gemacht?

da musste ich jetzt erstmal suchen...
du hast recht. wenn eine IP gepannt wurde, kommt die so schnell nicht wieder.

Würde hier anders vorgehen. Der erste ban erfolgt ganz normal nach 3 Fehlversuchen. Das wird dann wiederum im /var/log/fail2ban.log protokolliert.
Wird in diesem logfile eine IP häufiger gebannt, erfolgt dann ein zweiter Bann der nach Bedarf mehrere Tage anhält.
Das hat den Vorteil das die logfiles nicht so lange vorgehalten werden müssen.

interessanter ansatz.. vor allem ist das fail2ban.log nicht so umfangreich wie das syslog.
ich denk, ich werd das mal umbauen.

Inzwischen habe ich den FTP auf einen anderen Port gepackt und dies allen Kunden mitgeteilt - seither ist Ruhe.
 

Werbung

Top