sakibmoon.fail2ban
Rollenname
Eine Ansible-Rolle zur Installation und Verwaltung von Fail2ban.
Voraussetzungen
Ansible Version 2.6 oder höher.
Installation
Ansible Galaxy
Verwende ansible-galaxy install sakibmoon.fail2ban
Git
Verwende git clone https://github.com/sakibmoon/ansible-role-fail2ban.git
Anwendung
Installiere und aktiviere Fail2ban und konfiguriere SSH mit Fail2ban.
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Siehe Rollenvariablen und Beispiel-Playbook für komplexere Anwendungsfälle und wie du alle Optionen anpassen kannst.
Rollenvariablen
Service-Überwachungsoptionen
fail2ban_services
Eine Liste von Diensten, die von Fail2ban überwacht werden sollen. Jede Listenoption muss den Dienstnamen und den Logpfad enthalten. Gib nur die Einstellungen an, die du ändern möchtest. Der Rest der Konfiguration stammt aus der globalen Gefängniskonfiguration, wie hier zu sehen/setzen hier.
Service-Optionen:
name
: Name des Dienstes
logpath
: Logpfad des Dienstes, der überwacht werden soll
port
: Durch Komma getrennte Ports zur Überwachung
enabled
: Ob dieses Gefängnis aktiviert werden soll
Aktionsliste
fail2ban_actionlist
Eine Liste von Aktionen, die erstellt werden sollen. Die Aktionen werden im Verzeichnis /etc/fail2ban/action.d/
gespeichert. Eine einzelne Aktion kann folgende Optionen enthalten:
name
: Aktionsname. Der Name der Datei.
sections
: Eine Liste von Abschnitten wie Definition
, Init
usw., die ein Wörterbuch von Einträgen enthält
file_ext
: (Optional) Die Dateierweiterung. Kann entweder local
oder conf
sein. Standard: local
Beispiel:
fail2ban_actionlist:
- name: toy-action1
sections:
- name: Definition
options:
- name: actionstart
value: "ActionStart Wert"
- name: actionflush
value: "Actionflush Wert"
- name: Init
options:
- name: timeout
value: "timeout Wert"
file_ext: "local"
- name: toy-action2
sections:
- name: INCLUDES
options:
- name: before
value: something-to-include.local
- name: Definition
options:
- name: actionstart
value: "ActionStart Wert"
- name: actionflush
value: "Actionflush Wert"
- name: Init
options:
- name: timeout
value: "timeout Wert"
Filterliste
fail2ban_filterlist
Eine Liste von Filtern, die erstellt werden sollen. Der Filter wird im Verzeichnis /etc/fail2ban/action.d/
gespeichert. Das Format ist dasselbe wie bei fail2ban_actionlist
, wie oben gezeigt.
Fail2ban-Konfigurationsoptionen
Variablenname | Fail2ban-Optionsname | Optionswerte | Standardwert | Beschreibung |
---|---|---|---|---|
fail2ban_confpath |
[DATEI] |
/etc/fail2ban/fail2ban.local |
Der Pfad, wo die Fail2ban-Konfigurationen geschrieben werden. | |
fail2ban_loglevel |
loglevel |
CRITICAL ERROR WARNING INFO DEBUG \ [0-3] |
ERROR für Version > 0.8.x 1 für Version 0.8.x |
Legt die Logausgabestufe fest. |
fail2ban_logtarget |
logtarget |
[DATEI] STDOUT STDERR SYSLOG |
/var/log/fail2ban.log |
Legt das Log-Ziel fest. Nur ein Log-Ziel kann angegeben werden. |
fail2ban_syslogsocket |
syslogsocket |
auto [DATEI] |
auto |
Legt die Syslog-Socket-Datei fest. |
fail2ban_socket |
socket |
[DATEI] |
/var/run/fail2ban/fail2ban.sock |
Legt die Socket-Datei fest. Diese wird verwendet, um mit dem Daemon zu kommunizieren. |
fail2ban_pidfile |
pidfile |
[DATEI] |
/var/run/fail2ban/fail2ban.pid |
Legt die PID-Datei fest. Diese wird verwendet, um die Prozess-ID des Fail2ban-Servers zu speichern. |
fail2ban_dbfile |
dbfile |
None :memory: [DATEI] |
/var/lib/fail2ban/fail2ban.sqlite3 |
Legt die Datei fest, in der die persistenten Daten von Fail2ban gespeichert werden. |
fail2ban_dbpurgeage |
dbpurgeage |
[ SEKUNDEN ] |
86400 |
Legt das Alter fest, ab dem Sperren aus der Datenbank gelöscht werden sollen. |
fail2ban_dbmaxmatches |
dbmaxmatches |
[ INT ] |
20 |
Anzahl der im Speicher gehaltenen Übereinstimmungen pro Ticket. |
fail2ban_stacksize |
stacksize |
[ GRÖSSE ] |
0 |
Legt die Stapelgröße (in KiB) für neu erstellte Threads fest und muss 0 oder eine positive ganze Zahl von mindestens 32 sein. |
Globale Gefängniskonfigurationsoptionen
Variablenname | Fail2ban-Optionsname | Optionswerte | Standardwert | Beschreibung |
---|---|---|---|---|
fail2ban_jailpath |
[DATEI] |
/etc/fail2ban/jail.local |
Die Datei zum Schreiben der standardmäßigen Gefängniskonfiguration von Fail2ban. | |
fail2ban_ignoreself |
ignoreself |
booleantrue false |
true |
Gibt an, ob das Sperren der eigenen IP-Adressen verhindert werden soll. |
fail2ban_ignoreip |
ignoreip |
Liste von IP-Adressen | Liste von IPs, die nicht gesperrt werden sollen. | |
fail2ban_ignorecommand |
ignorecommand |
/path/to/command |
Externer Befehl, der taggespeicherte Argumente ignoriert. | |
fail2ban_ignorecache |
ignorecache |
disabled |
Cache-Parameter für die Überprüfung von Fehlern. | |
fail2ban_bantime |
bantime |
[ SEKUNDEN ] |
600 |
Effektive Sperrdauer (in Sekunden). |
fail2ban_findtime |
findtime |
[ SEKUNDEN ] |
600 |
Zeitintervall (in Sekunden), bevor die aktuellen Fehler zur Sperrung zählen. |
fail2ban_maxretry |
maxretry |
[ INT ] |
5 |
Anzahl der Fehler, bevor ein Host gesperrt wird. |
fail2ban_backend |
backend |
pyinotify gamin polling systemd auto |
auto |
Gibt den Backend an zur Dateimodifikationserkennung. |
fail2ban_usedns |
usedns |
yes warn no raw |
warn |
Gibt an, ob die Gefängnisse Hostnamen in Logs vertrauen sollen. |
fail2ban_logencoding |
logencoding |
auto ascii utf-8 etc. |
auto |
Legt die Kodierung der von dem Gefängnis verwalteten Logdateien fest. |
fail2ban_mode |
mode |
normal ddos extra aggressive |
normal |
Der Modus des Filters. |
fail2ban_filter |
filter |
Filtername | %(__name__)s[mode=%(mode)s] |
Der Filter, der von dem Gefängnis verwendet werden soll. |
fail2ban_logtimezone |
logtimezone |
UTC UTC+0200 GMT-0100 usw. |
Zwingt die Zeitzone für Logzeilen, die keine haben. | |
fail2ban_banaction |
banaction |
iptables , iptables-new , iptables-multiport , shorewall , usw. |
iptables-multiport |
Standard-Baßaktion. |
fail2ban_banaction_allports |
banaction_allports |
iptables , iptables-new , iptables-multiport , shorewall , usw. |
iptables-allports |
Dasselbe wie die Banaction, aber für „alle Ports“-Gefängnisse. |
fail2ban_action |
action |
%(action_)s |
Wähle die Standardaktion. Zum Ändern überschreibe einfach den Wert von 'action'. | |
fail2ban_failregex |
failregex |
Python-Regulärer Ausdruck |
regex, die dem Filter hinzugefügt werden soll. | |
fail2ban_ignoreregex |
ignoreregex |
Regex, die, wenn der Logzeile übereinstimmt, dazu führt, dass Fail2Ban diese Zeile nicht betrachtet. | ||
fail2ban_maxmatches |
maxmatches |
[INT] |
Maximale Anzahl der übereinstimmenden Logzeilen, die das Gefängnis im Speicher pro Ticket speichert. |
Abhängigkeiten
Keine Abhängigkeiten.
Unterstützte Plattformen
Diese Rolle sollte auf jeder Redhat- oder Debian-basierten Linux-Distribution funktionieren. Sie wurde auf den folgenden Plattformen getestet:
- CentOS 8
- CentOS 7
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 10
- Debian 9
Beispiel-Playbook
Das folgende Playbook installiert, aktiviert Fail2ban und fügt ein SSH-Gefängnis hinzu.
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Lizenz
MIT
Autoreninformation
Diese Rolle wurde von sakibmoon @2020 erstellt.
An ansible role to install and manage Fail2ban
ansible-galaxy install sakibmoon.fail2ban