本文共 3942 字,大约阅读时间需要 13 分钟。
ModSecurity
p.s. 因发帖规定,所有http前面都加了@哦~
一、简介 ModSecurity是一款免费的开源主机waf软件(@),目前官网最新版本为2.9.1,支持nginx/apache/iis(32、64位)。它主要是作为上述web应用的扩展模块形式存在,通过相关的规则文件,对外部恶意的web攻击进行识别,并作出进一步的丢弃操作。 二、安装 1.nginx/apache 在Linux操作系统下,web应用为nginx/apache情况下,安装Modsecurity需要在部署的时候对nginx/apache进行编译,将ModSecurity源码作为一个模块编译进nginx/apache去。 - nginx : @
- modsecurity for Nginx: [/url]
- OWASP规则集: [/url]
依赖关系: nginx依赖: pcre 、zlib、 openssl, 这三个包centos 6.5及以上 系统源里都有: yum install zlib zlib-devel opensslopenssl-devel pcre pcre-devel modsecurty依赖的包:pcre @httpd-devellibxml2 apr yum install @httpd-devel apr apr-util-develapr-devel pcre pcre-devel libxml2 libxml2-devel 下载modsecurity fornginx 解压,进入解压后目录执行: ./configure --enable-standalone-module--disable-mlogc 在编译standalone后,nginx编译时可以通过"--add-module"添加modsecurity模块: ./configure--add-module=/root/modsecurity-2.9.1/nginx/modsecurity/ --prefix=/opt/tengine modsecurity倾向于过滤和阻止web危险,之所以强大就在于规则,OWASP提供的规则是于社区志愿者维护的,被称为核心规则CRS(corerules),规则可靠强大,当然也可以自定义规则来满足各种需求。 mv owasp-modsecurity-crs /opt/tengine/conf/ cd/opt/tengine/conf/owasp-modsecurity-crs && mvmodsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf 复制modsecurity源码目录下的modsecurity.conf-recommended和unicode.mapping到nginx的conf目录下,并将modsecurity.conf-recommended重新命名为modsecurity.conf。 编辑modsecurity.conf文件,将SecRuleEngine设置为 on //默认值为DetectOnly 即为观察模式,建议大家在安装时先默认使用这个模式,观察一段时间,看是否对网站、服务器有某些不可知的影响 owasp-modsecurity-crs下有很多存放规则的文件夹,例如base_rules、experimental_rules、optional_rules、slr_rules,里面的规则按需要启用,需要启用的规则使用Include进modsecurity.conf即可。 Includeowasp-modsecurity-crs/modsecurity_crs_10_setup.conf Includeowasp-modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf Include owasp-modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf Includeowasp-modsecurity-crs/base_rules/modsecurity_crs_40_generic_attacks.conf Include owasp-modsecurity-crs/base_rules /modsecurity_crs_45_trojans.confwebshell //考虑到可能对主机性能上的损耗,目前建议只加入上述几个高危漏洞的防护规则,可以防御住目前大部分的高危web攻击 整体规则的介绍详见:[/url],可以针对自己网站的特殊需求,加入相应的规则。 注意:由于nginx对@http请求的解析会与apache有所不同,因此这些规则其中某些部分是无法再nginx环境下使用的,有兴趣研究的可以参考下 nginxmodule :more_set_headers ( @) 在需要启用modsecurity的主机的location下面加入下面两行即可: ModSecurityConfig modsecurity.conf; 下面是示例配置,php虚拟主机conf或是vhost文件: ModSecurityConfig modsecurity.conf; index index.php index.html index.htm; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $Document_root$fastcgi_script_name; 2. IIS IIS下官方直接提供了msi安装文件,下载了直接安装即可。 一. 准备工作 1. ModSecurity V2.9.1 for IIS MSI Install-32、64bits [/url] 2. Microsoft VisualC++ 2013 Redistributable Package 二. 安装 1.直接将上述2个安装包安装即可。 2.在C:\Windows\System32\inetsrv\config\applicationHost.config找到ModSecurity这一行,改为如下 <sectionname="ModSecurity" overrideModeDefault="Allow"allowDefinition="Everywhere" /></sectionGroup> 3. 在ModSecurrity安装目录ModSecurity IIS下找到modsecurity.conf,将其中的SecRuleEngine 改为On 4. 在web根目录下的web.config文件中添加如下配置 <?xmlversion="1.0" encoding="UTF-8"?> <ModSecurityenabled="true" configFile=" C:\ProgramFiles\ModSecurity IIS\modsecurity_iis.conf " /> 三、效果 目前已经测试过的系统包括:centos6、windowsserver2008/2012均已测试安装成功,其他系统安装过程也与上述的类似,建议大家使用系统版本的时候尽量选稳定的最新版本,某些最新版本系统可能功能特性方面改动较大,导致安装过程中存在不可预知错误。 经过测试脚本的测试,拦截率达到较高的水平,其中XSS、sql注入、文件包含、命令执行等高危攻击拦截率也是比较令人满意的。 目前市面上免费的waf产品,安全狗还是做的相当不错的,但是具体使用过程中,还是有某些问题的:windows下兼容性还是有些问题,部署后,网站某些功能使用不了;Linux下的防御效果不如modsecurity。 四、用户维护、操作 1.所有命中规则的外部攻击均会存在Modsecurity_audit.log,用户可以对这个文件中记录进行审计 2.Log文件位置在modsecurity.conf中SecAuditLog这个位置,linux默认开启在 /var/log/modsec_audit.log,windows需要自行开启这个配置,并设置日志位置。 3.支持自定义规则,modsecurity有自己的一套waf语法规则,新增规则直接添加到modsecurity.conf中即可。 转载地址:http://dbjix.baihongyu.com/