fbpx
Course Content
מבוא לאבטחת וורדפרס
מערכת וורדפרס היא פלטפורמה ליצירת אתרים ובלוגים בקלות. היא פתוחה, חינמית, וקלה לשימוש, והפכה לאחת מהפלטפורמות הפופולריות ביותר בעולם. אנשים משתמשים בוורדפרס ליצירת אתרים אישיים, בלוגים, חנויות מקוונות, ועוד. הוא מציע מגוון רחב של תוספים וערכות עיצוב שמאפשרים למשתמשים להתאים את האתר שלהם לפי הצרכים שלהם.
0/1
הגדרות התקנה ואבטחה חיוניות
0/1
גיבויים אוטומטים וידנים
0/1
פונקציות אבטחה
0/1
יישום SSL ו-HTTPS
0/1
מסקנות אחרונות
0/1
אבטחת וורדפרס
About Lesson

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

function wp_version_remove_version() { return ''; } add_filter('the_generator', 'wp_version_remove_version');

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

define('DISALLOW_FILE_EDIT', true);

הגנו על קובץ ה wp-config העתק את הקוד למטה לקובץ- .htaccess בכדי למנוע גישה לקובץ

<files wp-config.php>
order allow,deny
deny from all
</files>

על ידי חסימת ביצוע קבצי PHP בספריות מסוימות, הקוד מציין לשרת אפאצ'י לחסום את ביצוע קבצי PHP בתיקיית

/wp-content/uploads/

. על מנת לבצע פעולה זו פתחו קובץ חדש בשם

.htaccess

הכניסו לתוכו את הקוד ושמרו ולאחר מכן העלו את הקובץ לנתיב

/wp-content/uploads/
<Files *.php>
deny from all
</Files>

כאשר מאפשרים סיור בספריה זה אומר שבאתר יש תיקיות (directories) שאין להם קובץ index.html או index.php. במקרה כזה, שרת האינטרנט (כמו Apache) עשוי להציג רשימת קבצים בתיקייה כאשר משתמש מנסה לגשת אליה. ומשתמשים יכולים לראות רשימת כל הקבצים בתיקייה זו. על מנת לגביל פעולה זו היכנסו לקובץ .htaccess אשר נמצא בתיקיה הראשית והוסיפו בתוכה את השורה הבאה

Options -Indexes

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

header('Content-Security-Policy: default-src https:');
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
header('X-XSS-Protection: 1; mode=block');
header('X-Content-Type-Options: nosniff');
header('Strict-Transport-Security:max-age=31536000; includeSubdomains; preload');
header("Permissions-Policy: accelerometer 'none' ; ambient-light-sensor 'none' ; autoplay 'none' ; camera 'none' ; encrypted-media 'none' ; fullscreen 'none' ; geolocation 'none' ; gyroscope 'none' ; magnetometer 'none' ; microphone 'none' ; midi 'none' ; payment 'none' ; speaker 'none' ; sync-xhr 'none' ; usb 'none' ; notifications 'none' ; vibrate 'none' ; push 'none' ; vr 'none' ");
header('Referrer-Policy: same-origin');
@ini_set('session.cookie_httponly', true);
@ini_set('session.cookie_secure', true);
@ini_set('session.use_only_cookies', true);

הפעילו תעודות SSL באתר הוורדפרס חיבור מאובטח ומוצפן בינך לבין השרת בעת הכניסה לאתר ובניהולו, הוסף את השורה הבאה לקובץ wp-config

define('FORCE_SSL_ADMIN', true);

השביתו את הקובץ xmlrpc הדבק את הקוד הבא בקובץ ה- .htaccess

# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files>

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

#start hide PHP version in header
<IfModule mod_headers.c>
Header unset X-Powered-By
Header unset Server
</IfModule>
#END hide PHP version in header

הגנה על נתיב WP-admin הציבו את הקוד הבא בקובץ functions אשר מתריע למערכת כי כל ניסיון כניסה אל הקובץ ישלח אל דף 404

