Nginx+Modsecurity实现WAF
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+Modsecurity实现WAF相关的知识,希望对你有一定的参考价值。
ModSecurity是一个免费、开源的Web(apache、nginx、IIS)模块,可以充当Web应用防火墙(WAF)。ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击
OWASP是一个安全社区,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS)。ModSecurity之所以强大就在于OWASP提供的规则,可以根据自己的需求选择不同的规则,当然ModSecurity还有商用的规则
目前ModSecurity正在测试环境测试使用,以下操作是在nginx下添加modsecurity模块来实现WAF的安装配置步骤,
系统版本:Centos6
Nginx/1.10.0 最新稳定版本::http://nginx.org/download/nginx-1.10.0.tar.gz
ModSecurity/2.9.1最新稳定版本:https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
OWASP规则集: https://github.com/SpiderLabs/owasp-modsecurity-crs
3.1安装依赖包
# yum installgcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel libtool –y
3.2编译modsecurity
# tar xfmodsecurity-2.9.1.tar.gz # cd modsecurity-2.9.1 # ./autogen.sh # ./configure--enable-standalone-module --disable-mlogc # make
3.3 编译nginx并添加modsecurity模块
# tar xf nginx-1.10.0.tar.gz # cd nginx-1.10.0 # ./configure --add-module=/root/modsecurity-2.9.1/nginx/modsecurity/ --prefix=/home/data/nginx # make # make install
3.4配置规则
3.4.1下载OWASP规则
# git clone https://github.com/SpiderLabs/owasp-modsecurity-crs # cp -aowasp-modsecurity-crs /home/data/nginx/conf/ # cd/home/data/nginx/conf/owasp-modsecurity-crs/ # mv modsecurity_crs_10_setup.conf.examplemodsecurity_crs_10_setup.conf
3.3.2 启动owasp规则
复制modsecurity源码目录下的modsecurity.conf-recommended和unicode.mapping到nginx的conf目录下
#cpmodsecurity.conf-recommended unicode.mapping /home/data/nginx/conf/ #cd/home/data/nginx/conf && mv modsecurity.conf-recommended modsecurity.conf
编辑modsecurity.conf 文件,将SecRuleEngine设置为 on,并添加规则
# vimmodsecurity.conf SecRuleEngine On # personal rules Includeowasp-modsecurity-crs/modsecurity_crs_10_setup.conf Includeowasp-modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf Includeowasp-modsecurity-crs/base_rules/modsecurity_crs_40_generic_attacks.conf
注:规则根据自己的需求添加,base_rules中的sql攻击过滤规则在测试中有问题暂时没有启用
3.5 配置nginx
在nginx配置文件中 需要启用的server配置下添加以下两行,然后重启nginx服务
ModSecurityEnabledon; ModSecurityConfigmodsecurity.conf;
四.测试
4.1 Modsecurity模块启用前
4.2 Modsecurity模块启用后访问出现403错误
注:xss跨站攻击漏洞测试(此漏洞是阿里云发现)
5.1基础规则集
modsecurity_crs_20_protocol_violations.confHTTP协议规范相关规则
modsecurity_crs_21_protocol_anomalies.confHTTP协议规范相关规则
modsecurity_crs_23_request_limits.confHTTP协议大小长度限制相关规则
modsecurity_crs_30_http_policy.confHTTP协议白名单相关规则
modsecurity_crs_35_bad_robots.conf恶意扫描器与爬虫规则
modsecurity_crs_40_generic_attacks.conf常见的攻击例如命令执行,代码执行,注入,文件包含、敏感信息泄露、会话固定、HTTP响应拆分等相关规则
modsecurity_crs_41_sql_injection_attacks.confSQL注入相关规则(竟然有一条MongoDB注入的规则,很全)
modsecurity_crs_41_xss_attacks.confXSS相关规则
modsecurity_crs_42_tight_security.conf目录遍历相关规则
modsecurity_crs_45_trojans.confwebshell相关规则
modsecurity_crs_47_common_exceptions.confApache异常相关规则
modsecurity_crs_49_inbound_blocking.conf协同防御相关规则
modsecurity_crs_50_outbound.conf检测response_body中的错误信息,警告信息,列目录信息
modsecurity_crs_59_outbound_blocking.conf协同防御相关规则
modsecurity_crs_60_correlation.conf协同防御相关规则
5.2 SLR规则集
来自确定APP的PoC,不会误报,检测方法是先检查当前请求的文件路径是否出现在data文件中,若出现再进行下一步测试,否则跳过该规则集的检测
modsecurity_crs_46_slr_et_joomla_attacks.confJOOMLA应用的各种漏洞规则
modsecurity_crs_46_slr_et_lfi_attacks.conf各种APP的本地文件包含相关规则
modsecurity_crs_46_slr_et_phpbb_attacks.confPHPBB应用的各种漏洞规则
modsecurity_crs_46_slr_et_rfi_attacks.conf各种APP的远程文件包含相关规则
modsecurity_crs_46_slr_et_sqli_attacks.conf各种APP的SQL注入相关规则
modsecurity_crs_46_slr_et_wordpress_attacks.confWORDPRESS应用的各种漏洞规则
modsecurity_crs_46_slr_et_xss_attacks.conf各种APP的XSS相关规则
5.3可选规则集
modsecurity_crs_10_ignore_static.conf静态文件不过WAF检测的相关规则
modsecurity_crs_11_avs_traffic.confAVS(授权的漏洞扫描器)的IP白名单规则
modsecurity_crs_13_xml_enabler.conf请求体启用XML解析处理
modsecurity_crs_16_authentication_tracking.conf记录登陆成功与失败的请求
modsecurity_crs_16_session_hijacking.conf会话劫持检测
modsecurity_crs_16_username_tracking.conf密码复杂度检测
modsecurity_crs_25_cc_known.confCreditCard验证
modsecurity_crs_42_comment_spam.conf垃圾评论检测
modsecurity_crs_43_csrf_protection.conf与modsecurity_crs_16_session_hijacking.conf联合检测,使用内容注入动作append注入CSRF Token
modsecurity_crs_46_av_scanning.conf使用外部脚本扫描病毒
modsecurity_crs_47_skip_outbound_checks.confmodsecurity_crs_10_ignore_static.conf的补充
modsecurity_crs_49_header_tagging.conf将WAF规则命中情况配合Apache RequestHeader指令注入到请求头中,以供后续应用进一步处理
modsecurity_crs_55_marketing.conf记录MSN/Google/Yahoorobot情况
5.4实验性规则集
modsecurity_crs_11_brute_force.conf防御暴力破解相关规则
modsecurity_crs_11_dos_protection.conf防DoS攻击相关规则
modsecurity_crs_11_proxy_abuse.conf检测X-Forwarded-For是否是恶意代理IP,IP黑名单
modsecurity_crs_11_slow_dos_protection.confSlow HTTP DoS攻击规则
modsecurity_crs_25_cc_track_pan.conf检测响应体credit card信息
modsecurity_crs_40_http_parameter_pollution.conf检测参数污染
modsecurity_crs_42_csp_enforcement.confCSP安全策略设置
modsecurity_crs_48_bayes_analysis.conf使用外部脚本采取贝叶斯分析方法分析HTTP请求,区分正常与恶意请求
modsecurity_crs_55_response_profiling.conf使用外部脚本将响应体中的恶意内容替换为空
modsecurity_crs_56_pvi_checks.conf使用外部脚本检测REQUEST_FILENAME是否在osvdb漏洞库中
modsecurity_crs_61_ip_forensics.conf使用外部脚本收集IP的域名、GEO等信息
modsecurity_crs_40_appsensor_detection_point_2.0_setup.confAPPSENSOR检测设置文件
本文出自 “Just do myself” 博客,请务必保留此出处http://liubin0505star.blog.51cto.com/5550456/1784499
以上是关于Nginx+Modsecurity实现WAF的主要内容,如果未能解决你的问题,请参考以下文章
nginx在动态modsecurity模块下的waf实现方式
带有 NGINX 的 WAF owasp modsecurity crs 中的“SecCollectionTimeout 尚不支持”