fail2ban
Название роли
Роль Ansible для установки и управления Fail2ban.
Требования
Версия Ansible 2.6 или выше.
Установка
Ansible Galaxy
Используйте ansible-galaxy install sakibmoon.fail2ban
Git
Используйте git clone https://github.com/sakibmoon/ansible-role-fail2ban.git
Основное использование
Установите и включите fail2ban и настройте ssh с fail2ban.
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Смотрите Переменные роли и Пример плейбука для более сложных случаев использования и настройки всех опций.
Переменные роли
Параметры мониторинга служб
fail2ban_services
Список служб для мониторинга Fail2ban. Каждый элемент списка должен содержать имя службы и путь к журналу. Указывайте только те настройки, которые хотите изменить. Остальная часть конфигурации будет взята из глобальной конфигурации тюрьмы, как видно/установлено здесь.
Параметры службы:
name
: Имя службы
logpath
: Путь к журналу службы для мониторинга
port
: Порты для мониторинга, разделенные запятой
enabled
: Включить эту тюрьму или нет
Список действий
fail2ban_actionlist
Список действий для создания. Действия сохраняются в каталоге /etc/fail2ban/action.d/
. Одно действие может содержать следующие параметры:
name
: Имя действия. Имя файла.
sections
: Список секций, таких как Definition
, Init
и т.д., содержащих словари входных данных
file_ext
: (Необязательно) Расширение файла. Может быть local
или conf
. По умолчанию: local
Пример:
fail2ban_actionlist:
- name: toy-action1
sections:
- name: Definition
options:
- name: actionstart
value: "ActionStart value"
- name: actionflush
value: "Actionflush value"
- name: Init
options:
- name: timeout
value: "timeout value"
file_ext: "local"
- name: toy-action2
sections:
- name: INCLUDES
options:
- name: before
value: something-to-include.local
- name: Definition
options:
- name: actionstart
value: "ActionStart value"
- name: actionflush
value: "Actionflush value"
- name: Init
options:
- name: timeout
value: "timeout value"
Список фильтров
fail2ban_filterlist
Список фильтров для создания. Фильтры сохраняются в каталоге /etc/fail2ban/action.d/
. Формат такой же, как у fail2ban_actionlist
, как показано выше.
Параметры конфигурации Fail2ban
Имя переменной | Имя параметра Fail2ban | Значения параметра | Значение по умолчанию | Описание |
---|---|---|---|---|
fail2ban_confpath |
[FILE] |
/etc/fail2ban/fail2ban.local |
Путь, куда записывается конфигурация fail2ban. | |
fail2ban_loglevel |
loglevel |
CRITICAL ERROR WARNING INFO DEBUG \ [0-3] |
ERROR для версии > 0.8.x 1 для версии 0.8.x |
Установить уровень логирования. |
fail2ban_logtarget |
logtarget |
[FILE] STDOUT STDERR SYSLOG |
/var/log/fail2ban.log |
Установить целевой лог. Можно указать только одну цель. Если вы изменяете целевой лог с значения по умолчанию и используете logrotate — также отрегулируйте или отключите ротацию в соответствующем файле конфигурации (например, /etc/logrotate.d/fail2ban на системах Debian) |
fail2ban_syslogsocket |
syslogsocket |
auto [FILE] |
auto |
Установите файл сокета syslog. Используется только при целевом логе SYSLOG. auto использует platform.system() для определения предустановленных путей |
fail2ban_socket |
socket |
[FILE] |
/var/run/fail2ban/fail2ban.sock |
Установите файл сокета. Используется для связи с демоном. Не удаляйте этот файл, когда работает Fail2ban. После этого связь с сервером будет невозможна. |
fail2ban_pidfile |
pidfile |
[FILE] |
/var/run/fail2ban/fail2ban.pid |
Установите PID файл. Используется для хранения идентификатора процесса сервера fail2ban. |
fail2ban_dbfile |
dbfile |
None :memory: [FILE] |
/var/lib/fail2ban/fail2ban.sqlite3 |
Установите файл для хранения постоянных данных fail2ban. Значение :memory: означает, что база данных хранится только в памяти и данные теряются при остановке fail2ban. Значение None отключает базу данных. |
fail2ban_dbpurgeage |
dbpurgeage |
[SECONDS] |
86400 |
Устанавливает возраст, при котором баны должны быть очищены из базы данных |
fail2ban_dbmaxmatches |
dbmaxmatches |
[INT] |
20 |
Количество совпадений, хранящихся в базе данных на тикет. |
fail2ban_stacksize |
stacksize |
[SIZE] |
0 |
Указывает размер стека (в KiB), который будет использован для последующих создаваемых потоков, и должен быть 0 или положительным целым числом не менее 32. |
Параметры глобальной конфигурации тюрьмы
Имя переменной | Имя параметра Fail2ban | Значения параметра | Значение по умолчанию | Описание |
---|---|---|---|---|
fail2ban_jailpath |
[FILE] |
/etc/fail2ban/jail.local |
Файл для записи конфигурации по умолчанию Fail2ban | |
fail2ban_ignoreself |
ignoreself |
booleantrue false |
true |
Указывает, что блокировка собственных IP-адресов должна быть предотвращена. |
fail2ban_ignoreip |
ignoreip |
Список IP-адресов | список IP, которые не нужно блокировать. Они могут включать DNS ответ или CIDR маску. Эта опция дополнительно влияет на ignoreself (если true) и не должна содержать собственные DNS или IP хоста. | |
fail2ban_ignorecommand |
ignorecommand |
/path/to/command |
Внешняя команда, которая будет принимать аргументы, помеченные для игнорирования, например, |
|
fail2ban_ignorecache |
ignorecache |
disabled |
параметр кеширования для проверки игнорирования (кэширование результата от ignoreip , ignoreself и ignorecommand ) |
|
fail2ban_bantime |
bantime |
[SECONDS] |
600 |
Эффективная продолжительность блокировки (в секундах). |
fail2ban_findtime |
findtime |
[SECONDS] |
600 |
временной интервал (в секундах) до текущего времени, в течение которого сбои будут учитываться для блокировки. |
fail2ban_maxretry |
maxretry |
[INT] |
5 |
Количество сбоев, после которого хост будет заблокирован. |
fail2ban_backend |
backend |
pyinotify gamin polling systemd auto |
auto |
Указывает механизм, используемый для получения изменений файлов. |
fail2ban_usedns |
usedns |
yes warn no raw |
warn |
Указывает, должны ли тюрьмы доверять именам хостов в журналах, предупреждать при выполнении DNS запросов или игнорировать все имена хостов в журналах |
fail2ban_logencoding |
logencoding |
auto ascii utf-8 и т.д. |
auto |
Указывает кодировку журналов, обрабатываемых тюрьмой. Значение по умолчанию auto использует текущую локаль системы. |
fail2ban_mode |
mode |
normal ddos extra aggressive |
normal |
Режим фильтра |
fail2ban_filter |
filter |
имя фильтра | %(__name__)s[mode=%(mode)s] |
Фильтр, используемый тюрьмой. По умолчанию тюрьмы имеют имена, соответствующие имени их фильтра |
fail2ban_logtimezone |
logtimezone |
UTC UTC+0200 GMT-0100 и т.д. |
Устанавливает часовой пояс для строк журналов, у которых его нет. Если эта опция не указана, строки журналов, для которых не был найден явный часовой пояс, интерпретируются fail2ban в его собственном системном часовом поясе. |
|
fail2ban_banaction |
banaction |
iptables , iptables-new , iptables-multiport , shorewall , и т.д. |
iptables-multiport |
Действие блокировки по умолчанию. Используется для определения переменных action_* . Может быть переопределено глобально или в секции внутри файла jail.local |
fail2ban_banaction_allports |
banaction_allports |
iptables , iptables-new , iptables-multiport , shorewall , и т.д. |
iptables-allports |
то же самое, что и banaction, но для некоторых "allports" тюрем, таких как "pam-generic" или "recidive" |
fail2ban_action |
action |
%(action_)s |
Выбор действия по умолчанию. Чтобы изменить, просто переопределите значение 'action', выбрав желаемое действие (например, action_mw, action_mwl и т.д.) или выберите действия из /etc/fail2ban/action.d/ без расширения .conf/.local. | |
fail2ban_failregex |
failregex |
Python Regualr Expression |
регулярное выражение (регулярное выражение Python), которое должно быть добавлено к failregexes фильтра (см. failregex в разделе ФАЙЛЫ ФИЛЬТРА). | |
fail2ban_ignoreregex |
ignoreregex |
регулярное выражение, при совпадении с которым строка журнала не будет учитываться Fail2Ban. Эта строка будет игнорироваться, даже если она соответствует failregex тюрьмы или любому из ее фильтров. | ||
fail2ban_maxmatches |
maxmatches |
[INT] |
максимальное количество совпадающих строк журнала, которые тюрьма будет хранить в памяти для одного тикета. По умолчанию это то же значение, что и maxretry тюрьмы (или значение по умолчанию) |
Зависимости
Нет зависимостей.
Поддерживаемые платформы
Эта роль должна работать на любом дистрибутиве Linux на базе Redhat или Debian. Она протестирована на следующих платформах:
- CentOS 8
- CentOS 7
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 10
- Debian 9
Пример плейбука
Следующий плейбук устанавливает, включает fail2ban и добавляет тюрьму ssh.
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Лицензия
MIT
Информация об авторе
Эта роль была создана sakibmoon в 2020 году.
ansible-galaxy install sakibmoon/ansible-role-fail2ban