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 не запрещает, даже если у меня много регулярных выражений?
С уважением,
рыба
Ответы
Ответ 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 вступили в силу... изменение портов довольно эффективно и просто.