Petunjuk Instalasi Modsecurity NGINX



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.7

Selanjutnya, 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 On
Selanjutnya, 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 

Source: https://habr.com/ru/post/id437032/


All Articles