אבטחת אתר וורדרפס – המדריך המלא

אבטחת אתר הינו חלק מאוד חשוב מפעילות השותפת מכל מערכת. מאמר הזה הינו תמלול של הרצאה שלי על סיבות והמלצות להגנת מערכת שלנו.

מבוא

בעידן הדיגיטלי המודרני, אתרי האינטרנט הפכו לחלק בלתי נפרד ממערכות שיווק והתקשרות של לקוח מול חברה. בשוק הזה ישנם מגוון רכב של כלים, וורדרפס היא אחת הפלטפורמות הנפוצות ביותר נכון לעכשיו (מעל 40% של אתרים פועלים על וורדפרס). מדובר בפלטפורמה מופצת בקוד פתוח וכל קוד שלה חשוף לכולם. מצד אחד זה עוזר לעסקים לשפר ולהוזיל עליות ומצד שני מאפשר לגורמים זדוניים לגרום נזק לעסק בצורה ישירה ועקיפה.

מאז שאני מכיר את וורדרפס (גרסה 1.2) ועובד איתה (גרסה 2.0) ליבת וורדפרס עובדת בצורה יציבה ומאובטחת יחסית ברמה גבוה לאורך זמן.

מצד שני סף כניסה לתחום בניית או פיתוח של אתר בוורדרפס מביא לא מעט אנשי מקצוע מתחיל לתחום שלא תמיד מודעים לבעיות אבטחה ונקודות תורפה של המערכת. לרוב מספקים בהתקנה של תוסף כזה או אחר ולא מבינים למה אתר כל הזמן נפרץ או נופל.

נקודות תורפה במערכת הליבה

מבנה ספריית וורדרפס ברמת הקבצים
מבנה ספריית וורדרפס ברמת הקבצים

בגלל קוד פתוח של מערכת, כל אחד מקבל יכולת לסרוק את הקוד ולהזות מקומות חדירה. בתיקיה ראשית ישנם 3 תיקיות ן17 קבצים. מניסיון תיקיית wp-admin כמעט ולא נמצאת במתקפה כי לרוב או חוסמים אותה, או סוגרים בצד השרת. תיקיית wp-includes חסרת תועלת מבחינת הפורץ כי לרוב מדובר בספריות PHP או JS שוורדרפס משתמש לטובת טעינה של האתר או מערכת הניהול. תיקיית wp-content היא המקום העיקרי לתקיפות, בין אם זה תבנית בעייתית, תוספים השונים וגם תיקיית uploads שבה מנהלים את כל המדיה של האתר.

בתוך הספרייה הראשית ישנם שני קבצים שהם יעד לתקיפה wp-config.php ששומר את כל ההגדרות בתותו, קובץ xmlrpc.php שאחראי על שליטה של פרסום מרחוק, בנוסף לאלה יש קובץ index.php שהוא משמש כקובץ ראשי של כל האתר.
דבר נוסף שהייתי מתעכב עליו זה קבצי admin-ajax.php בתוך מערכת ניהול ודישה לREST API של וורדרפס. שני יעדים הללו יכולים לשמש כמקור לתקיפה בגלל שדרכם ניגשים לנתונים מרחוק.

סיפור של REST API צרה בפני עלמה ויכולה לגלות לא מעט דברים על האתר אם לא חוסמים אותם. לא מעט מפתחים בונים תוספים ושוכחים על הסיפור הזה במקרה הטוב. לדוגמה תוסף ACF to REST API שפתח אפשרות גישה לא מאובטחת לטבלת options, תוסף WP SMS שמאפשר גישה לנתונים רגישים, תוסף Image Hover Effects Ultimate שפריצה אפשרה לשכתב את טבלת options.

נקודת תורפה נוספת של ליבת מערכת היא למעשה אנחנו, משתמשי מערכת, בניסיון שלנו לשפר את המערכת לטובת צרכים שלנו, אנחנו יוצרים את הנזק המרכזי לאבטחה של האתר. בין אם זה בחירת תוספים הלא נכונים, תבניות פרוצות או כתיבת קוד לא מאובטח. 

