Fail2ban (Polski)

Related articles
sshguard
Security
Fail2ban
skanuje pliki dziennika (np.
/var/log/httpd/error_log
) i banuje adresy IP wykazujące podejrzane działania, takie jak zbyt wiele nieudanych prób uwierzytelnienia, skanowanie w poszukiwaniu podatności itp. Zazwyczaj Fail2ban jest używany do aktualizacji reguł
firewall
w celu odrzucania adresów IP na określony czas, chociaż można również skonfigurować dowolną inną akcję (np. wysłanie e-maila).]
Warning
Użycie oprogramowania blokującego adresy IP zatrzyma trywialne ataki, ale wymaga dodatkowego demona i prawidłowego rejestrowania zdarzeń.
Zwykle nie ma sensu używać fail2ban z
sshd
, gdy włączone jest tylko uwierzytelnianie za pomocą klucza publicznego lub podobne.
Nie zastępuje on sieci VPN. Nie udostępniaj swoich usług w Internecie, chyba że jest to konieczne.
Dodatkowo, jeśli atakujący zna Twój adres IP, może wysłać pakiety ze sfałszowanym nagłówkiem źródła i doprowadzić do zablokowania Twojego adresu IP. Upewnij się, że określiłeś swój adres IP w
ignoreip
.
Instalacja
Install
pakiet
fail2ban
Używanie
Configure
Fail2ban and
enable/start
fail2ban.service
.
fail2ban-client
Fail2ban-client pozwala monitorować jails (reload, restart, status, itp.). Aby wyświetlić wszystkie dostępne polecenia:
$ fail2ban-client
Aby wyświetlić wszystkie włączone jails:
# fail2ban-client status
Aby sprawdzić status jail, np. dla „sshd”:
# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     9
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   0.0.0.0
Kompaktowa wersja dla wszystkich jail, w tym zablokowanych IP:
# fail2ban-client banned
[{'sshd': ['192.168.100.50']}, {'apache-auth': []}]
Konfiguracja
This article or section needs expansion.
Reason:
Add a note about
dbpurgeage
, see
[1]
. (Discuss in
Talk:Fail2ban (Polski)
)
Ze względu na możliwość utworzenia
Pacnew and Pacsave files
dla
/etc/fail2ban/jail.conf
podczas
upgrade
,
jail.conf(5) § CONFIGURATION FILES FORMAT
zaleca użytkownikom
create
pliku
/etc/fail2ban/jail.local
w celu „ułatwienia aktualizacji”.
Na przykład, aby zmienić domyślny czas bana na 1 dzień:
/etc/fail2ban/jail.local
[DEFAULT]
bantime = 1d
Możesz też utworzyć osobne pliki
name
.local
w katalogu
/etc/fail2ban/jail.d
, np.
/etc/fail2ban/jail.d/sshd.local
.
Reload
fail2ban.service
, aby zastosować zmiany konfiguracji.
Włączanie jails
Domyślnie wszystkie jail są wyłączone.
Append
enabled = true
do jail, który chcesz użyć, na przykład aby włączyć jail
OpenSSH
:
/etc/fail2ban/jail.local
[sshd]
enabled = true
Zobacz
#Custom SSH jail
.
Otrzymaj powiadomienie e-mailem
Jeśli chcesz otrzymywać wiadomość e-mail po zablokowaniu użytkownika, musisz skonfigurować klienta SMTP (np.
msmtp
) i zmienić domyślne działanie, jak opisano poniżej.
/etc/fail2ban/jail.local
[DEFAULT]
destemail = yourname@example.com
sender = yourname@example.com

# to ban & send an e-mail with whois report to the destemail.
action = %(action_mw)s

