Помощь

Обезопасьте SSH от попыток подбора пароля. Применение Fail2ban

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

Еще одним методом защиты может быть применение инструмента Fail2ban. Fail2ban анализирует журналы работающих на сервере служб и, при обнаружении подозрительной активности, блокирует IP-адреса потенциальных нарушителей. Fail2ban может использоваться для защиты различных служб, таких как Apache, FTP, dovecot и других.

В данной статье мы рассмотрим базовую настройку Fail2ban для обеспечения защиты службы SSH от атак подбора пароля.

Для установки Fail2ban на системах Ubuntu/Debian, выполните следующее:

sudo apt update
sudo apt install fail2ban -y

Для установки на CentOS:

sudo yum update && yum install epel-release
sudo yum install fail2ban

Добавьте Fail2ban в список программ, запускаемых при старте системы:

sudo systemctl enable fail2ban

На Ubuntu после установки Fail2ban защита для SSH будет активирована автоматически. По умолчанию Fail2ban будет блокировать IP-адреса на 10 минут, если в течение 10 минут было зарегистрировано 5 неудачных попыток аутентификации.

Дополнительные параметры работы инструмента могут быть изменены в его настройках.

Файл конфигурации Fail2ban

Настройки Fail2ban сохраняются в конфигурационном файле /etc/fail2ban/jail.conf.

Настройки разделены на разделы. В разделе [DEFAULT] указаны общие параметры, которые определяют функциональность Fail2ban в целом и действуют для большинства служб. Конкретные параметры для определенной службы указываются в соответствующем разделе (например, [sshd], [apache-auth], [vsftpd]).

Рекомендуется не изменять параметры напрямую в файле jail.conf. Вместо этого создайте новый файл jail.local в той же директории.

Вы можете сделать копию оригинального файла (это удобно, если вы планируете настраивать Fail2ban для защиты нескольких служб, а не только SSH):

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

Также вы можете создать пустой файл с таким именем и внести необходимые параметры:

sudo touch /etc/fail2ban/jail.local

В новом файле достаточно указать только те настройки, значения которых вы хотите изменить. Для всех остальных параметров, которые вы не указали отдельно, Fail2ban будет использовать значения по умолчанию.

Настройка защиты SSH

Откройте файл jail.local для редактирования:

sudo nano /etc/fail2ban/jail.local

Приведен пример настроек, которые можно добавить в файл:

[DEFAULT]
ignoreip = 95.111.123.21

[sshd]
enabled  = true
findtime = 120
maxretry = 3
bantime = 43200

Эти настройки означают, что если с какого-либо IP-адреса, за исключением указанного в ignoreip, в течение 2 минут будет выполнено 3 неудачных попытки авторизации, Fail2ban заблокирует этот адрес на 12 часов.

В секции DEFAULT могут быть указаны параметры, такие как период блокировки (bantime), количество попыток (maxretry) и т. д. Однако в данной инструкции мы определим большинство настроек в отдельной секции для SSH, а в разделе DEFAULT укажем только параметр ignoreip.

Параметр ignoreip представляет собой "белый список" IP-адресов, которые не будут заблокированы при неудачных попытках подключения. Вы можете указать свой собственный IP-адрес (если он статический) или адреса, с которых вы подключаетесь к серверу. Можно указать несколько адресов через пробел или маску подсети.

Если вы не собираетесь использовать "белый список", строку можно просто закомментировать, добавив перед ней символ #.

Секция [sshd] содержит настройки для работы Fail2ban с конкретной службой — SSH. Обратите внимание, что в зависимости от системы, эта секция может называться [sshd], [ssh] или [ssh-iptables] (можно проверить в файле jail.conf).

Как упомянуто ранее, если в файле отсутствует определенный параметр, Fail2ban будет использовать значения по умолчанию. Следовательно, нужно указать только те настройки, значения которых вы хотите изменить.

В приведенных настройках указаны следующие параметры:

  1. enabled: Этот обязательный параметр определяет, включена ли секция. Чтобы включить секцию, значение должно быть true (по умолчанию). Обратите внимание, что в CentOS этот параметр по умолчанию может быть закомментирован. Если вы редактируете копию основного файла jail.conf, убедитесь, что эта строка раскомментирована (удален символ #), чтобы активировать секцию.

  2. bantime: Этот параметр определяет продолжительность блокировки в секундах, то есть период времени, на который подозрительный IP-адрес будет заблокирован.

  3. maxretry: Этот параметр определяет количество неудачных попыток в течение периода findtime, после которых будет выполнена блокировка.

  4. findtime: Этот параметр определяет период времени в секундах, в течение которого действие (в данном случае, неудачная попытка подключения) должно повториться определенное количество раз (maxretry), чтобы произошла блокировка.

Дополнительно, в этих настройках может быть указаны и другие параметры, такие как:

  • port: Порт, используемый для данной службы, в данном случае SSH. Если SSH использует нестандартный порт (не 22), он должен быть указан здесь. Если порт стандартный, этот параметр указывать необязательно.

  • logpath: Путь к файлу лога, который анализирует Fail2ban. По умолчанию это стандартный путь к логу sshd.

  • action: Действие, выполняемое при блокировке IP-адреса. По умолчанию, подозрительный IP блокируется путем изменения правил iptables.

Для полной блокировки всех портов для данного IP можно использовать: action = iptables-allports. Если на сервере используются firewalld или ufw, для их фильтрации можно указать соответствующее значение для параметра action, такие как firewallcmd-ipset и ufw.

Для просмотра содержимого директории /etc/fail2ban/action.d вы можете использовать команду:

ls /etc/fail2ban/action.d

Это позволит вам увидеть все доступные конфигурационные файлы действий Fail2ban.

После внесения изменений в файл, сохраните его. Затем перезапустите Fail2ban:

 

sudo systemctl restart fail2ban.service 

 

Проверка

После настройки Fail2ban стоит провести проверку его работы. Рекомендуется делать это не сразу, а через несколько часов после сохранения настроек, чтобы получить более наглядные результаты.

Чтобы просмотреть список заблокированных IP-адресов, можно воспользоваться командой iptables:

sudo iptables -L

 

Также, вы можете просмотреть логи работы Fail2ban:

sudo tail /var/log/fail2ban.log

 

Информацию о состоянии и активности Fail2ban также можно получить через его интерфейс:

sudo fail2ban-client status sshd

 

Эти шаги позволят вам убедиться в работоспособности и эффективности настроенной защиты с использованием Fail2ban.

Остались вопросы - пишите