Странное поведение fail2ban

Автор Next, 25 февраля 2020, 20:57:24

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Next

Доброго, камрады. Не могу отдуплиться по странному поведению fail2ban, который мне поднимает la до 2. Ещё и логов его центнерами генерирует...
Постоянно происходит unban и restore ban большого количества адресов и хреначит это дело по кругу. Вот кусок лога:

Перед этим туча unban
2020-02-23 12:01:30,096 fail2ban.actions        [486]: NOTICE  [sshd] Unban 106.54.81.174
2020-02-23 12:01:30,096 fail2ban.actions        [486]: NOTICE  [sshd] Unban 183.48.89.223
2020-02-23 12:01:30,096 fail2ban.actions        [486]: NOTICE  [sshd] Unban 91.219.253.183
2020-02-23 12:01:30,096 fail2ban.actions        [486]: NOTICE  [sshd] Unban 69.28.235.203
2020-02-23 12:01:30,179 fail2ban.jail           [486]: INFO    Jail 'sshd' stopped
2020-02-23 12:01:30,186 fail2ban.jail           [486]: INFO    Jail 'pure-ftpd' stopped
2020-02-23 12:01:30,186 fail2ban.jail           [486]: INFO    Jail 'dovecot' stopped
2020-02-23 12:01:30,186 fail2ban.jail           [486]: INFO    Jail 'postfix-sasl' stopped
2020-02-23 12:01:30,187 fail2ban.database       [486]: INFO    Connection to database closed.
2020-02-23 12:01:30,188 fail2ban.server         [486]: INFO    Exiting Fail2ban
2020-02-23 12:01:47,484 fail2ban.server         [481]: INFO    --------------------------------------------------
2020-02-23 12:01:47,485 fail2ban.server         [481]: INFO    Starting Fail2ban v0.10.2
2020-02-23 12:01:47,497 fail2ban.database       [481]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2020-02-23 12:01:47,500 fail2ban.jail           [481]: INFO    Creating new jail 'sshd'
2020-02-23 12:01:47,565 fail2ban.jail           [481]: INFO    Jail 'sshd' uses pyinotify {}
2020-02-23 12:01:47,567 fail2ban.jail           [481]: INFO    Initiated 'pyinotify' backend
2020-02-23 12:01:47,568 fail2ban.filter         [481]: INFO      maxLines: 1
2020-02-23 12:01:47,624 fail2ban.server         [481]: INFO    Jail sshd is not a JournalFilter instance
2020-02-23 12:01:47,626 fail2ban.filter         [481]: INFO    Added logfile: '/var/log/auth.log' (pos = 342266, hash = c65a2dbe42f17b52eb9beb8c921a73db82376029)
2020-02-23 12:01:47,640 fail2ban.filter         [481]: INFO      encoding: UTF-8
2020-02-23 12:01:47,641 fail2ban.filter         [481]: INFO      maxRetry: 3
2020-02-23 12:01:47,642 fail2ban.filter         [481]: INFO      findtime: 86400
2020-02-23 12:01:47,642 fail2ban.actions        [481]: INFO      banTime: 31536000
2020-02-23 12:01:47,645 fail2ban.jail           [481]: INFO    Creating new jail 'pure-ftpd'
2020-02-23 12:01:47,646 fail2ban.jail           [481]: INFO    Jail 'pure-ftpd' uses pyinotify {}
2020-02-23 12:01:47,658 fail2ban.jail           [481]: INFO    Initiated 'pyinotify' backend
2020-02-23 12:01:47,669 fail2ban.server         [481]: INFO    Jail pure-ftpd is not a JournalFilter instance
2020-02-23 12:01:47,677 fail2ban.filter         [481]: INFO    Added logfile: '/var/log/syslog' (pos = 2046450, hash = af70f164a214a1bb1f1c60336d21e2a2a92c02db)
2020-02-23 12:01:47,680 fail2ban.filter         [481]: INFO      encoding: UTF-8
2020-02-23 12:01:47,680 fail2ban.filter         [481]: INFO      maxRetry: 3
2020-02-23 12:01:47,681 fail2ban.filter         [481]: INFO      findtime: 86400
2020-02-23 12:01:47,681 fail2ban.actions        [481]: INFO      banTime: 31536000
2020-02-23 12:01:47,684 fail2ban.jail           [481]: INFO    Creating new jail 'dovecot'
2020-02-23 12:01:47,684 fail2ban.jail           [481]: INFO    Jail 'dovecot' uses pyinotify {}
2020-02-23 12:01:47,690 fail2ban.jail           [481]: INFO    Initiated 'pyinotify' backend
2020-02-23 12:01:47,703 fail2ban.datedetector   [481]: INFO      date pattern `''`: `{^LN-BEG}TAI64N`
2020-02-23 12:01:47,704 fail2ban.server         [481]: INFO    Jail dovecot is not a JournalFilter instance
2020-02-23 12:01:47,705 fail2ban.filter         [481]: INFO    Added logfile: '/var/log/mail.log' (pos = 1638901, hash = 543e30a6b691458d2a1ad5f4fe8cec0ef24850fd)
2020-02-23 12:01:47,708 fail2ban.filter         [481]: INFO      encoding: UTF-8
2020-02-23 12:01:47,709 fail2ban.filter         [481]: INFO      maxRetry: 5
2020-02-23 12:01:47,710 fail2ban.filter         [481]: INFO      findtime: 86400
2020-02-23 12:01:47,711 fail2ban.actions        [481]: INFO      banTime: 31536000
2020-02-23 12:01:47,713 fail2ban.jail           [481]: INFO    Creating new jail 'postfix-sasl'
2020-02-23 12:01:47,714 fail2ban.jail           [481]: INFO    Jail 'postfix-sasl' uses pyinotify {}
2020-02-23 12:01:47,728 fail2ban.jail           [481]: INFO    Initiated 'pyinotify' backend
2020-02-23 12:01:47,740 fail2ban.server         [481]: INFO    Jail postfix-sasl is not a JournalFilter instance
2020-02-23 12:01:47,741 fail2ban.filter         [481]: INFO    Added logfile: '/var/log/mail.log' (pos = 1638901, hash = 543e30a6b691458d2a1ad5f4fe8cec0ef24850fd)
2020-02-23 12:01:47,742 fail2ban.filter         [481]: INFO      encoding: UTF-8
2020-02-23 12:01:47,742 fail2ban.filter         [481]: INFO      maxRetry: 3
2020-02-23 12:01:47,742 fail2ban.filter         [481]: INFO      findtime: 86400
2020-02-23 12:01:47,743 fail2ban.actions        [481]: INFO      banTime: 31536000
2020-02-23 12:01:49,750 fail2ban.filter         [481]: INFO    [sshd] Found 198.245.50.167 - 2020-02-23 12:01:49
2020-02-23 12:01:49,751 fail2ban.filter         [481]: INFO    [sshd] Found 198.245.50.167 - 2020-02-23 12:01:49
2020-02-23 12:01:50,746 fail2ban.filter         [481]: INFO    [sshd] Found 198.245.50.167 - 2020-02-23 12:01:50
2020-02-23 12:01:50,975 fail2ban.actions        [481]: NOTICE  [sshd] Ban 198.245.50.167
2020-02-23 12:01:51,084 fail2ban.jail           [481]: INFO    Jail 'sshd' started
2020-02-23 12:01:51,242 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.1.180.200
2020-02-23 12:01:51,304 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.1.217.212
2020-02-23 12:01:51,349 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.1.242.96
2020-02-23 12:01:51,351 fail2ban.jail           [481]: INFO    Jail 'pure-ftpd' started
2020-02-23 12:01:51,416 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.179.137.10
2020-02-23 12:01:51,465 fail2ban.jail           [481]: INFO    Jail 'dovecot' started
2020-02-23 12:01:51,477 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.179.146.156
2020-02-23 12:01:51,493 fail2ban.filter         [481]: INFO    [postfix-sasl] Found 142.11.215.157 - 2020-02-23 12:01:51
2020-02-23 12:01:51,549 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.179.182.82
2020-02-23 12:01:51,594 fail2ban.actions        [481]: NOTICE  [dovecot] Restore Ban 101.36.178.94
2020-02-23 12:01:51,616 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.179.185.50
2020-02-23 12:01:51,705 fail2ban.actions        [481]: NOTICE  [pure-ftpd] Restore Ban 1.161.171.170
2020-02-23 12:01:51,722 fail2ban.actions        [481]: NOTICE  [sshd] Restore Ban 1.179.197.106
2020-02-23 12:01:51,791 fail2ban.actions        [481]: NOTICE  [dovecot] Restore Ban 101.89.216.223