# same as action_mw but also send relevant log lines
#action = %(action_mwl)s
Firewall i usługi
Domyślnie Fail2ban używa
iptables
. Jednak konfiguracja większości
firewall
i usług jest prosta. Na przykład, aby użyć
nftables
:
/etc/fail2ban/jail.local
[DEFAULT]
banaction = nftables
banaction_allports = nftables[type=allports]
Zobacz
/etc/fail2ban/action.d/
, aby zapoznać się z innymi przykładami, np.
ufw.conf
.
Porady i wskazówki
Custom SSH jail
Warning
Jeśli atakujący zna Twój adres IP, może wysłać pakiety z fałszywym nagłówkiem źródłowym i spowodować zablokowanie dostępu Twojego adresu IP do serwera.
SSH keys
stanowią eleganckie rozwiązanie problemu ataku siłowego bez tych problemów.
Edytuj
/etc/fail2ban/jail.d/sshd.local
, dodaj tę sekcję i zaktualizuj listę zaufanych adresów IP w
ignoreip
:
/etc/fail2ban/jail.d/sshd.local
[sshd]
enabled   = true
filter    = sshd
banaction = iptables
backend   = systemd
maxretry  = 5
findtime  = 1d
bantime   = 2w
ignoreip  = 127.0.0.1/8 ::1
Note
Może być konieczne ustawienie
LogLevel VERBOSE
w
/etc/ssh/sshd_config
, aby umożliwić pełne monitorowanie fail2ban, w przeciwnym razie nieudane logowania mogą nie być poprawnie logowane.
Fail2ban obsługuje IPv6 od wersji 0.10. Dostosuj odpowiednio swoją
firewall
, np.
start
/
enable
ip6tables.service
.
Podczas korzystania z journal namespaces (poprzez dodanie
LogNamespace=
something
do pliku jednostki), możesz skonfigurować fail2ban do odczytywania tych logów, ustawiając
backend
w następujący sposób:
backend = systemd[journalfiles="/var/log/journal/*.
something
/system.journal"]
.]
.
Tip
W przypadku korzystania z interfejsów użytkownika
iptables
, takich jak
ufw
, można użyć
banaction = ufw
zamiast iptables.
Używając
Shorewall
, można użyć
banaction = shorewall
i ustawić
BLACKLIST
na
ALL
w
/etc/shorewall/shorewall.conf
; w przeciwnym razie reguła ban dodana do adresu IP będzie dotyczyć tylko nowych połączeń.
systemd backend: journald filtering
W przypadku korzystania z zaplecza „systemd” w celu poprawy wydajności, skonfiguruj filtr za pomocą
journalmatch
. Na przykład, aby analizować tylko komunikaty dziennika na poziomie jądra:
/etc/fail2ban/filter.d/fwdrop.local
[Definition]
failregex = ^.*DROP_.*SRC=<ADDR> DST=.*$
journalmatch = _TRANSPORT=kernel
Zobacz także
systemd.journal-fields(7)
.
Service hardening
Obecnie Fail2ban musi być uruchamiany jako 'root'. Z tego powodu zaleca się hardening procesu za pomocą
systemd
.
Create
a
drop-in file
dla
fail2ban.service
:
/etc/systemd/system/fail2ban.service.d/override.conf
[Service]
PrivateDevices=yes
PrivateTmp=yes
ProtectHome=read-only
ProtectSystem=strict
ReadWritePaths=-/var/run/fail2ban
ReadWritePaths=-/var/lib/fail2ban
ReadWritePaths=-/var/log/fail2ban.log
ReadWritePaths=-/var/spool/postfix/maildrop
ReadWritePaths=-/run/xtables.lock
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
Parametry
CAP_DAC_READ_SEARCH
zestawu
CapabilityBoundingSet
umożliwią Fail2banowi pełny dostęp do odczytu każdego katalogu i pliku.
CAP_NET_ADMIN
i
CAP_NET_RAW
umożliwiają Fail2banowi działanie na dowolnej zaporze sieciowej z interfejsem
command-line shell
. Więcej informacji można znaleźć w
capabilities(7)
.
Dzięki użyciu
ProtectSystem=strict
hierarchia
filesystem
będzie dostępna tylko do odczytu,
ReadWritePaths
umożliwia Fail2banowi dostęp do zapisu na wymaganych ścieżkach.
Na koniec wykonaj polecenie
daemon-reload
, aby zastosować zmiany w jednostce i
restart
fail2ban.service
.
Zobacz także
Using a Fail2Ban Jail to Whitelist a User
Optimising your Fail2Ban filters
Fail2Ban and sendmail
Fail2Ban and iptables
Fail2Ban 0.8.3 Howto
Monitoring the fail2ban log