Fail2Ban: Установка и Настройка — Ubuntu, CentOS — Защита SSH

Fail2ban помогает защищать Linux сервера от DDOS и brute-force атак.

Он сканирует логи на наличие признаков вредоносной активности и на определенное время банит подозрительные IP адреса с помощью iptables.

В этой статье описана установка и настройка fail2ban в Ubuntu, CentOS и подобных им Linux дистрибутивах.

Также вы узнаете как защитить SSH сервер от DDOS и brute-force атак и как вручную разбанить IP адрес, если он был забанен через fail2ban

Установка Fail2Ban в Ubuntu

Выполните следующую команду для установки fail2ban в Ubuntu:

$ sudo apt-get install fail2ban

Установка Fail2Ban в CentOS

В базовом репозитории CentOS пакет fail2ban отсутствует, но он может быть взят из EPEL.

Дельный Совет: Установите EPEL репозиторий одной командой! Читать далее →

Установите fail2ban после добавления EPEL репозитория:

$ sudo yum install fail2ban

Настройка Fail2Ban

По умолчанию, настройки fail2ban хранятся в файле /etc/fail2ban/jail.conf.

Однако, не рекомендуется редактировать /etc/fail2ban/jail.conf напрямую.

Вместо него мы будем работать с его локальной копией — jail.local

Создайте локальную копию конфига fail2ban:

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

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

$ sudo vi /etc/fail2ban/jail.local

Обратите внимание на глобальные опции в секции [DEFAULT]

В ней прописываются базовые правила, которым по умолчанию будет следовать fail2ban:

Опция Описание
ignoreip Не блокировать IP адреса из этого списка. Если IP адресов несколько, то они разделяются пробелами.
bantime Время бана в секундах. По умолчанию — 10 минут. Для постоянного бана используйте любое отрицательное число.
findtime Длительность интервала времени в секундах, в течении которого fail2ban отслеживает подозрительную активность. По умолчанию — 10 минут.
maxretry Количество подозрительных совпадений, после которых IP адрес получает бан. По умолчанию — 3 попытки.

Для более тонкой настройки, каждый jail (секция с правилами для конкретного приложения) можно настраивать индивидуально.

Защита SSH Сервера с помощью Fail2Ban

Закончив с секцией [DEFAULT], спуститесь ниже и приступите к настройке секции [ssh-iptables]:

[ssh-iptables]

# 'enabled = true' означает что защита SSH включена.
# Ее можно отключить с помощью 'enabled = false'.
enabled  = true
# Использовать фильтр: /etc/fail2ban/filter.d/sshd.conf
filter   = sshd
# Действия, выполняемые при бане IP адреса:
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# Отправлять уведомления на admin@example.com
           sendmail-whois[name=SSH, dest=admin@example.com, sendername="Fail2Ban"]
# Файл с логами, которые будет отслеживать Fail2Ban:
logpath  = /var/log/secure
# если в течении 1 часа
findtime    = 3600
# произведено 5 неудачных попыток залогиниться
maxretry    = 5
# IP адрес будет забанен на 24 часа
bantime     = 86400

fail2ban используется для защиты не только одного SSH сервера. Изначально fail2ban идет с фильтрами для кучи разных сервисов (SSH, apache, asterisk, postfix и т.д.), но по умолчанию активирована только секция [ssh-iptables]

Тонкая Настройка Фильтров Fail2Ban

Если хотите добавить новый фильтр либо отредактировать существующий, то все фильтры можно найти в директории /etc/fail2ban/filter.d

Например, чтобы изменить фильтр fail2ban для OpenSSH, отредактируйте следующий файл:

$ sudo vi /etc/fail2ban/filter.d/sshd.conf

Запуск Fail2Ban

fail2ban, по умолчанию, уже добавлен в автозагрузку.

Не забывайте перезапускать fail2ban каждый раз, как вносите какие-либо изменения в его настройки.

$ sudo service fail2ban restart

Тестирование Fail2Ban

Чтобы убедиться что fail2ban работает и увидеть какие правила он добавляет на фаерволе, загляните в iptables:

$ sudo iptables -L

Разблокировка IP Адреса в Fail2Ban

Используйте следующую команду чтобы вручную разблокировать IP адрес, который был забанен через fail2ban:

$ sudo fail2ban-client set JAIL unbanip IP

Например, удалим из fail2ban IP адрес 192.168.1.101, который был забанен в соответствии с правилами из секции [ssh-iptables]:

$ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.101

One Reply to “Fail2Ban: Установка и Настройка — Ubuntu, CentOS — Защита SSH”

  1. Спасибо! А то я уже устал руками прописывать. Только начал с сайтами полноценно работать, засветил домен на стаковерфлоу, и нашёлся тут же какой-то дурачок просто жизни от него нету. Отличная статья, ёмко и по делу

Добавить комментарий