Установка и настройка fail2ban важный шаг по пресечению атак на сервера. Данный сервис помогает в автоматическом режиме блокировать хосты перебирающие пароли. Рассмотрим пример установки и настройки данного сервиса на примере операционной системы Centos7.
Установка репозитория и пакета
Пакет fail2ban отсутствует в стандартных репозиториях centos 7.
Но он доступен в репозитории EPEL. Установим пакет репозитория:
1 |
yum install epel-release |
После чего, приступим к установке fail2ban:
1 |
yum install fail2ban |
По завершении установки запускаем и добавляем в автозагрузку сервис:
1 2 |
systemctl start fail2ban systemctl enable fail2ban |
Конфигурация
fail2ban хранит свои настройки в каталоге /etc/fail2ban. В данном каталоге лежит файл jail.conf. Который содержит стандартные настройки. Редактировать данный файл нельзя, так как он перезаписывается при обновлении пакета fail2ban. Поэтому для настроек потребуется создать новый конфигурационный файл с именем jail.local. Значения настроек будут переопределять стандартную конфигурацию
Рассмотри пример создания конфигурационного файла с секцией [DEFAULT].
Создаем файл:
1 |
touch /etc/fail2ban/jail.local |
Откроем его для редактирования через текстовый редактор nano:
1 |
nano /etc/fail2ban/jail.local |
Добавим в него пример кода:
1 2 3 4 5 6 7 |
[DEFAULT] # Ban hosts for one hour: bantime = 3600 # Override /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] enabled = true |
Данный пример переопределяет секцию [DEFAULT]. А соответственно и в ней 3 параметра. Такие как установка нового значения для bantime, включает поддержу iptables и включает sshd.
Сохраняем файл и перезапускаем сервис:
1 |
systemctl restart fail2ban |
Если все без ошибок то у данной команды не будет вывода. Для убеждения, что сервис запущен и работает вводим:
1 |
fail2ban-client status |
Если требуется более подробный вывод, то можно посмотреть статус конкретного сервиса:
1 |
fail2ban-client status sshd |
Как видно, не так уж и сложно создавать свои конфигурации. Сейчас мы рассмотрели пример создания своего конфигурационного файла. Для расширения функционала просто дописываем нужные нас секции, в наш только что созданный файл.
Параметры
Блок [DEFAULT]
ignoreip = 127.0.0.1/8 . Данный параметром задается белый список ip. По умолчанию установлен ip адрес локалхоста.
bantime = 600 . Интервал времени в течении которого хост будет заблокирован. Значение в секундах
findtime = 600, maxretry = 3 . Эти параметры задают условия при которых хост будет заблокирован. Первый, интервал в течении которого должно повториться событие. Второй, количество повторов. Например 3 попытки ввода неправильного пароля при авторизации через ssh в течении 10 минут.
Далее следуют параметры для оповещения по электронной почте:
1 2 3 |
destemail = root@localhost sendername = Fail2Ban mta = sendmail |
destemail — адрес электронной почты для отправки уведомлений. sendername — имя отправителя. mta — сервис для отправки почти, в данном случае sendmail.
Затем следует параметр action = $(action_)s , задающий действие в случае блокировки. Стандартное значение отклонение трафика от вредоносного хоста, на интервал времени установленный в bantime.
Индивидульные настройки
За разделом [DEFAULT] следуют индивидуальные настройки сервисов. Как правило они состоят из порта, который требуется закрыть, и параметра logpath, для отслеживания событий.
Пример данного конфига был приведен выше для сервися sshd.
1 2 3 |
[sshd] port = ssh logpath = %(sshd_log)s |
ssh — предопределенная переменная для стандартного порта ssh, а в параметре logpath задано значение %(sshd_log)s, заданное в стандартных настройках fail2ban
Следующий параметр filter — указывает является ли строка в логах неудачной попыткой аутентификации.
Значение filter – это ссылка на файл, который находится в каталоге /etc/fail2ban/filter.d. Регулярные выражения данного файла позволяют определить, является ли строка в логе вредоносной.
Посмотреть все доступные фильтры можно в каталоге /etc/fail2ban/filter.d :
1 |
ls /etc/fail2ban/filter.d |
Данные файлы названы в честь сервисов для защиты которых они предназначены. большинство файлов достаточно хорошо прокоментированы разработчиками.
Логи fail2ban и настройки брандмауэра
Крайне важная задача это отслеживание работы сервиса. проверка состояния сервиса осуществляется через systemctl
1 |
systemctl status fail2ban |
Если по какой либо причине сервис не запускается, то существует возможность проверить записи логов, до последней перезагрузки
1 |
journalctl -b -u fail2ban |
Статус отдельного конфигурационного файла, так называемой тюрьмы, можно посмотреть так:
1 |
sudo fail2ban-client status jail_name |
Где jail_name имя конфига.
Последние действия сервиса можно посмотреть введя:
1 |
sudo tail -F /var/log/fail2ban.log |
Вывод правил iptables вместе с командами, необходимы для запуска правил:
1 |
iptables -S |
После прочтения данный статьи у вас появились навыки по установке и первоначальной настройке сервиса fail2ban в операционной системе Centos7