fail2ban

Название роли

Ansible Galaxy Статус сборки
Роль 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 boolean
true
false
true Указывает, что блокировка собственных IP-адресов должна быть предотвращена.
fail2ban_ignoreip ignoreip Список IP-адресов список IP, которые не нужно блокировать. Они могут включать DNS ответ или CIDR маску. Эта опция дополнительно влияет на ignoreself (если true) и не должна содержать собственные DNS или IP хоста.
fail2ban_ignorecommand ignorecommand /path/to/command Внешняя команда, которая будет принимать аргументы, помеченные для игнорирования, например, , и возвращать true, если IP нужно игнорировать. false в противном случае.
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 году.

О проекте

An ansible role to install and manage Fail2ban

Установить
ansible-galaxy install sakibmoon/ansible-role-fail2ban
Лицензия
mit
Загрузки
523
Владелец