После этого момента начинается куча restore ban, позже found ... и already banned.
А потом в один прекрасный момент:
2020-02-25 20:11:14,209 fail2ban.filter         [481]: INFO    [postfix-sasl] Found 185.211.245.170 - 2020-02-25 20:11:14
2020-02-25 20:11:32,160 fail2ban.filter         [481]: INFO    [postfix-sasl] Found 185.211.245.170 - 2020-02-25 20:11:32
2020-02-25 20:11:39,129 fail2ban.filter         [481]: INFO    [postfix-sasl] Found 185.211.245.170 - 2020-02-25 20:11:39
2020-02-25 20:11:39,524 fail2ban.actions        [481]: WARNING [postfix-sasl] 185.211.245.170 already banned
2020-02-25 20:16:49,049 fail2ban.server         [481]: INFO    Shutdown in progress...
2020-02-25 20:16:49,049 fail2ban.server         [481]: INFO    Stopping all jails
2020-02-25 20:16:49,050 fail2ban.filter         [481]: INFO    Removed logfile: '/var/log/auth.log'
2020-02-25 20:16:49,052 fail2ban.filter         [481]: INFO    Removed logfile: '/var/log/syslog'
2020-02-25 20:16:49,052 fail2ban.filter         [481]: INFO    Removed logfile: '/var/log/mail.log'
2020-02-25 20:16:49,053 fail2ban.filter         [481]: INFO    Removed logfile: '/var/log/mail.log'
2020-02-25 20:16:49,121 fail2ban.actions        [481]: NOTICE  [sshd] Flush ticket(s) with iptables-multiport
2020-02-25 20:16:49,121 fail2ban.actions        [481]: NOTICE  [dovecot] Flush ticket(s) with iptables-multiport
2020-02-25 20:16:49,121 fail2ban.actions        [481]: NOTICE  [pure-ftpd] Flush ticket(s) with iptables-multiport
2020-02-25 20:16:49,122 fail2ban.actions        [481]: NOTICE  [postfix-sasl] Flush ticket(s) with iptables-multiport
2020-02-25 20:16:49,245 fail2ban.actions        [481]: NOTICE  [sshd] Unban 198.245.50.167
2020-02-25 20:16:49,245 fail2ban.actions        [481]: NOTICE  [sshd] Unban 1.1.180.200
2020-02-25 20:16:49,245 fail2ban.actions        [481]: NOTICE  [sshd] Unban 1.1.217.212
2020-02-25 20:16:49,245 fail2ban.actions        [481]: NOTICE  [sshd] Unban 1.1.242.96

