Jak skonfigurować Fail2ban dla Proxmox VE API w celu blokowania adresów IP - Przewodnik krok po kroku

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.

We use cookies
Strona internetowa zbiera informację na potrzeby analizy ruchu odwiedzających (Google Analytics). Czy zgadzasz się na przetwarzanie danych?