جاري التحميل...

دليل كامل لتأمين ووردبريس ضد الاختراق

الهجمات على ووردبريس غالباً تأتي من:

  • رفع ملفات خبيثة (Web Shells).
  • تعديل ملفات النظام الحساسة (wp-config.php، .htaccess).
  • الوصول الغير مصرح به للوحة الإدارة.

سنقوم بتغطية كل هذه النقاط.


1️⃣ منع رفع أي ملف غير آمن (PHP/Exe)

إضافة حماية على مستوى ووردبريس

// functions.php
add_filter('wp_handle_upload_prefilter', 'block_php_uploads');
function block_php_uploads($file){
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
$blocked = array('php','phtml','php3','php4','php5','exe','js','sh','py');
if(in_array($ext, $blocked)){
$file['error'] = 'رفع هذا النوع من الملفات ممنوع!';
}
return $file;
}

هذا يمنع أي مستخدم عادي أو مهاجم من رفع ملفات PHP أو Scripts ضارة.


حماية مجلد Uploads عبر .htaccess (Apache)

# منع تشغيل أي سكربت في مجلد uploads
<Directory "/var/www/html/wp-content/uploads">
<FilesMatch "\.(php|phtml|php3|php4|php5|exe|js|sh|py)$">
Order Deny,Allow
Deny from all
</FilesMatch>
</Directory>

حماية Nginx

# منع تنفيذ ملفات PHP في مجلد uploads
location ~* /wp-content/uploads/.*\.(php|phtml|php3|php4|php5)$ {
deny all;
return 403;
}

2️⃣ منع تعديل الملفات الحساسة (wp-config.php، .htaccess)

chmod صارم على الملفات الأساسية

# ملفات النظام الأساسية
chmod 400 wp-config.php
chmod 400 .htaccess# مجلدات مهمة
chmod 755 wp-content
chmod 755 wp-includes

منع تعديل عبر PHP

// functions.php
define('DISALLOW_FILE_EDIT', true); // يمنع تحرير الملفات من لوحة التحكم
define('DISALLOW_FILE_MODS', true); // يمنع التثبيت والتحديثات من الواجهة

هذا يمنع أي شخص من تعديل ملفات القوالب أو الإضافات مباشرة من لوحة ووردبريس.


3️⃣ حماية لوحة الدخول (wp-admin)

حماية الدخول بـ .htaccess

<Files wp-login.php>
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Files>

يجب إنشاء ملف .htpasswd وإضافة المستخدمين المصرح لهم فقط:

htpasswd -c /etc/apache2/.htpasswd admin

تقييد الوصول عبر IP (Apache)

<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 203.0.113.5
</Files>

يسمح فقط للـ IP الخاص بك بالدخول.

Nginx:

location = /wp-login.php {
allow 203.0.113.5;
deny all;
}

4️⃣ منع استغلال XML-RPC

// functions.php
add_filter('xmlrpc_enabled', '__return_false');

XML-RPC يستخدم عادة لهجمات brute force و pingbacks.


5️⃣ تفعيل جدار حماية على السيرفر (iptables)

# حظر أي محاولة للوصول إلى wp-config.php أو .htaccess
iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "wp-config.php" -j DROP
iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string ".htaccess" -j DROP# منع هجمات brute force على wp-login.php
iptables -A INPUT -p tcp --dport 80 -m recent --name wp-login --set
iptables -A INPUT -p tcp --dport 80 -m recent --name wp-login --update --seconds 60 --hitcount 5 -j DROP

6️⃣ حماية قاعدة البيانات

  • منع وصول أي IP غير مصرح به إلى MySQL:
# bind-address في my.cnf
[mysqld]
bind-address = 127.0.0.1
  • إنشاء مستخدم خاص لووردبريس بصلاحيات محدودة:
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;

7️⃣ منع تنفيذ PHP في مجلدات غير ضرورية

# Nginx
location ~* /wp-content/themes/.*/.*\.php$ {
deny all;
}
location ~* /wp-content/plugins/.*/.*\.php$ {
deny all;
}

فقط ملفات index.php الخاصة بالثيمات والإضافات هي المسموح بها عبر النظام.


8️⃣ حماية إضافية عبر Cloudflare و WAF

  • تفعيل Rate Limiting لكل wp-login.php و XML-RPC.
  • تفعيل Bot Fight Mode لحجب الروبوتات الخبيثة.
  • تفعيل Challenge Pages للطلبات المريبة.

✅ نصائح عامة

  • تحديث ووردبريس، القوالب والإضافات دائمًا.
  • تفعيل 2FA لجميع المستخدمين المصرح لهم.
  • مراقبة اللوجات باستمرار:
tail -f /var/log/apache2/access.log | grep wp-login.php
tail -f /var/log/nginx/error.log
  • استخدام Plugin حماية موثوق مثل Wordfence أو Sucuri كمستوى إضافي.