Fail2Ban — это система защиты сервера от автоматизированных атак и попыток подбора паролей. Она анализирует журналы системы и автоматически блокирует IP-адреса, с которых выполняются подозрительные действия, такие как многократные неудачные попытки входа по SSH.
Fail2Ban рекомендуется устанавливать на любой VPS или выделенный сервер, доступный из интернета.
В данной инструкции рассмотрена настройка Fail2Ban на Ubuntu, Debian и других Linux-дистрибутивах.
Что потребуется
Перед началом убедитесь, что у вас есть:
- VPS или выделенный сервер с Linux;
- Root-доступ к серверу;
- SSH-доступ к серверу;
- Обновленная операционная система.
Шаг 1. Обновление системы
Обновите систему перед установкой:
apt update && apt upgrade -y
Шаг 2. Установка Fail2Ban
Установите пакет Fail2Ban:
apt install fail2ban -y
Проверьте успешность установки:
fail2ban-client --version
Шаг 3. Проверка работы службы
Проверьте состояние сервиса:
systemctl status fail2ban
Если служба не запущена, выполните:
systemctl enable fail2ban
systemctl start fail2ban
Шаг 4. Создание локальной конфигурации
Не рекомендуется изменять файл:
/etc/fail2ban/jail.conf
Создайте локальный файл настроек:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Откройте его для редактирования:
nano /etc/fail2ban/jail.local
Шаг 5. Настройка защиты SSH
Найдите раздел:
[sshd]
Убедитесь, что он содержит следующие параметры:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = %(sshd_log)s
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
Описание параметров:
maxretry— количество неудачных попыток входа;findtime— период, в течение которого подсчитываются ошибки;bantime— срок блокировки IP-адреса.
В данном примере IP будет заблокирован на 1 час после 5 неудачных попыток входа за 10 минут.
Шаг 6. Добавление доверенных IP-адресов
Чтобы избежать случайной блокировки собственного IP, укажите его в параметре:
ignoreip = 127.0.0.1/8 YOUR_IP
Пример:
ignoreip = 127.0.0.1/8 192.168.1.100
Можно указать несколько адресов через пробел.
Шаг 7. Перезапуск Fail2Ban
После внесения изменений перезапустите службу:
systemctl restart fail2ban
Проверьте статус:
systemctl status fail2ban
Шаг 8. Проверка активных правил
Посмотреть список активных фильтров:
fail2ban-client status
Пример вывода:
Status
|- Number of jail: 1
`- Jail list: sshd
Посмотреть заблокированные IP:
fail2ban-client status sshd
Пример:
Banned IP list: 192.168.1.50
Шаг 9. Разблокировка IP-адреса
Для удаления IP из блокировки:
fail2ban-client set sshd unbanip IP_ADDRESS
Пример:
fail2ban-client set sshd unbanip 192.168.1.50
Шаг 10. Просмотр журналов
Проверить журнал Fail2Ban:
journalctl -u fail2ban
Для просмотра новых событий в реальном времени:
journalctl -u fail2ban -f
Дополнительная защита веб-сервера
Fail2Ban может защищать:
- SSH;
- Nginx;
- Apache;
- FTP-серверы;
- Почтовые серверы;
- WordPress;
- Панели управления сервером.
Список доступных фильтров:
ls /etc/fail2ban/filter.d/
Частые ошибки
Jail не отображается в статусе
Проверьте конфигурацию:
fail2ban-client -d
Fail2Ban не блокирует IP
Убедитесь, что указан правильный путь к журналу SSH и служба имеет доступ к логам.
Заблокирован собственный IP
Подключитесь через консоль VPS и выполните:
fail2ban-client set sshd unbanip YOUR_IP
После этого добавьте IP в параметр ignoreip.
Fail2Ban не запускается
Проверьте журнал ошибок:
journalctl -xeu fail2ban
Рекомендации по безопасности
- Используйте SSH-аутентификацию по ключу.
- Отключите вход по паролю.
- Измените стандартный SSH-порт.
- Настройте Firewall.
- Регулярно обновляйте систему.
- Добавьте собственный IP в список исключений.
Fail2Ban является одним из самых эффективных и простых способов защиты VPS от автоматических атак и должен использоваться практически на каждом сервере, доступном из интернета.