GNU/Linux >> Belajar Linux >  >> Ubuntu

Nginx dengan libmodsecurity dan OWASP ModSecurity Core Rule Ditetapkan di Ubuntu 16.04

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


Ubuntu
  1. Cara Menginstal HTTP Git Server Dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal HTTP Git Server dengan Nginx di Ubuntu 20.04

  3. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  1. Cara Menyebarkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  2. Terapkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  3. Cara Menginstal dan mengatur PHP dan Nginx (LEMP) di Ubuntu 20.04

  1. Cara Menginstal Mattermost dengan PostgreSQL dan Nginx di Ubuntu 16.04

  2. Dockerizing Wordpress dengan Nginx dan PHP-FPM di Ubuntu 16.04

  3. Bagaimana cara menginstal dan mengatur Git di Ubuntu?