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
ansible-galaxy install nickjj/ansible-fail2ban