כמובן שכל התוספים ותבניות הנמצאים בספריית וורדרפס חייבים לעבור בדיקה של מנהלים ולעבור בדיקות אוטומטיות של WCS (כללי כתיבת קוד) זה מצמץ אך לא מונע את הבעיות אבטחה.

מיתוסים

עדכונים אוטומטיים מופעלים

על פניו הכול תקין, עם יש בעיות לרכיב כלשהו בפאזל עדכון אוטומטי אמור לפתור את זה. על פניו זה נכון, אבל גם בעבר נתקלתי בבעיה מאוד רצינית ששדרוג הפעיל את הפריצה וגרם להפלת האתר. במקרה כזה שום דבר לא עוזר אלה מחיקה של תוספים.

הצד השני של הבעיה הזאת, היא כיבוי עדכונים אוטומטיים באופן גורף, בעלי אתר שוכחים לגמרה לעדכן את האתר.

שימוש בתוספים או תבניות צד שלישי

כאמור, הבעיה העיקרית של וורדפרס היא המפתחים שעובדים איתה, בין אם מדובר בכתיבה של קוד, העתקה של קוד ממקום אחר או שימוש בתוספים ותבניות פרמיום שנפרצו והופצו ללא עלות. הדבר עלול להוביל לבעיות חמורות באבטחת אתר ובעיות XSS ו-CSRF שהם די נפוצים.
בזמנו, לפני עשור הייתה בעיה עם תבניות מתורגמות וגרם לסערה רבה בקהילה. היום המצב שונה לגמרה, אבל פה ושם יש קוד פרוץ, או פלאגינים שנקנו מאתרים לא חוקיים וכו…

מאמר בנושא

יש לי תוסף אבטחה – אני מוגן

בעלי אתרים מספקים בהפעלה של התוסף בלבד, ללא הגדרות מיוחדות שמצריכות ידע וניסיון רב עם התוסף, כמו כן כל עדכון של התוסף יכול להגיע עם שינויים שונים שלפעמים מחליפים את הקיים ומצריך הגדרות חדשות.

מתקינים שני תוספי אבטחה

חלק מבעלי אתרים רוצים להיות מוגנים מספיק ותוך כדי הפריצה או לאחריה מתקינים עוד תוסף אבטחה. שני תוספים שעושים כמעט את אותו הדבר, כל אחד יכול להתנגש וליצור בעיות אבטחה הרבה יותר חמורות.  סלט מהסוג הזה יכול להיות הרסני לאתר.

מנהל אתר שהוא לא admin

בעבר מה שעשיתי, הייתי יוצר מנהל נוסף ואיתו עבדתי. בגרסאות החדשות של וורדרפס ניתן לשנות את השם של מנהל וליצור שם משתמש חדש. אבל מדובר בטכניקה די ישנה שהיום גם בעזרת REST API ניתן לעקוף אותו וגם להיכנס למקור בעמוד ארכיון של מחבר ולקבל את כל ההגדרות כתחונות css בתגית body.

סיסמה ״קשוחה״

אחד הדברים שחוזרים על עצמם זאת הגדרת סיסמאות מסובכות עם כמה שיותר תווים. בגרסאות אחרונות של וורדרס ישנה אפשרות לייצר סיסמה מאוד קשוחה וקשה לפיצוח. למרות זאת רוב בעלי אתרים משתמשים בסיסמאות קלות וקשורות או לאתר עצמו או שם משתמש שלהם. אחד הדוגמאות שהייתה לי סיסמה Domain2010 עבור השם domain ותהליך יצירה שלו היה בשנת 2010, די שקוף.

התקנת וורדרפס - בחירת משתמש וסיסמה
התקנת וורדרפס – בחירת משתמש וסיסמה

בעיה נוספת עם הסיסמאות, היא שימוש של תוכנות לא חוקיות במחשב האישי, התוכנות הללו שולחות את כל הפעילות במחשב לצד שלישי, בניהם גם סיסמאות.

הסתרה של פריטים מסוימים באתר