И далее по кругу...
Что за эпидерсия такая, куда её копать? Буду крайне благодарен за совет. Голову и гугл уже сломал  :(

Olej

#1
Цитата: Next от 25 февраля 2020, 20:57:24Постоянно происходит unban и restore ban большого количества адресов и хреначит это дело по кругу.
Так и должно быть - на то и fail2ban:
дополнительные меры сетевой безопасности
Защищённость ОТ сети


Next

Но, как я понимаю, это одни и те же адреса.
Кроме того, в правилах я писал если уж бан - то на год, а у меня они за день туда-сюда скачут...

Olej

Цитата: Next от 26 февраля 2020, 01:33:18Но, как я понимаю, это одни и те же адреса.
Они и должны быть одни и те же - это автоботы или спамеры-придурки, которые ломятся на вход.
Логика fail2ban примерно такая (по дефаулту):
Цитировать
Основная идея Fail2ban - при превышении заданного числа неудачных вводов пароля подряд (по умолчанию - 6) бан IP, с которого были попытки подбора на заданное время (по умолчанию - 600 секунд).
И это - правильные параметры, ... а мудрячить что-то там про "бан на год" - это только от большой глупости может на ум прийти.  ;)

ogost

Попрошу без оскорблений.
Без конфигов трудно о чём-то судить.

