Назад | Перейти на главную страницу

Критическое исключение Fail2ban - не блокирует IP

Я пытаюсь запустить fail2ban на CentOS7 (без SELinux), и он использует firewalld. Моя цель - настроить блокировку пароля Asterisk.

Установка была по умолчанию yum install fail2ban

Что касается конфигурации, я добавил ТОЛЬКО jail.local со следующим:

[DEFAULT]
backend = systemd
banaction = firewallcmd-ipset
destemail = xx@xxx.com
sender = donotreply@xxx.com


[asterisk]
enabled = true
#filter = asterisk
#logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 86400

Теперь, когда я перезагружаю службу fail2ban, я получаю такие записи fail2ban.log:

2015-04-26 13:35:18,149 fail2ban.server         [2820]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.1
2015-04-26 13:35:18,151 fail2ban.database       [2820]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2015-04-26 13:35:18,158 fail2ban.jail           [2820]: INFO    Creating new jail 'asterisk'
2015-04-26 13:35:18,182 fail2ban.jail           [2820]: INFO    Jail 'asterisk' uses systemd
2015-04-26 13:35:18,213 fail2ban.jail           [2820]: INFO    Initiated 'systemd' backend
2015-04-26 13:35:18,220 fail2ban.filter         [2820]: INFO    Set maxRetry = 5
2015-04-26 13:35:18,222 fail2ban.actions        [2820]: INFO    Set banTime = 86400
2015-04-26 13:35:18,223 fail2ban.filter         [2820]: INFO    Set findtime = 600
2015-04-26 13:35:18,309 fail2ban.filtersystemd  [2820]: NOTICE  Jail started without 'journalmatch' set. Jail regexs will be checked against all journal entries, which is not advised for performance reasons.
2015-04-26 13:35:18,331 fail2ban.jail           [2820]: INFO    Jail 'asterisk' started
2015-04-26 13:35:18,488 fail2ban                [2820]: CRITICAL Unhandled exception in Fail2Ban:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/fail2ban/server/jailthread.py", line 64, in run_with_except_hook
    run(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/fail2ban/server/filtersystemd.py", line 244, in run
    *self.formatJournalEntry(logentry))
  File "/usr/lib/python2.7/site-packages/fail2ban/server/filtersystemd.py", line 172, in formatJournalEntry
    'SYSLOG_PID', logentry['_PID']))
KeyError: '_PID'
2015-04-26 13:35:19,211 fail2ban.actions        [2820]: NOTICE  [asterisk] Ban 212.129.1.26
2015-04-26 13:35:19,534 fail2ban.actions        [2820]: NOTICE  [asterisk] Ban 212.83.187.182

Я не понимаю, чего не хватает. Эти два действия "запрета" в журнале на самом деле не происходят (я все еще вижу попытки с этих IP-адресов в журналах Asterisk)

В твоем asterisk блок конфигурации, у вас есть filter и logpath варианты замечали. Вероятно, поэтому приложение жалуется. Проверьте пути и снимите отметки с этих двух блоков.

Я думаю, вы здесь ошиблись. Asterisk переходит от простой регистрации событий безопасности (к плоскому файлу) и вместо этого переходит к событиям безопасности через AMI. Учитывая блокировку на основе событий AMI, а НЕ на основании журнала безопасности. Есть несколько бесплатных альтернатив fail2ban (см. http://www.voip-info.org/wiki/view/Asterisk+security Например).

Что еще более важно, с переходом Asterisk с SIP на PJSIP сообщения журнала изменились (и все еще меняются), поэтому вам придется регулярно обновлять записи регулярных выражений, иначе события безопасности могут пропустить ваши настройки fail2ban. Это подход крота ...