导读 | modsecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成生产级的WAF,是保护和审核web安全的利器 |
软件环境:centos7,nginx-1.14.1,modsec-3.0.3,ModSecurity-nginx.git
软件环境安装
#第一:准备编译和依赖环境 yum install gcc wget git geoip-devel libcurl-devel libxml2 libxml2-devel libgd-devel openssl-devel -y yum groupinstall 'Development tools' -y #第二:下载并安装ModSecurity git clone --depth 1 -b v3/master --single-branch //github.com/SpiderLabs/ModSecurity cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install #第三:下载nginx与modsecurity的连接器 cd git clone --depth 1 //github.com/SpiderLabs/ModSecurity-nginx.git #第四:下载并编译nginx(将连接器编译进去) mkdir /web-boke/nginx -p yum install pcre-devel openssl-devel gd-devel geoip-devel -y wget //nginx.org/download/nginx-1.14.1.tar.gz tar xf nginx-1.14.1.tar.gz cd nginx-1.14.1 ./configure \ --prefix=/web-boke/nginx \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-pcre \ --with-pcre-jit \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-debug \ --add-dynamic-module=/root/ModSecurity-nginx \ --with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" ; make modules #编译模块 make make install
配置modsec与nginx
#第一:配置modsecurity mkdir /web-boke/nginx/conf/modsec cp /root/ModSecurity/modsecurity.conf-recommended /web-boke/nginx/conf/modsec/modsecurity.conf cp /root/ModSecurity/unicode.mapping /web-boke/nginx/conf/modsec/ #第二:配置nginx,使其开启加载modsec模块 cat /web-boke/nginx/conf/nginx.conf #该行在nginx.conf的event字段上面添加 load_module modules/ngx_http_modsecurity_module.so; #配置在具体vhost里面 modsecurity on; #表示开启modsec location / { root html; modsecurity_rules_file /web-boke/nginx/conf/modsec/modsecurity.conf; index index.html index.htm; } #第三:测试nginx配置文件是否正确 /web-boke/nginx/sbin/nginx -t #第四:使用测试规则调试modsec与nginx的工作是否正常 cat /web-boke/nginx/conf/modsec/modsecurity.conf #SecRuleEngine DetectionOnly(将该行改为如下,表示启用拦截功能。默认只记录不拦截) SecRuleEngine On #添加如下一行,指定modsecurity的记录日志格式为json(默认的行数太多) SecAuditLogFormat JSON #在最后添加一个测试规则(测试完成就删除该行吧) SecRule ARGS:testparam "@contains test" "id:1234,deny,log,status:403" #第五:启动nginx并验证modsec与nginx的工作是否正常 /web-boke/nginx/sbin/nginx & curl -D - //localhost/foo?testparam=thisisatestofmodsecurity #若是返回403则表示规则生效 #可以通过日志进行验证 cat /var/log/modsec_audit.log #第六:安装owasp核心规则CRS git clone //github.com/SpiderLabs/owasp-modsecurity-crs.git cp -rf owasp-modsecurity-crs /web-boke/nginx/conf/ cd /web-boke/nginx/conf/owasp-modsecurity-crs cp crs-setup.conf.example crs-setup.conf cd /web-boke/nginx/conf/owasp-modsecurity-crs/rules/ mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf #第七:让owasp核心规则生效加入modsecurity配置文件 cat /web-boke/nginx/conf/modsec/modsecurity.conf #在最后添加引入owasp核心规则 Include /web-boke/nginx/conf/owasp-modsecurity-crs/crs-setup.conf Include /web-boke/nginx/conf/owasp-modsecurity-crs/rules/*.conf
测试owasp核心规则是否生效
#第一:重启nginx /web-boke/nginx/sbin/nginx -s reload & #第二:使用nikto测试owasp 核心规则是否生效 #Nikto扫描工具生成恶意请求,包括针对已知易受攻击的文件,跨站点(XSS)和其他类型的攻击的探测。 #该工具还会报告传递给应用程序的请求,从而揭示应用程序中的潜在漏洞。 git clone //github.com/sullo/nikto Cloning into 'nikto'... cd nikto perl program/nikto.pl -h //localhost #可以通过日志进行验证 cat /var/log/modsec_audit.log
原文来自:
本文地址://lrxjmw.cn/nginx-modsecurity.html编辑:向金平,审核员:逄增宝
Linux大全:
Linux系统大全: