כך תגנו על הבלוג שלכם

שפרו את אבטחת אתר הוורדפרס שלכם בכמה צעדים פשוטים

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

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

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

שמירה על מערכת מעודכנת

בעבר, שדרוג וורדפרס והפלגינים היה כאב ראש לא מבוטל. כיום יש במערכת וורדפרס אפשרות לעדכון ושדרוג אוטומטי גם של המערכת עצמה וגם של הפלאגינים. במידה והשדרוג האוטומטי לא עובד מסיבה מסוימת חובה עליכם לברר מדוע היא לא עובדת ולאפשר שדרוג וכמובן לשדרג כל הזמן גם את המערכת וגם את הפלגינים.
סיבות הגורמות למערכת השדרוג האוטומטית לא לעבוד:
1. ספרית ההעלאות לא מוגדרת כהלכה. הכנסו להגדרות -> שונות ו-וודאו שתיקית ברירת המחדל אכן קיימת.
2. ההרשאות של ספרית ההעלאות לא מוגדרות כ-777. ללא הרשאה של כתיבה, קריאה והרצה – וורדפרס לא תצליח לשמור קבצים על השרת ולפיכך לא תצליח לשדרג.
3. פקודות PHP מסוימת כמו fopen שנסגרו בגלל מנהלי השרת. ישנם אנשי IT (במיוחד בחו"ל) שמפעילים מוד שנקרא PHP safe mode שמבטל חלק גדול מהפונקציות שיש ב-PHP. או לא מפעילים ספריות PHP מסוימות. יש לוודא מולם למה השדרוג לא עובד, לספק להם פירוט של השגיאות ובמידה והם לא מצליחים/לא מוכנים לפתור את הבעיה – לעבור לשרת אחר שכן יכול להבטיח שדרוג.

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

למה זה חשוב?

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

תמה מעודכנת

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

למה זה חשוב?

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

מחשב מאובטח

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

למה זה חשוב?

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

סיסמאות מאובטחות

זה נשמע בנאלי אך חובה להדגיש את העניין. ראשית, פתחו את ה-wp-config.php שלכם והסתכלו על סיסמת המשתמש שמתחבר אל מסד הנתונים. האם מדובר בסיסמה קלה לניחוש? חובה שהסיסמה תהיה קשה מאד לפיצוח. ישנם גנרטורים שונים ברשת שמנפקים סיסמאות קשות לפיצוח. השתמשו בסיסמה קשה לפיצוח עבור הסיסמה של היוזר שמתחבר אל מסד הנתונים.
שנית, הסיסמה של ה-admin צריכה להיות קשה לניחוש. אני לא חושב שזה ריאלי ליצור סיסמה מורכבת מאד (שסביר להניח שתישכח) אבל סיסמה עם מספרים ואותיות היא המינימום ההכרחי עבור הבלוג שלכם.

למה זה חשוב?

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

גיבוי של מסד הנתונים והקבצים

גבו באמצעות ה-FTP את קבצי הבלוג שלכם באופן תדיר. ישנו פלאגין מצוין בשם WordPress Database Backup שמאפשר גיבוי אוטומטי למייל. מה שהוא עושה זה משלוח יומי של כל הדאטהבייס של האתר שלי לחשבון הג'ימייל שלי.

למה זה חשוב?

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

הכנסת מפתחות בטיחות

עלינו להכניס מפתחות אבטחה בקובץ wp-config. מפתחות האבטחה צריכים להכנס היכן שכתוב:


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_KEY',        't=l>$tROsvb!|RKZ3~ /}+{*ix,Q0YYc+h+Kbe^o-]7_}RX|4q*$< +d`+0V03V8]');
define('SECURE_AUTH_KEY', '/-&Oh.)bC`W%~}J8S%-JWe~0<:E{+j3->qo;ckwiV M-HV=qyt$9|D:|G,3KF1zL');
define('LOGGED_IN_KEY',   'PYT_GC^,hDnjl$]YO@kGYR#X}o/L(?D-W3w=:|jGTtuI)|.-*4I+^;wd{Mo115Ay');
define('NONCE_KEY',       '7odl*fB68knx^v+u8;=Ac6-/>AzS)vP-G|T>7TQrsEoB%n |aI.C{Z>%}oSwH!B0');

למה זה חשוב?

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

הכנסת קבצי htaccess במקום המתאים

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

צרו באמצעות תוכנת Notepad++ (ולא notepad) את הקבצים הבאים, שימרו אותם כקבצי .htaccess ומקמו אותם במיקומים הבאים:

קובץ .htaccess שיש לשמור בתיקית wp-content/


Order Allow,Deny
Deny from all
<Files ~ "\.(css|jpe?g|png|gif|js|xml)$">
Allow from all
</Files>

הוספת השורה הבאה לקובץ .htaccess שנמצא בספריה הראשית (באותה ספריה שבה נמצא wp-config)


Options All -Indexes

למה זה חשוב?

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

הורדת תגית wordpress ומידע על הגרסה

וורדפרס כולל הדפסת הגרסה והעובדה שמדובר במערכת וורדפרס ב-HTML שלו. כך אפשר לדעת מה הגרסה שלך בקלות. אנחנו כמובן לא מעוניינים שזה יקרה. פותחים את תיקית ה-theme ומחפשים קובץ function.php. במידה ויש, מוסיפים את השורה הבאה:


<?php remove_action('wp_head', 'wp_generator'); ?>

במידה ואין קובץ כזה, יוצרים קובץ עם שם כזה, שומרים אותו בשם functions.php ומכניסים לתוכו את השורה הזו.

למה זה חשוב?

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

החלפת שם ה-admin

החל מגרסה 3.0, ניתן לשנות את שם ה-admin לכל שם שרוצים. חשוב לא לבחור בשם 'admin'.

למה זה חשוב?

אם אני מנסה כניסה באמצעות brute force, הרבה יותר קל לי לעשות את זה כאשר אחד משני הגורמים (שם משתמשי וסיסמה) ידוע לי. למה לתת לפורצים מתנה? שישברו להם את הראש על שם משתמש שלא קיים, יתייאשו וילכו להציק למישהו אחר (או להשיג חיים).

למשתמשים מתקדמים: שינוי תחילית הטבלה

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

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

נכנסים ל-phpMyAdmin ומשנים את ה-wp של כל שמות הטבלאות ל-wp+התחילית שלנו. למשל wp12k24n. כש-12k24n זו התחילית.
נכנסים ל-wp-config.php ומשנים את השורה הזו:


$table_prefix  = 'wp12k24n_';   // Only numbers, letters, and underscores please!

נכנסים לטבלת wp12k24n_options ומחפשים את התא שכתוב בו wp_user_roles ומשנים אותו ל- wp12k24n_user_roles (נמצא בoption_name).

נכנסים לטבלת wp12k24n_usermeta ועורכים כל ערך שיש בו wp ל-wp12k24n/

בודקים אם עשיתם הכל כשורה על ידי התחברות לממשק הניהול של הבלוג.

סיכום

כל הצעדים שמניתי לעיל אולי לא יגנו על הבלוג שלכם במאה אחוזים, אבל הם יקטינו מאד את הסיכוי לפריצה וגם אם תהיה פריצה, תוכלו להעזר בגיבוי על מנת לשחזר. באופן עקרוני, עדיף לעשות כמה צעדים המפורטים פה משום צעד בכלל ואפשר גם לעשות צעדים שלא מפורטים פה אך לטעמי הם overkill עבור רוב המשתמשים – כמו למשל הכנסת סיסמה ברמת שרת האינטרנט ל-wp-admin, הגבלת כתובת IP, חיבור באבטחת SSL ל-wp-admin, מיסוך כתובת wp-admin ו-wp-login – באמת אין לזה סוף.

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

1. Stealth Login – פלאגין שמשנה (או מראה איך לשנות) את ה-.htaccess על מנת למסך את ה-wp-admin וה-wp-login. אידיאלי עבור אתרי תוכן ובלוגים שאינם דורשים רישום עבור תגובות.

2. Login LockDown – פלאגין שנועל את הלוגין לאחר 3 נסיונות של כניסה בסיסמה לא נכונה. הפלאגין הזה חוסם בפועל כל נסיון של פריצה באמצעות brute force.

3. WP Security Scan – פלאגין וותיק זה מציע תיקונים שונים עבור בעיות שהוצגו במאמר הזה. אחד התכונות היותר שימושיות שיש בו היא בדיקה של ההרשאות של התיקיות והמלצה על ההרשאות הרצויות.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

Safeguards על מודל שפה גדול (LLM)

פוסט בשילוב עם פודקאסט וסרטון על ההגנות שאפשר להציב על LLM בסביבת פרודקשן

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

גלילה לראש העמוד