Cara Memasang ModSecurity untuk Nginx di Debian/Ubuntu

Cara Memasang ModSecurity untuk Nginx di Debian/Ubuntu

Ia adalah keinginan setiap pemaju untuk menggunakan aplikasi web yang selamat yang selamat dari ancaman. Pada kebanyakan kesempatan, ini tidak dapat dikatakan daripada dilakukan. Kekerapan laman web yang digodam terus meningkat apabila penggodam terus mengeksploitasi semua vektor serangan yang mereka miliki.

Keselamatan WebApp boleh menjadi cabaran besar terutama dengan kelaziman alat berniat jahat seperti rootkit, pengimbas, bot, dan perisian hasad lain. Walaupun mendapat pelanggaran mungkin kelihatan seperti jika tidak jika, adalah berhemat untuk melaksanakan beberapa langkah keselamatan yang baik untuk melindungi aplikasi web anda.

[Anda mungkin juga suka: 5 alat untuk mengimbas pelayan Linux untuk malware dan rootkits]

Salah satu alat yang dapat memberikan tahap keselamatan yang baik terhadap serangan dipanggil ModSecurity. Ini adalah sumber percuma dan terbuka Aplikasi Web Firewall (Waf) yang melindungi aplikasi web anda dari pelbagai serangan Layer 7 seperti skrip lintas tapak (XSS), SQL suntikan, merampas sesi, dan banyak lagi.

Dalam panduan ini, kami akan menunjukkan kepada anda cara memasang dan mengkonfigurasi ModSecurity untuk bekerja dengan Nginx mengenai pengagihan Linux yang berpangkalan di Debian seperti Ubuntu.

Langkah 1: Pasang kebergantungan

Untuk memulakan pemasangan, beberapa kebergantungan perisian diperlukan untuk pemasangan untuk berjaya. Tetapi pertama, kemas kini senarai pakej dan muat semula repositori seperti berikut.

kemas kini $ sudo apt 

Seterusnya, pasang kebergantungan seperti berikut.

$ sudo apt install membuat gcc-essential autoconf automake libtool libfuzzy-dev ssdeep gettext pkg-config libcurl4-openssl-dev liblua5.3-DEV LIBPCRE3 

Langkah 2: Pasang versi nginx terkini


Langkah seterusnya adalah memasang Nginx pelayar web. Untuk memasang versi terkini, kami akan memasangnya dari
Ondrej/nginx-Mainline PPA W yang kini dikekalkan oleh pemaju Debian sejak tahun 2000.

Untuk menambah PPA ke tempatan anda Ubuntu sistem melaksanakan arahan:

$ sudo add-apt-repository PPA: ondrej/nginx-mainline -y 

Seterusnya, kemas kini senarai pakej dan pasang versi terkini Nginx seperti berikut

$ sudo apt update $ sudo apt pemasangan nginx-core nginx-nginx nginx-full 

Biasanya, hanya repositori lalai diaktifkan. Berhemat untuk membolehkan repositori kod sumber supaya anda boleh, kemudian, muat turun Nginx kod sumber dalam langkah seterusnya.

Untuk mencapai ini, ubah suai Nginx fail repositori.

$ sudo vim/etc/apt/sumber.senarai.D/Ondrej-Ubuntu-Nginx-Mainline-*.senarai 

Cari dan uncomment baris ini untuk membolehkan repositori kod sumber:

# deb-src http: // ppa.PAD pelancaran.bersih/ondrej/nginx-mainline/ubuntu/focal utama 

Fail sekarang harus muncul seperti yang ditunjukkan.

Dayakan Ondřej PPA

Simpan perubahan dan keluar.

Kemudian kemas kini indeks pakej.

kemas kini $ sudo apt 

Langkah 3: Muat turun pakej sumber nginx

Untuk menyusun ModSecurity modul dinamik, kita perlu memuat turun Nginx pakej kod sumber. Untuk melakukan ini, kami akan, pertama, buat Nginx Direktori dalam /usr/local/src/ jalan untuk menampung fail pakej kod sumber nginx.

$ sudo mkdir -p/usr/local/src/nginx 

Seterusnya, berikan kebenaran direktori seperti yang ditunjukkan. Pastikan untuk mengganti nama pengguna dengan nama pengguna sudo sebenar anda.

$ sudo chown nama pengguna: nama pengguna -r/usr/local/src/ 

Selepas itu, menavigasi ke Nginx Direktori Sumber:

$ cd/usr/local/src/nginx 

Teruskan dan muat turun Nginx Pakej Fail Sumber:

$ sudo apt sumber nginx 
Muat turun sumber nginx

Anda kemungkinan besar akan masuk ke dalam kesilapan berikut:

W: muat turun dilakukan tanpa kotak yang disandarkan sebagai root sebagai fail 'nginx_1.19.5.Orig.tar.gz 'tidak dapat diakses oleh pengguna' _apt '. - pkgacquire :: run (13: kebenaran ditolak) 

Ini tidak ada yang membuat anda bekerja. Jadi, abaikan ralat.