add_action('init', 'alderity_blockusers_init');

function alderity_blockusers_init() {
if (is_admin() && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) {
// Redirect to a 404 error page
status_header(404);
exit();
}
}

שינוי נתיב ה- URL של WP-Login על מנת להגן על דף ההתחברות (WP-Login), ולמנוע ניסיונות כניסה לא מורשים.

הכניסו את הקוד הבא בקובץ functions והחליפו את "?=secret" במילת מפתח חדשה אשר אתם בוחרים מראש.

// disable login protection WordPress users
function alderity_protection_for_login_page() {
$secret_path = '?=secret';
$request = 'https://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING'];
if ( site_url('/wp-login.php').$secret_path == $request ) {
} else {
header( 'Location: https://' . $_SERVER['SERVER_NAME'] . '/404' );
}
}
add_action('login_head', 'alderity_protection_for_login_page');

בכדי לגשת אל קובץ ההתחברות אנו נצטרך להכניס בכתובת הURL שלנו את הנתיב הבא your-domain.com/wp-login.php?=secret.
יש להחליף את "your-domain.com – בכתובת האתר שלכם".
ואת מילת המפתח "?=secret" שבחרתם מראש כמובן

השבתה קלה של USER REST API עבור JSON הכניסו את הקוד הבא לקובץ functions על מנת לחסום גישה

// Disable certain rest routes
add_filter( 'rest_endpoints', function( $endpoints ){
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] );
}
return $endpoints;
});

השבתה קלה לכלל REST API עבור JSON הכניסו את הקוד הבא לקובץ functions על מנת לחסום גישה

// Disable WordPress REST API
add_filter('rest_enabled', '__return_false');

// Optional: If you want to disable REST API for users who are not logged in
add_filter('rest_authentication_errors', function ($result) {
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'You are not logged in.', array('status' => 401));
}
return $result;
});

על מנת להפעיל את הקודים מטה יש לפעול על פי ההנחיות הבאות יש  לגשת אל קובץ הfunctions.php ולהוסיף את כלל הקודים הבאים

מסיר את קישור ה-RSD שעשוי לחשוף מידע על האתר ולאפשר התקפות מסוימות

remove_action('wp_head', 'rsd_link');

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

remove_action('wp_head', 'wp_generator');

מסיר את הקישור הנוצר ל-REST API מכותרת הדף.

remove_action('template_redirect', 'rest_output_link_header', 11);

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

remove_action('wp_head', 'print_emoji_detection_script', 7);

מסיר את סגנונות ה-Emoji מהעיצוב, גם זה למניעת פעולות שלא רצויות.

remove_action('wp_print_styles', 'print_emoji_styles');

מסיר את סקריפט הזיהוי של ה-Emoji מלוח הבקרה, שכן הוא לא תמיד נחוץ למנהלי האתר.

remove_action('admin_print_scripts', 'print_emoji_detection_script');

מסיר את סגנונות ה-Emoji מלוח הבקרה.

remove_action('admin_print_styles', 'print_emoji_styles');

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

remove_action('wp_head', 'rest_output_link_wp_head');

מסיר קישורי גלישת נתוני oEmbed מהכותרת של הדף, כדי למנוע פעולות רצויות מהמזור.

remove_action('wp_head', 'wp_oembed_add_discovery_links');

מסיר את נתיב ה-REST API הקשור ל-oEmbed, מונע גישה למידע לא נחוץ.

remove_action('rest_api_init', 'wp_oembed_register_route');

מסתיר תוצאות oEmbed כאשר נתונים מתקבלים, מגן על מידע רגיש.

remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

מסיר את ה-embed script המוסיף את האירוח של oEmbed, כדי למנוע פעולות שימוש לרעה במידע.

remove_action('wp_head', 'wp_oembed_add_host_js');

מסיר את ה-shortlink מהכותרת של הדף, כדי להפחית את המידע המוצג בכותרת.

remove_action('wp_head', 'wp_shortlink_wp_head', 10);