Установка и настройка Fail2Ban

Fail2Ban – простейший инструмент безопасности для любого домашнего сервера, оберегающий его от несанкционированного доступа, а именно от атак методом грубой силы (в простонародье, брутфорса). По моему скромному мнению является чуть ли не первой программой, рекомендуемой к установке на свежую серверную OC.

Сегодня я расскажу вам о том, как это сделать, а также рассмотрю ряд конфигураций для распространённых протоколов и сервисов.

Как установить Fail2Ban

Fail2Ban можно найти практически во всех стандартных репозиториях наиболее распространённых дистрибутивов. Чтобы установить программу, можно воспользоваться всего одной командой.

Для Debian/Ubuntu:

apt-get install fail2ban

Для Fedora/RHEL/CentOS:

yum install fail2ban

Сразу после установки сервис запускается автоматически. Но вы всегда можете проверить его работоспособность командой:

sudo systemctl status fail2ban

Вывод для рабочей программы будет выглядеть примерно следующим образом:

fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-05-24 12:08:07 UTC; 3min 5s ago
       Docs: man:fail2ban(1)
   Main PID: 341 (f2b/server)
      Tasks: 7 (limit: 464145)
     Memory: 14.6M
     CGroup: /system.slice/fail2ban.service
             └─341 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

May 24 12:08:07 ubuntu systemd[1]: Starting Fail2Ban Service...
May 24 12:08:07 ubuntu systemd[1]: Started Fail2Ban Service.
May 24 12:08:08 ubuntu fail2ban-server[341]: Server ready

Основы настройки

Файлы конфигурации Fail2Ban располагаются в директории /etc/fail2ban. В первую очередь нас интересует файл jail.conf. Он содержит основные настройки защиты для таких сервисов, как HTTP, FTP, SSH, Squid, Monit, Horde, Drupal и др. Сам файл поделен на секции, которые называются “тюрьмами” или “изоляторами” (jais). Отдельный изолятор отвечает за определённый сервис. Достаточно добавить параметр enabled = true в необходимой секции файла для активации защиты.

Помимо отдельных изоляторов есть один общий, настройки которого определяются к остальным секциям, если не будут определены индивидуально.
Выглядит это примерно так:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3
banaction = iptables-multiport

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Основной перечень параметров:

  • ignoreip – перечень IP-адресов, которые не должны блокироваться сервисом ни при каких условиях. В этом параметре можно также задать маску подсети или имя DNS-сервера.
  • bantime – время блокировки в секундах. По истечении этого срока заблокированный адрес удаляется из списков сервиса.
  • maxretry – количество подозрительных действий, после которых активируется блокировка. Например, количество неудачных попыток логина.
  • port – определяет, на каком порту или портах запущен необходимый сервис.
  • filter – имя фильтра, по которому идёт поиск совпадений. Например, для фильтра sshd создан файл /etc/fail2ban/filter.d/sshd.conf.
  • logpath – путь к файлу журнала. Здесь будет фиксироваться история удачных и неудачных входов в систему. По умолчанию это файл /var/log/auth.log.

Впрочем, несмотря на то, что можно указать необходимые настройки в общем файле конфигурации, рекомендуется создавать конфигурации для каждого сервиса отдельно в директории /etc/fail2ban/jail.d/

Добавление IP адреса в белый список

Чтобы избежать неловкого oops в виде самоблокировки, советую сразу же добавить доверенные IP-адреса в белый список, прежде чем приступать к основной настройке программы. Сделать это можно, отредактировав файл jail.local:

sudo nano /etc/fail2ban/jail.local

Добавьте следующие строки, заменив trusted-ip1 и trusted-ip2 на доверенные адреса:

[DEFAULT]
ignoreip = trusted-ip1 trusted-ip2

Не забудьте перезагрузить сервис для применения изменений:

sudo systemctl restart fail2ban

Настройка Fail2Ban для SSH

SSH изолятор работает в Fail2Ban по умолчанию сразу после установки сервиса. Но если вам нужно внести изменения в его работу, необходимо создать jail файл. Для этого мы будем использовать редактор nano:

sudo nano /etc/fail2ban/jail.d/ssh.conf

Добавляем в созданный файл следующие строки:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 120
ignoreip = whitelist-IP

Сохраните и закройте изолятор, а затем перезагрузите сервис командой:

sudo systemctl restart fail2ban

Указанная нами конфигурация будет блокировать IP адреса после 3-х проваленных попыток логина на ваш сервер через SSH. Блокировка действует 120 секунд, а все подозрительные действия будут записываться в файл журнала /var/log/auth.log.

Вы можете изменить параметры под ваши нужды.

Настройка Fail2Ban для Webmin

Для защиты Webmin создаём jail файл командой:

sudo nano /etc/fail2ban/jail.d/webmin.conf

Далее добавляем следующие строки:

[webmin-auth]
enabled = true
port    = 10000
filter  = webmin-auth
logpath  = /var/log/auth.log
maxretry = 3
bantime = 120

Не забываем перезагрузить сервис для применения изменений. Программа будет мониторить сервис на предмет неудачных логинов и блокировать их источник на 120 секунд, записывая логи в файл /var/log/auth.log.

Настройка Fail2Ban для WordPress

Чтобы включить защиту для Панели Администратора WordPress, необходимо скачать специальный файл фильтра:

sudo wget https://plugins.svn.wordpress.org/wp-fail2ban/trunk/filters.d/wordpress-hard.conf -O /etc/fail2ban/filter.d/wordpress.conf

Далее создаём jail файл по аналогии с прошлыми примерами:

sudo nano /etc/fail2ban/jail.d/wordpress.conf

И добавляем следующие строки:

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
maxretry = 3
port = http,https
bantime = 300

Сохраняем файл и перезагружаем сервис для применения изменений.

Настройка Fail2Ban для ProFTP

Как и в прошлых вариантах, для активации защиты ProFTP создаём jail файл:

sudo nano /etc/fail2ban/jail.d/proftp.conf

И добавляем в него следующие строки:

[proftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = proftpd
logpath  = /var/log/proftpd/proftpd.log
maxretry = 3
bantime = 300

Сохраняем файл и перезагружаем сервис для применения изменений.

Проверка статуса Fail2Ban

После того, как вы настроили сервис и создали все необходимые конфигурации, можно просмотреть полный перечень активированных изоляторов при помощи команды:

sudo fail2ban-client status

Активные изоляторы будут показаны в следующем формате:

Status
|- Number of jail:	6
`- Jail list:	proftpd, pure-ftpd, ssh, sshd, webmin-auth, wordpress

Для проверки статуса конкретного изолятора (например ssh) используйте следующую команду:

sudo fail2ban-client status ssh

Вывод покажет все заблокированные IP адреса:

Status for the jail: ssh
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	14
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	3
   |- Total banned:	3
   `- Banned IP list:	209.208.62.183 221.181.185.19 222.186.30.112

Итог

Сегодня мы рассмотрели лишь небольшую часть возможных конфигураций для Fail2Ban, но этого вполне достаточно для базовой защиты. Не пренебрегайте безопасностью своего сервера. Fail2Ban один из немногих простейших инструментов, призванных помочь вам в этом.


Автор: Владислав Лищенко / HomeHosted.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *