nickjj.fail2ban
¿Qué es ansible-fail2ban? 
Es un rol de ansible para instalar y configurar fail2ban.
¿Qué problema resuelve y por qué es útil?
La seguridad es importante, y fail2ban es una herramienta excelente para reforzar la seguridad de tu servidor con una configuración mínima o incluso sin configuración.
Variables del rol
A continuación se presenta una lista de valores predeterminados junto con una descripción de lo que hacen.
# ¿Qué nivel de registro debería tener la salida?
# 1 = ERROR, 2 = WARN, 3 = INFO, 4 = DEBUG
fail2ban_loglevel: 3
# ¿Dónde se deben enviar las salidas de registro?
# SYSLOG, STDERR, STDOUT, archivo
fail2ban_logtarget: /var/log/fail2ban.log
# ¿Dónde se debe crear el socket?
fail2ban_socket: /var/run/fail2ban/fail2ban.sock
# ¿Qué dirección IP, marca CIDR o host DNS debe ser ignorado?
fail2ban_ignoreip: 127.0.0.1/8
# ¿Cuánto tiempo en segundos debe durar la prohibición?
fail2ban_bantime: 600
# ¿Cuántas veces pueden intentarlo antes de ser prohibidos?
fail2ban_maxretry: 6
# ¿Cómo se deben detectar los cambios en los archivos?
# gamin, polling, auto
fail2ban_backend: polling
# ¿A dónde se deben enviar los informes por correo electrónico?
fail2ban_destemail: root@localhost
# ¿Cómo debe aplicarse la prohibición?
# iptables, iptables-new, iptables-multiport, shorewall, etc.
fail2ban_banaction: iptables-multiport
# ¿Qué acción de correo electrónico debe usarse?
# sendmail o mail
fail2ban_mta: sendmail
# ¿Cuál debería ser el protocolo predeterminado?
fail2ban_protocol: tcp
# ¿En qué cadena se agregarían los JUMPs en iptables-*?
fail2ban_chain: INPUT
# ¿Cuál debería ser la acción de prohibición predeterminada?
# action_, action_mw, action_mwl
fail2ban_action: action_
# ¿Qué servicios debería monitorear fail2ban?
# Puedes definir fail2ban_services como una cadena vacía para no monitorizar nada.
# Puedes definir múltiples servicios como una lista estándar de yaml.
fail2ban_services:
# El nombre del servicio
# OBLIGATORIO.
- name: ssh
# ¿Está habilitado?
# OPCIONAL: Por defecto es "true" (debe ser una cadena).
enabled: "true"
# ¿Qué puerto usa el servicio?
# Separa múltiples puertos con una coma, sin espacios.
# OBLIGATORIO.
port: ssh
# ¿Qué protocolo usa el servicio?
# OPCIONAL: Por defecto es el protocolo mencionado arriba.
protocol: tcp
# ¿Qué filtro debería usar?
# OBLIGATORIO.
filter: sshd
# ¿Qué ruta de registro debería monitorear?
# OBLIGATORIO.
logpath: /var/log/auth.log
# ¿Cuántas veces pueden intentarlo antes de ser prohibidos?
# OPCIONAL: Por defecto es el maxretry mencionado arriba.
maxretry: 6
# ¿Cuál debería ser la acción de prohibición predeterminada?
# OPCIONAL: Por defecto es la acción mencionada arriba.
action: action_
# ¿Cómo debería aplicarse la prohibición?
# OPCIONAL: Por defecto es la acción de prohibición mencionada arriba.
banaction: iptables-multiport
# La cantidad en segundos para almacenar en caché apt-update.
apt_cache_valid_time: 86400
Ejemplo de playbook
Para este ejemplo, supongamos que tienes un grupo llamado app y tienes un archivo típico site.yml
.
Para usar este rol, edita tu archivo site.yml
para que se vea algo así:
---
- name: asegurar que los servidores de la app estén configurados
- hosts: app
roles:
- { role: nickjj.fail2ban, sudo: true, tags: fail2ban }
Supongamos que quieres editar algunos valores, puedes hacerlo abriendo o creando group_vars/app.yml
, que se encuentra relativo a tu directorio de inventory
, y hacerlo ver algo como esto:
---
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
Instalación
$ ansible-galaxy install nickjj.fail2ban
Requisitos
Probado en Ubuntu 12.04 LTS, pero debería funcionar en otras versiones similares.
Ansible galaxy
Puedes encontrarlo en el ansible galaxy si deseas calificarlo.
Licencia
MIT
ansible-galaxy install nickjj.fail2ban