Безопасность сервера: Как ограничить количество попыток входа по SSH, чтобы защититься от подбора пароля (Fail2Ban)?
Fail2Ban — это утилита для защиты сервера от брутфорс-атак путём автоматической блокировки IP-адресов, с которых фиксируется слишком много неудачных попыток входа. Рассмотрим полный процесс установки и настройки.
## Установка Fail2Ban
Для Debian/Ubuntu:
sudo apt update && sudo apt install fail2ban -y
Для CentOS/RHEL:
sudo yum install epel-release -y && sudo yum install fail2ban -y
## Создание конфигурационного файла
Никогда не редактируйте файл `/etc/fail2ban/jail.conf` напрямую — он перезаписывается при обновлении. Создайте локальный файл:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Или создайте отдельный файл для SSH:
sudo nano /etc/fail2ban/jail.d/sshd.local
## Настройка параметров защиты SSH
Добавьте следующее содержимое в файл:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 600
bantime = 3600
ignoreip = 127.0.0.1/8 ::1
Описание параметров:
— **enabled** — включает правило для SSH
— **port** — порт SSH (можно указать числовое значение, например 2222)
— **logpath** — путь к журналу авторизации (для CentOS: `/var/log/secure`)
— **maxretry** — максимальное количество неудачных попыток (рекомендуется 3–5)
— **findtime** — временной интервал в секундах, в течение которого считаются попытки (600 = 10 минут)
— **bantime** — время блокировки IP в секундах (3600 = 1 час; -1 = навсегда)
— **ignoreip** — IP-адреса, которые никогда не блокируются
## Запуск и управление службой
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
## Полезные команды для администрирования
Просмотр статуса jail для SSH:
sudo fail2ban-client status sshd
Разблокировать конкретный IP:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Вручную заблокировать IP:
sudo fail2ban-client set sshd banip 10.0.0.5
Просмотр заблокированных IP через iptables:
sudo iptables -L f2b-sshd -n —line-numbers
## Дополнительные рекомендации
1. **Смените стандартный порт SSH** (22) на нестандартный — это снизит количество автоматических атак.
2. **Используйте аутентификацию по ключу** вместо пароля и отключите парольный вход в `/etc/ssh/sshd_config` (`PasswordAuthentication no`).
3. **Увеличьте bantime** до нескольких дней для повторно заблокированных IP с помощью параметра `bantime.increment = true`.
4. **Настройте уведомления по email** через параметр `destemail` и `action = %(action_mwl)s` для получения отчётов о блокировках.
Комбинация Fail2Ban с ключевой аутентификацией и нестандартным портом SSH обеспечивает надёжную защиту от большинства автоматизированных атак на сервер.
