Cara Memasang ModSecurity 2 dengan Apache di Debian 12 atau 11

ModSecurity 2 adalah firewall aplikasi web (WAF) penting untuk mengamankan server HTTP Apache, yang menawarkan pemantauan waktu nyata dan penyaringan berbasis aturan. Diinstal pada server Linux Debian 12 atau 11, ModSecurity membantu mencegah injeksi SQL, skrip lintas situs (XSS), dan serangan lainnya. Repositori ModSecurity Digitalwave menyederhanakan instalasi, memastikan Anda menggunakan versi stabil terbaru.

Untuk meningkatkan keamanan, OWASP Core Rule Set (CRS) menyediakan aturan yang telah dikonfigurasi sebelumnya yang menargetkan kerentanan umum. Dengan pengaturannya, administrator dapat memperkuat pertahanan dengan konfigurasi manual yang minimal. Panduan ini akan menunjukkan kepada Anda cara menginstal ModSecurity 2 pada Debian menggunakan repositori Digitalwave dan mengonfigurasi OWASP CRS untuk perlindungan yang optimal.

Memperbarui Paket Sistem Debian untuk Instalasi ModSecurity 2

Langkah pertama kita adalah memastikan sistem Debian kita diperbarui. Dengan begitu, semua paket yang ada akan tetap mutakhir, memastikan kinerja optimal, dan meminimalkan risiko keamanan. Lakukan ini dengan menjalankan perintah berikut:

sudo apt update && sudo apt upgrade

Setelah memperbarui sistem Anda, periksa apakah Apache telah terinstal. Jika belum, gunakan perintah berikut untuk menginstalnya:

sudo apt install apache2

Impor Modul ModSecurity PPA

Menyiapkan Repositori yang Diperlukan

Tugas berikutnya dalam daftar kami adalah memasang Modul Apache ModSecurity. Versi yang tersedia di repositori default Debian mungkin bukan yang terbaru, dan menggunakannya dapat menyebabkan kesalahan langsung. Sebagai gantinya, kami akan mengimpor repositori pihak ketiga untuk memasang Modul ModSecurity terbaru untuk Apache. Repositori pihak ketiga ini, yang dikelola oleh Digitalwave, terkenal karena binernya yang stabil.

Mulailah dengan menginstal satu set paket yang diperlukan:

sudo apt install apt-transport-https lsb-release ca-certificates curl -y

Kemudian kita lanjutkan untuk mengimpor repositori PPA Modul ModSecurity 2 kunci GPG:

curl -fsSL https://modsecurity.digitalwave.hu/archive.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/digitalwave-modsecurity.gpg > /dev/null

Setelah memperoleh kunci GPG, tambahkan repositori ke sistem Anda:

echo "deb [signed-by=/usr/share/keyrings/digitalwave-modsecurity.gpg] http://modsecurity.digitalwave.hu/debian/ $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/digitalwave-modsecurity.list
echo "deb [signed-by=/usr/share/keyrings/digitalwave-modsecurity.gpg] http://modsecurity.digitalwave.hu/debian/ $(lsb_release -sc)-backports main" | sudo tee -a /etc/apt/sources.list.d/digitalwave-modsecurity.list

Memprioritaskan Repositori PPA Modul Apache Baru

Dengan repositori yang sudah ada, kini perlu untuk menyesuaikan kebijakan APT guna memprioritaskan repositori ini untuk paket-paket tertentu yang terkait dengan ModSecurity. Perintah berikut akan menyelesaikannya:

cat << EOF | sudo tee -a /etc/apt/preferences.d/99modsecurity
Package: *nginx*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900

Package: *libapache2-mod-security2*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900

Package: *modsecurity-crs*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900

Package: *libmodsecurity*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900
EOF

Berikutnya, jalankan pembaruan APT untuk mencerminkan sumber yang baru diimpor:

sudo apt update

Selain itu, untuk mengonfirmasi preferensi, Anda dapat mengonfirmasi perubahan kebijakan ini dengan yang berikut ini:

sudo apt-cache policy libapache2-mod-security2 modsecurity-crs libmodsecurity3

Instal Modul ModSecurity 2

Sekarang repositori sudah siap, lanjutkan dengan instalasi modul libapache2-mod-security2:

sudo apt install libapache2-mod-security2

Setelah instalasi, modul harus diaktifkan. Gunakan perintah berikut untuk melakukannya:

sudo a2enmod security2

Memulai Ulang Layanan Apache

Terakhir, kami memulai ulang layanan Apache untuk memastikan semua perubahan berlaku dan modul ModSecurity yang baru ditambahkan terintegrasi dengan benar:

sudo nano /etc/apache2/mods-enabled/security2.conf

Aktifkan Modul ModSecurity 2 di Apache HTTP

Mengakses File Konfigurasi ModSecurity

Berkas konfigurasi untuk Apache ModSecurity dapat ditemukan di /etc/apache2/mods-enabled/security2.conf. Akses berkas ini menggunakan editor teks nano (atau editor teks pilihan Anda) dengan perintah berikut:

sudo nano /etc/apache2/mods-enabled/security2.conf

Carilah baris yang berbunyi:

IncludeOptional /etc/modsecurity/*.conf

Pastikan baris ini tidak diberi komentar, karena baris ini berisi berkas konfigurasi lain yang diperlukan dari direktori /etc/modsecurity. Secara default, baris ini tidak diberi komentar.

Memodifikasi Konfigurasi ModSecurity 2

Kita perlu mengganti nama berkas konfigurasi modsecurity.conf-recommended menjadi modsecurity.conf agar aktif. Ini dapat dilakukan dengan perintah berikut:

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Sekarang, mari kita buka file konfigurasi yang baru diberi nama ini:

sudo nano /etc/modsecurity/modsecurity.conf

Mesin aturan ModSecurity diatur ke DetectionOnly secara default dalam berkas ini. Ini berarti ia akan mengidentifikasi dan mencatat perilaku yang berpotensi berbahaya tanpa memblokirnya. Untuk mengubah ini dan mengaktifkan kemampuan pemblokiran ModSecurity, cari baris SecRuleEngine (di sekitar baris 7) dan ganti DetectionOnly dengan On.

Dari:

SecRuleEngine DetectionOnly

Ke:

SecRuleEngine On

Menyesuaikan Pengaturan Log untuk Apache

Lebih jauh ke bawah pada berkas konfigurasi, Anda akan menemukan baris SecAuditLogParts (sekitar baris 224). Pengaturan default untuk baris ini tidak sepenuhnya benar; pengaturan ini perlu disesuaikan untuk mencatat semua informasi transaksi secara akurat.

Mengubah:

SecAuditLogParts ABDEFHIJZ

Ke:

SecAuditLogParts ABCEFHJKZ

Jika modifikasi ini sudah dilakukan, simpan perubahan Anda dan keluar dari editor.

Memulai Ulang Apache untuk Menerapkan Perubahan

Langkah terakhir dalam proses ini adalah memulai ulang layanan Apache agar perubahan pada konfigurasi ModSecurity berlaku. Hal ini dapat dilakukan dengan menggunakan perintah berikut:

sudo systemctl restart apache2

Instal Set Aturan Inti OWASP untuk ModSecurity2

ModSecurity sendiri tidak dapat melindungi server web Anda. ModSecurity memerlukan seperangkat aturan untuk mengidentifikasi potensi ancaman dan memblokir aktivitas berbahaya. OWASP (Open Web Application Security Project) Core Rule Set (CRS) adalah seperangkat aturan yang sangat dihormati dan digunakan oleh berbagai server web dan Web Application Firewall (WAF). Penerapan seperangkat aturan ini memberikan perlindungan yang kuat bagi server Anda terhadap berbagai ancaman yang muncul di internet.

Sebelum melanjutkan, penting untuk memverifikasi bahwa Anda memiliki versi terbaru OWASP CRS dengan mengunjungi Halaman tag Rilis OWASPLangkah ini memastikan Anda mengunduh dan memasang langkah-langkah keamanan terkini untuk server Anda.

Membuat Direktori Induk untuk OWASP CRS

Pertama, mari buat direktori induk utama untuk OWASP menggunakan perintah mkdir:

sudo mkdir /etc/apache2/modsec/

Unduh Arsip OWASP CRS di Debian

Selanjutnya, kita akan menggunakan perintah wget untuk mengambil arsip OWASP CRS 3.3.4, yang merupakan versi stabil pada saat penulisan. Ingatlah bahwa Anda harus memverifikasi versi tersebut menggunakan tautan yang disebutkan sebelumnya.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.zip

Versi nightly mungkin menawarkan langkah-langkah keamanan yang lebih mutakhir, tetapi dapat menimbulkan masalah karena status pengembangannya. Bagi pengguna baru, disarankan untuk menggunakan versi stabil guna menghindari potensi komplikasi.

Catatan: Anda harus terus memeriksa pembaruan; aturan stabil tidak berubah setiap minggu tetapi setiap triwulan atau kecuali pembaruan mendesak diperlukan.

Mengekstrak Arsip

Dengan arsip yang diunduh, kita dapat mengekstraknya ke direktori yang kita buat sebelumnya:

sudo tar xvf v3.3.4.tar.gz -C /etc/apache2/modsec

Ingatlah untuk mengubah perintah berdasarkan versi OWASP CRS yang Anda unduh.

Mengonfigurasi Set Aturan

OWASP CRS memiliki contoh berkas konfigurasi yang harus Anda ganti namanya sambil tetap menyimpan berkas asli sebagai cadangan. Anda dapat melakukannya menggunakan 'perintah cp':

sudo cp /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf.example /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf

Catatan: Ingatlah untuk mengganti /coreruleset-3.3.4/ dengan versi OWASP CRS yang Anda pilih.

Mengaktifkan Aturan

Untuk mengaktifkan aturan, buka file /etc/apache2/mods-enabled/security2.conf:

sudo apt install unzip -y

Kemudian, masukkan dua baris berikut:

Include /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Include /etc/apache2/modsec/coreruleset-3.3.4/rules/*.conf

Catatan: Sekali lagi, pastikan Anda mengganti /coreruleset-3.3.4/ dengan versi OWASP CRS yang telah Anda pilih, karena coreruleset yang akan Anda unduh kemungkinan besar lebih baru daripada contoh panduan.

Selain itu, beri komentar atau hapus baris berikut:

IncludeOptional /usr/share/modsecurity-crs/*.load

Setelah selesai, simpan dan keluar dari file:

Memulai Ulang Apache untuk Menerapkan Perubahan

Langkah terakhir adalah memulai ulang layanan Apache Anda untuk memastikan perubahan diterapkan:

sudo systemctl restart apache2

Memulai dengan OWASP Core Rule Set dan ModSecurity 2

OWASP Core Rule Set (CRS) adalah alat yang komprehensif dengan banyak opsi yang dapat disesuaikan. Konfigurasi default-nya menyediakan peningkatan keamanan langsung untuk sebagian besar server tanpa memengaruhi pengunjung asli atau bot Search Engine Optimization (SEO). Kami akan membahas beberapa aspek penting CRS di bagian ini, tetapi menjelajahi file konfigurasi untuk pemahaman lengkap tentang semua opsi yang tersedia selalu bermanfaat.

Menyesuaikan Konfigurasi CRS

Kami memulai dengan membuka file crs-setup.conf di mana sebagian besar pengaturan CRS dapat diubah:

sudo nano /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf

Memahami Sistem Penilaian CRS

ModSecurity beroperasi dalam dua mode berbeda:

  • Mode Penilaian Anomali: Direkomendasikan bagi sebagian besar pengguna, mode ini menetapkan 'skor anomali' setiap kali aturan cocok. Setelah memproses aturan masuk dan keluar, skor anomali diperiksa, dan tindakan yang mengganggu dipicu jika perlu. Tindakan ini sering kali berbentuk kesalahan 403. Mode ini menyediakan informasi log yang akurat dan menawarkan fleksibilitas yang lebih besar dalam menetapkan kebijakan pemblokiran.
  • Mode Mandiri: Dalam mode ini, tindakan diterapkan secara instan setiap kali aturan dicocokkan. Meskipun dapat mengurangi penggunaan sumber daya, mode ini menawarkan fleksibilitas yang lebih rendah dan menghasilkan log audit yang kurang informatif. Proses pencocokan aturan berhenti ketika aturan pertama terpenuhi dan tindakan yang ditentukan dijalankan.

Memahami Tingkat Paranoia

OWASP CRS mendefinisikan empat tingkat paranoia:

  • Paranoia Level 1: Level default cocok untuk sebagian besar pengguna.
  • Paranoia Level 2: Untuk pengguna tingkat lanjut.
  • Paranoia Level 3: Untuk pengguna ahli.
  • Paranoia Level 4: Hanya disarankan dalam keadaan luar biasa.

Tingkat paranoia yang lebih tinggi memungkinkan aturan tambahan, meningkatkan keamanan, dan memperbesar kemungkinan pemblokiran lalu lintas yang sah karena kesalahan positif. Memilih tingkat paranoia yang sesuai dengan keahlian dan kebutuhan keamanan Anda sangatlah penting.

Menguji OWASP CRS di Server Anda

Untuk memastikan OWASP CRS beroperasi dengan benar di server Anda, gunakan peramban internet Anda untuk mengakses URL berikut. Jangan lupa mengganti “yourdomain.com” dengan domain Anda yang sebenarnya:

https://www.yourdomain.com/index.html?exec=/bin/bash

Jika Anda menerima kesalahan 403 Forbidden, OWASP CRS akan berfungsi sebagaimana mestinya. Jika tidak, mungkin ada kesalahan dalam proses penyiapan yang memerlukan perhatian Anda; masalah yang paling umum adalah lupa mengubah DetectionOnly ke On atau yang serupa.

Atasi Positif Palsu dan Aturan Pengecualian Kustom

Mengelola positif palsu dengan ModSecurity dan OWASP Core Rule Set (CRS) dapat menjadi tugas yang berkelanjutan. Namun, pertahanan yang kuat yang ditawarkan sistem ini terhadap berbagai ancaman membuat upaya ini penting. Untuk meminimalkan positif palsu pada awalnya, disarankan untuk menetapkan tingkat paranoia yang rendah.

Dengan menjalankan aturan yang ditetapkan pada tingkat paranoia yang lebih rendah selama beberapa minggu atau bahkan bulan, Anda dapat mengurangi kemungkinan munculnya sejumlah besar hasil positif palsu. Pendekatan ini memberi Anda waktu untuk membiasakan diri dengan peringatan dan respons yang tepat sebelum secara bertahap meningkatkan tingkat paranoia untuk keamanan yang lebih ketat.

Mengelola Positif Palsu dalam Aplikasi yang Diketahui di Debian dengan OWASP, ModSecurity 2

ModSecurity mencakup kemampuan untuk memasukkan tindakan tertentu ke dalam daftar putih yang mungkin secara tidak sengaja memicu positif palsu. Misalnya:

#SecAction \
# "id:900130,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.crs_exclusions_cpanel=1,\
#  setvar:tx.crs_exclusions_dokuwiki=1,\
#  setvar:tx.crs_exclusions_drupal=1,\
#  setvar:tx.crs_exclusions_nextcloud=1,\
#  setvar:tx.crs_exclusions_phpbb=1,\
#  setvar:tx.crs_exclusions_phpmyadmin=1,\
#  setvar:tx.crs_exclusions_wordpress=1,\
#  setvar:tx.crs_exclusions_xenforo=1"

Untuk memberlakukan daftar putih untuk aplikasi seperti WordPress, phpBB, dan phpMyAdmin, hapus komentar pada baris yang sesuai dan pertahankan nilai (1). Untuk mencegah daftar putih layanan yang tidak digunakan, sesuaikan nilainya ke (0).

Konfigurasi yang diperbarui mungkin terlihat seperti berikut:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1"

Dalam contoh ini, opsi yang tidak relevan telah dihapus, sehingga sintaksis yang benar tetap berlaku untuk konfigurasi yang Anda perlukan.

Membuat Pengecualian Aturan Sebelum Implementasi CRS

Untuk membuat pengecualian khusus, mulailah dengan mengganti nama file “REQUEST-900-EXCLUSION-RULES-BEFORE-CRS-SAMPLE.conf” menggunakan perintah berikut:

sudo cp /etc/apache2/modsec/coreruleset-3.3.4/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/apache2/modsec/coreruleset-3.3.4/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

Ingat, setiap aturan pengecualian harus memiliki 'idnumber' yang unik untuk menghindari kesalahan selama pengujian layanan Apache2.

Misalnya, beberapa “REQUEST_URI” dapat menyebabkan hasil positif palsu. Contoh berikut mengilustrasikan dua kasus yang melibatkan Google PageSpeed ​​beacon dan plugin WPMU DEV untuk WordPress:

SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"

SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"

Aturan ini secara otomatis mengizinkan URL apa pun yang dimulai dengan jalur yang ditentukan.

Anda juga dapat memasukkan alamat IP tertentu ke dalam daftar putih:

SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"

SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"

Pada aturan pertama, satu alamat IP dimasukkan ke daftar putih, sedangkan aturan kedua menggunakan perintah '@ipMatch' untuk pencocokan subnet yang lebih luas. Untuk memblokir subnet atau alamat IP, cukup ganti 'allow' dengan 'deny'. Fleksibilitas ini memungkinkan Anda membuat daftar hitam dan daftar putih terperinci, yang dapat diintegrasikan dengan Fail2Ban untuk strategi keamanan yang lebih baik.

Menonaktifkan Aturan Tertentu di Debian dengan OWASP, ModSecurity 2

Alih-alih memasukkan seluruh jalur ke dalam daftar putih, pendekatan lain adalah menonaktifkan aturan tertentu yang menyebabkan kesalahan positif terus-menerus. Meskipun metode ini memerlukan pengujian lebih lanjut, metode ini menawarkan manfaat jangka panjang.

Misalnya, jika aturan 941000 dan 942999 di area “/admin/” memicu positif palsu untuk tim Anda, Anda dapat menemukan ID aturan di log ModSecurity Anda dan menonaktifkan hanya ID spesifik tersebut menggunakan perintah “RemoveByID”:

SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"

Memantau Log dan Mengidentifikasi Pola

Pemantauan log berkelanjutan sangat penting saat menangani positif palsu dengan Apache, ModSecurity, dan OWASP. Pemantauan ini membantu mengidentifikasi pola yang memicu positif palsu, sehingga Anda dapat membuat aturan khusus untuk mengatasinya.

Misalnya, jika aturan tertentu secara konsisten menyebabkan hasil positif palsu, Anda dapat membuat aturan pengecualian untuk menangani kejadian spesifik ini. Pendekatan yang disesuaikan ini memastikan pengelolaan hasil positif palsu yang lebih efektif.

Dengan meninjau log secara berkala dan menyesuaikan aturan, Anda dapat mempertahankan lingkungan yang lebih aman dan efisien untuk aplikasi Anda.

Rotasi Log untuk ModSecurity 2

Karena sifat transaksi web yang dinamis, log ModSecurity dapat bertambah dengan cepat, sehingga manajemen log yang efektif menjadi sangat penting. Rotasi log merupakan alat yang berguna untuk mengelola log ini, meskipun tidak dikonfigurasi secara default di ModSecurity. Bagian ini akan memandu Anda dalam menyiapkan rotasi log khusus untuk ModSecurity.

Membuat File Rotasi ModSecurity

Pertama, Anda perlu membuat file khusus untuk rotasi log ModSecurity. Untuk melakukannya, gunakan perintah berikut untuk membuat dan membuka file baru bernama modsec:

sudo nano /etc/logrotate.d/modsec

Mengonfigurasi File Rotasi

Dalam berkas konfigurasi ModSecurity (modsec) yang baru dibuat, tambahkan yang berikut ini:

/var/log/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Konfigurasi ini menyimpan log selama 31 hari, tetapi Anda dapat mengubah jumlahnya sesuai kebutuhan. Misalnya, mengubahnya menjadi 'rotate 7' akan menyimpan log selama seminggu.

Direktif 'daily' memastikan log dirotasi setiap hari, sementara 'compress' menghemat ruang dengan mengompresi log lama. Opsi 'delaycompress' menunda kompresi hingga siklus rotasi kedua, dan 'missingok' mencegah kesalahan jika berkas log tidak ada. Selain itu, 'notifempty' memastikan berkas log kosong tidak dirotasi.

Kiat: Rotasi log harian disarankan untuk menghindari penanganan berkas log yang terlalu besar, yang dapat membuat analisis lebih memakan waktu.

Kesimpulan

Anda kini telah memasang ModSecurity 2 di server Debian 12 atau 11 menggunakan repositori Digitalwave dan mengonfigurasi Set Aturan Inti OWASP. Dengan alat-alat ini, server Anda siap memblokir banyak ancaman aplikasi web umum.

Ingatlah untuk memperbarui CRS secara berkala dan memantau setiap kesalahan positif atau kerentanan yang terlewat. Pengujian dan penyesuaian yang konsisten merupakan kunci untuk mempertahankan pengaturan keamanan yang tangguh.

Joshua James
Ikuti aku
Postingan terbaru oleh Joshua James (Lihat semua)

Tinggalkan komentar