sakibmoon.fail2ban

Nom du rôle

Ansible Galaxy État de la construction
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éen
true
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 , et renvoie vrai si l'IP doit être ignorée. Faux sinon.
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

À propos du projet

An ansible role to install and manage Fail2ban

Installer
ansible-galaxy install sakibmoon.fail2ban
Licence
mit
Téléchargements
592
Propriétaire