
Artikel ini memberikan instruksi untuk menginstal modul Dynamic ModSecurity pada server web NGINX sebagai firewall aplikasi web (WAF). NGINX beroperasi dalam
mode proxy terbalik . Pekerjaan itu dilakukan pada distribusi Linux -
CentOS 7 . Modul ini diatur sebagai "dinamis" sehingga layanan tetap fleksibel dalam konfigurasi.
Panduan instalasi
NGINX resmi digunakan.
1. Pra-pemasangan komponen
Agar layanan berfungsi dengan benar, perpustakaan tambahan harus diinstal agar berfungsi. Perpustakaan akan diperlukan untuk membangun proyek dari kode sumber. Diasumsikan bahwa pengguna memiliki sistem yang diperbarui (
# pembaruan yum ).
yum install install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev
2. Mulai instalasi layanan
Agar tidak ada masalah dengan memulai layanan menggunakan perintah
mulai layanan nginx , versi diinstal dari repositori resmi di GitHub.
Buat file
/etc/yum.repos.d/nginx.repo di mana Anda ingin menambahkan versi distribusi. Tanpa menentukan versi NGINX, yang terakhir diluncurkan di situs ditarik.
[nginx-1.13.7] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
Selanjutnya, cukup instal
yum install nginx
3. Kompilasi modul

Untuk memulai, buka direktori yang sesuai:
cd /home/user/Downloads
Unduh modul dari cabang utama di GitHub:
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity.git
Selanjutnya, buka folder dengan firewall dan kompilasi kode sumber:
cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install
4. Pasang konektor
Agar seluruh sistem menjadi fleksibel, sebuah konektor akan dipasang untuk menghubungkan
NGINX dan ModSecurity . Ini berarti bahwa modul tidak akan ditransfer ke kode server, tetapi hanya akan menjadi komponen dinamis, yang akan memungkinkannya untuk dihapus kapan saja, mengubah kode, dll.
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
5. Membangun kembali server web
Agar NGINX dapat bekerja dengan konektor yang modulnya akan terhubung, Anda perlu membangun kembali server. Untuk melakukan ini, pertama cari tahu versi NGINX mana yang diinstal:
nginx –v
Outputnya harus seperti ini (tergantung versi)
versi nginx: nginx / 1.13.7Selanjutnya, unduh versi yang sesuai dari situs resmi sehingga tidak akan ada kesalahan saat memulai layanan dan kompilasi dengan parameter tertentu:
cd .. wget http://nginx.org/download/nginx-1.13.7.tar.gz tar zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7 ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx make modules
Selanjutnya, salin file modul ke folder layanan web:
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
Sebelum blok pertama di
/etc/nginx/nginx.conf tambahkan:
load_module modules/ngx_http_modsecurity_module.so;
6. File konfigurasi modul
Pengembang menawarkan aturan dasar mereka untuk melindungi sumber daya web. Perlu dicatat bahwa, setelah menginstal mereka, seseorang tidak boleh mengandalkan tingkat yang layak, karena pencipta meninggalkan kebebasan penuh konfigurasi dan aturan penulisan oleh pengguna, yang membatasi mereka untuk menambahkan aturan dasar ke file konfigurasi standar.
mkdir /etc/nginx/modsec cd /etc/nginx/modsec sudo wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended sudo mv modsecurity.conf-recommended modsecurity.conf
Dalam file
modsecurity.conf , ganti
SecRuleEngine DetectionOnly dengan
SecRuleEngine OnSelanjutnya, buat file
/etc/nginx/modsec/main.conf dan tambahkan ke dalamnya:
# Include the recommended configuration Include /etc/nginx/modsec/modsecurity.conf
7. Aturan OWASP
Bukan rahasia lagi bahwa
OWASP adalah pemimpin dalam masalah keamanan web. Mereka memiliki set sendiri untuk modul ini, yang, seperti proyek ini, terbuka untuk pengguna. Oleh karena itu, instal sebagai seperangkat aturan dasar:
cd /usr/local wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz tar -xzvf v3.0.0.tar.gz mv owasp-modsecurity-crs-3.0.0 /usr/local cd /usr/local/owasp-modsecurity-crs-3.0.0 cp crs-setup.conf.example crs-setup.conf
Di
/etc/nginx/modsec/main.conf tambahkan yang berikut ini:
# OWASP CRS v3 rules Include /usr/local/owasp-modsecurity-crs-3.0.0/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.0/rules/*.conf
8. Penyelesaian pekerjaan
Dalam file
/etc/nginx/conf.d/proxy.conf tambahkan
server { listen 80; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; # If you have proxy location / { proxy_pass http://192.168.xx; } }
9. Pemeriksaan Kesehatan
Untuk memeriksa komponen layanan web, mulai saja dan lihat kesalahannya. Seringkali, Anda harus menghapus aturan yang bertanggung jawab untuk memeriksa di mana modul lain digunakan (
GeoIP , misalnya). Karena itu, Anda dapat dengan aman menghapus aturan ini.
rm /usr/local/owasp-modsecurity-crs-3.0.0/rules/REQUEST-910-IP-REPUTATION.conf
Kesalahan terkait
Unicode juga dimungkinkan. Agar tidak mengganggu layanan, kami cukup berkomentar di file konfigurasi (
di akhir ).
#SecUnicodeMapFile unicode.mapping 20127
Gunakan utilitas
curl untuk menguji server. Ini akan ditampilkan jika aplikasi kembali. Jika semuanya benar, sebuah pilihan dengan kode
200 OK akan datang kepada Anda
curl -I 127.0.0.1
Untuk memeriksa pengoperasian mekanisme perlindungan, Anda dapat menggunakan utilitas apa pun yang dirancang untuk ini. Disarankan untuk menggunakan
nikto sebagai rekomendasi:
nikto -host localhost
Untuk memulai server:
service nginx start