בקיצור, במדריך זה תמצאו את שורות הפקודה דרכן תוכלו להתקין ולהגדיר את Fail2Ban עבור Wordלִלְחוֹץ. מאבטחת אימות WordPress ושאילתות כוח גס של xmlrpc.php.
בלוגים ואתרים שפותחו בפלטפורמה WordPress הם לעתים קרובות מטרות להתקפות סייבר. רוב ההתקפות הן כוח גס ומכוונות להפעלת האימות או מנצלות את XML-RPC (קריאה מרחוק להליך באמצעות XML). למרבה המזל, fail2ban הוא פתרון אבטחה שימושי מאוד למצבים אלה. אם אתה רוצה לאבטח אתר WordPress עם fail2ban, בצע את שלבי התצורה במדריך זה.
קודם כל, ודא שיש לך גישה לשרת האינטרנט דרך חיבור SSH ושאפליקציית fail2ban מותקנת.
תצורת Fail2Ban עבור WordPress על דביאן
1. קודם כל, עליך לוודא שאפליקציית fail2ban מותקנת ופועלת בשרת. הפעל את שורת הפקודה למטה:
systemctl status fail2ban
בפלט אתה אמור לראות משהו כזה:
● 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
אם fail2ban לא מותקן בשרת שלך, תצטרך להתקין אותו. הפעל את שורת הפקודה כדי להתקין fail2ban ב-Debian/Ubuntu:
sudo apt install fail2ban
2. השלב הבא הוא יצירת מסנן fail2ban עבור Wordלִלְחוֹץ. הפעל את שורת הפקודה בטרמינל כדי ליצור ולערוך את המסנן wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
בקובץ wordpress.conf
מגדיר את המסננים לאימות WordPress ולגבי הקובץ xmlrpc.php
, כדלהלן:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
זה אומר שבכל שיטה, GET
או POST
, אם ניגשים לקבצי wp-login.php או xmlrpc.php, ניתן ליצור כלל עבור fail2ban. התנאי הוא שהקבצים האלה קיימים וניתן לגשת אליהם על ידי התוקף. כלומר, הוא אמור להחזיר את הקוד 200 (בסדר) כאשר הגישה אליו.
שמור את הקובץ /etc/fail2ban/filter.d/wordpress.conf
.
3. השלב הבא הוא להגדיר את ה"כלא" עבור Wordלִלְחוֹץ. זה המקום שבו רוב המשתמשים מתבלבלים, כי הכללים חייבים להיות מוגדרים אחרת בהתאם למערכת ניהול האירוח (אם יש) או תצורת שרת האינטרנט.
אם אתה משתמש ב-HestiaCP, VestaCP או MyVesta, צור וערוך את הקובץ /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
הוסף את השורות למטה לקובץ זה:
[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.
התאם את הפרמטרים לעיל בהתאם לצרכים שלך. בתצורה שנתתי, אם בתוך מרווח של 1800 דקות יהיו 5 ניסיונות חוזרים מאותו IP, הוא ייחסם ל-3600 דקות באמצעות פעולת HestiaCP עבור האינטרנט. (hestia[name=WEB]
). כאן תזדקק לעזרה בהתאם למערכת שיש לך בשרת.
חשוב מאוד גם "logpath
". מתוך יומנים אלה, הנתונים שלגביהם תינקט פעולה נשלף. ודא שהמיקום נכון.
אם אין לך מערכת ניהול מותקנת, תצטרך לחסום כתובות IP עם fail2ban עבור WordPress להיעשות ישירות דרך iptables
. קו הפעולה יהיה כדלקמן:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
כסוגריים, במקום /etc/fail2ban/jail.local
אתה יכול גם להשתמש בקובץ נפרד לתצורה, כמו: /etc/fail2ban/jail.d/wordpress.conf
.
לאחר ביצוע ההתאמות, החל את השינויים.
sudo systemctl restart fail2ban
4. לאחר הפעלה מחדש, בדוק אם fail2ban עבור WordPress עובד:
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:
לאחר שתמצא כתובות IP חסומות ברשימה זו, ודא שגם הן חסומות iptables
. נתקלתי במצב שבו עקב הגדרה שגויה, ב-fail2ban ראיתי ש-IP חסום, אבל במציאות הוא עדיין יכול לגשת wp-login.php
או xmlrpc.php
.
כדי לבדוק אם הכל עובד כמו שצריך, בחר IP חסום מרשימת fail2ban וחפש אותו ב-iptables.
הפעל את שורת הפקודה:
iptables -L -v -n --line-numbers
אם ה-IP שנראה חסום על ידי fail2ban נמצא גם ברשימה זו, זה אומר שהגדרת נכון את fail2ban עבורו. Wordללחוץ.
מידע נוסף: כיצד לאפס את סיסמת המשתמש של מנהל המערכת ב Wordלִלְחוֹץ. אין גישה למייל.
במקביל, מומלץ מאוד לבדוק את היומן בפעולות fail2ban:
sudo tail -f /var/log/fail2ban.log
עם זאת, אם יש לך שאלות או שאתה צריך עזרה, אני יכול לעזור לך בתגובות.