Защита SSH с помощью Fail2Ban

Сегодня рассмотрим защиту SSH-сервиса от атак  Brute Force с помощью программы Fail2Ban, которая эффективно отслеживает сетевую активность и блокирует запросы с устройств, IP-адрес которых попал в чёрный список.

Установка Fail2Ban

Устанавливать Fail2Ban будем на операционную систему Ubuntu Server 16.04 |17.04 | 18.04.
Перед установкой программы сперва выполним обновление:

sudo apt update
sudo apt dist-upgrade -y

Пакет Fail2Ban присутствует в официальном репозитории, поэтому его можно установить одной командой:

sudo apt install fail2ban -y

Настройка Fail2Ban для SSH

Все правки конфигурации мы будем производить в файле /etc/fail2ban/jail.local, этот файл будет подключен автоматически и его настройки имеют наивысший приоритет.

Откройте файл /etc/fail2ban/jail.local:

sudo nano /etc/fail2ban/jail.local

Если файл отсутствует, то сначала создадим его:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

В первую очередь нас интересует секция [DEFAULT]. В ней содержатся основные правила:

ignoreip — указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля ваш IP не будет заблокирован.
bantime — время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
findtime — интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
maxretry — число неудавшихся попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.

Файл конфигурации fail2ban имеет по умолчанию подготовленные секции для различных сервисов. Найдём в нём секцию [sshd] (в вашей системе это может быть [ssh] или [ssh-iptables], если это так, то используйте ту секцию, которая у вас есть):

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth.log
findtime    = 600
maxretry    = 3
bantime     = 43200

enabled — состояние (true/false) фильтра, показывающее, включен он или выключен.
filter — какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
action — действия, выполняемые при бане IP-адреса.
logfile — файл с логами, которые будет отслеживать fail2ban.

Исходя из этого, конфиг, бан для IP на 12 часов, если с него в течение 10 минут было произведено 3 неудачных попытки авторизации

Можно подправить значения на свои. Далее сохраняемся (Ctrl+O) и выходим (Ctrl+X), перезапустим fail2ban для применения настроек:

sudo service fail2ban restart

К слову, fail2ban ведёт лог, поэтому если не удаётся перезапустить программу из-за некорректной конфигурации, то стоит заглянуть в лог:

tail -n 20 -f /var/log/fail2ban.log

Параметр -n указывает, сколько последних строк из лога вывести на экран.

Для выполнения проверки достаточно несколько раз ввести неправильный пароль при авторизации и убедиться, что дальнейшие запросы от вас не обрабатываются. Следует обратить внимание на следующее:

желательно проверку производить не с того же IP, с которого осуществляете настройку (чтобы иметь возможность разбанить себя и отредактировать конфиг).
для проверки время бана лучше выставить поменьше.
необходимо убедиться, что IP, с которого производится проверка, не был указан в ignoreip.

Заключение

Мы рассмотрели использование fail2ban для защиты SSH от брутфорса. Аналогичным образом можно защитить FTP, apache, postfix, dovecot и многие другие сервисы. Вот например статьи для защиты WordPress, защита OpenVPN или защита phpmyadmin .Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.

Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Защита SSH с помощью Fail2Ban
5 (100%) 1 vote

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *