Fail2ban i WordPress

Fail2ban i WordPress

7 sierpnia 2021 0 przez gielo

Z niniejszego artykułu dowiesz się jak zwiększyć bezpieczeństwo twojego bloga opartego o CMS WordPress oraz jakie dodatkowe filtry fail2ban warto uruchomić, aby zwiększyć bezpieczeństwo także innych usług działających na serwerze takich jak serwery pocztowe i www, ftp, ssh itp. Wszystko to w oparciu o niewielki serwer VPS, który świadczy w/w usługi.

Krótko po uruchomieniu serwera VPS pewnie zauważysz masowe próby logowania do ssh, ftp, wordpressa, jak i np. masowe próby skanowania portów itp. Jest to normalne zjawisko ale też i bardzo upierdliwe jeśli nie posiadasz na serwerze żadnych zabezpieczeń, które by znacząco ograniczały takie praktyki. Do tego celu świetnie nadaje się właśnie fail2ban.

Jakie więc filtry fail2ban warto uruchomić, aby ograniczyć życie intruzom i skutkom potencjalnych ataków na naszą infrastrukturę serwerową? Najpierw trzeba zainstalować samego fail2ban wydając w konsoli polecenie

$ sudo apt instal fail2ban

Następnie należy skonfigurować odpowiednie filtry. Tutaj taka mała uwaga, otóż sam fail2ban też zajmuje mniejsze lub większe zasoby serwera w zależności od tego jakie filtry i ile tych filtrów w danej chwili mamy uruchomionych, więc musimy sami określić, które z nich są dla nas niezbędne, aby nie zarżnąć najzwyczajniej serwera. Poniżej przedstawiam Ci własną propozycję, którą i sam też stosuję w oparciu o własne doświadczenia.

Ochrona serwera FTP oraz poczty.

Jeśli używasz innych serwerów na swoim vps, dostosuj użyte filtry do nich. Uruchom poniższe polecenia.

$ cd /etc/fail2ban/jail.d
$ sudo touch base.conf

wejdź do edycji base.conf i dodaj do niego poniższcze wpisy

[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3

Zapisz i wyjdź z edytora. Pierwsza sekcja odpowiada za uruchomienie ochrony usługi FTP PureFtp, dwie kolejne usług pocztowych Dovecot i Postfix. Jeżeli posiadasz na swoim VPS uruchomione inne serwery dostosuj filtry pod nie. Dostępne filtry znajdziesz w katalogu /etc/fail2ban/filter.d

Ochrona WordPressa

Wejdź do panelu administracyjnego swojego WordPressa i zainstaluj wtyczkę WP Fail2Ban Redux, a następnie przekopiuj dwa pliki wordpress-hard.conf oraz wordpress-soft.conf znajdujące się w katalogu /config/filters/ twojej zainstalowanej wtyczki WP Fail2Ban Redux do katalogu /etc/fail2ban/filter.d oraz plik wordpress.conf znajdujący się w katalogu /config/jail/ twojej zainstalowanej wtyczki do katalogu /etc/fail2ban/jail.d twojego VPS.

Na sam koniec przydało by się nam jeszcze jakoś zablokować tzw. recydywistów, którzy pomimo powyższych czasowych blokad w dalszym ciągu zarzucają nasze serwery próbami połączeń, logowań, skanowania portów, wykrywania potencjalnych luk na serwerze itp. Dla nich przewidziane są kolejne filtry i dłuższe czasowo blokady.

wyedytuj plik /etc/fail2ban/filter.d i podmień znajdujący się tam wpis

ignoreregex = 

na

ignoreregex = \[recidive.*\]\s+Ban\s+<HOST>

zapisz plik i przejdź do katalogu

/etc/fail2ban/jail.d

i utwórz w nim plik poleceniem

$ sudo touch recidive.conf

wyedytuj utworzony plik recidive.conf i dopisz do niego poniższe wpisy

[recidive1]
enabled = true
filter = recidive
bantime = 10800 ; 3 godziny
findtime = 86400 ; 1 dzień
logpath = /var/log/fail2ban.log
maxretry = 4

[recidive2]
enabled = true
filter = recidive
bantime = 86400 ;1 dzień
findtime = 604800 ;1 tydzień
logpath = /var/log/fail2ban.log
maxretry = 7

[recidive3]
enabled = true
filter = recidive
bantime = 604800 ;1 tydzień
findtime = 2592000 ;1 miesiąc
logpath = /var/log/fail2ban.log
maxretry = 10

[recidive4]
enabled = true
filter =recidive
bantime = 2592000 ;1 miesiąc
findtime = 15552000 ;6 miesięcy
logpath = /var/log/fail2ban.log
maxretry = 20

Działa to w ten sposób, że delikwent mimo wcześniejszych banów, przy kolejnych próbach wpada w już w powyższe filtry, i odpowiednio do ilości dalszych prób ataków/logowań/skanowań dostaje kolejne bany na określony w nich czas.

Na koniec uruchom fail2ban wraz ze zdefiniowanymi powyżej filtrami.

$ sudo systemctl start fail2ban

Oraz sprawdź czy fail2ban wraz z filtrami działa poleceniem

$ fail2ban-client status

Powinieneś otrzymać wynik podobny do poniższego

Status
|- Number of jail:	10
`- Jail list:	dovecot, postfix, pure-ftpd, recidive1, recidive2, recidive3, recidive4, sshd, wordpress-hard, wordpress-soft

Jeżeli jest pusto to znaczy, że gdzieś popełniłeś błąd i powinieneś raz jeszcze przejrzeć zdefiniowane filtry, poprawić błąd, raz jeszcze uruchomić fail2ban i sprawdzić, czy tym razem fail2ban działa ze zdefiniowanymi i włączonymi filtrami.

A co np. filtrami dla innych usług jak serwery nginx, apache itp? Jeśli posiadasz jakiś silniejszy serwer vps z większą ilością rdzeni procesora niż 1, większą ilością pamięci ram, to możesz je także uruchomić biorąc za przykład powyższe konfiguracje.