Fail2ban (0.9.6-2) mit reinem ftpd (1.0.46)

476
OscarAkaElvis

Ich verwende pureftpd und fail2ban, funktioniert aber nicht. Es scheint, dass es in der Lage ist, das Protokoll zu lesen, aber das fail2ban.filterEreignis wird nicht ausgelöst. Ich habe viel über die möglichen Probleme nachgeforscht und bereits viele Überprüfungen durchgeführt, weiß aber nicht, warum das nicht funktioniert. Ich fange an meine Configs, Logs und was ich gemacht habe. Vorher muss ich sagen, dass ich bereits auf dem gleichen Maching läuft ok fail2ban gegen Apache und ssh. Das Problem tritt nur bei pureftpd auf:

in meinem /etc/fail2ban/jail.local

[pureftpd] enabled = true port = 21 filter = pure-ftpd logpath = /var/log/messages backend = polling maxretry = 5 

Ich habe dies tausendmal geändert (Neustart des fail2ban-Daemons nach jeder Kursänderung). Getestet port = ftpstatt port = 21scheint das gleiche Ergebnis zu haben. Ich habe versucht, backend = autodie Backend-Anweisung zu verwenden oder zu entfernen ... dasselbe Ergebnis.

Ich /var/log/messagesbekomme die Anmeldeversuche in das FTP-Protokoll in Ordnung, einige Zeilen als Beispiel:

Aug 3 08:31:01 88a4998e8b37 pure-ftpd: (?@192.168.0.159) [INFO] New connection from 192.168.0.159 Aug 3 08:31:09 88a4998e8b37 pure-ftpd: (?@192.168.0.159) [WARNING] Authentication failed for user [testinguser] 

Meine /etc/fail2ban/filter.d/pure-ftpd.conf:

[Definition] __errmsg = Authentication failed for user failregex = pure-ftpd: \(\?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$ ignoreregex = 

Ich habe das getestet fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/pure-ftpd.confund es gibt eine Menge Treffer, also denke ich, funktioniert.

Außerdem habe ich fail2ban in den Debug-Modus versetzt. Dies ist das Protokoll, während sich ein Benutzer verbindet und versucht, sich anzumelden.

2017-08-03 03:31:10,163 fail2ban.filterpoll [4429]: DEBUG /var/log/messages has been modified 2017-08-03 03:31:10,164 fail2ban.datedetector [4429]: DEBUG Matched time template (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? 2017-08-03 03:31:10,165 fail2ban.datedetector [4429]: DEBUG Got time 1470231069.000000 for "'Aug 3 08:31:09'" using template (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? 2017-08-03 03:31:10,165 fail2ban.datedetector [4429]: DEBUG Sorting the template list 2017-08-03 03:31:10,166 fail2ban.datedetector [4429]: DEBUG Winning template: (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? with 2 hits 

Es wird also erkannt, dass sich die Datei ändert, aber der Filter wird nicht ausgelöst. Warum?

Verglichen mit meinen anderen fail2ban-Diensten (Apache zum Beispiel), habe ich in den Protokollen einen Unterschied gesehen ... Wenn es funktioniert, werden folgende Zeilen in den Protokollen angezeigt:

2017-08-03 03:43:37,024 fail2ban.filterpoll [4429]: DEBUG /var/log/apache2/error.log has been modified 2017-08-03 03:43:37,025 fail2ban.datedetector [4429]: DEBUG Matched time template (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? 2017-08-03 03:43:37,026 fail2ban.datedetector [4429]: DEBUG Got time 1501767816.000000 for "'Thu Aug 03 08:43:36.224686 2017'" using template (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? 2017-08-03 03:43:37,026 fail2ban.filter [4429]: DEBUG Processing line with time:1501767816.0 and ip:192.168.0.154 2017-08-03 03:43:37,027 fail2ban.filter [4429]: INFO [apache] Found 192.168.0.154 

Alles scheint also ähnlich zu sein, wenn man die Dateien prüft ... es bekommt die Zeit, aber danach wird nichts ausgelöst. Was kann passieren? Jemand hat das schon mal erlebt? Vielen Dank.

1
Ist pureFTP definitiv an Port 21 gelistet? Hast du ein "netstat -an" gemacht, um es zu bestätigen? Darren vor 6 Jahren 0
Auch wenn Sie den richtigen Benutzer / den richtigen Pass von einem anderen Computer aus eingegeben haben, können Sie Dateien von FTP verbinden und herunterladen. Um ehrlich zu sein, ist es etwas komplizierter ... aber ich habe versucht, die Informationen zu reduzieren, um einen sehr langen Beitrag zu vermeiden. Das pureftpd ist ein Docker-Container und hat die Ports 21 und einige andere für passive Verbindungen zugeordnet. Das Protokoll wird vom Container dem Host zugeordnet und kann von fail2ban gelesen werden. Ich habe das gleiche Szenario auf Apache (auch Container) und arbeitet. Um ehrlich zu sein, denke ich, dass dies nicht der Punkt ist, weil ich darauf verzichtet habe. OscarAkaElvis vor 6 Jahren 0
Ich weiß, dass es für diese Art von Szenario Probleme mit den iptables-Regeln gibt, da Docker viele iptables-Regeln haben. Wenn das Verbot gestartet wird, kann die Maschine dennoch getroffen werden, da sie eine FORWARD-Regel vor der fail2ban-Regel trifft. Ich weiß, wie behebt das (ich habe es schon für Apache gearbeitet) ... aber das ist eine andere Geschichte ... zumindest sollte es im Protokoll als Versuch erscheinen, zu verbieten. OscarAkaElvis vor 6 Jahren 0

1 Antwort auf die Frage

0
OscarAkaElvis

Es ist jetzt gelöst. Das Problem war, dass sich die Zeitzone innerhalb des Containers von der auf dem Host festgelegten Zeit unterschied. Lesen Sie diese "falsche Ausgabe", die ich auf fail2bans Github gesetzt habe:

https://github.com/fail2ban/fail2ban/issues/1855#event-1195174858