Anda boleh mengintip fail sumber menggunakan arahan LS.

$ ls -l 
Senaraikan fail sumber nginx

Pastikan versi kod sumber bertepatan dengan versi Nginx dipasang.

$ nginx -v 
Semak versi Nginx

Langkah 4: Pasang perpustakaan libmodsecurity3

Libmodesecurity ialah ModSecurity Perpustakaan yang mengendalikan Http Penapisan untuk aplikasi anda. Terdapat dua cara memasangnya. Anda boleh menggunakan Pengurus Pakej APT seperti yang ditunjukkan

$ sudo apt memasang libmodsecurity3 

Pendekatan yang lain adalah memasangnya dari sumber yang lebih baik kerana ia memberikan anda versi terkini. Untuk memulakan pemasangan LibModSecurity dari sumber, klon repositori git seperti yang ditunjukkan:

$ git clone -depth 1 -b v3/master - -single -branch https: // github.com/spiderlabs/modsurity/usr/local/src/modsecurity/ 

Navigasi ke direktori klon:

$ cd/usr/local/src/modsecurity/ 

Membuat titik untuk memasang submodul

$ sudo git submodule init $ sudo git submodule update 
Pasang LibModSecurity3 di Ubuntu

Selepas itu, bina persekitaran menggunakan arahan di bawah.

$ sudo ./membina.SH $ SUDO ./konfigurasikan 

Sekali lagi, abaikan ralat yang dipaparkan di bawah.

Fatal: Tiada nama yang dijumpai, tidak dapat menggambarkan apa -apa. 

Kemudian menyusun kod sumber dan memasang utiliti lain menggunakan arahan membuat berikut. Ini mengambil masa kira -kira 25 minit, dan kesabaran diperlukan.

$ sudo make -j4 

Setelah selesai, pasang perpustakaan.

$ sudo membuat pemasangan 

Langkah 5: Muat turun dan menyusun penyambung modSecurity v3 nginx

Langkah seterusnya ialah memuat turun dan menyusun ModSecurity nginx penyambung. Penyambung, seperti namanya, menghubungkan Libmodsecurity perpustakaan ke webserver nginx. Untuk memuat turun penyambung modsecurity, klon dari repositori github seperti berikut.

$ git clone -depth 1 https: // github.com/spiderlabs/modsecurity-nginx.git/usr/local/src/modsecurity-nginx/ 

Menavigasi ke direktori klon.

$ cd/usr/local/src/nginx/nginx-1.21.3/ 

Meneruskan dan memasang kebergantungan membina

$ sudo apt binaan-dept nginx $ sudo apt memasang uuid-dev 

Seterusnya, menyusun Penyambung ModSecurity Nginx modul dengan --dengan kompat bendera. The --dengan kompat Pilihan menjadikan modSecurity Nginx Connector Module Perdua.

$ sudo ./Konfigurasikan-With-Compat --Add-Dynamic-Module =/usr/Local/Src/ModSecurity-Nginx 

Setelah itu selesai, bina modul penyambung modsecurity nginx menggunakan perintah membuat.

$ sudo membuat modul 

Modul disimpan sebagai objs/ngx_http_modsecurity_module.Jadi. Anda perlu menyalin modul ini ke /usr/share/nginx/modul/ Direktori seperti berikut.

$ sudo cp objs/ngx_http_modsecurity_module.jadi/usr/share/nginx/modul/ 

Langkah 6: Muatkan modul penyambung modsecurity nginx

Untuk memuatkan Nginx modul penyambung, pertama, akses fail konfigurasi nginx utama.

$ sudo vim/etc/nginx/nginx.Conf 

Tambah baris berikut tepat di bawah beberapa baris pertama

LOAD_MODULE MODUL/NGX_HTTP_MODSECURITY_MODULE.Jadi; 

Di samping itu, tambahkan baris berikut di http ... seksyen. Ini membolehkan modsecurity untuk semua tuan rumah maya nginx.

modsecurity on; modsecurity_rules_file/etc/nginx/modsec/main.Con; 
Dayakan Mod_Security untuk nginx vhosts

Simpan perubahan dan keluar dari fail.

Seterusnya, buat /etc/nginx/modsec/ direktori yang akan disimpan ModSecurity konfigurasi.

$ sudo mkdir/etc/nginx/modsec/ 

Seterusnya, salin fail konfigurasi modsecurity seperti berikut.

$ sudo cp/usr/local/src/modsecurity/modsecurity.Conf-Recommended/etc/nginx/Modsec/ModSecurity.Conf 

Kemudian buka fail konfigurasi.

$ sudo vim/etc/nginx/modsec/modsecurity.Conf 

Cari garis bermula dengan Rahsia arahan.

SecruleAngine Detectionly 

Barisan ini mengarahkan ModSecurity hanya log transaksi HTTP tetapi tidak mengambil tindakan dalam menghadapi serangan aplikasi web. Anda perlu mengubah ini supaya modsecurity tidak hanya akan mengesan tetapi juga menyekat serangan web.