Next

Конфиг дефолтный за исключением следующих параметров:
# "bantime" is the number of seconds that a host is banned.
bantime  = 365d
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 1d
# "maxretry" is the number of failures before a host get banned.
maxretry = 3

и
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
port    = 2222


Я понимаю принцип работы fail2ban, но не понимаю чем обоснована глупость данных параметров. По ssh хожу только я, но из разных мест. Был бы один IP - поставил бы себя в белый список и адью все остальные, и вопрос бы не поднимал. В этой ситуации жбан для леваков на год, имхо, обоснован, они мне не нужны с очередной своей попыткой через 10 минут.
Скорее вопрос почему они будучи забаненными (по идее на год) сами анбанятся. Не по таймауту же...

П.С. Попутно ещё один вопрос, пожалуй дилетантский, по второй части конфига - порт ssh на сервере сменён через sshd_config. В fail2ban по умолчанию стоят не жёсткие порты, а прописанные как ssh. Он автоматом подтягивет значение порта ssh, в том числе нестандартное? Убрать в конфиге fail2ban жёсткую привязку к номеру порта и вернуть ssh?

endru

Цитата: Next от 26 февраля 2020, 08:46:39они мне не нужны с очередной своей попыткой через 10 минут.
Ограничения должны быть разумными:
1) Наступит момент когда IP выхода будет публичным (без выделенного адреса), в таком случае зайти на сервер не получится - т.к. все подобные IP в бане еще на 300 дней. И что делать в таком случае?
2) Большой список правил - большая нагрузка на ядро, т.к. каждый IP нужно проверять на наличие в правилах - а за год их там накопится столько, что можно прям залипнуть. Блокировка на 1 час это максимально достаточная для нормальной работы.

Цитата: Next от 26 февраля 2020, 08:46:39почему они будучи забаненными (по идее на год) сами анбанятся. Не по таймауту же...
а почему они НЕ должны удаляться из бана перед остановкой fail2ban? В логах четко об этом говорится!
Цитата: Next от 25 февраля 2020, 20:57:242020-02-25 20:16:49,049 fail2ban.server         [481]: INFO    Shutdown in progress...
2020-02-25 20:16:49,049 fail2ban.server         [481]: INFO    Stopping all jails

Next

Спасибо за ответ.
1. В ограничениях большой беды с этой точки зрения нет, можно через noVNC сходит и отбанить себя.
2. С этой точки зрения, конечно, скорее час правильнее. Но душа просит жестких мер)) 30d тоже много? Или Вы тоже настаиваете на дефолтных параметрах?

То есть перед завершением работы fail2ban очищает весь черный список? Да, я видел, что он завершает работу по какой-то причине и потом стартует снова. Это не я его... С чем такой рестарт может быть связан?

endru

Цитата: Next от 26 февраля 2020, 12:20:17можно через noVNC сходит и отбанить себя
вот и дыра образовалась. вместо надежного ssh мы еще сделаем точку входа в которой можно ломать-не переломать)))

Цитата: Next от 26 февраля 2020, 12:20:17Или Вы тоже настаиваете на дефолтных параметрах?
Вообще настраивается всё под себя, с учетом возможного бана на стороне сервера в случае если пароль вдруг оказался не верен, а авторизацию по ключу никто не настроил.

Цитата: Next от 26 февраля 2020, 12:20:17То есть перед завершением работы fail2ban очищает весь черный список?
да, ведь он не знает когда в следующий раз запустится - может никогда.

