sakibmoon.fail2ban

Nombre del Rol

Ansible Galaxy Estado de Construcción
Un rol de ansible para instalar y gestionar Fail2ban

Requisitos

Versión de Ansible 2.6 o superior

Instalación

Ansible Galaxy

Usa ansible-galaxy install sakibmoon.fail2ban

Git

Usa git clone https://github.com/sakibmoon/ansible-role-fail2ban.git

Uso Básico

Instala y habilita fail2ban y configura ssh con fail2ban

    - hosts: servers
      vars:
        fail2ban_services:
          - name: "sshd"
            enabled: "true"
            port: "ssh"
            filter: "sshd"
            logpath: "/var/log/auth.log"
            maxretry: 6       
      roles:
         - sakibmoon.fail2ban

Consulta Variables del Rol y Ejemplo de Playbook para casos de uso más complejos y cómo puedes ajustar todas las opciones

Variables del Rol

Opciones para Monitoreo de Servicios

fail2ban_services
Una lista de servicios que Fail2ban debe monitorear. Cada opción de la lista debe contener el nombre del servicio y la ruta del log. Solo especifica las configuraciones que deseas cambiar. El resto de la configuración provendrá de la configuración de la cárcel global como se ve/aquí](#global-jail-configuration-option).

Opciones del servicio:

name: Nombre del servicio
logpath: Ruta del log del servicio a monitorear
port: Puertos separados por comas a monitorear
enabled: Si se debe habilitar esta cárcel

Lista de Acciones

fail2ban_actionlist
Una lista de acciones a crear. Las acciones se guardan en el directorio /etc/fail2ban/action.d/. Una sola acción puede contener las siguientes opciones:

name: Nombre de la acción. El nombre del archivo.
sections: Una lista de secciones como Definition, Init etc., que contiene un diccionario de entradas
file_ext: (Opcional) La extensión del archivo. Puede ser local o conf. Predeterminado: local

Ejemplo:

    fail2ban_actionlist:
      - name: toy-action1
        sections:
          - name: Definition
            options:
              - name: actionstart
                value: "Valor de ActionStart"
              - name: actionflush
                value: "Valor de Actionflush"
          - name: Init
            options:
              - name: timeout
                value: "Valor de timeout"
        file_ext: "local"
      - name: toy-action2
        sections:
          - name: INCLUDES
            options:
              - name: before
                value: algo-a-incluir.local
          - name: Definition
            options:
              - name: actionstart
                value: "Valor de ActionStart"
              - name: actionflush
                value: "Valor de Actionflush"
          - name: Init
            options:
              - name: timeout
                value: "Valor de timeout"

Lista de Filtros

fail2ban_filterlist
Una lista de filtros a crear. El filtro se guarda en el directorio /etc/fail2ban/action.d/. El formato es el mismo que fail2ban_actionlist como se mostró arriba.

Opciones de Configuración de Fail2ban

Nombre de Variable Nombre de Opción de Fail2ban Valores de Opción Valor Predeterminado Descripción
fail2ban_confpath [FILE] /etc/fail2ban/fail2ban.local La ruta donde se escribe la configuración de fail2ban.
fail2ban_loglevel loglevel CRITICAL
ERROR
WARNING
INFO
DEBUG
\
[0-3]
ERROR para versión > 0.8.x
1 para versión 0.8.x
Establece el nivel de salida del log.
fail2ban_logtarget logtarget [FILE]
STDOUT
STDERR
SYSLOG
/var/log/fail2ban.log Establece el objetivo del log. Solo se puede especificar un objetivo de log.
Si cambias el objetivo del log del valor predeterminado y estás utilizando logrotate, también ajusta o desactiva la rotación en el archivo de configuración correspondiente (por ejemplo, /etc/logrotate.d/fail2ban en sistemas Debian)
fail2ban_syslogsocket syslogsocket auto
[FILE]
auto Establece el archivo de socket de syslog.
Solo se utiliza cuando el objetivo del log es SYSLOG. auto usa platform.system() para determinar rutas predefinidas
fail2ban_socket socket [FILE] /var/run/fail2ban/fail2ban.sock Establece el archivo de socket.
Este se utiliza para comunicar con el demonio. No elimines este archivo cuando Fail2ban esté en ejecución. No será posible comunicarte con el servidor posteriormente.
fail2ban_pidfile pidfile [FILE] /var/run/fail2ban/fail2ban.pid Establece el archivo PID. Este se utiliza para almacenar el ID del proceso del servidor fail2ban.
fail2ban_dbfile dbfile None
:memory:
[FILE]
/var/lib/fail2ban/fail2ban.sqlite3 Establece el archivo donde se almacenan los datos persistentes de fail2ban.
Un valor de :memory: significa que la base de datos solo se almacena en memoria y los datos se pierden cuando fail2ban se detiene.
Un valor de None deshabilita la base de datos.
fail2ban_dbpurgeage dbpurgeage [ SECONDS ] 86400 Establece la edad a la que se deben purgar las prohibiciones de la base de datos
fail2ban_dbmaxmatches dbmaxmatches [ INT ] 20 Número de coincidencias almacenadas en la base de datos por ticket.
fail2ban_stacksize stacksize [ SIZE ] 0 Esto especifica el tamaño de la pila (en KiB) que se utilizará para los hilos que se creen posteriormente, y debe ser 0 o un valor entero positivo de al menos 32.

Opciones de Configuración de Cárceles Globales

Nombre de Variable Nombre de Opción de Fail2ban Valores de Opción Valor Predeterminado Descripción
fail2ban_jailpath [FILE] /etc/fail2ban/jail.local El archivo para escribir la configuración predeterminada de la cárcel de Fail2ban
fail2ban_ignoreself ignoreself boolean
true
false
true Indica si se debe prevenir la prohibición de las direcciones IP propias.
fail2ban_ignoreip ignoreip Lista de direcciones IP lista de IPs que no se deben prohibir. Pueden incluir una máscara CIDR o DNS también. La opción afecta adicionalmente a ignoreself (si es verdadero) y no necesita incluir DNS o IPs propias del host en funcionamiento.
fail2ban_ignorecommand ignorecommand /path/to/command Comando externo que tomará un argumento etiquetado para ignorar, por ejemplo, , y devolverá verdadero si se debe ignorar la IP. Falso en caso contrario.
fail2ban_ignorecache ignorecache disabled Proporciona parámetros de caché para la verificación de fallos ignorados (almacenamiento en caché del resultado de ignoreip, ignoreself y ignorecommand)
fail2ban_bantime bantime [ SECONDS ] 600 Duración efectiva de la prohibición (en segundos).
fail2ban_findtime findtime [ SECONDS ] 600 intervalo de tiempo (en segundos) antes del tiempo actual donde los fallos contarán para una prohibición.
fail2ban_maxretry maxretry [ INT ] 5 El número de fallos antes de que una máquina sea prohibida.
fail2ban_backend backend pyinotify
gamin
polling
systemd
auto
auto Especifica el backend utilizado para obtener modificaciones en los archivos.
fail2ban_usedns usedns yes
warn
no
raw
warn Especifica si las cárceles deben confiar en los nombres de host de los logs, advertir cuando se realizan búsquedas DNS, o ignorar todos los nombres de host en los logs
fail2ban_logencoding logencoding auto
ascii
utf-8
etc.
auto Especifica la codificación de los archivos de log manejados por la cárcel. El valor predeterminado de auto utiliza la configuración regional del sistema actual.
fail2ban_mode mode normal
ddos
extra
aggressive
normal El modo del filtro
fail2ban_filter filter nombre del filtro %(__name__)s[mode=%(mode)s] El filtro que debe usar la cárcel.
Por defecto, las cárceles tienen nombres que coinciden con el nombre de su filtro
fail2ban_logtimezone logtimezone UTC
UTC+0200
GMT-0100
etc.
Forzar la zona horaria para las líneas de log que no tienen una.
Si esta opción no se especifica, las líneas de log que no tienen una zona horaria explícita se interpretarán por fail2ban en su propia zona horaria del sistema.
fail2ban_banaction banaction iptables, iptables-new, iptables-multiport, shorewall, etc iptables-multiport Acción de prohibición predeterminada. Se utiliza para definir variables action_*. Puede ser sobrescrito globalmente o por sección dentro del archivo jail.local
fail2ban_banaction_allports banaction_allports iptables, iptables-new, iptables-multiport, shorewall, etc iptables-allports lo mismo que banaction pero para algunas cárceles "allports" como "pam-generic" o "recidive"
fail2ban_action action %(action_)s Elegir la acción predeterminada. Para cambiar, simplemente sobrescribe el valor de 'action' con la interpolación para el atajo de acción elegido (por ejemplo, action_mw, action_mwl, etc.) o elige acción(s) de /etc/fail2ban/action.d/ sin la extensión .conf/.local.
fail2ban_failregex failregex Expresión Regular de Python regex (expresión regular de Python) que se añadirá a las failregexes del filtro (ver failregex en sección ARCHIVOS DE FILTRO para detalles).
fail2ban_ignoreregex ignoreregex regex que, si coincide con la línea de log, haría que Fail2Ban no considere esa línea. Esta línea será ignorada incluso si coincide con una failregex de la cárcel o de cualquiera de sus filtros.
fail2ban_maxmatches maxmatches [INT] número máximo de líneas de log coincidentes que la cárcel mantendría en memoria por ticket. Por defecto, es el mismo valor que maxretry de la cárcel (o predeterminado)

Dependencias

No hay dependencias

Plataformas Soportadas

Este rol debería funcionar en cualquier distribución de Linux basada en Redhat o Debian. Ha sido probado en las siguientes plataformas

  • CentOS 8
  • CentOS 7
  • Ubuntu 18.04
  • Ubuntu 16.04
  • Debian 10
  • Debian 9

Ejemplo de Playbook

El siguiente playbook instala, habilita fail2ban y agrega la cárcel ssh

    - hosts: servers
      vars:
        fail2ban_services:
          - name: "sshd"
            enabled: "true"
            port: "ssh"
            filter: "sshd"
            logpath: "/var/log/auth.log"
            maxretry: 6       
      roles:
         - sakibmoon.fail2ban

Licencia

MIT

Información del Autor

Este rol fue creado por sakibmoon en 2020

Acerca del proyecto

An ansible role to install and manage Fail2ban

Instalar
ansible-galaxy install sakibmoon.fail2ban
Licencia
mit
Descargas
592
Propietario