ModSecurity

一、简介

ModSecurity是一款免费的开源主机waf软件(@http://www.modsecurity.org/),目前官网最新版本为2.9.1,支持nginx/apache/iis(32、64位)。它主要是作为上述web应用的扩展模块形式存在,通过相关的规则文件,对外部恶意的web攻击进行识别,并作出进一步的丢弃操作。 

二、安装

1.nginx/apache
在Linux操作系统下,web应用为nginx/apache情况下,安装Modsecurity需要在部署的时候对nginx/apache进行编译,将ModSecurity源码作为一个模块编译进nginx/apache去。

一.准备工作
  1. nginx : @http://nginx.org/
  2. modsecurity for Nginx: @[url]https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz[/url]
  3. OWASP规则集: @[url]https://github.com/SpiderLabs/owasp-modsecurity-crs[/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


二.启用standalone模块并编译
下载modsecurity fornginx 解压,进入解压后目录执行:
./autogen.sh
./configure –enable-standalone-module–disable-mlogc
make


三.nginx添加modsecurity模块
在编译standalone后,nginx编译时可以通过”–add-module”添加modsecurity模块:
./configure–add-module=/root/modsecurity-2.9.1/nginx/modsecurity/  –prefix=/opt/tengine
make && make install


四.添加规则
modsecurity倾向于过滤和阻止web危险,之所以强大就在于规则,OWASP提供的规则是于社区志愿者维护的,被称为核心规则CRS(corerules),规则可靠强大,当然也可以自定义规则来满足各种需求。


1.   下载OWASP规则:
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


2.启用OWASP规则:
复制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]http://www.2cto.com/Article/201409/334251.html[/url],可以针对自己网站的特殊需求,加入相应的规则。
注意:由于nginx对@http请求的解析会与apache有所不同,因此这些规则其中某些部分是无法再nginx环境下使用的,有兴趣研究的可以参考下


五.配置nginx
在需要启用modsecurity的主机的location下面加入下面两行即可:
ModSecurityEnabled on;  
ModSecurityConfig modsecurity.conf;
下面是示例配置,php虚拟主机conf或是vhost文件:
server {
     listen      80;
     server_name xxx.com www.xxx.com;
     location ~ \.php$ {
     ModSecurityEnabled on;  
     ModSecurityConfig modsecurity.conf;
     root /web/webroot;
     index index.php index.html index.htm;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  $Document_root$fastcgi_script_name;
     include        fastcgi_params;
     }
  }

2.    IIS
IIS下官方直接提供了msi安装文件,下载了直接安装即可。




一. 准备工作

1.    ModSecurity V2.9.1 for IIS MSI Install-32、64bits @[url]http://www.modsecurity.org/download.html[/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″?>
<configuration>
    <system.webServer>
        <ModSecurityenabled=”true” configFile=” C:\ProgramFiles\ModSecurity IIS\modsecurity_iis.conf ” />
    </system.webServer>
</configuration>
5.   重启下网站

三、效果
目前已经测试过的系统包括: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中即可。
ModSecurity is an open source, cross-platform web application firewall (WAF) module. Known as the “Swiss Army Knife” of WAFs, it enables web application defenders to gain visibility into HTTP(S) traffic and provides a power rules language and API to implement advanced protections.

Get Code

Source / Binaries

Get Rules

Free / Commercial

Get Help

Support

Pre-Packaged, Binary Installation

The easiest method of installing ModSecurity is to use your existing OS Package Manager application (Yum or Aptitude) to install it from your default OS Repository.

Installation – Ubuntu/Debian

$ sudo apt-get install libapache2-mod-security
$ sudo a2enmod mod-security
$ sudo /etc/init.d/apache2 force-reload

Installation – Fedora/CentOS

$ sudo yum install mod_security
$ sudo /etc/init.d/httpd restart

Installation – Microsoft IIS (MSI Installer)

Installation information for IIS

Source Code Downloads

ModSecurity is an open source product licensed under ASLv2. It comes with full source code and documentation. Current releases are signed by Felipe “Zimmerle” Costa.

ModSecurity for Apache (Stable Release Quality)

Installation information for Apache

ModSecurity for Nginx

NOTE: The Nginx module is contained within the Apache archive package. You must first compile ModSecurity with the –enable-standalone-module flag and then compile the Nginx code to use it. See the Blog post for more information.

NOTE: Some instabilities in the Nginx add-on have been reported (see the Github issues page for details). Please use the “nginx_refactoring” branch where possible for the most up to date version and stay tuned for the ModSecurity version 4.

发表评论