Александр Бутов
26.07.2019
372

Fail2ban обзор, установка, настройка.

Любой сервис, доступный из Интернета, подвержен атакам злоумышленников. Если сервис требует аутентификации, несанкционированные пользователи и боты будут пытаться проникнуть в систему путем перебора учетных данных. К примеру, сервис SSH станет объектом атак ботов, которые попытаются пройти аутентификацию с помощью стандартных учетных данных. К счастью, сервисы типа fail2ban помогают смягчить такие атаки. Сервис fail2ban динамически корректирует […]

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

К примеру, сервис SSH станет объектом атак ботов, которые попытаются пройти аутентификацию с помощью стандартных учетных данных. К счастью, сервисы типа fail2ban помогают смягчить такие атаки.

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

Общие сведения

Основная идея fail2ban заключается в отслеживании логов общих сервисов для выявления ошибок аутентификации.

Когда fail2ban мониторит логи сервиса, он смотрит на настроенный для этого сервиса фильтр. Фильтр предназначен для определения сбоев аутентификации этого конкретного сервиса на основе сложных регулярных выражений. Шаблоны регулярных выражений определяются в переменной failregex.

К счастью, fail2ban предлагает готовые файлы фильтров для популярных сервисов. Когда строка в файле лога сервиса совпадает с параметром failregex в соответствующем фильтре, fail2ban  выполняет заданное фильтром действие. Действие определяется в переменной action в зависимости от предпочтений администратора.

Действие по умолчанию – блокировка потенциально вредоносного хоста/IP-адреса путем изменения правил брандмауэра iptables. Вы можете расширить это действие –  настроить электронные уведомления администратора с данными о злоумышленнике или строками лога, которые вызвали указанное действие.

Вы также можете изменить цель действия и указать что-то другое вместо стандартного iptables. Этот параметр может быть настолько сложным или простым, насколько этого требует ваша установка; в fail2ban доступно множество различных конфигурационных файлов и опций брандмауэра.

По умолчанию fail2ban блокирует адрес на 10 минут в случае обнаружения трех неудачных попыток авторизации в течение 10 минут. Количество неудачных попыток аутентификации, необходимое для блокировки адреса, переопределяется в разделе SSH конфигурационного файла по умолчанию – он разрешает до 6 попыток. Администратор может настроить этот параметр самостоятельно.

При использовании цели по умолчанию (iptables) для отслеживания SSH-трафика при запуске сервиса fail2ban создает новую цепочку. Он добавляет новое правило в цепочку INPUT, которая направляет весь TCP-трафик, направленный на порт 22, в новую цепочку. В новой цепочке fail2ban вставляет одно правило, которое возвращается в цепочку INPUT.

Это заставляет трафик прыгать в новую цепочку, а затем возвращаться обратно. Сначала это не влияет на трафик. Однако когда IP-адрес превышает количество попыток аутентификации, в начало новой цепочки добавляется правило, которое будет сбрасывать трафик от этого IP-адреса. Когда срок блокировки истечет, правило iptables будет удалено. Цепочка и связанные с ней правила удаляются при выходе из fail2ban.

В данной статье настроим конфигурацию fail2ban для asterisk и ssh. В качестве стенда для выполнения настройки служит centos 7 + Asterisk 15.7.2.

Установка Fail2ban

Инструмент Fail2ban не доступен в официальном репозитории CentOS, но его можно получить в EPEL. Пакет самого репозитория EPEL (Extra Packages for Enterprise Linux) можно добавить из официального репозитория CentOS.

yum install epel-release

Теперь можно установить пакет fail2ban:

yum install fail2ban
Установка fail2ban.

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

systemctl enable fail2ban

Проверьте что всё в порядке

systemctl status fail2ban

Настройка Fail2ban

Сервис Fail2ban хранит настройки в каталоге /etc/fail2ban. В нём можно найти файл jail.conf, содержащий стандартные настройки.

Этот файл перезаписывается при обновлении пакета Fail2ban, потому его редактировать нельзя. Вместо этого нужно создать новый файл по имени jail.local. Значения в файле jail.local будут переопределять jail.conf.

Файл jail.conf содержит раздел [DEFAULT], после которого следует раздел для индивидуальных сервисов. Файл jail.local может переопределить любое из этих значений. Файлы применяются в алфавитном порядке:

/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf,
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local,

Любой из файлов может содержать раздел [DEFAULT], который выполняется первым, а затем – разделы для индивидуальных сервисов. Последнее значение, установленное для данного параметра, имеет приоритет.

Создадим файл jail.local с настройками для asterisk и ssh в текстовом редакторе:

nano /etc/fail2ban/jail.local

Вставьте в файл следующий код:

[DEFAULT]
ignoreip = 127.0.0.1
bantime = 86400
findtime = 600
maxretry = 5
backend = auto

Этот файл переопределяет параметры:

  • ignoreip – задаёт белый список адресов. На данный момент он не блокирует исходящий трафик локальной машины. Можно добавить дополнительные ip-адреса через пробел.
  • bantime – устанавливает интервал времени, в течение которого клиент будет заблокирован, если он не смог пройти аутентификацию. Значение параметра измеряется в секундах; по умолчанию установлено 600 секунд, (10 минут).
  • findtime – задаёт длительность интервала, в течение которого событие должно повториться определённое количество раз, после чего клиент будет заблокирован.
  • maxretry – устанавливает количество неудавшихся попыток входа. backend – определяет, как fail2ban будет контролировать логи. Настройка auto означает, что fail2ban будет пробовать pyinotify, затем gamin, а затем алгоритм опроса, основанный на доступных данных

После раздела [DEFAULT] идут разделы для определенных сервисов, которые могут использоваться для переопределения настроек по умолчанию. Как правило, в этих разделах переопределяются только значения, которые отличаются от стандартных значений.

Раздел для сервиса asterisk будет иметь следующие параметры:

[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=SIP, protocol=all]
logpath = /var/log/asterisk/fail2ban
maxretry = 5
  • [asterisk-iptables] – заголовок раздела для сервиса.
  • enabled – даный раздел будет прочитан и включен
  • filter – указывает файлы фильтров определяющие, какие строки fail2ban должен найти в логах, чтобы определить вредоносное поведение.
  • action – действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d.
  • logpath – путь к файлу журнала, который программа Fail2ban будет обрабатывать с помощью заданного ранее фильтра. Вся история удачных и неудачных входов в систему, в том числе и по SSH, по умолчанию записывается в log–файл /var/log/auth.log.
  • maxretry – устанавливает количество неудавшихся попыток входа.

Раздел для сервиса ssh будет иметь следующие параметры:

[ssh-iptables]
enabled  = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
maxretry = 3

Набор параметров раздела для сервиса ssh похож на раздел для сервиса asterisk с той лишь разницей, что параметры указаны для сервиса ssh.

Сохраните и закройте файл. Перезапустите fail2ban при помощи systemctl для применения внесенных изменений:

systemctl restart fail2ban
 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices