Установка и настройка fail2ban на Ubuntu Server 16.04-20.04

Сегодня рассмотрим установку и настройку Fail2Ban на Ubuntu Server 16.04-20.04. Также рассмотрим защиту SSH-сервера от атак типа Brute Force. И так начнем.

Установка Fail2Ban

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

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

Ubuntu Server 14.04/16.04

Подготовим наш файл конфигурации к мониторингу SSH. Добавим секцию [sshd]:

[sshd]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth.log
findtime = 600
maxretry = 3
bantime  = 43200
ignoreip = 10.5.5.0/24
  • enabled – состояние (true/false) фильтра, показывающее, включен он или выключен.
  • filter – какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
  • action – действия, выполняемые при бане IP-адреса.
  • logpath – файл с логами, которые будет отслеживать fail2ban.
  • ignoreip – указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля ваш IP не будет заблокирован. Также можете указать сразу и подсеть IP-адресов
  • bantime – время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
  • findtime – интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
  • maxretry – число неудавшихся попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.

Ubuntu Server 18.04/20.04

В более новых версиях Ubuntu применяется иной подход к написанию секции [sshd].

[sshd]

enabled =  true
port    =  ssh
logpath =  %(sshd_log)s
backend =  %(sshd_backend)s
findtime = 600
maxretry = 3
bantime  = 43200
ignoreip = 10.5.5.0/24

Разберем что же мы указали в нашем jail.local. Бан для 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 .Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!