
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