Защита вашего сервера от атак методом перебора паролей – это необходимость. Вопрос в том, как именно? К счастью для вас, Fail2Ban находится буквально за углом, чтобы защитить ваш сервер, но конфигурация Fail2Ban по умолчанию требует некоторой настройки для достижения оптимальной безопасности. Не волнуйтесь, этот учебник покрывает вас.
В этом учебнике вы узнаете, как настроить Fail2Ban и отпугнуть атаки методом перебора паролей, обеспечив безопасность вашего SSH-сервера.
Готовы? Читайте, чтобы оптимизировать безопасность вашего SSH-сервера!
Предварительные требования
Этот учебник включает пошаговые инструкции. Если вы хотите следовать за ними, убедитесь, что у вас есть следующее:
- Серверы Ubuntu и Debian – В этом учебнике используется сервер с установленной Ubuntu 18.04 LTS для настройки Fail2Ban и сервер Debian 10 для тестирования конфигураций блокировки Fail2Ban.
- Root доступ или привилегии sudo на сервере для выполнения команд от имени суперпользователя.
- Fail2Ban установлен на сервере Ubuntu или Debian.
Настройка базового брандмауэра
Fail2Ban защищает ваш сервер, отслеживая журналы и блокируя IP-адреса, совершающие слишком много попыток входа в течение определенного времени. Но сначала вы настроите базовый брандмауэр, где сможете добавлять правила для блокировки вредоносных действий на вашем сервере.
1. Сначала выполните команду service
ниже, чтобы остановить Fail2Ban (fail2ban stop
) от запуска. Останавливайте Fail2Ban при внесении изменений в ваши файлы конфигурации, чтобы вы могли протестировать изменения и убедиться, что они работают как ожидалось.

2. Выполните команду apt install
для установки Sendmail
и IPTables-persistent
. Sendmail – это программа, которую использует Fail2Ban для уведомления вас, когда он блокирует IP-адрес. IPTables-persistent – это программа, которая сохраняет ваши измененные настройки конфигурации в файле /etc/sysconfig/iptables.
Установка этих программ сохраняет настройки вашего брандмауэра неизменными, даже если произойдет что-то неожиданное, например, сбой в электропитании.
Теперь выполните каждую команду iptables
ниже, чтобы настроить ваш брандмауэр. Эти команды не будут генерировать вывод, но добавят четыре правила в ваш брандмауэр. Эти правила либо разрешают, либо блокируют подключения к вашему серверу.

4. Запустите команду iptables
ниже, чтобы просмотреть сводку того, что вы настроили в своем брандмауэре.
Ниже выделены правила, которые вы добавили в свой брандмауэр.

5. Затем выполните следующие команды, чтобы сохранить ваши правила в файле /etc/sysconfig/iptables-config и запустить сервис Fail2Ban. Файл iptables-config содержит все ваши постоянные правила брандмауэра.
Fail2Ban автоматически добавит несколько правил в ваш брандмауэр для защиты вашего сервера.
6. Наконец, повторно выполните команду iptables
ниже, чтобы просмотреть ваши правила брандмауэра.
Как показано ниже, выделены красным новые правила, которые Fail2Ban добавил в ваш брандмауэр.

Настройка локальной конфигурации Fail2Ban
Теперь, когда у вас работает базовый брандмауэр, пришло время настроить ваш локальный файл конфигурации Fail2Ban, чтобы обеспечить большую безопасность вашего сервера. В этом руководстве используется файл конфигурации /etc/fail2ban/jail.conf, так как он содержит все необходимые параметры для настройки глобальных настроек приложения Fail2Ban.
Возможно, вам захочется создать пользовательские правила для вашего SSH-сервера. Если это так, то вы создадите новый файл jail.local (на основе файла jail.conf) и поместите в него правила, специфичные для SSH. Это позволит вам переопределить настройки в файле jail.conf для вашего сервера.
1. Запустите команду awk
ниже, чтобы выполнить следующее:
- Выведите содержимое (
'{ printf "# "; print; }'
) файла/etc/fail2ban/jail.conf
. - Создайте файл с именем jail.local (на основе файла jail.conf), который можно использовать для переопределения настроек по умолчанию в файле jail.conf.
- Отправьте содержимое файла
/etc/fail2ban/jail.conf
в командуtee
. Это запишет содержимое файлаjail.conf
на вашем локальном файловом хранилище (/etc/fail2ban/jail.local
).

2. После создания файла jail.local выполните следующую команду ls
. Команда перечислит содержимое каталога Fail2Ban вашего сервера (/etc/fail2ban
), чтобы убедиться, что ваш файл jail.local создан правильно.
Если вы видите новый файл jail.local, как показано ниже, то ваш локальный файл был создан правильно.

3. Откройте файл /etc/fail2ban/jail.local в вашем предпочтительном текстовом редакторе и перейдите к разделу [ssh].
Раскомментируйте опции [sshd] и enabled, удалив символ # перед опциями, как показано ниже, чтобы включить SSH.
С этого момента и до конца руководства удаляйте символ # перед разделами или опциями, чтобы включить их.

