sakibmoon.fail2ban
Nazwa Roli
Rola ansible do instalacji i zarządzania Fail2ban
Wymagania
Wersja Ansible 2.6 lub nowsza
Instalacja
Ansible Galaxy
Użyj ansible-galaxy install sakibmoon.fail2ban
Git
Użyj git clone https://github.com/sakibmoon/ansible-role-fail2ban.git
Podstawowe użycie
Zainstaluj i włącz fail2ban oraz skonfiguruj ssh z fail2ban
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Zobacz Zmienne Roli i Przykładowy Playbook dla bardziej złożonych przypadków użycia oraz jak dostosować wszystkie opcje.
Zmienne Roli
Opcje Monitorowania Usług
fail2ban_services
Lista usług monitorowanych przez fail2ban. Każda opcja na liście musi zawierać nazwę usługi i ścieżkę do logów. Określ tylko ustawienia, które chcesz zmienić. Reszta konfiguracji będzie pochodzić z globalnej konfiguracji, jak pokazano tutaj.
Opcje usługi:
name
: Nazwa usługi
logpath
: Ścieżka do logów monitowanej usługi
port
: Porty do monitorowania, oddzielone przecinkami
enabled
: Czy włączyć tę pułapkę
Lista Akcji
fail2ban_actionlist
Lista akcji do utworzenia. Akcje są zapisywane w katalogu /etc/fail2ban/action.d/
. Pojedyncza akcja może zawierać następujące opcje:
name
: Nazwa akcji. Nazwa pliku.
sections
: Lista sekcji takich jak Definition
, Init
, które zawierają słownik wpisów
file_ext
: (Opcjonalnie) Rozszerzenie pliku. Może być local
lub conf
. Domyślnie: local
Przykład:
fail2ban_actionlist:
- name: toy-action1
sections:
- name: Definition
options:
- name: actionstart
value: "Wartość ActionStart"
- name: actionflush
value: "Wartość Actionflush"
- name: Init
options:
- name: timeout
value: "Wartość timeout"
file_ext: "local"
- name: toy-action2
sections:
- name: INCLUDES
options:
- name: before
value: something-to-include.local
- name: Definition
options:
- name: actionstart
value: "Wartość ActionStart"
- name: actionflush
value: "Wartość Actionflush"
- name: Init
options:
- name: timeout
value: "Wartość timeout"
Lista Filtrów
fail2ban_filterlist
Lista filtrów do utworzenia. Filtr jest zapisywany w katalogu /etc/fail2ban/action.d/
. Format jest taki sam jak fail2ban_actionlist
, jak pokazano powyżej.
Opcje Konfiguracji Fail2ban
Nazwa Zmiennej | Nazwa Opcji Fail2ban | Wartości Opcji | Wartość Domyślna | Opis |
---|---|---|---|---|
fail2ban_confpath |
[FILE] |
/etc/fail2ban/fail2ban.local |
Ścieżka, w której zapisywana jest konfiguracja fail2ban. | |
fail2ban_loglevel |
loglevel |
CRITICAL ERROR WARNING INFO DEBUG \ [0-3] |
ERROR dla wersji > 0.8.x 1 dla wersji 0.8.x |
Ustaw poziom logowania. |
fail2ban_logtarget |
logtarget |
[FILE] STDOUT STDERR SYSLOG |
/var/log/fail2ban.log |
Ustaw cel logowania. Można określić tylko jeden cel logowania. Jeśli zmienisz logtarget z wartości domyślnej i używasz logrotate — również dostosuj lub wyłącz rotację w odpowiednim pliku konfiguracyjnym (np. /etc/logrotate.d/fail2ban w systemach Debian). |
fail2ban_syslogsocket |
syslogsocket |
auto [FILE] |
auto |
Ustaw plik gniazda syslog. Używane tylko gdy logtarget to SYSLOG. auto wykorzystuje platform.system() do określenia wstępnie zdefiniowanych ścieżek. |
fail2ban_socket |
socket |
[FILE] |
/var/run/fail2ban/fail2ban.sock |
Ustaw plik gniazda. Używane do komunikacji z demonem. Nie usuwaj tego pliku, gdy Fail2ban działa. Inaczej nie będzie możliwe komunikowanie się z serwerem. |
fail2ban_pidfile |
pidfile |
[FILE] |
/var/run/fail2ban/fail2ban.pid |
Ustaw plik PID. Używane do przechowywania identyfikatora procesu serwera fail2ban. |
fail2ban_dbfile |
dbfile |
None :memory: [FILE] |
/var/lib/fail2ban/fail2ban.sqlite3 |
Ustaw plik do przechowywania danych trwałych fail2ban. Wartość :memory: oznacza, że baza danych jest przechowywana tylko w pamięci i dane są tracone, gdy fail2ban zostaje zatrzymany. Wartość None wyłącza bazę danych. |
fail2ban_dbpurgeage |
dbpurgeage |
[ SECONDS ] |
86400 |
Ustawia wiek, po którym bany powinny być usuwane z bazy danych |
fail2ban_dbmaxmatches |
dbmaxmatches |
[ INT ] |
20 |
Liczba dopasowań przechowywanych w bazie danych na zgłoszenie. |
fail2ban_stacksize |
stacksize |
[ SIZE ] |
0 |
Określa rozmiar stosu (w KiB) używany dla później tworzonych wątków, musi być 0 lub dodatnią wartością całkowitą co najmniej 32. |
Opcje Globalnej Konfiguracji Pułapki
Nazwa Zmiennej | Nazwa Opcji Fail2ban | Wartości Opcji | Wartość Domyślna | Opis |
---|---|---|---|---|
fail2ban_jailpath |
[FILE] |
/etc/fail2ban/jail.local |
Plik do zapisywania domyślnej konfiguracji pułapki Fail2ban | |
fail2ban_ignoreself |
ignoreself |
booleantrue false |
true |
Wskazuje, że banowanie własnych adresów IP powinno być zablokowane. |
fail2ban_ignoreip |
ignoreip |
Lista adresów IP | Lista IP, które nie będą banowane. Mogą również zawierać maskę CIDR. Opcja wpływa również na ignoreself (jeśli jest ustawione na true) i nie musi zawierać własnych adresów IP lub DNS hosta. | |
fail2ban_ignorecommand |
ignorecommand |
/path/to/command |
Zewnętrzna komenda, która weźmie oznaczone argumenty do zignorowania, np. |
|
fail2ban_ignorecache |
ignorecache |
disabled |
Umożliwienie parametrów pamięci podręcznej dla sprawdzenia błędów (pamięć wyników z ignoreip , ignoreself i ignorecommand ) |
|
fail2ban_bantime |
bantime |
[ SECONDS ] |
600 |
Czas efektywnego bana (w sekundach). |
fail2ban_findtime |
findtime |
[ SECONDS ] |
600 |
Interwał czasowy (w sekundach) przed bieżącym czasem, w którym awarie będą liczone na bana. |
fail2ban_maxretry |
maxretry |
[ INT ] |
5 |
Liczba niepowodzeń przed zablokowaniem hosta. |
fail2ban_backend |
backend |
pyinotify gamin polling systemd auto |
auto |
Określa backend używany do uzyskiwania modyfikacji plików. |
fail2ban_usedns |
usedns |
yes warn no raw |
warn |
Określa, czy pułapki powinny ufać nazwom hostów w logach, ostrzegać, gdy są wykonywane zapytania DNS, czy ignorować wszystkie nazwy hostów w logach |
fail2ban_logencoding |
logencoding |
auto ascii utf-8 itp. |
auto |
Określa kodowanie plików logów obsługiwanych przez pułapkę. Domyślna wartość auto używa aktualnej lokalizacji systemu. |
fail2ban_mode |
mode |
normal ddos extra aggressive |
normal |
Tryb filtra |
fail2ban_filter |
filter |
nazwa filtra | %(__name__)s[mode=%(mode)s] |
Filtr używany przez pułapkę. Domyślnie pułapki mają nazwy odpowiadające ich nazwom filtrów |
fail2ban_logtimezone |
logtimezone |
UTC UTC+0200 GMT-0100 itp. |
Wymusza strefę czasową dla linii logów, które jej nie mają. Jeśli ta opcja nie jest określona, linie logów, dla których nie znaleziono wyraźnej strefy czasowej, są interpretowane przez fail2ban w jego własnej strefie czasowej. |
|
fail2ban_banaction |
banaction |
iptables , iptables-new , iptables-multiport , shorewall , itp. |
iptables-multiport |
Domyślna akcja banowania. Służy do definiowania zmiennych action_* . Może być nadpisana globalnie lub na każdym poziomie w pliku jail.local |
fail2ban_banaction_allports |
banaction_allports |
iptables , iptables-new , iptables-multiport , shorewall , itp. |
iptables-allports |
To samo, co banaction, ale dla niektórych "wszystkich portów" pułapek, takich jak "pam-generic" lub "recidive" |
fail2ban_action |
action |
%(action_)s |
Wybierz domyślną akcję. Aby zmienić, po prostu nadpisz wartość 'action' z interpozycją do wybranej akcji (np. action_mw, action_mwl, itp.) lub wybierz akcję z /etc/fail2ban/action.d/ bez rozszerzenia .conf/.local. | |
fail2ban_failregex |
failregex |
Wyrażenie regularne Pythona |
regex (wyrażenie regularne Pythona), które zostanie dodane do failregexów filtra (zobacz failregex w sekcji PLIKI FILTRÓW dla szczegółów). | |
fail2ban_ignoreregex |
ignoreregex |
regex, który, jeśli linia logów pasuje, spowoduje, że Fail2Ban nie weźmie tej linii pod uwagę. Linia ta zostanie zignorowana, nawet jeśli pasuje do failregex pułapki lub któregokolwiek z jej filtrów. | ||
fail2ban_maxmatches |
maxmatches |
[INT] |
maksymalna liczba dopasowanych linii logów, które pułapka przechowuje w pamięci na każde zgłoszenie. Domyślnie jest to ta sama wartość co maxretry pułapki (lub domyślna) |
Zależności
Brak zależności
Obsługiwane Platformy
Ta rola powinna działać na dowolnej dystrybucji Linuksa opartej na Redhat lub Debian. Została przetestowana na następujących platformach:
- CentOS 8
- CentOS 7
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 10
- Debian 9
Przykładowy Playbook
Poniższy playbook instaluje, włącza fail2ban i dodaje pułapkę ssh
- hosts: servers
vars:
fail2ban_services:
- name: "sshd"
enabled: "true"
port: "ssh"
filter: "sshd"
logpath: "/var/log/auth.log"
maxretry: 6
roles:
- sakibmoon.fail2ban
Licencja
MIT
Informacje o autorze
Ta rola została stworzona przez sakibmoon w 2020 roku
ansible-galaxy install sakibmoon.fail2ban