דף ההתחברות של וורדפרס שלכם מותקף על ידי בוטים כל הזמן. לא מדי פעם. כל הזמן. בכל שעה ובכל יום, סקריפטים אוטומטיים מנסים צירופים של שמות משתמש וסיסמאות מול דף ה-wp-login.php שלכם, בתקווה שמשהו יעבוד. אם לא מטפלים בזה, זה יכול להאט את האתר, למלא את הלוגים ברעש מיותר, ולפעמים אפילו להצליח מול סיסמאות חלשות.
הפתרון הברור הוא להגביל את ניסיונות ההתחברות. אבל אם עושים את זה לא נכון, תנעלו החוצה משתמשים לגיטימיים, תחסמו בטעות את הצוות שלכם, או פשוט תעצבנו אנשים עד שהם יפסיקו לנסות. הנה איך למצוא את האיזון הנכון.
למה הגבלת ניסיונות התחברות חשובה
התקפות brute force עובדות על נפח. בוט לא מתעייף ולא מתייאש. הוא פשוט ממשיך לנחש, לפעמים אלפי פעמים בשעה, עד שהוא מוצא התאמה או מוותר על האתר שלכם ועובר ליעד הבא.
גם אם ההתקפה אף פעם לא מצליחה, היא עדיין עולה לכם משהו. בקשות התחברות כושלות עדיין צורכות משאבי שרת. באתר עם תנועה גבוהה ממילא, העומס הנוסף הזה יכול להתבטא בזמני טעינה איטיים יותר לגולשים אמיתיים. כיסינו את הנושא הזה במאמר אבטחת התחברות בוורדפרס: שינויים פשוטים שעוצרים את רוב ניסיונות ה-brute force, והגבלת ניסיונות היא אחד המרכיבים המרכזיים בפתרון.
הבעיה עם כללי נעילה אגרסיביים מדי
כאן הרבה בעלי אתרים מגזימים לכיוון השני. הם מגדירים את מגבלת ההתחברות ל-2 ניסיונות לפני נעילה של 24 שעות, ואז תוהים למה מנהלת השיווק שלהם ננעלה החוצה ליום שלם כי היא הקלידה את הסיסמה לא נכון פעמיים לפני שהקפה שלה השפיע.
הגדרה טובה של הגבלת התחברות מאזנת בין שתי מטרות:
- לעצור בוטים אוטומטיים מלנסות אינספור צירופי סיסמאות
- לתת לבני אדם אמיתיים מרווח לטעות רגילה בלי להיענש
בני אדם טועים בהקלדת סיסמאות. הם שוכחים איזו משלוש הגרסאות של הסיסמה שלהם השתמשו. הם ננעלים מחוץ למנהל הסיסמאות שלהם. שום דבר מזה אינו זדוני, וההגדרות האבטחתיות שלכם לא צריכות להתייחס לזה כאילו הוא כזה.
הגדרת מגבלות שבאמת הגיוניות
1. השתמשו בסף ניסיונות סביר
במקום לנעול מישהו החוצה אחרי 2 או 3 ניסיונות כושלים, כוונו למשהו כמו 5 ניסיונות לפני שנעילה כלשהי נכנסת לתוקף. זה נותן למשתמשים אמיתיים מרווח מספיק לטעויות הקלדה, ובו זמנית עדיין חוסם בוטים במהירות, מכיוון שכלים אוטומטיים בדרך כלל נכשלים עשרות או מאות פעמים בכל הפעלה.
2. השתמשו בזמני נעילה מדורגים
במקום תקופת נעילה קשה אחת, הגדילו את הזמן בהדרגה:
- נעילה ראשונה: 5-10 דקות
- נעילה שנייה: 30 דקות עד שעה
- נעילות חוזרות: 24 שעות
הגישה הזו הרבה יותר ידידותית למשתמשים אמיתיים. מישהו ששכח את הסיסמה שלו ממתין כמה דקות ומנסה שוב עם קישור לאיפוס. בוט שממשיך להקיש על אותו חשבון בסופו של דבר ננעל ליום שלם, מה שהופך את ההתקפה לחסרת טעם.
3. נעלו לפי צירוף של IP ושם משתמש
נעילה לפי IP בלבד יכולה לפגוע ברשתות משותפות, כמו משרד או חלל עבודה משותף שבו כמה עובדים חולקים כתובת IP ציבורית אחת. אם אדם אחד מקליד לא נכון את הסיסמה שלו מספיק פעמים, כל מי שברשת נחסם.
נעילה לפי שם משתמש בלבד יוצרת בעיה הפוכה. תוקף יכול לעבור בין הרבה שמות משתמש מ-IP אחד ולעולם לא להפעיל נעילה. הגישה הטובה יותר משלבת את שניהם: מעקב אחר ניסיונות כושלים לפי צירוף IP-שם משתמש, כך שעמיתים לגיטימיים לא נענשים על טעות של מישהו אחר, אבל בוט שמתמקד בחשבון ספציפי עדיין נחסם.
תוספים מומלצים להגבלת ניסיונות התחברות
אם אתם רוצים לטפל בזה ברמת התוסף, כמה אפשרויות מתפקדות היטב באופן עקבי:
- Limit Login Attempts Reloaded - קל משקל, פשוט להגדרה, ומטפל היטב בצירוף IP/שם משתמש
- WP Limit Login Attempts - פונקציונליות דומה עם ממשק נקי יותר למתחילים
- Wordfence - כולל הגבלת התחברות כחלק מחבילת אבטחה רחבה יותר, שימושי אם אתם רוצים יותר מרק החלק הזה
לא משנה מה תבחרו, היכנסו להגדרות מיד וכווננו את ברירות המחדל. רוב התוספים מגיעים עם הגדרות שהן או מקלות מדי (כמעט לא עושות כלום) או קשוחות מדי (נועלות משתמשים אמיתיים כל הזמן). אל תשאירו את זה על ברירת מחדל ותניחו שזה מכוון נכון לתנועה שלכם.
הוסיפו אימות דו-שלבי כשכבת הגנה נוספת
הגבלת ניסיונות התחברות מאטה התקפות brute force, אבל היא לא עוצרת תוקף נחוש שכבר יש לו סיסמה שדלפה מפריצה כלשהי במקום אחר. כאן אימות דו-שלבי מוכיח את ערכו. גם אם מישהו מנחש את הסיסמה שלכם נכון, הוא עדיין צריך את הקוד מהטלפון שלכם כדי להיכנס.
כתבנו מדריך מלא על זה במאמר איך להגדיר אימות דו-שלבי בוורדפרס בפחות מעשר דקות, ושילוב שלו עם הגבלת התחברות נותן לכם שני סוגי הגנה שונים שעובדים יחד.
שקלו להעביר את ההגנה לרמת האחסון
תוספים הם נקודת התחלה סבירה, אבל הם רצים בתוך וורדפרס עצמו, כלומר כל ניסיון התחברות חסום עדיין צריך לטעון PHP ולפנות למסד הנתונים לפני שהוא נדחה. זה לא אידיאלי אם אתם מתמודדים עם הצפה רצינית של ניסיונות.
גישה נקייה יותר היא לעצור בקשות זדוניות לפני שהן בכלל מגיעות לוורדפרס. חומת אש לאפליקציות אינטרנט (WAF) יכולה לסנן שחקנים ידועים כמזיקים ודפוסי בקשה חשודים ברמת השרת, כך שהאתר שלכם אפילו לא צריך לעבד אותם. אם אתם סקרנים לגבי איך השכבה הזו עובדת, סקירת ה-WAF שלנו מכסה את המנגנון בפירוט רב יותר. חלק מספקי האחסון גם מאפשרים לחסום טווחי IP ספציפיים ישירות דרך החומת האש, מה שמועיל אם אתם רואים התקפות חוזרות מאותו מקור.
רשימת בדיקה מהירה
- הגדירו סף ניסיונות סביב 5, לא 2 או 3
- השתמשו בתזמון נעילה מדורג במקום עונש קשה אחד
- נעלו לפי IP ושם משתמש יחד, לא לפי אחד מהם בלבד
- הוסיפו אימות דו-שלבי כשכבת גיבוי
- שקלו להעביר בקשות זדוניות לרמת האחסון/חומת האש באתרים עמוסים יותר
הגבלת ניסיונות התחברות היא אחת הדרכים הפשוטות ביותר לשפר את האבטחה בוורדפרס. אחד השיטות המומלצות שכל מי שמתעניין באבטחת וורדפרס שיטות מומלצות צריך ליישם. הגדירו את זה בתשומת לב, וזה יחסום בשקט את רוב תנועת הבוטים בלי שהמשתמשים האמיתיים שלכם בכלל ישימו לב שזה שם.