Fail2Ban - защита от подбора паролей SSH

В статье о Fail2Ban мы рассмотрим пример защиты SSH-сервиса от брутфорс-атак. Рассматривать настройку Fail2Ban будем на сервере с операционной системой Ubuntu.

1. Установка Fail2Ban на сервер

Fail2ban можно установить на все дистрибутивы, основанные на ядре Linux. Для примера мы будем производить установку на Ubuntu 16.04. Для остальных дистрибутивов, отличных от линейки Debian, таких как Fedora, Centos, RedHat, процесс установки будет отличаться только названием пакетного менеджера того или иного дистрибутива.
 

sudo apt update

sudo apt upgrade

 

Пакет Fail2Ban устанавливается одной командой:

sudo apt install fail2ban -y

 

2. Создание файла конфигурации Fail2Ban

Чтобы не «сломать» Fail2Ban, не нужно редактировать его основной файл конфигурации. Сделайте копию файла конфигурации с названием jail.local:

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

 

Файл /etc/fail2ban/jail.local подключается в работу Fail2Ban автоматически и обрабатывается в приоритетном порядке.

 

3. Настройка файла конфигурации

Чтобы изменить файл конфигурации, откроем его командой:

sudo vim /etc/fail2ban/jail.local

Мы будем вносить изменения в секцию [DEFAULT].

  • Ignoreip – IP -адреса, которые не будут блокироваться. Здесь можно указать ваш IP, если он статичный.
  • bantime - время, на которое Fail2Ban заблокирует подозрительный IP.
  • findtime - время, в которое Fail2Ban определит подозрительный IP.
  • maxretry - число неудачных попыток в установленный период (findtime).


Для применения настроек Fail2Ban его необходимо перезапустить:

sudo service fail2ban restart

Если Fail2Ban не перезапустится, причину можно посмотреть в логе:

tail -f /var/log/fail2ban.log

4. Защита SSH

Файл конфигурации Fail2Ban имеет по умолчанию подготовленные секции для различных сервисов.

Откроем файл конфигурации /etc/fail2ban/jail.local. Нам нужна секция [sshd], также она может называться [ssh-iptables].

  • enabled - состояние фильтра: включен или выключен.
  • filter - параметр отвечает за фильтр, который будет применяться
  • action - действия, выполняемые при бане IP-адреса.
  • logfile - файл с логами, которые будет отслеживать Fail2Ban.

 

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

[sshd]

enabled  = true

filter   = sshd

action   = iptables[name=SSH, port=ssh, protocol=tcp]

logpath  = /var/log/auth.log

findtime    = 120

maxretry    = 3

bantime     = 43200

После внесения изменений необходимо перезапустить Fail2Ban:

sudo service fail2ban restart

Хочется отметить, не имеет никакого смысла делать менее трех попыток установки. В расчет берутся две возможные ошибки при авторизации, включенный CAPS и неправильная раскладка. А чтобы не авторизоваться каждый раз при подключении к серверу, можно настроить авторизацию по ключам https://hoster.ru/faq/5588886-ssh-generaciya-i-avtorizaciya-po-klyucham-na-vps-vds

Таким же методом можно настроить правила для защиты от подбора паролей прочих сервисов на вашем сервере.