音乐

  1. Fields Of Gold - Sting
  2. Beautiful Girl - INXS
  3. Take Me To Church - Hozier
  4. Stephanie Says - Lady & Bird
  5. All of Me - John Legend
  6. 一丝不挂 - 陈奕迅
PHPTalk2.0 新版全新上线,欢迎体验

modsecurity 安装教程nginx


一.准备工作

nginx : http://nginx.org/
modsecurity for Nginx: https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
OWASP规则集: https://github.com/SpiderLabs/owasp-modsecurity-crs
依赖关系:
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规则:

git clone [email protected]://github.com/SpiderLabs/owasp-modsecurity-crs
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环境下使用的,有兴趣研究的可以参考下

nginxmodule :more_set_headers ( @http://comments.gmane.org/gmane.comp.apache.mod-security.owasp-crs/962)

五.配置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;
     }
  }

四、用户维护、操作

1.所有命中规则的外部攻击均会存在Modsecurity_audit.log,用户可以对这个文件中记录进行审计

2.Log文件位置在modsecurity.conf中SecAuditLog这个位置,linux默认开启在 /var/log/modsec_audit.log,windows需要自行开启这个配置,并设置日志位置。

3.支持自定义规则,modsecurity有自己的一套waf语法规则,新增规则直接添加到modsecurity.conf中即可。