ברוב ההמלצות לאבטחה ישנה המלצה לסגור את הניווט של מנהל אתר בעזרת תוספים השונים. ישנם מלא תוספים שעושים זאת, אבל בעיקר לפריצות קטנות ופשוטות, במקרה של פריצות מתקדמות הפריצה מופעלת ממקום אחר והיא תמצא את מיקום המדויק.

דבר נוסף שעושים הוא שינוי שם של פריית wp-includes למשהו אחר, לדוגמה inc, גם אם עשיתם את זה, עדיין אני יכול לגשת לספריה בצורה ישירה מתוך הדפדפן.

אחסון מגן עליי ומתריע ברגע של הפריצה

ברוב המקרים, אתרים מאוחסנים בחברות זולות בעלויות נמוכות ויותר מזה, מספר אתרים ביחד. במקרה כזה, אתר אחד לא מאובטח מפיל את כולם. מה שחברות הללו עושות, מציעות מערכת הגנה בעלות מאוד גבוה ואז אחסון הופך להיות יקר מאוד, מעבר להיבטים השונים שקיימים באתר.

התקנת SSL תגן עליי

לרוב יש חוסר הבנה במה זה SSL ומה המטרה שלו, הוא לא מגן על פריצות מפני תוקפים אלה מאפשר העברה מוצפנת של נתונים בלבד.

יותר מזה, בחלק מהמקרים שיצא לי לעבוד, התקנה של SSL הייתה בצורה שגועה.

חוסר תחזוקה בסיסית

אצל רוב בעלי אתרים התפיסה היא שלא נדרשת תחזוקה בסיסית מעבר לשדרוגים. מדובר בטעות, כל התקנה, שדרוג או הסקרה של משהו בתוך המערכת משאירים את העקבות ברמת קבצים או ברמת בסיסי נתונים.

כלים לבדיקת אבטחה

שלבי בדיקת אבטחה מתחלקים לבדיקות גלויות ובדיקות מוסתרות. בדיקות נראות לעין הם בד״כ בדיקות גרסה, תוספים השונים, התקנתWAF. בדיקות מוסתרות הם בדיקות קוד מקור, איתור ניסיונות חדירה, ניתוח WP API וכו.. לרוב משתמשים בכלים אוטומטיים.

WPScan הוא כלי אבטחה פופולרי בסביבת וורדפרס, המשמש לסריקה ובדיקת אבטחת. הכלי מתמקד באיתור נקודות חשובות שבהן ישמם לורים. כלי בודק את גרסאות השונות של תוספים, תבניות, בדיקות של פריצות מוכרות, סורק משתמשים ועוד… לסורק יש גרסה אינטרנטית בסיסית. יש גם תוסף וורדרפס.

פוסט מפרט את

CMSmap הוא כלי אבטחה פופולרי שבודק את רוב מערכות קוד פתוח, ביניהם גם וורדפרס. די דומה למה שיש בWPScan אבל בצורה בסיסית יותר. קצת מישן, אבל עושה את העבודה שלו במקרים בסיסיים.

Nuclei הוא כלי אבטחה מתקדם לאיתור וגילוי אוטומטי של בעיות אבטחה במערכות ווב. סורק באופן אוטומטי ומזהה בעיות אבטחה. ניתן לכתוב קובץ הוראות בYAML בינהם עבור וורדרפס. כלי מאוד מתקדם ואיכותי, מתעדכן כל הזמן. קבצי הגדרות לסריקה מוכנה עבור תוספים המוכרים של המערכת.

תוספי אבטחה

בספריית תוספים ניתן למצוא לא מעט תוספי אבטחה שאמורים לעשות את העבודה. לרוב מדובר בגרסאות בסיסיים ואת ההרחבות ניתן לקבל בתשלום נוסף. אני לא חסיד של תוספי אבטחה כמו גם לא של אנטי-וירוסים במחשב. אחד לחודש אני סורק את כל האתרים בצורה בסיסית ובודק את פריצות אבטחה שלהם, כמו כן עוקב אחרי כל העדכונים באתרים השונים.

