الهجمات على ووردبريس غالباً تأتي من:
- رفع ملفات خبيثة (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 كمستوى إضافي.