Blocking URI paths using ModSecurity

Jika situs Anda mengalami serangan bot atau terdapat laporan penyalahgunaan (abuse), alih-alih mengubah permission pada beberapa folder agar tidak dapat diakses. Anda dapat menggunakan ModSecurity untuk memblokir akses berdasarkan URI path yang terdapat pada situs.

Berikut adalah langkah-langkahnya.

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-uri.conf
SecRule REQUEST_URI "@pmFromFile blokir_path" \
   "id:7777772,phase:2,t:none,t:normalizePath,deny,status:403,msg:'Access denied - URI path: %{MATCHED_VAR_NAME}'"

Penjelasan:

  • REQUEST_URI "@pmFromFile blokir_path": Ini menetapkan bahwa ModSecurity akan mencocokan nilai REQUEST_URI dengan list yang ada di file blokir_path sebagai referensi.
  • id:7777772: Merupakan ID unik untuk mengidentifikasi aturan ModSecurity.
  • phase:2: Aturan diterapkan pada fase kedua dari pemrosesan permintaan HTTP.
  • t:none: Ini menunjukan jika tidak ada tindakan (action) khusus yang akan diambil jika aturan match.
  • t:normalizePath: Ini digunakan untuk normalisasi path URI sebelum mencocokannya dengan pola yang ditentukan.
  • deny,status:403: Jika aturan cocok, maka permintaan akan ditolak dan diberi respon kode status HTTP 403 (Forbidden).
  • msg:'Access denied - URI path: %{MATCHED_VAR_NAME}': Pesan yang akan dicatat dalam log jika aturan cocok.

Lalu buat file blokir_path di folder custom_rules dan isi dengan URI path yang ingin diblokir.

nano /etc/httpd/modsecurity.d/custom_rules/blokir_path
/slot/
togel

Edit konfigurasi mod_security.conf.

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

Kemudian restart service apache.

systemctl restart httpd

Untuk memastikan 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-uri.conf