בין המובילים הם: Sucuri, Itheme Security, Wordfence שכלום וש גרסה חינמית וגרסת פרימיום. בתוצאות חיפוש ראיתי גם את Jetpack שהוא תוסף עם הרבה הגדרות ובין הייתר אבחטה. חייב לגיד, שהתוסף תמיד ברקע אבל אף פעם לא ניסיתי אותו ולא התשמשתי בו.

ברוב האתרים שאני מתחזק, אין תוסף אחיד, חלק מהלקוחות באים עם תוסף שלהם, חלק מבקשים המלצה, וחלק בכלל עובדים ללא תוספי אבטחה.

פתרונות לבעיות אבטחה

כמו שרשמתי ברוב המקרים, בעיות אבטחה נובעות כתוצאה משימוש לא נכון במערכת. במילים אחרות, אנחנו אחראים על רוב בעיות אבטחה ויוצרים את הזדמנויות לפורצים לפגוע באתר. החלטות שמתקבלות החל מבעל העסק ועד אנשי מקצוע שעובדים על האתר.

ננסה לצמצם את הטעויות בעזרת מספר מספר המלצות

בחירת אחסון

בחירת חברת אחסון אתרים היא צעד החשוב ביותר, אחסון משפיע בצורה ישירה על ביצועי האתר, מהירות תגובה, אבטחה, ניהול ותצוגה ללקוחות.  אני לא רוצה להשמיץ אף אחד, אבל רוב הלקוחות שפונים אליי עם פריצות מאוחסנים בחברות של ״אחסון בשקל״.

רוב אתרי וורדרפס מאוחסנים בשרתים שיתופיים בגלל עלות חודשית נמוכה יחסית ביחס לתמורה. אלה שרתים עם מערכת ניהול Cpanel, Direct Admin, Plesk או ניהול של חברת אחסון. חסרון היחידי של שרת שיתופי הוא שמספר אתרים יושבים באותו שרת, ואם יש בעיה באתר מסוים אז היא עלולה לעבור ולהשפיע על שאר האתרים. כמובן שיש לזה פתרונות רבים, רוב חברות אחסון היום מספקות אבטחה גם ברמת שרת וגם ברמת חבילה עצמה.
בארגז הכלים של חברות אחסון ניתן למצא את חבילתimunify360 , שימוש ב-Iptables, SSL חינמי ועוד כלים נוספים שמטרתם לעזור לנטר פעילות חשודה.

חשוב לציין שבשנים אחרונות מהפחת אסון עם מהפכת אחסון אפשרה למכור שרתים וריטואלים במחיר של אחסון שיתופי, ולפעמים אפילו יותר זול. יחד עם זאת מדובר במכונה וירטואלית עם מערכת הפעלה שמצריכה תחזוקה גם היא, וזה מצריך איש מקצוע שמבין גם במערכת הפעלה וגם בתחזוקה של Linux.

טיפול בקבצי מערכת

אחרי שבחרנו חברת אחסון וקיבלנו וורדרפס מותקן, הגיע זמן לטפל בקבצים ולנסות לסגור את כל האפשרויות הקיימות. באופן כללי אנחנו לא ״נוגעים״ באף תיקייה או קובץ שבמערכת למעט תיקיית uploads. שגם שם אני מעדיף לסגור את הכול.

בחלק מהאתרים הגדולים השדרוגים מתבצעים בצורה יזומה ומרוכזת, כמעט ואין עדכונים ספונטניים. במקרים כאלה אפשר לנעול את התיקיות בצורה כזאת שלא ניתן ליצור או לשנות קבצים בתיקיות חשובות.

המלצה של וורדרפס היא 755 לתיקיות (כתיבה ועדכון רק למשמש עצמו, קריאה והפעלה זמינה לכולם) ו644 לקבצים. אני הייתי מורדי את כל התיקיות ל 644 למעט תקיית uploads בwp-content של השנה הנוכחית בלבד.

