Mencegah XML-RPC Brute Force pada WordPress
Panduan Teknis: Hardening WordPress terhadap Serangan XML-RPC Brute Force
xmlrpc.php adalah endpoint default WordPress yang kerap dimanfaatkan untuk brute force login dengan metode system.multicall. Artikel ini membahas langkah teknis detail untuk meminimalisir risiko.
1. Nonaktifkan XML-RPC di WordPress
// Tambahkan ke functions.php
add_filter('xmlrpc_enabled', '__return_false');
2. Blokir di Apache (.htaccess)
# .htaccess
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
# Hanya izinkan IP tertentu:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 203.0.113.10
</Files>
3. Blokir di Nginx
location = /xmlrpc.php {
deny all;
return 444;
}
4. Rate Limiting di Nginx
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;
server {
location = /xmlrpc.php {
limit_req zone=one burst=10 nodelay;
deny all;
}
}
5. Fail2ban Filter untuk XML-RPC
Buat file filter /etc/fail2ban/filter.d/wordpress-xmlrpc.conf:
[Definition]
failregex = ^<HOST> -.*POST /xmlrpc.php.* 401
Tambahkan jail di /etc/fail2ban/jail.local:
[wordpress-xmlrpc]
enabled = true
port = http,https
filter = wordpress-xmlrpc
logpath = /var/log/apache2/access.log
maxretry = 3
bantime = 3600
6. ModSecurity Rule
SecRule REQUEST_URI "xmlrpc.php" "phase:2,deny,id:123456,msg:'Block XML-RPC brute force'"
7. WP-CLI: Nonaktifkan Pingback
wp option update default_pingback_flag 0
wp option update ping_sites ''
8. Gunakan Plugin Hardening
- Wordfence (firewall, 2FA, brute force protection)
- iThemes Security (login lockdown, XML-RPC disable)
- Disable XML-RPC (khusus matikan endpoint)
9. Monitoring
Gunakan GoAccess atau AWStats untuk analisis log. Cari pola request berulang ke /xmlrpc.php.
10. Checklist Teknis
- Backup konfigurasi sebelum perubahan
- Nonaktifkan XML-RPC jika tidak digunakan
- Blokir via Apache/Nginx
- Rate limit & fail2ban aktif
- Pasang plugin keamanan
- Monitoring log rutin
⚠️ Catatan: Implementasi dapat berbeda tergantung stack (Apache vs Nginx vs LiteSpeed). Untuk VPS, kombinasikan fail2ban + WAF. Untuk shared hosting, gunakan plugin.
0 Komentar
Posting Komentar