3.4.19 Fail2Ban - сервис блокировки хостов
Скачать документ Установка и запуск
Основные настройки и примеры использования
Параметры конфигурационного файла
Настройка защиты SSH
Блокировка нежелательного трафика
Настройка блокировки для Asterisk
Работа со списком заблокированных адресов
Пример работы fail2ban
Fail2Ban – это сервис для блокировки хостов, вызывающих множественные ошибки при попытках аутентификации.
Fail2Ban работает путем мониторинга файлов журналов (например, /var/log/auth.log, /var/log/apache/access.log и др.) для выбранных записей и запуска сценариев на их основе. Чаще всего это используется для блокировки выбранных IP-адресов, которые могут принадлежать хостам, пытающимся нарушить безопасность системы. Он может запретить любой IP-адрес хоста, который делает слишком много попыток входа в систему или выполняет любые другие нежелательные действия в течение периода времени, определенного администратором. Включает поддержку как IPv4, так и IPv6. Опционально более длительные запреты могут быть настроены специально для нарушителей, которые продолжают возвращаться.
Fail2Ban обычно настраивается на разблокировку заблокированного хоста в течение определенного периода времени, чтобы не "блокировать" любые подлинные соединения, которые могли быть временно неправильно сконфигурированы. Время блокировки нежелательных хостов в несколько минут, обычно является достаточным, чтобы снизить вероятность сетевой атаки или атаки подбора пароля по словарю, например, при подключении по ssh.
Стандартная конфигурация Fail2Ban поставляется с фильтрами для Apache, Lighttpd, sshd, vsftpd, qmail. Фильтры определяются регулярными выражениями Python, которые могут быть удобно настроены администратором, знакомым с регулярными выражениями. С помощью фильтров можно блокировать попытки доступа от вредоносного хоста к определенным сетевым службам.
Fail2Ban можно настроить для мониторинга любой службы, которая записывает попытки аутентификации в файл журнала. Для блокировки IP-адресов нежелательных хостов Fail2Ban использует правила iptables.
Установка и запуск Fail2Ban
Установка производится командой:
dnf install fail2ban systemctl start fail2ban systemctl enable fail2ban
Основные настройки и примеры использования приложения Fail2Ban
Все конфигурационные файлы программы находятся в каталоге /etc/fail2ban. Для установки собственных настроек необходимо создать файл с таким же именем и расширением .local.
Основные параметры конфигурационного файла jail.conf
Конфигурационный файл jail.conf используется для создания ограничивающих правил для различных программ и имеет параметры, которые описаны ниже:
- action — действие, которое будет выполняться, если Fail2ban обнаружит активность, соответствующую критериям поиска;
- ignoreip — задает список IP-адресов, которые нужно исключить из алгоритмов Fail2ban. К ним не будут применяться ограничения, так что выбирайте их аккуратно. Диапазоны и IP-адреса стоит разделить пробелом. Сюда можно добавить локальный IP, а также IP-адрес, с которого вы будете подключаться сами, чтобы у вас не возникло проблем при входе;
- bantime — время в секундах, на которое клиенту будет закрыт доступ к серверу, если он не сможет авторизоваться;
- maxretry — указывает количество попыток перед тем, как доступ будет заблокирован;
- findtime — время в секундах, на протяжении которого рассчитывается maxretry.
Настройка защиты SSH
Сначала копируем содержимое jail.conf в jail.local:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
По умолчанию jail.local работает только для SSH. Примерная настройка файла jail.local для SSH:
[sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/auth.log findtime = 600 maxretry = 3 bantime = 21600
Блокировка нежелательного трафика к определенному URL для NGINX
Откроем файл конфигурации:
nano /etc/fail2ban/jail.local
И добавим в конец:
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10
Настройка блокировки для Asterisk
Добавляем в конец файла jail.local:
[asterisk]
enabled = true
action = iptables-allports[name=asterisk, protocol=all]
logpath = /var/log/asterisk/messages
bantime = 86400
Работа со списком заблокированных адресов
- Получить статистику заблокированных адресов можно следующей командой:
fail2ban-client status <имя_правила>
Для удаления адреса из списка вводим:
fail2ban-client set <имя правила> unbanip
- Получить список правил можно командой:
fail2ban-client status
- После необходимо перечитать правила:
firewall-cmd --reload
- После каких либо изменений в конфигурационных файлах перезапустите faile2ban командой:
systemctl restart fail2ban
Пример работы fail2ban
Пример блокировки подключения к ssh-серверу после нескольких неудачных попыток авторизоваться. Для примера было взято правило для ssh. В примере пользователь попытался 3 раза ввести пароль для доступа к ssh-серверу, и после неудачных попыток последующие соединения с IP-адреса клиента были заблокированы.
Попытка пользователя авторизоваться на ssh-сервере:
После неудачных попыток ввода пароля, дальнейшие соединения к ssh-серверу были отказаны.
Дата последнего изменения: 19.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.