sakibmoon.fail2ban
Nombre del Rol
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 |
booleantrue 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, |
|
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
An ansible role to install and manage Fail2ban
ansible-galaxy install sakibmoon.fail2ban