Mencegah XML-RPC Brute Force pada WordPress

Mencegah XML-RPC Brute Force pada WordPress — Panduan Teknis

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.
Tampilkan Komentar
Sembunyikan Komentar

0 Komentar

Posting Komentar

Iklan Atas Artikel