Skip to main content
  1. Posts/

Blocking XMLRPC WordPress with ModSecurity

·2 mins·
modsec apache modsec

Serangan yang mentargetkan XMLRPC WordPress dapat menyebabkan load server yang cukup tinggi apalagi jika Anda memiliki lebih dari satu WordPress di server. Akibatnya website dan server menjadi lambat diakses.

Untuk itu Anda dapat mencoba menambahkan rule ModSecurity agar akses ke XMLRPC dapat blokir sementara atau permanent.

Buat folder custom_rules.

mkdir -p /etc/httpd/modsecurity.d/custom_rules

Kemudian buat file dan tambahkan rule modsec berikut.

nano /etc/httpd/modsecurity.d/custom_rules/block-xmlrpc.conf
# Block requests to xmlrpc.php with no referring URL
SecRule REQUEST_METHOD "POST" "deny,status:401,id:7777771,chain,msg:'xmlrpc request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0" "chain"
SecRule REQUEST_URI "xmlrpc.php"

Penjelasan:

  1. SecRule REQUEST_METHOD "POST" "deny,status:401,id:7777771,chain,msg:'xmlrpc request blocked, no referer'":
  • SecRule: Menandakan bahwa ini adalah rule ModSecurity.
  • REQUEST_METHOD "POST": Aturan ini akan diterapkan pada permintaan dengan metode POST.
  • "deny,status:401": Menunjukan bahwa permintaan yang memenuhi aturan ini akan ditolak dengan memberikan respon status HTTP 401 (Unauthorized).
  • id:7777771: ID rule.
  • chain: Mengindikasikan bahwa aturan ini merupakan bagian dari rantai aturan, artinya aturan berikutnya akan diterapkan jika permintaan memenuhi aturan ini.
  • msg:'xmlrpc request blocked, no referer': Pesan yang akan disertakan dalam log jika aturan ini dipicu.
  1. SecRule &HTTP_REFERER "@eq 0" "chain":
  • &HTTP_REFERER: Mengambil nilai header HTTP_REFERER dari permintaan.
  • "@eq 0": Memeriksa apakah nilai header tersebut sama dengan 0, yang menandakan bahwa referer tidak ada.
  • chain: Menunjukan bahwa aturan ini juga merupakan bagian dari rantai aturan.
  1. SecRule REQUEST_URI "xmlrpc.php":
  • REQUEST_URI "xmlrpc.php": Memeriksa apakah URI permintaan adalah xmlrpc.php, yang menunjukan bahwa permintaan ditunjukan ke file XML-RPC.

Edit konfigurasi mod_security.conf.

<IfModule mod_security2.c>
Include modsecurity.d/custom_rules/*.conf
</IfModule>

Lalu restart service apache.

systemctl restart httpd

Pastikan file rule yang dibuat sudah di load oleh server web.

# httpd -t -D DUMP_INCLUDES | grep custom
      (56) /etc/httpd/modsecurity.d/custom_rules/block-xmlrpc.conf

Test rule modsec dengan curl

curl -I -X POST https://example.com/xmlrpc.php
HTTP/2 401 
cache-control: private, no-cache, no-store, must-revalidate, max-age=0
pragma: no-cache
content-type: text/html
content-length: 714
date: Tue, 12 Dec 2023 15:14:14 GMT
server: Apache

Related

Using ModSecurity to Block Web Crawlers
·1 min
modsec modsec apache
Cara Menginstal ModSecurity di Apache
·2 mins
apache apache modsec
Enable Google PageSpeed Module
·2 mins
linux linux apache nginx
Enable Brotli Compression
·2 mins
linux apache nginx linux
Restoring Real Visitor IPs Cloudflare
·2 mins
cloudflare cpanel apache
Integrasi Apache dengan Passenger
·1 min
passenger python passenger apache