fail2ban

Что такое ansible-fail2ban? Статус сборки

Это роль ansible для установки и настройки fail2ban.

Какую проблему это решает и почему это полезно?

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

Переменные роли

Ниже приведен список значений по умолчанию с описанием их назначения.

# Уровень журнала, который должен быть выведен?
# 1 = ОШИБКА, 2 = ПРЕДУПРЕЖДЕНИЕ, 3 = ИНФОРМАЦИЯ, 4 = ОТЛАДКА
fail2ban_loglevel: 3

# Куда должны отправляться журналы?
# SYSLOG, STDERR, STDOUT, файл
fail2ban_logtarget: /var/log/fail2ban.log

# Где должен быть создан сокет?
fail2ban_socket: /var/run/fail2ban/fail2ban.sock

# Какой IP-адрес, метка CIDR или DNS-хост должны быть игнорированы?
fail2ban_ignoreip: 127.0.0.1/8

# Как долго (в секундах) должен длиться бан?
fail2ban_bantime: 600

# Сколько раз можно попробовать, прежде чем получить бан?
fail2ban_maxretry: 6

# Как должны обнаруживаться изменения в файлах?
# gamin, polling, auto
fail2ban_backend: polling

# Куда должны отправляться отчетные письма?
fail2ban_destemail: root@localhost

# Как должен применяться бан?
# iptables, iptables-new, iptables-multiport, shorewall и т.д.
fail2ban_banaction: iptables-multiport

# Какое действие по электронной почте должно использоваться?
# sendmail или mail
fail2ban_mta: sendmail

# Какой протокол должен быть по умолчанию?
fail2ban_protocol: tcp

# В какую цепочку будут добавляться JUMPs в iptables-*?
fail2ban_chain: INPUT

# Какое действие по умолчанию должно быть для бана?
# action_, action_mw, action_mwl
fail2ban_action: action_

# Какие сервисы должен мониторить fail2ban?
# Вы можете определить fail2ban_services как пустую строку, чтобы ничего не мониторить.
# Вы можете определить несколько сервисов как стандартный список yaml.
fail2ban_services:
    # Имя сервиса
    # ОБЯЗАТЕЛЬНО.
  - name: ssh

    # Включен ли он?
    # ОПЦИОНАЛЬНО: по умолчанию "true" (должно быть строкой).
    enabled: "true"

    # Какой порт использует сервис?
    # Разделяйте несколько портов запятой, без пробелов.
    # ОБЯЗАТЕЛЬНО.
    port: ssh

    # Какой протокол использует сервис?
    # ОПЦИОНАЛЬНО: по умолчанию используется указанный выше протокол.
    protocol: tcp

    # Какой фильтр следует использовать?
    # ОБЯЗАТЕЛЬНО.
    filter: sshd

    # Какой путь к журналу он должен отслеживать?
    # ОБЯЗАТЕЛЬНО.
    logpath: /var/log/auth.log

    # Сколько раз можно попробовать, прежде чем получить бан?
    # ОПЦИОНАЛЬНО: по умолчанию значение maxretry, указанное выше.
    maxretry: 6

    # Какое действие по умолчанию должно быть для бана?
    # ОПЦИОНАЛЬНО: по умолчанию действие, указанное выше.
    action: action_

    # Как должен применяться бан?
    # ОПЦИОНАЛЬНО: по умолчанию значение banaction, указанное выше.
    banaction: iptables-multiport

# Время в секундах для кеширования apt-update.
apt_cache_valid_time: 86400

Пример плейбука

Для примера предположим, что у вас есть группа под названием app и у вас есть типичный файл site.yml.

Чтобы использовать эту роль, измените ваш файл site.yml, чтобы он выглядел примерно так:

---
- name: убедиться, что сервера приложений настроены
- hosts: app

  roles:
    - { role: nickjj.fail2ban, sudo: true, tags: fail2ban }

Допустим, вы хотите изменить несколько значений, вы можете сделать это, открыв или создав group_vars/app.yml, который находится относительно вашей директории inventory, а затем изменив его так:

---
fail2ban_services:
  - name: ssh
    port: ssh
    filter: sshd
    logpath: /var/log/auth.log
  - name: postfix
    port: smtp,ssmtp
    filter: postfix
    logpath: /var/log/mail.log

Установка

$ ansible-galaxy install nickjj.fail2ban

Требования

Проверено на ubuntu 12.04 LTS, но должно работать и на других подобный версиях.

Ansible galaxy

Вы можете найти его на официальном ansible galaxy, если хотите его оценить.

Лицензия

MIT

О проекте

Install and configure fail2ban.

Установить
ansible-galaxy install nickjj/ansible-fail2ban
Лицензия
mit
Загрузки
48815
Владелец
Currently a self employed freelance developer & teacher. I mainly work with Flask, Rails, Bash, Docker, Kubernetes, Ansible & Terraform. Also a @docker captain.