nginx1.14與waf部署

 

 

一 環境

1.png

Nginx必須是1.12及以上版本,由於使用了動態連接庫加載。html

二 modsecurity介紹

       ModSecurity是apache web服務器的web應用程序防火牆。除了提供日誌記錄功能,還能夠實時監控http流量,以便檢測工具。Modsecurity還能夠做爲web***檢測工具,容許您對web系統中發生的可疑事件做出反應。目標是加強web應用程序的安全性,防止web應用程序收到已知或未知的***。mysql

三 安裝:

3.1 準備編譯環境

[root@nginx ~]# yum groupinstall "Development Tools"nginx

 

[root@nginx ~]# yum install autoconf automake bzip2 flex gcc git httpd-devel libaio-devel libass-devel libjpeg-turbo-devel libpng12-devel libtheora-devel libtool libva-devel libvdpau-devel libvorbis-devel libxml2-devel libxslt-devel perl texi2html unzip zip openssl openssl-devel geoip geoip-develgit

 

[root@nginx ~]# yum -y install gd-devel perl-ExtUtils-Embed gperftools-develgithub

3.2 安裝libmodsecurity

[root@nginx opt]# mkdir nginx_wafweb

[root@nginx opt]# cd nginx_waf/sql

[root@nginx nginx_waf]# pwdapache

/opt/nginx_waf安全

[root@nginx nginx_waf]# git clone https://github.com/SpiderLabs/ModSecurity服務器

[root@nginx nginx_waf]# cd ModSecurity/

[root@nginx ModSecurity]# git checkout -b v3/master origin/v3/master

[root@nginx ModSecurity]# sh build.sh

[root@nginx ModSecurity]# git submodule init

[root@nginx ModSecurity]# git submodule update

 [root@nginx ModSecurity]# ./configure

2.png

[root@nginx ModSecurity]# make && make install

安裝完成的路徑:

[root@mysql ModSecurity]# ls /usr/local/modsecurity/lib/

libmodsecurity.a  libmodsecurity.la  libmodsecurity.so  libmodsecurity.so.3  libmodsecurity.so.3.0.2  pkgconfig

3.3 編譯modsecurity-nginx

[root@mysql nginx_waf]# pwd

/opt/nginx_waf

[root@mysql nginx_waf]# git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

這個模塊的編譯須要nginx的源碼,下載nginx源碼:

[root@mysql nginx_waf]# wget http://nginx.org/download/nginx-1.14.0.tar.gz

[root@mysql nginx_waf]# tar -zxf nginx-1.14.0.tar.gz

查看編譯參數,複製configure arguments:以後的備用:

[root@mysql ~]# nginx –V

3.png

開始編譯:

[root@mysql nginx_waf]# cd nginx-1.14.0

[root@mysql nginx-1.14.0]# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-dynamic-module=../ModSecurity-nginx

 

[root@mysql nginx-1.14.0]# make modules

 

編譯完成的so文件位置:

[root@mysql nginx-1.14.0]# ls ./objs/ngx_http_modsecurity_module.so

./objs/ngx_http_modsecurity_module.so

3.4 下載默認配置文件

[root@mysql nginx-1.14.0]# cd ../

[root@mysql nginx_waf]# ls

ModSecurity  ModSecurity-nginx  nginx-1.14.0  nginx-1.14.0.tar.gz

[root@mysql nginx_waf]# mkdir modsec

[root@mysql nginx_waf]# cd modsec/

[root@mysql modsec]# wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended

[root@mysql modsec]# cp modsecurity.conf-recommended  /etc/nginx/modsecurity.conf

 

配置此文件《開啓waf設置》:

4.png

3.5 配置核心規則

WAF進行web應用防禦全靠規則的配置:

[root@mysql modsec]# cd ../

[root@mysql nginx_waf]# ls

modsec  ModSecurity  ModSecurity-nginx  nginx-1.14.0  nginx-1.14.0.tar.gz

[root@mysql nginx_waf]# git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

 

[root@mysql nginx_waf]# cd owasp-modsecurity-crs/

[root@mysql owasp-modsecurity-crs]# mkdir /etc/nginx/conf

[root@mysql owasp-modsecurity-crs]# cp -R rules /etc/nginx/conf/

[root@mysql owasp-modsecurity-crs]# ls /etc/nginx/conf/

Rules

 

[root@mysql owasp-modsecurity-crs]# cp crs-setup.conf.example /etc/nginx/crs-setup.conf

[root@mysql owasp-modsecurity-crs]# ls /etc/nginx/crs-setup.conf

/etc/nginx/crs-setup.conf

 

 

 

啓用規則配置:

5.png

3.6 nginx啓用so連接庫

[root@mysql nginx_waf]# cp ./nginx-1.14.0/objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

[root@mysql nginx_waf]# ls /etc/nginx/modules/

ngx_http_modsecurity_module.so

 

修改配置文件:

6.png

7.png

注:在上圖中

modsecurity on;

modsecurity_rules_file /etc/nginx/modsecurity.conf;

在server中表示全局啓用,在location / {}中表示對單個應用啓用。

移除此規則《不然報錯》:

[root@mysql rules]# mv REQUEST-914-FILE-DETECTION.conf REQUEST-914-FILE-DETECTION.conf.bak

 

3.7 重啓nginx

8.png

日誌位置:

tail -f /var/log/modsec_audit.log

相關文章
相關標籤/搜索