Подтвердить что ты не робот

Fail2ban не запрещает ssh bruteforce, но работает регулярное выражение

Я только что заметил ssh bruteforce на моем сервере, который на самом деле должен был быть запрещен fail2ban, но по какой-то причине он не запрещает его. Большинство людей, у которых проблемы с fail2ban, похоже, имеют проблемы с их регулярным выражением, что, кажется, здесь хорошо.

часть jail.conf

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400

статус fail2ban-client ssh

Status for the jail: ssh
|- filter
|  |- File list:    /var/log/auth.log 
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
   |- Currently banned: 0
   |  `- IP list:   
   `- Total banned: 0

fail2ban-regex/var/log/auth.log/etc/fail2ban/filter.d/sshd.conf

Running tests
=============

Use regex file : /etc/fail2ban/filter.d/sshd.conf
Use log file   : /var/log/auth.log


Results
=======

Failregex
|- Regular expressions:
|  [1] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?Authentication failure for .* from <HOST>\s*$
|  [2] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$
|  [3] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Failed (?:password|publickey) for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$
|  [4] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*ROOT LOGIN REFUSED.* FROM <HOST>\s*$
|  [5] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*[iI](?:llegal|nvalid) user .* from <HOST>\s*$
|  [6] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <HOST> not allowed because not listed in AllowUsers$
|  [7] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*authentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
|  [8] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*refused connect from \S+ \(<HOST>\)\s*$
|  [9] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Address <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*\s*$
|  [10] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\
S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <HOST> not allowed because none of user groups are listed in AllowGroups\s*$
|
`- Number of matches:
   [1] 0 match(es)
   [2] 0 match(es)
   [3] 380 match(es)
   [4] 0 match(es)
   [5] 353 match(es)
   [6] 26 match(es)
   [7] 0 match(es)
   [8] 0 match(es)
   [9] 0 match(es)
   [10] 0 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
[2]
[3]
    198.245.50.151 (Sat Dec 21 15:18:12 2013)
    198.245.50.151 (Sat Dec 21 15:18:15 2013)
    198.245.50.151 (Sat Dec 21 15:18:18 2013)
    198.245.50.151 (Sat Dec 21 15:18:21 2013)
    198.245.50.151 (Sat Dec 21 15:18:24 2013)
..................
Date template hits:
23379 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
..................

Success, the total number of match is 759

Любые идеи, почему fail2ban не запрещает, даже если у меня много регулярных выражений?

С уважением, рыба

4b9b3361

Ответ 1

Этот вопрос довольно старый, но я столкнулся с той же проблемой, и после многих многих поисков, наконец, нашел решение.

Моя проблема была вызвана изменением моего часового пояса: некоторое время назад я использовал следующую команду, чтобы установить правильный часовой пояс.

sudo dpkg-reconfigure tzdata

Мое системное время было в порядке, но времена записей в auth.log были действительно сдвинуты. И это была проблема для fail2ban: он должен сравнивать записи auth.log, чтобы проверить, нужно ли ему запрещать, сохранять или запрещать... и зарегистрированные записи всегда считались слишком старыми из-за неправильного времени.

Мне просто пришлось перезапустить демон syslog с помощью:

sudo service rsyslog restart

Затем время больше не было сдвинуто в auth.log, и fail2ban успешно выполнил свою работу.

Надеюсь, это поможет!

Ответ 2

Я попробовал все решения здесь, прежде чем снова заглянуть в него и нашел ответ на ServerFault:

Запуск service rsyslog restart - это все, что мне нужно было сделать, и теперь он работает так, как ожидалось (конечно, существует вероятность того, что все решения здесь также необходимы...). В отличие от плаката этого вопроса, я никогда не удалял и не редактировал файл журнала, поэтому почему это решение я не знаю.

Ответ 3

Хорошо, это не официальное решение, но оно работает:

3 месяца отлично работают до тех пор, пока fail2ban не обновится и перестанет запрещать. Я могу сказать, как сильно я исследовал эту проблему, и в конце это единственный способ, который работает.

Это должно работать

 sudo service fail2ban stop
 sudo service fail2ban start

Это не сработает

sudo service fail2ban restart

ВАЖНО: Протестируйте с другим устройством (ячейкой 3G) преднамеренное неудачное ведение журнала ssh для проверки fail2ban. Если нет, остановка обслуживания/запуск снова. Иногда некоторые тюрьмы загружаются неправильно. Никогда не доверяй!!!!!

ДОПОЛНИТЕЛЬНЫЕ ПРИМЕЧАНИЯ:

  • Использование jail.local
  • Включено 4 тюрьмы: ssh, dovecot, apache и wootwoot
  • Все тюрьмы работают как очарование в течение нескольких месяцев без проблем.
  • Сервер Ubuntu 14.04
  • fail2ban 0.9

Ответ 4

часто, когда у меня есть эта проблема (в блоках Debian), это связано с tzdata и неправильным временем. Если регулярное выражение работает (и оно работает), единственное, что может предотвратить fai2ban от trggering, - это что-то испорченное датой/временем. Попробуйте установить ntp и синхронизировать свою дату.

Ответ 5

Fail2ban не запрещает, а regexp много подходит? Вероятно, в вашей тюрьме отсутствует действие запрета. У вас есть два варианта:

Вариант 1) Внутри вашей тюрьмы [ssh] включить

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
action = %(action_mwl)s # <<== THIS IS FOR BANNING
maxretry = 6
findtime = 6000
bantime = 86400

Вариант 2) Включите глобальное действие для всех ваших жалоб, просто пишите это (пример)

# Choose default action.  To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.  action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s

[ssh]
    enabled  = true
    port     = ssh
    filter   = sshd
    logpath  = /var/log/auth.log
    maxretry = 6
    findtime = 6000
    bantime = 86400

Кстати, в верхней части jail.conf Я могу прочитать рекомендацию по использованию jail.local вместо jail.conf. Может быть, было бы полезно следовать их инструкциям:

To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local

Ответ 6

У меня было аналогичное поведение в окне Ubuntu raring (13.04). Fail2ban не заметил изменений в файле /var/log/auth.log. Изменение значения backend в файле jail.conf ничего не изменило.

Я, наконец, исправил это, установив последнюю версию Fail2ban, используя сборки Backport, доступные из NeuroDebian, как описано на странице download из Веб-сайт Fail2ban.

Ответ 7

Иногда это происходит потому, что __bsd_syslog_verbose ошибочен. fail2ban ожидает, что /var/log/auth.log начнется с YYYY.MM.DD (т.е.: 2014.10.15), но журналы читают MMM DD (т.е.: 15 октября)

Чтобы исправить это, вам нужно будет сделать следующее:

cp /etc/fail2ban/filter.d/common.conf /etc/fail2ban/filter.d/common.local

Измените common.local и установите:

__bsd_syslog_verbose = (<[^.]+ [^.]+>)

Перезапуск fail2ban:

Ubuntu (не использовать перезапуск):

sudo service fail2ban stop
sudo service fail2ban start

Ответ 8

Я только что счел необходимым перезагрузить мой сервер до того, как изменения в порт sshd вступили в силу... изменение портов довольно эффективно и просто.