Nginx必須是1.12及以上版本,由於使用了動態連接庫加載。html
ModSecurity是apache web服務器的web應用程序防火牆。除了提供日誌記錄功能,還能夠實時監控http流量,以便檢測工具。Modsecurity還能夠做爲web***檢測工具,容許您對web系統中發生的可疑事件做出反應。目標是加強web應用程序的安全性,防止web應用程序收到已知或未知的***。mysql
[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
[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
[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
[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
開始編譯:
[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
[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設置》:
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
啓用規則配置:
[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
修改配置文件:
注:在上圖中
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
日誌位置:
tail -f /var/log/modsec_audit.log