105207879

Настройка Fail2Ban для защиты FTP‑сервера (vsftpd)

Разберу настройку Fail2Ban для защиты FTP‑сервера (vsftpd) от брутфорс‑атак пошагово.

Шаг 1. Установка Fail2Ban

sudo apt update
sudo apt install fail2ban -y

Запустите и включите автозапуск службы:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Проверьте статус:

sudo systemctl status fail2ban

Шаг 2. Создание конфигурации для vsftpd

Создайте файл конфигурации jail для vsftpd:

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

Вставьте следующее содержимое:

[vsftpd]
enabled = true
port = ftp,ftp-data,ssh
protocol = tcp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
findtime = 600
bantime = 3600

Пояснения к параметрам:

  • enabled = true — активирует защиту для vsftpd;
  • port — порты, которые мониторятся (FTP: 21, 20; можно добавить SSH для защиты);
  • filter = vsftpd — указывает на используемый фильтр логов;
  • logpath — путь к логам vsftpd (убедитесь, что логирование включено);
  • maxretry = 3 — количество неудачных попыток до блокировки;
  • findtime = 600 (10 минут) — временной интервал, в течение которого учитываются попытки;
  • bantime = 3600 (1 час) — длительность блокировки IP‑адреса.

Шаг 3. Настройка логирования vsftpd

Убедитесь, что vsftpd пишет логи. В файле /etc/vsftpd.conf должны быть строки:

xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES
xferlog_file=/var/log/vsftpd.log

Если файла логов нет, создайте его и задайте права:

sudo touch /var/log/vsftpd.log
sudo chown root:root /var/log/vsftpd.log
sudo chmod 644 /var/log/vsftpd.log

Перезапустите vsftpd:

sudo systemctl restart vsftpd

Шаг 4. Проверка фильтра Fail2Ban

Fail2Ban должен иметь готовый фильтр для vsftpd. Проверьте его наличие:

ls /etc/fail2ban/filter.d/ | grep vsftpd

Должен отобразиться файл vsftpd.conf.

Если его нет, создайте фильтр вручную:

sudo nano /etc/fail2ban/filter.d/vsftpd.conf

Содержимое файла:
[Definition]
failregex = ^%(__prefix_line)s.* \[pid \d+\] \[.*\]FAIL LOGIN: Client "<HOST>"\s*$
^%(__prefix_line)s.* \[pid \d+\] \[.*\]ERROR: Failed to change directory to .* Client "<HOST>"\s*$
ignoreregex =

Шаг 5. Настройка общей конфигурации Fail2Ban (опционально)

Отредактируйте основной конфиг:

sudo nano /etc/fail2ban/jail.local

Добавьте или проверьте следующие параметры:
[DEFAULT]
# Настройки по умолчанию для всех джейлов
bantime = 3600
findtime = 600
maxretry = 3

# Используемый бэкенд для мониторинга логов
backend = auto

# Действия при блокировке (по умолчанию — iptables)
banaction = iptables-multiport

# Email оповещения (опционально)
destemail = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
sender = Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.
mta = sendmail

Шаг 6. Запуск и проверка работы

Перезапустите Fail2Ban, чтобы применить настройки:

sudo systemctl restart fail2ban

Проверьте, что джейл vsftpd загружен:

sudo fail2ban-client status
sudo fail2ban-client status vsftpd

В выводе команды status vsftpd должна быть информация о количестве заблокированных IP‑адресов и активных правилах.

Шаг 7. Тестирование

Попробуйте подключиться к FTP с неверным паролем 3 раза подряд с одного IP‑адреса.
Проверьте статус джейла:В списке заблокированных хостов должен появиться ваш IP.
sudo fail2ban-client status vsftpd
Попробуйте подключиться ещё раз — соединение должно быть отклонено.
Чтобы снять блокировку для теста:
sudo fail2ban-client set vsftpd unbanip <ваш_IP>

Шаг 8. Мониторинг и управление

Просмотр логов Fail2Ban:
sudo tail -f /var/log/fail2ban.log
Список всех заблокированных IP:
sudo fail2ban-client banned
Разблокировка конкретного IP:
sudo fail2ban-client set vsftpd unbanip <IP-адрес>

Важные замечания

  • Лог‑файл. Убедитесь, что путь в logpath соответствует реальному расположению логов vsftpd. Если вы используете нестандартную конфигурацию, проверьте, куда пишутся логи.
  • Длительность блокировки. Для большей безопасности можно увеличить bantime (например, до 86400 секунд = 24 часа) или maxretry до 2.
  • Email‑оповещения. Настройте destemail и mta, чтобы получать уведомления о блокировках.
  • Брандмауэр. Fail2Ban использует iptables по умолчанию. Если вы используете UFW, убедитесь, что правила корректно применяются.
  • Производительность. При большом количестве атак Fail2Ban может потреблять ресурсы. Следите за нагрузкой.
Добавить комментарий