Чтобы понять, какие атаки проходят мимо fail2ban, нужно читать журналы сервера. Обычное решение — отправить их в облачный сервис, и там их разберут. Но журналы веб-сервера и почты — это адреса посетителей, логины, адреса почты и содержимое запросов. Отдавать их наружу ради статистики атак хочется не всем, а иногда и нельзя. Анализ журналов в KIPBan устроен наоборот: журналы разбираются на самом сервере, а в кабинет уходят только счётчики. Разберём, как это работает и что именно передаётся.
Что лежит в журналах
Одна строка access.log nginx содержит IP посетителя, время, адрес страницы с параметрами, код ответа и User-Agent. В параметрах бывают токены восстановления пароля и номера заказов. Журнал почтового сервера содержит адреса отправителей и получателей и логины ящиков. Это персональные данные в прямом смысле слова, и передача их третьей стороне — отдельный вопрос для юриста.
Для того чтобы сказать «на этом сервере 35 сканеров не заблокированы», сами строки не нужны. Нужны только счётчики.
Как устроен анализ
- Поиск журналов. Агент KIPBan находит работающие сервисы и их журналы: по файлам, открытым процессами, по конфигурации nginx, по journald и по известным путям почтовых и FTP-серверов. Поддерживаются нестандартные пути, панели управления вроде ISPmanager и несколько сайтов на одном сервере.
- Проверка шаблонами. Агент читает до 150 тысяч последних строк каждого журнала вместе с файлом после ночной ротации, то есть примерно сутки, и проверяет их шаблонами атак из каталога KIPBan. Шаблоны лежат в отдельной папке агента и в настройки fail2ban не попадают.
- Сверка. Найденные адреса сверяются с тем, что сервер уже блокирует: другими jail или из общей базы KIPBan. Сверка тоже идёт на сервере.
- Порты. Агент смотрит, на каком интерфейсе слушает каждый сервис, и отмечает порты, открытые наружу, в том числе порты Docker-контейнеров, опубликованные в обход брандмауэра.
- Сводка. В кабинет уходят только итоговые цифры.
По сути это то же, что администратор делает руками утилитой fail2ban-regex, только для всех журналов сразу, каждую ночь и со сверкой с текущими банами.
Что передаётся и что нет
Формулировка, которой мы придерживаемся:
Журналы читаются и анализируются только на самом сервере. В кабинет приходит сводка: какие сервисы найдены, где лежат их журналы и сколько раз сработал каждый фильтр. Строки журналов и IP-адреса из них не передаются.
| Передаётся в кабинет | Не передаётся |
|---|---|
| список сервисов и их порты | строки журналов |
| пути к журналам и число проверенных строк | IP-адреса из журналов |
| по каждому шаблону: число срабатываний, число адресов, сколько из них уже заблокировано | содержимое запросов, логины, адреса почты |
| версия fail2ban, тип брандмауэра, панель управления |
Отчёт в кабинете поэтому выглядит как таблица счётчиков: серая строка с сервисом, путём к журналу и числом строк, а под ней шаблоны с цифрами и итогом — «включён», «уже блокируются», «не закрыто: 35 из 58» или «единичные».
Одно уточнение, чтобы не было недопонимания. Анализ журналов не передаёт IP-адреса, но если вы включите jail в режиме бана, адреса, которые он забанит, уйдут в KIPBan так же, как от любого другого jail: в этом смысл общего бан-листа. В режиме наблюдения jail ничего не банит.
Что анализ делает с сервером
- Ничего не меняет. Анализ только читает журналы. fail2ban меняется лишь тогда, когда вы сами включили jail в кабинете. Исключение — базовый jail SSH, который работает на каждом сервере Linux по умолчанию.
- Выключен, пока вы его не включите. Включается для всей фермы, для группы серверов или для одного сервера.
- Не мешает работе. Анализ запускается раз в сутки ночью, между 05:00 и 06:00, с самым низким приоритетом. Он ограничен половиной одного ядра, 400 МБ памяти и 10 минутами. На реальных серверах анализ занимает от 1 секунды до 4 минут. Кнопка «Запустить анализ» в кабинете проверяет сервер сразу.
Что нужно от сервера
- Linux и агент KIPBan 21.5 или новее. Агенты обновляются сами. Для Windows анализа журналов нет.
- Журналы в привычном формате, где IP посетителя стоит в начале строки. Если формат нестандартный, отчёт предупредит, что разобрать журнал не удалось.
- Журналы на самом сервере. Журналы внутри Docker-контейнеров не анализируются, хотя сами контейнеры и их порты видны.
Что анализ находит на обычных серверах, мы посчитали в статье «Что fail2ban на вашем сервере не видит». А как включить найденный jail безопасно, описано в статье «Режим наблюдения: как включить jail и не забанить своих».
Вопросы
Отправляет ли KIPBan журналы сервера в облако?
Нет. Журналы читаются и анализируются только на самом сервере. В кабинет приходит сводка: какие сервисы найдены, где лежат их журналы и сколько раз сработал каждый фильтр. Строки журналов и IP-адреса из них не передаются.
Как часто запускается анализ журналов?
Раз в сутки ночью, между 05:00 и 06:00, с самым низким приоритетом и ограничением по процессору, памяти и времени. Проверить сервер сразу можно кнопкой «Запустить анализ» в кабинете.
Меняет ли анализ журналов настройки fail2ban?
Нет. Шаблоны для анализа лежат в отдельной папке агента и в настройки fail2ban не попадают. fail2ban меняется только тогда, когда вы сами включаете jail в кабинете.