Fail2ban to narzędzie o otwartym kodzie źródłowym, które pomaga w zabezpieczaniu serwera przed atakami typu brute-force poprzez blokowanie adresów IP, które próbują zbyt wiele nieprawidłowych prób logowania. W tym artykule przedstawimy, jak skonfigurować Fail2ban dla Proxmox VE API, aby tymczasowo blokować adresy IP, które podejmują zbyt wiele prób nieudanych logowań.
Instalacja Fail2ban
Pierwszym krokiem jest instalacja Fail2ban na hoście Proxmox VE. Możesz to zrobić, wykonując następujące polecenia jako root w konsoli na hoście Proxmox VE lub poprzez SSH.
apt update
apt install fail2ban
Konfiguracja podstawowa
Najpierw zalecamy korzystanie z pliku /etc/fail2ban/jail.local
do konfiguracji. Ustawienia w tym pliku mają pierwszeństwo przed identycznymi ustawieniami w pliku jail.conf
. Możesz skopiować plik jail.conf
jako szablon:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Następnie dostosuj lub usuń niepotrzebne ustawienia w skopiowanym pliku jail.local
. Głównym powodem korzystania z osobnego pliku jest to, że oryginalny jail.conf
może zostać nadpisany przez aktualizacje pakietu Fail2ban. Dzięki plikowi jail.local
możesz lepiej zarządzać aktualizacjami.
Konfiguracja jail z użyciem backendu systemd
Od wersji 4.0 Proxmox VE domyślnie korzysta z systemd-journald
, a od wersji 7.0 logi są przechowywane między restartami, co oznacza, że ataki mogą być wykrywane nawet po restarcie. Dla starszych systemów istnieje opcja korzystania z rsyslog
.
Konfiguracja podstawowa
Dodaj następujące linie na koniec pliku /etc/fail2ban/jail.local
:
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
backend = systemd
maxretry = 3
findtime = 2d
bantime = 1h
Warto zaznaczyć, że właściwości czasu, takie jak bantime
i findtime
, pozwalają na korzystanie z kombinacji np. "2m 30s". Możesz przetestować, czy są one poprawne, używając polecenia fail2ban-client --str2sec '1d 12h'
. Więcej informacji na ten temat znajdziesz w dokumentacji jail.conf.
Konfiguracja filtra
Następnie utwórz plik /etc/fail2ban/filter.d/proxmox.conf
i dodaj do niego następujący zawartość:
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =
Restartowanie usługi w celu aktywacji konfiguracji
Aby aktywować nową konfigurację i włączyć Fail2ban dla API Proxmox VE, użyj polecenia:
systemctl restart fail2ban
Testowanie konfiguracji Fail2ban
Możesz przetestować swoją konfigurację, próbując zalogować się przez interfejs internetowy z błędnym hasłem lub użytkownikiem, a następnie użyć polecenia:
fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf
W wyniku powinieneś zobaczyć co najmniej "Failregex: 1 total" na szczycie sekcji "Results" (i "1 matched" na dole).
Jeśli próbujesz zbyt wiele razy i zablokowałeś swój własny adres IP (twój adres IP jest raportowany przez fail2ban-client get proxmox banned
), możesz ręcznie odblokować się za pomocą polecenia fail2ban-client unban IP
(zastąp "IP" swoim adresem IP).
Starsza opcja: Użycie backendu rsyslog
Poniższa konfiguracja korzysta z backendu rsyslog
i działa domyślnie od Proxmox VE 3 aż do wersji 7.
Jeśli jednak instalujesz Proxmox VE 8 lub nowszą wersję, pakiet rsyslog
nie zostanie zainstalowany domyślnie. W takim przypadku musisz zainstalować pakiet rsyslog
lub użyć zalecanego wariantu z backendem systemd
, opisanego powyżej.
Dodaj następujący wpis na koniec pliku /etc/fail2ban/jail.local
:
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 3
bantime = 1h
Następnie kontynuuj, tworząc plik filtra /etc/fail2ban/filter.d/proxmox.conf
, jak opisano wcześniej w sekcji "Konfiguracja filtra", a następnie ponownie uruchom usługę Fail2ban.
To już wszystko! Teraz masz skonfigurowanego Fail2ban do ochrony swojego Proxmox VE przed atakami typu brute-force na API. Pamiętaj jednak, że należy regularnie monitorować logi i dostosowywać ustawienia w zależności od swoich potrzeb bezpieczeństwa.