Цитата: Next от 26 февраля 2020, 12:20:17С чем такой рестарт может быть связан?
Изучай логи. Не удивлюсь если есть задание в кроне по рестарту.

Next

Цитата: endru от 26 февраля 2020, 12:31:54вот и дыра образовалась. вместо надежного ssh мы еще сделаем точку входа в которой можно ломать-не переломать)))
Это опция от провайдера, она существует как данность)
Цитата: endru от 26 февраля 2020, 12:31:54да, ведь он не знает когда в следующий раз запустится - может никогда
Ваша правда
Цитата: endru от 26 февраля 2020, 12:31:54Изучай логи. Не удивлюсь если есть задание в кроне по рестарту.
root@***:~# crontab -l
* * * * * /usr/local/ispconfig/server/server.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done
* * * * * /usr/local/ispconfig/server/cron.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done

Не крон, но направление понятно, да, буду искать.

Основная движуха, кстати, вчера после смены стандартного порта ssh притихла. Понимаю, что это надо было сделать сразу, но тогда не было бы этого опыта))

П.С. Попутно ещё один вопрос, пожалуй дилетантский, всё ещё остался в голове - порт ssh на сервере сменён через sshd_config. В fail2ban по умолчанию стоят не жёсткие порты, а прописанные как ssh. Он автоматом подтягивет значение порта ssh, в том числе нестандартное? Убрать в конфиге fail2ban жёсткую привязку к номеру порта и вернуть ssh?

dsdsda

Цитата: Next от 26 февраля 2020, 12:48:04
Цитата: endru от 26 февраля 2020, 12:31:54вот и дыра образовалась. вместо надежного ssh мы еще сделаем точку входа в которой можно ломать-не переломать)))
Это опция от провайдера, она существует как данность)
Цитата: endru от 26 февраля 2020, 12:31:54да, ведь он не знает когда в следующий раз запустится - может никогда
Ваша правда
Цитата: endru от 26 февраля 2020, 12:31:54Изучай логи. Не удивлюсь если есть задание в кроне по рестарту.
root@***:~# crontab -l
* * * * * /usr/local/ispconfig/server/server.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done
* * * * * /usr/local/ispconfig/server/cron.sh 2>&1 | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done

Не крон, но направление понятно, да, буду искать.

Основная движуха, кстати, вчера после смены стандартного порта ssh притихла. Понимаю, что это надо было сделать сразу, но тогда не было бы этого опыта))

П.С. Попутно ещё один вопрос, пожалуй дилетантский, всё ещё остался в голове - порт ssh на сервере сменён через sshd_config. В fail2ban по умолчанию стоят не жёсткие порты, а прописанные как ssh. Он автоматом подтягивет значение порта ssh, в том числе нестандартное? Убрать в конфиге fail2ban жёсткую привязку к номеру порта и вернуть ssh?

Порт в ссшд_конфиге вы сменили. Но в fail2ban мы тоже их меняем, что бы корректно работало. Он не подтягивает автоматом. ( cd /etc/fail2ban/ nano jail.local. Ищем sshd, строка порт, и меняем)

Next

Цитата: dsdsda от 26 февраля 2020, 12:59:04Он не подтягивает автоматом
Понял, в этом и был вопрос. Я цифрами прописал, да, но подумал может зря и он сам. Значит правильно руками задал.

ogost

оффтоп

смена порта ssh, да и вообще любого сервиса - security through obscurity.
Секурности не добавляет, распознать ssh на нестандартном порту не составляет труда. Зато добавится ещё один параметр настройки, который нужно держать в голове/записной книжке при обслуживании.
Это я так, мысли в слух.
[свернуть]

endru

Цитата: ogost от 27 февраля 2020, 05:53:35распознать ssh на нестандартном порту не составляет труда
как и другие протоколы))
безопасность это комплекс мер (стойкий пароль, авторизация по сертификату, ограниченный круг удаленных администраторов, меры по перебору паролей, закрытие стандартных логинов для входа, регулярные обновления пакетов безопасности и т.д. и т.п.), смена порта к ним не относится.