נתחיל בסגירת יכולת עריכת קבצים דרך מערכת ניהול בצורה ישירה. בשונה מהתוספים, שמסתירים מהתפריט את הלשונית, כאן האפשרות עריכה נעלמת לגמרה מהמערכת. הולכים לניהול קבצים דרך FTP או File Manager פותחים את הקובץ wp-config.php ומוסיפים בסוף את הקוד הבא:

לאחר מן נטפל בקובץ wp-config.php עצמו, שלא יהיה זמין לאף אחד מבחוץ, המלחצה של וורדרפס, לפתוח את htaccess ולהדביק פנימה.

לדעתי הקובץ הכי מיותר בוורדרפס הינו קובץ xmlrpc.php, נסכור גם אותו לגישה מבחוץ, בגלל שאנחנו לא משתמשים בו בכלל. הקובץ הזה בעבר שימש אפשרות פרסום פוסטים מרחוק.

אפשר לסגור מערכת ניהול בססימה בעיזרת htaccess, אני פחות מתחבר לזה, כמו במקרה עם תוספי שינוי כתובות.

מומלץ לטפל גם בSecurity Headers שכבר כתבתי על זה.

מערכת וורדרפס ותוספיה

רוב המדריכים בסעיפים הראשוניים שלהם מציעים לשמור על מערכת מדורגת בכל הרמות, חלקם אף מציעים לשדרג כל הזמן לגרסה. הכי עדכנית.

התייחסתי זה קודם, מצד אחד זה נכון, מצד שני עדכון של וורדרפס פחות יכול להזיק, אבל עדכון של תוספים או תבנית יכול ליצור לא מעט התנגשות בין התוספים לתבנית או מערכת.

בד״כ אני לא ממהר לשדרג את המערכת ואת התוספים, אלה מדובר בפריצת אבטחה. המדיניות היא להמתין 2-3 גרסאות לאחר גרסה מ`זורית, מעבר ספרה ראשונה (מ 5 ל6) או מעבר מספרה שניה (6.1 ל 6.2). בתוספים זה שונה, כי לפעמים תוסף מצריך עדכון מידי בגלל גרסת וורדרפס או להפך, תוסף מפסיק לעבוד בגלל גרסת PHP מוכה בשרת, והשינויים הם לא משמעותיים.

לדוגמה, אחד התוספים שאני משתמש הוא WP Force SSL, שעזר לי לפתור את הבעיות של קישורים ללא SSL באתר. שתי גרסאות אחרונות לא כ״כ מביאות שינויים משמעותיים,  הטמיעו ממשק יותר ידידותי והוסיפו וידג`ט בניהול האתר. ברוב האתרים תוסף נשאר בגרסה ה1.55, ובחלק מהאתרים מחקתי אותו בגלל חוסר שימוש.

ניקיון מערכת

מומלץ מאוד לעשות ניקיון מדי פעם במערכת, לבדוק שאין משתמשים חדשים, אין ניסיונות להשאיר תגובות באתר שהם יכולים להכיל קוד זדוני.
מומלץ לנקות בסיס נתונים ולבצע אופטימיזציה בעזרת תוספים המתאימים. לדוגמה WP-Optimize.

כמו כן מומלץ מדי פעם להציץ למערכת קבצים ולראות האם יש משהו חשוד, קובץ בשם שהוא תווי ולא משהו קריא. קבצי PHP שיושבים בתיקיית uploads וכו…

להיכנס ולנקות תבניות ותוספים שאינם בשימוש.

סיכום

בעידן הדיגטלי מתקפות על אתר הם חלק בלתי נפרד מהחיים של עסק. בעיות אבטחה משפיעים לא רק על פנינו בעולם הדיגיטל, אלה גם על מנועי חיפוש ורשתות חברתיות שיכולות לחסום את העסק בגלל סכנה עבור גולשים.  החלטות קטנות בבחירת אנשי מקצוע, תשתיות וטיפול שותף יעזרו לצמצם את ניסיונות חדירה ויקטינו משמעותית פגיע בפעילות עסקית ברשת.

תשמרו על האתר שכלם.

מחפשים פתרונות תכנות מקצועיים?

אם יש לך צורך בעזרה של מפתח מקצועי ומנוסה, אשמח לשמוע ממך