ModSecurity adalah Firewall Aplikasi Web sumber terbuka gratis yang didukung oleh berbagai server web seperti Apache, IIS, dan Nginx. Ini digunakan sebagai lapisan keamanan eksternal untuk melindungi server web.
Di sini, di LinuxAPT, kita akan melihat cara menginstal firewall ModSecurity dengan Nginx yang sudah diinstal sebelumnya di server Ubuntu 20.04.
Langkah-Langkah Menerapkan Modsecurity dengan Nginx di Ubuntu 20
1. Instal Nginx di sistem
Jika Anda belum menginstal Nginx di server Anda, ikuti panduan ini untuk memenuhi persyaratan instalasi Modsecurity:https://linuxapt.com/blog/1276-install-nginx-on-ubuntu-20-04-lts-using- kode sumber
2. Instal libmodsecurity3
Sekarang, instal git pada mesin Anda sehingga Anda dapat mengkloning repositori git ModSecurity. Kita dapat melakukannya dengan menjalankan perintah ini:
$ sudo apt install git -y
Sekarang setelah git terinstal, klon repositori dengan menjalankan perintah ini:
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
3. Masuk ke direktori Modsecurity
Sekarang setelah Anda mengkloning repositori git modsecurity, buka direktori modsecurity dengan mengikuti jalur di bawah ini:
$ cd /usr/local/src/ModSecurity/
4. Instal dependensi libmodsecurity3
Sekarang kita berada di dalam direktori Modsecurity, kita akan menginstal dependensi libmodsecurity3 pada langkah ini. Jalankan perintah ini:
$ sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y
5. Instal modul Git
Sekarang, instal submodul git dengan bantuan perintah ini:
$ git submodule init
Selanjutnya, kami akan memperbarui submodul:
$ git submodule update
6. Bangun lingkungan modsecurity
Saatnya untuk membangun lingkungan modsecurity. Untuk melakukannya, jalankan perintah berikut:
$ ./build.sh
Sekarang konfigurasikan menggunakan perintah ini:
$ ./configure
Setelah ini, Anda akan mendapatkan kesalahan ini:
fatal: No names found, cannot describe anything.
7. Kompilasi kode sumber modsecurity
Sekarang kita akan mengkompilasi lingkungan untuk libmodsecurity3 dengan perintah ini:
$ make
Jika Anda ingin meningkatkan kecepatan kompilasi, Anda dapat menentukan -j
$ make -j 4
Selanjutnya kita akan menjalankan perintah install:
$ sudo make install
Instalasi dilakukan di /usr/local/modsecurity/.
8. Pasang konektor modsecurity-nginx
Di sini, kita akan menginstal konektor Modsecurity-nginx. Ini adalah titik koneksi dan komunikasi antara Nginx dan ModSecurity.
Pertama-tama, kita perlu mengkloning repositori konektor. Lakukan dengan menjalankan perintah ini:
$ sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
9. Instal dependensi modsecurity-nginx
Pertama, buka direktori sumber Nginx seperti ini:
$ cd /usr/local/src/nginx/nginx-1.21.1
Pastikan untuk mengganti versi Nginx di perintah dengan versi Nginx Anda saat ini jika tidak, Anda akan mendapatkan kesalahan.
Untuk menginstal dependensi yang diperlukan, jalankan perintah ini:
$ sudo apt build-dep nginx && sudo apt install uuid-dev -y
Selanjutnya, kita akan mengkompilasi modul konektor Modsecurity-nginx dengan flag –with-compat dengan menjalankan perintah ini:
$ sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
Sekarang jalankan perintah ini untuk membuat modul dinamis:
$ sudo make modules
Sekarang, salin modul dinamis yang baru saja Anda buat di objs/ngx_http_modsecurity_module.so ke /usr/share/nginx/modules dengan bantuan perintah ini:
$ sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
10. Aktifkan Modsecurity di file konfigurasi Nginx
Untuk mengaktifkan Modsecurity di Nginx, Anda harus terlebih dahulu menentukan load-module dan path ke modul modsecurity Anda di konfigurasi.
Buka file konfigurasi Nginx dengan editor nano seperti ini:
$ sudo nano /etc/nginx/nginx.conf
Dalam file, tambahkan baris ini di atas:
load_module modules/ngx_http_modsecurity_module.so;
Di bawah bagian {} HTTP, tambahkan baris kode berikut:
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;
11. Konfigurasi direktori dan file untuk modsecurity
Buat direktori dengan nama modsec. Jalur direktori disebutkan dalam perintah:
$ sudo mkdir /etc/nginx/modsec/
Anda akan memerlukan direktori ini di masa mendatang untuk menyimpan file dan aturan konfigurasi.
Sekarang, salin contoh file konfigurasi Modsecurity dari direktori git kloning dengan perintah ini:
$ sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
Sekarang buka file konfigurasi modsecurity:
$ sudo nano /etc/nginx/modsec/modsecurity.conf
Temukan direktif SecRuleEngine di file pada baris 7 dan ubah ke DetectionOnly seperti ini:
secruleEngine DetectionOnly
Untuk mengaktifkan Modsecurity, cari ubah arahan berikut menjadi On seperti ini:
secRuleEngine on
Sekarang cari arahan berikut pada baris 224:
secAuditLogParts ABIJDEFHZ
Ubah ke:
secAuditLogParts ABCDEFHJKZ
Sekarang buat file modsec-config.conf. Di sini Anda akan menambahkan modsecurity.conf dan aturan lain untuk modsecurity:
$ sudo nano /etc/nginx/modsec/modsec-config.conf
Di dalam file yang baru saja Anda buat, tambahkan baris ini:
Include /etc/nginx/modsec/modsecurity.conf
Simpan file dan keluar.
12. Salin file unicode.mapping
Terakhir, salin file unicode.mapping Modsecurity seperti ini:
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
13. Periksa konfigurasi Nginx
Sebelum memulai ulang Nginx, periksa apakah konfigurasinya baik-baik saja dengan menjalankan perintah ini:
$ sudo nginx -t
14. Muat ulang Nginx
Sekarang restart Nginx dengan perintah ini:
$ sudo systemctl restart nginx