4. Прокрутите вниз и раскомментируйте раздел [DEFAULT], показанный ниже. Этот раздел предназначен для настройки параметров по умолчанию для Fail2Ban. Любые настройки в этом разделе будут применяться ко всем jails, которыми управляет Fail2Ban.

5. Затем прокрутите вниз до раздела bantime и установите bantime в 60 минут. Опция bantime устанавливает время в минутах, в течение которого IP-адрес блокируется после неудачной попытки входа.
Настройка по умолчанию для времени бана составляет 600 секунд (10 минут). Вы можете настроить этот параметр по своему усмотрению, но важно отметить, что чем ниже установлено время бана, тем больше нагрузка будет на ваш сервер.

6. Перейдите к параметрам findtime и maxretry. Оставьте значение findtime без изменений (10m), а значение maxretry установите на 3.
Параметр findtime устанавливает количество минут, в течение которого IP-адрес может неудачно пытаться войти в систему, прежде чем он будет заблокирован. Параметр maxretry устанавливает количество неудачных попыток входа в систему, прежде чем IP-адрес будет заблокирован.
Значение по умолчанию для параметра findtime составляет 10 минут, а для параметра maxretry — 5 попыток в течение 10-минутного периода. Следовательно, IP-адрес, который неудачно пытается войти в систему 5 раз в течение 10 минут, будет заблокирован.

7. Прокрутите вниз, раскомментируйте и настройте параметры destemail, sender и mta:
- destemail – Введите адрес электронной почты, на который Fail2Ban отправляет уведомления.
- sender – Установите адрес в поле «От кого» в письме, которое Fail2Ban отправляет на адрес destemail.
- mta – Оставьте значение по умолчанию (sendmail). Параметр mta устанавливает агента доставки электронной почты, который использует Fail2Ban для отправки уведомлений.

8. Перейдите к параметрам действия, как показано ниже, и раскомментируйте параметр action_mwl. Это позволит Fail2Ban отправлять вам электронные письма отчетов о журнале, которые вы можете изучить, чтобы более детально исследовать возможные проблемы безопасности на вашем сервере.
Сохраните изменения и выйдите из текстового редактора.

9. Теперь выполните нижеуказанные команды, чтобы перезапустить ваш службу fail2ban
.
10. Наконец, выполните команду ниже, чтобы проверить статус вашей службы fail2ban
. sudo service fail2ban status
. Если служба Fail2Ban работает, вы получите вывод, аналогичный приведенному ниже.
Если служба Fail2Ban работает, вы получите вывод, аналогичный приведенному ниже.

Проверка конфигураций блокировки
Вы только что настроили Fail2Ban, поэтому пришло время проверить, действительно ли конфигурации блокировки работают. Попробуйте несколько неудачных попыток входа через SSH на ваш сервер Fail2Ban с вторичного сервера и посмотрите, будет ли этот вторичный сервер заблокирован.
1. Войдите в свой вторичный сервер (Debian) и выполните команду ниже, чтобы подключиться по SSH к вашему серверу Fail2Ban.
В этой демонстрации используется сервер Debian 10 с IP-адресом 134.122.20.103 для ssh
на сервер fail2ban
с IP-адресом 69.28.83.134
.
2. Введите случайный пароль при запросе и нажмите Enter.
При первой попытке сервер Fail2Ban остановит попытку входа по SSH и выведет сообщение Permission denied, как показано ниже. Повторите попытку входа по SSH еще два-три раза, и сервер Fail2Ban в конечном итоге перестанет реагировать на вашу попытку входа по SSH.
На этом этапе вы больше не получите сообщения Permission denied, а увидите пустой экран. Пустой экран указывает на то, что ваш второй сервер (Debian) был заблокирован сервером Fail2Ban.

Но возможно, у вас уже есть список IP-адресов, которые нужно заблокировать на вашем сервере Fail2Ban. Если это так, откройте файл jail.local и перейдите к разделу [DEFAULT]. Раскомментируйте параметр ignoreip и укажите IP-адреса для блокировки, как показано ниже.
Адрес может быть либо несколькими отдельными записями IPv4 или IPv6, либо разделенными запятыми.

3. На вашем сервере Fail2Ban (Ubuntu) повторно выполните команду iptables
, указанную ниже, чтобы просмотреть правила вашего брандмауэра.
Обратите внимание на то, что есть новое правило, отклоняющее попытки входа по SSH с IP-адреса 134.122.20.103.
Вы также получите электронное письмо от Fail2Ban при успешной блокировке с прикрепленным файлом журнала, если у вас настроена программа sendmail на вашем сервере Fail2Ban. Уведомление по электронной почте указывает на то, что Fail2Ban успешно остановил атаку методом перебора и защитил ваш сервер от потенциального ущерба.

Заключение
На протяжении этого учебного пособия вы узнали, как настроить Fail2Ban на сервере Ubuntu. На данный момент вы должны быть отлично подготовлеными к тому, чтобы защитить ваш SSH-сервер от атак методом перебора паролей.
А что если воспользоваться этим новым знанием на полную катушку? Возможно, начните с блокировки IP-адресов на всех портах с помощью Fail2Ban на хосте Docker?