Brute-force атаки на SSH и веб-приложения это одна из самых распространённых угроз для серверов с открытым доступом в интернет.
На заметку:
На нашем сайте вы можете подключить профессиональную DDoS защиту для любого сайта с доменом старше 1 года:
Как включить защиту от DDoS-атак
Также можно настроить DDoS защиту самостоятельно.
Fail2Ban - это эффективное и простое в использовании средство автоматической защиты от таких атак.
В этой статье мы рассмотрим, как установить Fail2Ban, настроить его для защиты SSH и веб-сервисов, а также как проверить его работу.
Fail2Ban — это демон, который анализирует журналы логов (например, auth.log, nginx-access.log) и в случае подозрительной активности блокирует IP-адрес нарушителя с помощью iptables, firewalld или nftables.
Основные возможности:
- автоматическая блокировка IP после заданного числа неудачных попыток;
- гибкая настройка "тюрем" (jail) для различных сервисов;
- поддержка множества фильтров и логов;
- масштабируемость и возможность расширения.
На Debian/Ubuntu:
apt update
apt install fail2ban -y
На CentOS:
dnf install fail2ban
После установки рекомендуется сразу включить и запустить сервис:
systemctl enable fail2ban
systemctl start fail2ban
Проверить статус:
systemctl status fail2ban
Конфигурация по умолчанию хранится в /etc/fail2ban/jail.conf, но редактировать его не рекомендуется.
Создайте копию:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Откройте файл:
nano /etc/fail2ban/jail.local
Советы по nano:
Ctrl-W — поиск
Ctrl-K — удалить строку
ПКМ — вставить
Ctrl-X, y, Enter — сохранить и выйти
Пример настройки секции [sshd]:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600
findtime = 600
Описание параметров:
- enabled: включение защиты
- port: используемый порт SSH
- logpath: путь к логу
- maxretry: количество попыток
- bantime: время бана в секундах
- findtime: окно попыток
fail2ban-client status
fail2ban-client status sshd
После 5 неудачных подключений IP будет заблокирован.
Разблокировать IP вручную:
fail2ban-client set sshd unbanip 193.17.183.123
Fail2Ban можно использовать для защиты nginx, WordPress и других сервисов.
Пример "тюрьмы" для Nginx:
[nginx-wp-login]
enabled = true
port = http,https
filter = nginx-wp-login
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
Создайте фильтр:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*wp-login\.php.*HTTP/.*" 404.*$
^<HOST> -.*"(GET|POST).*404.*$
ignoreregex =
Перезапустите Fail2Ban:
systemctl restart fail2ban
Журнал находится в:
/var/log/fail2ban.log
Показывает IP, причины блокировки и время.
Fail2Ban — один из самых простых и эффективных способов автоматической защиты серверов от brute-force атак.
После настройки он работает в фоне и не требует постоянного контроля.
Его можно гибко адаптировать под любые сервисы.
Вы также можете подключить профессиональную DDoS защиту на нашем сайте:
Как включить защиту от DDoS-атак
Fail2Ban может быть частью базовой политики безопасности любого Linux-сервера.