Безопасность сервера: Как ограничить количество попыток входа по 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 обеспечивает надёжную защиту от большинства автоматизированных атак на сервер.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.