sakibmoon.fail2ban
Nom du rôle
Un rôle Ansible pour installer et gérer Fail2ban
Exigences
Version d'Ansible 2.6 ou ultérieure
Installation
Ansible Galaxy
Utilisez ansible-galaxy install sakibmoon.fail2ban
Git
Utilisez git clone https://github.com/sakibmoon/ansible-role-fail2ban.git
Utilisation de base
Installez et activez Fail2ban et configurez SSH avec Fail2ban
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Consultez Variables du rôle et Exemple de Playbook pour des cas d'utilisation plus complexes et comment vous pouvez peaufiner toutes les options.
Variables du rôle
Options de surveillance des services
fail2ban_services
Une liste de services à surveiller par Fail2ban. Chaque option de la liste doit contenir le nom du service et le chemin du journal. Ne spécifiez que les paramètres que vous souhaitez modifier. Le reste de la configuration proviendra de la configuration globale de la prison comme vu/défini ici.
Options de service :
name
: Nom du service
logpath
: Chemin du journal du service à surveiller
port
: Ports séparés par des virgules à surveiller
enabled
: Indique si cette prison doit être activée
Liste des actions
fail2ban_actionlist
Une liste d'actions à créer. Les actions sont enregistrées dans le répertoire /etc/fail2ban/action.d/
. Une seule action peut contenir les options suivantes :
name
: Nom de l'action. Le nom du fichier.
sections
: Une liste de sections comme Definition
, Init
, etc., qui contient un dictionnaire d'entrées
file_ext
: (Optionnel) L'extension du fichier. Peut être soit local
soit conf
. Par défaut : local
Exemple :
fail2ban_actionlist:
- name: toy-action1
sections:
- name: Definition
options:
- name: actionstart
value: "Valeur de ActionStart"
- name: actionflush
value: "Valeur de Actionflush"
- name: Init
options:
- name: timeout
value: "Valeur de timeout"
file_ext: "local"
- name: toy-action2
sections:
- name: INCLUDES
options:
- name: before
value: something-to-include.local
- name: Definition
options:
- name: actionstart
value: "Valeur de ActionStart"
- name: actionflush
value: "Valeur de Actionflush"
- name: Init
options:
- name: timeout
value: "Valeur de timeout"
Liste de filtres
fail2ban_filterlist
Une liste de filtres à créer. Le filtre est enregistré dans le répertoire /etc/fail2ban/action.d/
. Le format est le même que fail2ban_actionlist
comme montré ci-dessus.
Options de configuration de Fail2ban
Nom de la variable | Nom de l'option Fail2ban | Valeurs d'option | Valeur par défaut | Description |
---|---|---|---|---|
fail2ban_confpath |
[FICHIER] |
/etc/fail2ban/fail2ban.local |
Le chemin où la configuration de Fail2ban est écrite. | |
fail2ban_loglevel |
loglevel |
CRITICAL ERROR WARNING INFO DEBUG \ [0-3] |
ERROR pour version > 0.8.x 1 pour version 0.8.x |
Définir le niveau de log. |
fail2ban_logtarget |
logtarget |
[FICHIER] STDOUT STDERR SYSLOG |
/var/log/fail2ban.log |
Définir la cible du journal. Une seule cible peut être spécifiée. Si vous changez le logtarget de la valeur par défaut et que vous utilisez logrotate, ajustez également ou désactivez la rotation dans le fichier de configuration correspondant (par exemple, /etc/logrotate.d/fail2ban sur les systèmes Debian) |
fail2ban_syslogsocket |
syslogsocket |
auto [FICHIER] |
auto |
Définir le fichier de socket syslog. Utilisé uniquement lorsque la cible du journal est SYSLOG. auto utilise platform.system() pour déterminer les chemins prédéfinis |
fail2ban_socket |
socket |
[FICHIER] |
/var/run/fail2ban/fail2ban.sock |
Définir le fichier de socket. Ceci est utilisé pour communiquer avec le démon. Ne supprimez pas ce fichier lorsque Fail2ban est en cours d'exécution. Il ne sera plus possible de communiquer avec le serveur par la suite. |
fail2ban_pidfile |
pidfile |
[FICHIER] |
/var/run/fail2ban/fail2ban.pid |
Définir le fichier PID. Ceci est utilisé pour stocker l'identifiant de processus du serveur Fail2ban. |
fail2ban_dbfile |
dbfile |
None :memory: [FICHIER] |
/var/lib/fail2ban/fail2ban.sqlite3 |
Définir le fichier pour stocker les données persistantes de Fail2ban. Une valeur de :memory: signifie que la base de données est uniquement stockée en mémoire et que les données sont perdues lorsque Fail2ban est arrêté. Une valeur de None désactive la base de données. |
fail2ban_dbpurgeage |
dbpurgeage |
[ SECONDES ] |
86400 |
Définit l'âge auquel les bannières doivent être purgées de la base de données |
fail2ban_dbmaxmatches |
dbmaxmatches |
[ INT ] |
20 |
Nombre de correspondances stockées dans la base de données par ticket. |
fail2ban_stacksize |
stacksize |
[ TAILLE ] |
0 |
Cela spécifie la taille de la pile (en Ko) à utiliser pour les threads créés par la suite, et doit être 0 ou une valeur entière positive d'au moins 32. |
Options de configuration de prison globale
Nom de la variable | Nom de l'option Fail2ban | Valeurs d'option | Valeur par défaut | Description |
---|---|---|---|---|
fail2ban_jailpath |
[FICHIER] |
/etc/fail2ban/jail.local |
Le fichier pour écrire la configuration par défaut de la prison Fail2ban | |
fail2ban_ignoreself |
ignoreself |
booléentrue false |
true |
Indique que l'interdiction des propres adresses IP doit être évitée. |
fail2ban_ignoreip |
ignoreip |
Liste d'adresses IP | liste d'IP à ne pas interdire. Elles peuvent également inclure un masque DNS ou CIDR. L'option affecte également ignoreself (si vrai) et n'a pas besoin de contenir les DNS ou IPs propres de l'hôte en cours d'exécution. | |
fail2ban_ignorecommand |
ignorecommand |
/path/to/command |
Commande externe qui prendra des arguments tagués à ignorer, par exemple |
|
fail2ban_ignorecache |
ignorecache |
disabled |
fournit des paramètres de cache pour vérifier les échecs d'ignorance (mise en cache du résultat de ignoreip , ignoreself et ignorecommand ) |
|
fail2ban_bantime |
bantime |
[ SECONDES ] |
600 |
Durée d'interdiction effective (en secondes). |
fail2ban_findtime |
findtime |
[ SECONDES ] |
600 |
intervalle de temps (en secondes) avant le temps actuel dans lequel les échecs compteront pour une interdiction. |
fail2ban_maxretry |
maxretry |
[ INT ] |
5 |
Le nombre d'échecs avant qu'un hôte soit interdit. |
fail2ban_backend |
backend |
pyinotify gamin polling systemd auto |
auto |
Spécifie le backend utilisé pour obtenir les modifications de fichiers. |
fail2ban_usedns |
usedns |
yes warn no raw |
warn |
Spécifie si les prisons doivent faire confiance aux noms d'hôtes dans les journaux, avertir lorsque des requêtes DNS sont effectuées, ou ignorer tous les noms d'hôtes dans les journaux |
fail2ban_logencoding |
logencoding |
auto ascii utf-8 etc. |
auto |
Spécifie l'encodage des fichiers journaux gérés par la prison. La valeur par défaut de auto utilise la locale du système actuel. |
fail2ban_mode |
mode |
normal ddos extra aggressive |
normal |
Le mode du filtre |
fail2ban_filter |
filter |
nom du filtre | %(__name__)s[mode=%(mode)s] |
Le filtre à utiliser par la prison. Par défaut, les prisons ont des noms correspondant à leur nom de filtre |
fail2ban_logtimezone |
logtimezone |
UTC UTC+0200 GMT-0100 etc. |
Force le fuseau horaire pour les lignes de logs qui n'en ont pas. Si cette option n'est pas spécifiée, les lignes de logs pour lesquelles aucun fuseau horaire explicite n'a été trouvé sont interprétées par Fail2ban dans son propre fuseau horaire système. |
|
fail2ban_banaction |
banaction |
iptables , iptables-new , iptables-multiport , shorewall , etc |
iptables-multiport |
Action par défaut d'interdiction. Elle est utilisée pour définir les variables action_* . Peut être remplacée globalement ou par section dans le fichier jail.local |
fail2ban_banaction_allports |
banaction_allports |
iptables , iptables-new , iptables-multiport , shorewall , etc |
iptables-allports |
la même chose que banaction mais pour certaines prisons "allports" comme "pam-generic" ou "recidive" |
fail2ban_action |
action |
%(action_)s |
Choisir l'action par défaut. Pour changer, remplacez simplement la valeur de 'action' par l'interpolation pour le raccourci d'action choisi (par exemple, action_mw, action_mwl, etc.) ou choisissez une ou plusieurs actions depuis /etc/fail2ban/action.d/ sans l'extension .conf/.local. | |
fail2ban_failregex |
failregex |
Expression régulière Python |
regex (expression régulière Python) à ajouter aux failregexes du filtre (voir failregex dans la section FICHIERS DE FILTRE pour les détails). | |
fail2ban_ignoreregex |
ignoreregex |
regex qui, si la ligne de journal correspond, empêcherait Fail2ban de considérer cette ligne. Cette ligne sera ignorée même si elle correspond à un failregex de la prison ou à l'un de ses filtres. | ||
fail2ban_maxmatches |
maxmatches |
[INT] |
nombre maximum de lignes de journal correspondantes que la prison garderait en mémoire par ticket. Par défaut, il s'agit de la même valeur que maxretry de la prison (ou défaut) |
Dépendances
Aucune dépendance
Plateformes supportées
Ce rôle devrait fonctionner sur n'importe quelle distribution Linux basée sur Redhat ou Debian. Il a été testé sur les plateformes suivantes
- CentOS 8
- CentOS 7
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 10
- Debian 9
Exemple de Playbook
Le playbook suivant installe, active Fail2ban et ajoute une prison SSH
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Licence
MIT
Informations sur l'auteur
Ce rôle a été créé par sakibmoon en 2020
An ansible role to install and manage Fail2ban
ansible-galaxy install sakibmoon.fail2ban