Krótko mówiąc, w tym samouczku znajdziesz wiersze poleceń, za pomocą których możesz zainstalować i skonfigurować Fail2ban dla WordPress. Bezpieczne uwierzytelnianie WordPress i Xmlrpc.php brutto.
Blogi i strony opracowane na platformie WordPress są często celami cyberatakami. Większość ataków ma rodzaj siły brutto i kieruje sesję uwierzytelniania lub wykorzystanie XML-RPC (połączenie zdalnego procedury za pomocą XML). Na szczęście Fail2ban jest bardzo przydatnym rozwiązaniem bezpieczeństwa w tych sytuacjach. Jeśli chcesz zabezpieczyć witrynę WordPress za pomocą Fail2ban, postępuj zgodnie z krokami konfiguracji w tym samouczku.
Przede wszystkim upewnij się, że masz dostęp do serwera WWW przez SSH Connection i że aplikacja Fail2ban jest zainstalowana.
KONFIGURACJA FAIL2BAN dla WordPress na Debian
1. Po pierwsze, musisz upewnić się, że aplikacja Fai2ban jest zainstalowana i że działa na serwerze. Wykonaj wiersz poleceń poniżej:
systemctl status fail2ban
Na wyjściu powinieneś zobaczyć coś z formularza:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
Docs: man:fail2ban(1)
Main PID: 917 (fail2ban-server)
Tasks: 17 (limit: 76843)
Memory: 33.2M
CPU: 17min 1.752s
CGroup: /system.slice/fail2ban.service
└─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Jeśli Fail2ban nie zostanie zainstalowany na serwerze, musisz go zainstalować. Wykonaj linię zamówień dla instalacji Fail2ban na Debian / Ubuntu:
sudo apt install fail2ban
2. Następnym krokiem jest utworzenie filtra Fail2ban dla WordPress. Wykonaj w terminalu wiersz polecenia, aby utworzyć i edytować filtr wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
W pliku wordpress.conf
Ustawia filtry uwierzytelniania WordPress i uwierzytelnianie plików xmlrpc.php
, jak następuje:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Oznacza to, że dowolną metodą, GET
Lub POST
. Warunkiem jest, aby te pliki istnieją i mogą do nich uzyskać dostęp atakujący. To znaczy zwrócić kod 200 (OK), aby uzyskać dostęp.
Zapisuje plik /etc/fail2ban/filter.d/wordpress.conf
.
3. Następnym krokiem jest skonfigurowanie “więzienie” dla WordPress. Na tym etapie większość użytkowników jest zdezorientowana, ponieważ reguły należy ustalić inaczej w zależności od systemu zarządzania hostingiem (jeśli istnieje) lub konfiguracji serwera WWW.
Jeśli używasz HestiACP, VestACP lub Myvesta, utwórz i edytuj plik /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
Dodaj ten plik poniższe wiersze:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime = 3600
action = hestia[name=WEB] #hestacp action.
Dostosuj powyższe parametry zgodnie z Twoimi potrzebami. W konfiguracji podanej przeze mnie, jeśli w ciągu 1800 minut pojawi się 5 powtarzających się prób z tego samego IP, zostanie on zablokowany przez 3600 minut za pomocą sieci Hestiacp. (hestia[name=WEB]
). Tutaj musisz pomóc zgodnie z systemem, który masz na serwerze.
Jest to również bardzo ważne i “logpath
“. Z tych dzienników wyodrębnia się dane na podstawie tego, które zostanie wykonane. Upewnij się, że lokalizacja jest poprawna.
Jeśli nie masz zainstalowanego systemu zarządzania, będziesz potrzebować działania blokowania IPS z upadkiem2ban, aby WordPress mógł być wykonany bezpośrednio iptables
. Linia akcji będzie następująca:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Jako wspornik zamiast /etc/fail2ban/jail.local
Możesz także użyć osobnego pliku konfiguracyjnego, takiego jak: /etc/fail2ban/jail.d/wordpress.conf
.
Po dokonaniu korekt zastosuj zmiany.
sudo systemctl restart fail2ban
4. Po ponownym uruchomieniu sprawdź, czy nie udało się WordPress działa:
fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
| |- Currently failed: 355
| |- Total failed: 33873
| `- File list: (log files per domain)
- Actions
|- Currently banned: 127
|- Total banned: 680
`- Banned IP list:
Po znalezieniu na tej liście zablokowanych IP, upewnij się, że są zablokowane i w środku iptables
. Spotkałem sytuację, że ze względu na niewłaściwą konfigurację, w Fail2ban, aby zobaczyć, że jest to zablokowany adres IP, ale w rzeczywistości może nadal uzyskać dostęp wp-login.php
Lub xmlrpc.php
.
Aby sprawdzić, czy wszystko działa poprawnie, wybierz IP zablokowane z listy Fail2ban i poszukaj go w IPTABLES.
Wykonaj wiersz poleceń:
iptables -L -v -n --line-numbers
Jeśli na tej liście znajduje się również zablokowany przez IP przez Fail2ban, oznacza to, że skonfigurowałeś prawidłowy fail2ban dla WordPress.
Powiązany: Jak zresetować hasło użytkownika administratora w WordPress. Bez dostępu do e -maila.
Jednocześnie bardzo wskazane jest sprawdzenie dziennika z działaniami Fail2ban:
sudo tail -f /var/log/fail2ban.log
Biorąc to pod uwagę, jeśli masz jakieś obawy lub potrzebujesz pomocy, mogą ci pomóc w komentarzach.