Fail2ban (0.9.6-2) с чистым ftpd (1.0.46)

481
OscarAkaElvis

Я использую pureftpd и fail2ban, но не работает. Кажется, может прочитать журнал, но fail2ban.filterсобытие не вызвано. Я много исследовал обо всех возможных проблемах, и я уже сделал много проверок, но я не знаю, почему это не работает. Я начну класть свои конфиги, логи и что я сделал. Прежде, я должен сказать, что у меня уже есть на той же машине, работающей нормально fail2ban против apache и ssh. Проблема происходит только с pureftpd .:

на моем /etc/fail2ban/jail.local

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

Я менял это тысячи раз (перезапуская демон fail2ban после каждого изменения курса). Испытано port = ftpвместо того port = 21, чтобы, кажется, иметь тот же результат. Я пытался использовать backend = autoили удалить бэкэнд-оператор ... тот же результат.

Мой /var/log/messagesполучает нормально попытки входа в FTP, некоторые строки в качестве примера:

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] 

Мой /etc/fail2ban/filter.d/pure-ftpd.conf:

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

Я проверил это, fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/pure-ftpd.confи он возвращает много хитов, так что я думаю, что работает.

Я также перевел fail2ban в режим отладки, и это журнал, когда пользователь подключается и пытается войти в систему при неудаче:

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 

Таким образом, он обнаруживает, что файл изменяется, но фильтр не срабатывает. Зачем?

По сравнению с другими моими работающими сервисами fail2ban (например, apache), я увидел в журналах разницу ... когда он работает, такие строки появляются в журналах:

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 

Итак, все выглядит примерно так же, проверяя файлы ... он получает время, но ничего не срабатывает после этого. Что может происходить? Кто-нибудь испытывал это раньше? Спасибо.

1
Действительно ли pureFTP включен в список портов 21? Вы сделали `netstat -an`, чтобы подтвердить это? Darren 6 лет назад 0
Даже если вы введете правильного пользователя / пароль с другого компьютера, вы можете подключиться и загрузить файлы с ftp. Честно говоря, это немного сложнее ... но я старался сократить информацию, чтобы избежать очень длинного поста. Pureftpd является док-контейнером и имеет подключенные порты 21 и некоторые другие для пассивных соединений. Журнал сопоставляется с контейнером на хост, и fail2ban может его прочитать. У меня такой же сценарий на Apache (в контейнере тоже) и работает. Если честно, я думаю, что дело не в этом, потому что я опустил это. OscarAkaElvis 6 лет назад 0
Я знаю, что есть проблемы с правилами iptables для этого типа сценария, потому что в Docker есть много правил iptables, и после запуска бана можно по-прежнему запускать машину, потому что она сталкивается с правилом FORWARD перед правилом fail2ban ... Я знаю, как исправить это (у меня уже есть для работы Apache) ... но это другая история ... по крайней мере, это должно появиться в журнале, как пытаясь запретить. OscarAkaElvis 6 лет назад 0

1 ответ на вопрос

0
OscarAkaElvis

Это решено сейчас. Проблема заключалась в том, что часовой пояс внутри контейнера отличался от того, который был установлен на хосте. Прочитайте эту «неправильную проблему», которую я поставил на github fail2ban:

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

Похожие вопросы