Tukar garis ke garisan di bawah

SecruleAngine On 
Dayakan Peraturan Mod_Security

Simpan perubahan dan keluar dari fail.

Seterusnya, buat /etc/nginx/modsec/utama.Conf fail.

$ sudo vim/etc/nginx/modsec/main.Conf 

Tambah baris ini untuk merujuk /etc/nginx/modsec/modsecurity.Conf fail konfigurasi.

Sertakan/etc/nginx/modsec/modsecurity.Conf 

Simpan perubahan dan keluar dari fail.

Di samping itu, salin fail pemetaan unicode.

$ sudo cp/usr/local/src/modsurity/unicode.pemetaan/etc/nginx/modsec/ 

Kemudian uji konfigurasi Nginx.

$ sudo nginx -t 
Ujian konfigurasi nginx

Ujian mesti berjaya. Jika tidak, kembali dan periksa sama ada semua perubahan yang dibuat betul.

Akhirnya, mulakan semula nginx untuk menggunakan semua perubahan yang dibuat.

$ sudo systemctl mulakan semula nginx 

Dan sahkan bahawa nginx berjalan seperti yang diharapkan.

$ sudo status status nginx 

Langkah 7: Muat turun set owasp corerule

Untuk ModSecurity Untuk melindungi aplikasi web anda, anda perlu menentukan peraturan yang akan mengesan aktiviti yang mencurigakan dan menyekatnya. Untuk memulakan, lebih baik memasang set peraturan sedia ada yang akan membantu anda mempelajari tali.

The Set Peraturan Teras Owasp (CRS) adalah set peraturan percuma, sumber terbuka, dan komuniti yang diselenggarakan yang menyediakan peraturan untuk menangkis vektor serangan biasa seperti suntikan SQL, skrip lintas tapak (XSS).

Muat turun peraturan teras Owasp yang ditetapkan dari GitHub seperti yang ditunjukkan menggunakan perintah wget.

$ wget https: // github.com/coreruleset/coreruleset/arkib/v3.3.0.tar.Gz 

Ekstrak fail termampat.

$ tar xvf v3.3.0.tar.Gz 

Memastikan untuk memindahkan direktori yang tidak dikompresi ke /etc/nginx/modsec/ jalan.

$ sudo mv coreruleset-3.3.0//etc/nginx/modsec/ 

Kemudian namakan semula CRS-setup.Conf.Contoh fail ke CRS-setup.Conf.

$ sudo mv/etc/nginx/modsec/coreruleset-3.3.0/CRS-setup.Conf.Contoh/etc/nginx/modsec/coreruleset-3.3.0/CRS-setup.Conf 

Sekali lagi, kembali ke ModSecurity fail konfigurasi.

$ sudo vim/etc/nginx/modsec/main.Conf 

Dan masukkan baris berikut.

Termasuk/etc/nginx/modsec/coreruleset-3.3.0/CRS-setup.conf termasuk/etc/nginx/modsec/coreruleset-3.3.0/peraturan/*.Conf 

Fail sekarang harus mempunyai 3 baris:

Konfigurasikan peraturan modsecurity

Simpan fail dan, sekali lagi, mulakan semula nginx.

$ sudo systemctl mulakan semula nginx 

Langkah 8: Menguji ModSecurity

Akhirnya, kami akan menjalankan ujian ModSecurity dan sahkan ia dapat mengesan dan menyekat lalu lintas HTTP yang mencurigakan.

Kami akan mengedit fail konfigurasi modsecurity dan membuat peraturan menyekat yang akan menyekat akses ke url tertentu apabila diakses oleh penyemak imbas web.

$ sudo vim/etc/nginx/modsec/modsecurity.Conf 

Tambahkan baris ini di bawah SecruleAngine On arahan

Secrule Args: TestParam "@Contains Test" "ID: 254, menafikan, status: 403, msg: 'ujian berjaya'" 

Anda boleh menetapkan 'ID' dan 'msg' Tag ke nilai pilihan anda.

Peraturan Keselamatan ModSecurity

Simpan perubahan dan mulakan semula nginx.

$ sudo systemctl mulakan semula nginx 

Sekarang lancarkan penyemak imbas anda dan lawati URL di bawah dengan ?testParam = ujian akhiran

http: // server-ip/?testParam = ujian 

Anda mesti mendapat 403 Terlarang' ralat. Ini menunjukkan bahawa anda cuba mengakses sumber yang dilarang di webserver.

Nginx 403 kesilapan terlarang

Di samping itu, anda boleh menyemak log ralat nginx untuk mengesahkan bahawa pelanggan disekat

$ kucing/var/log/nginx/ralat.log | grep "ujian berjaya" 
Semak blok keselamatan modsekuriti nginx

[Anda mungkin juga suka: Cara Menyiapkan ModSecurity Dengan Apache di Debian/Ubuntu]

Itu adalah gambaran keseluruhan bagaimana anda boleh menubuhkan ModSecurity dengan Nginx pada Debian dan Ubuntu. Kami berharap ini bermanfaat.