Dalam tutorial ini, saya akan menunjukkan cara mengkompilasi Nginx versi terbaru dengan libmodsecurity (Modsecurity 3.x) JANGAN disamakan dengan Modsecurity 2.9. Kami juga akan mengintegrasikan OWASP ModSecurity Core Rule Set (CRS).
Libmodsecurity adalah penulisan ulang utama ModSecurity yang memberikan peningkatan kinerja dan stabilitas. Meskipun Modsecurity 2.9.x ditawarkan untuk platform yang berbeda, Modsecurity sangat menyukai penerapan dengan Apache dan penerapan dengan platform lain memerlukan berbagai dependensi pihak ke-3 dengan mengorbankan kinerja. Libmodsecurity mengubah semua itu dengan menulis ulang dari awal. Informasi lebih lanjut tentang Libmodsecurity dapat ditemukan di sini.
Panduan ini mengasumsikan Anda sudah memiliki instance Ubuntu 16.04 64-bit yang diperbarui.
1. Instal Prasyarat
Instal prasyarat
apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev
2. Unduh ModSecurity
Git clone Modsecurity, checkout dan bangun libmodsecurity
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install
Git clone konektor Modsecurity-nginx
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
Anda sekarang harus memiliki direktori berikut yang berisi konektor Modsecurity-nginx
/opt/ModSecurity-nginx
3. Unduh Nginx
Unduh sumber stabil Nginx terbaru
Buka http://nginx.org/en/download.html dan dapatkan link ke Nginx versi stabil terbaru. Pada tulisan ini, versi stabil terbaru adalah nginx-1.12.0.tar.gz. Sesuaikan petunjuk di bawah untuk versi spesifik Anda. Unduh dan ekstrak
cd /opt
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0
4. Konfigurasi dan Instal Nginx
Konfigurasikan Nginx dengan konektor Modsecurity-nginx dan instal
./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx
make
make install
Kode sumber ModSecurity yang kami unduh sebelumnya menyertakan contoh file modsecurity.conf dengan beberapa pengaturan yang disarankan. Salin file ini ke folder dengan file konfigurasi Nginx
cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
Buat symlink dari /usr/local/nginx/sbin/nginx ke /bin/nginx
ln -s /usr/local/nginx/sbin/nginx /bin/nginx
Buat direktori berikut:
mkdir /usr/local/nginx/conf/sites-available
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx
Buat symlink dari /usr/local/nginx/conf/ssl /etc/nginx/ssl
ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl
Buat salinan cadangan dari file conf/nginx.conf
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
Konfigurasikan file /usr/local/nginx/conf/nginx.conf
vi /usr/local/nginx/conf/nginx.conf
Cari dan hapus semua entri yang dimulai dengan "server {" dan diakhiri dengan kurung kurawal penutup kedua hingga terakhir "}". Dengan kata lain, biarkan kurung kurawal terakhir tetap utuh.
Tepat di atas kurung kurawal terakhir, sisipkan yang berikut ini. Ini akan menginstruksikan Nginx untuk mencari konfigurasi situs kami di direktori "/usr/local/nginx/conf/sites-enabled"
include /usr/local/nginx/conf/sites-enabled/*;
Jadi akhir file akan terlihat seperti di bawah ini (pastikan } penutup ada):
include /usr/local/nginx/conf/sites-enabled/*;
}
Aktifkan arahan "pengguna" dengan menghapus awalan "#" jika dinonaktifkan dan pastikan itu disetel ke pengguna "www-data" alih-alih default "tidak ada" sehingga terlihat seperti di bawah ini:
user www-data;
Simpan file.
Unduh skrip init Nginx Jason Giedymin untuk mengelola layanan nginx dan konfigurasikan sebagai layanan
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
Skrip ini menyediakan opsi berikut untuk mengelola layanan Nginx:
# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy
5. Instal Kumpulan Aturan Inti ModSecuirty OWASP
Git clone dan salin versi terkini dari aturan OWASP dan konfigurasi ke Nginx
cd /opt/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
Konfigurasikan Nginx dengan OWASP ModSecuirty Core Rule Set
Edit /usr/local/nginx/conf/modsecurity.conf
vi /usr/local/nginx/conf/modsecurity.conf
Di akhir file, rekatkan yang berikut ini:
#Load OWASP Config
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350
Dalam file modsecurity.conf Nginx Anda atau file conf server individual Anda, masukkan yang berikut ini di blok server atau lokasi. Contoh di bawah, menunjukkan kombinasi penambahan entri di server dan blok lokasi:
server {
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}
Uji konfigurasi Nginx Anda
service nginx configtest
Jika tidak ada kesalahan, muat ulang atau mulai ulang Nginx Anda
service nginx reload
Sekarang Anda dapat melihat /var/log/modsec_audit.log untuk setiap peristiwa ModSecurity
tail -f /var/log/modsec_audit.log
Jika sudah puas, edit file /usr/local/nginx/conf/modsecurity.conf dan set "SecRuleEngine" dari "DetectionOnly" menjadi "On" seperti di bawah ini
SecRuleEngine On
Ini mengakhiri panduan ini.
Tentang Penulis
Dino Edwards adalah Profesional TI dengan pengalaman lebih dari 20 tahun di sektor Federal, Negara Bagian, dan Swasta. Dia juga dikenal suka berkecimpung dalam pemrograman.
Dia cenderung menulis panduan atau petunjuk setelah dia menyelesaikan proyek tertentu terutama karena ingatannya buruk dan dia tidak ingin menemukan kembali roda jika dia harus melakukan proyek yang sama lagi.
Hubungi kami
Situs Web Penulis
Ikuti
Email