nginx+modsecurity配置

  • nginx+modsecurity配置已关闭评论
  • 122 views
  • A+
所属分类:nginx

软件介绍

ModSecurity是一个免费、开源的Web(apache、nginx、IIS)模块,可以充当Web应用防火墙(WAF)。ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击
OWASP是一个安全社区,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS)。ModSecurity之所以强大就在于OWASP提供的规则,可以根据自己的需求选择不同的规则,当然ModSecurity还有商用的规则
目前ModSecurity正在测试环境测试使用,以下操作是在nginx下添加modsecurity模块来实现WAF的安装配置步骤

环境准备

nginx1.14

modsecurity3.0

OWASP规则集:https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2/dev.zip

系统:centos7

依赖安装

[root@localhost ~]# yum install -y pcre pcre-devel openssl openssl-devel libtool libtool-ltdl-devel gcc gcc-c++ gcc-g77 autoconf automake geoip geip-devel libcurl libcurl-devel yajl yajl-devel lmdb-devel ssdeep-devel lua-devel unzip

modsecurity安装

[root@localhost ~]# wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.0/modsecurity-v3.0.0.tar.gz
[root@localhost ~]# tar zxvf modsecurity-v3.0.0.tar.gz
[root@localhost ~]# cd modsecurity-v3.0.0
[root@localhost ~]# ./configure && make && make install

nginx编译安装

[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
[root@localhost ~]# tar zxvf nginx-1.14.0.tar.gz
[root@localhost ~]# cd nginx-1.14.0
[root@localhost ~]# ./configure  --prefix=/qiku/software/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-openssl=../openssl-1.0.1p --with-pcre=../pcre-8.32 --with-pcre-jit --with-ld-opt=-ljemalloc --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.2 --add-module=../nginx_upstream_check_module-master --add-module=/usr/local/src/headers-more-nginx-module-0.32 --with-http_perl_module --add-module=/usr/local/src/echo-nginx-module-0.58 --add-module=../nginx-upstream-jvm-route-master
[root@localhost ~]# make && make install

编译加载ModSecurity

[root@localhost ~]# git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
[root@localhost ~]# ./configure --add-dynamic-module=../ModSecurity-nginx-master
[root@localhost ~]# make modules
[root@localhost ~]# mkdir /qiku/software/nginx/modules
[root@localhost ~]# cp objs/ngx_http_modsecurity_module.so /qiku/software/nginx/modules

nginx配置文件加载ModSecurity

这句话放到http上面,不太清楚的话加nginx.conf第一行就行了

load_module modules/ngx_http_modsecurity_module.so;

拷贝配置文件

[root@localhost ~]# mkdir /qiku/software/nginx/modsec
[root@localhost ~]# wget -P /qiku/software/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended 
[root@localhost ~]# mv /qiku/software/nginx/modsec/modsecurity.conf-recommended /qiku/software/nginx/modsec/modsecurity.conf
[root@localhost ~]# sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /qiku/software/nginx/modsec/modsecurity.conf

配置规则文件

[root@localhost ~]# more /qiku/software/nginx/modsec/main.conf

# From https://github.com/SpiderLabs/ModSecurity/blob/master/\
# modsecurity.conf-recommended
#
# Edit to set SecRuleEngine On
Include "/etc/nginx/modsec/modsecurity.conf"

# Basic test rule
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"

添加并启用规则

server {
    # ...
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
}

测试规则是否生效

$ curl localhost?testparam=test
 <html>
 <head><title>403 Forbidden</title></head>
 <body bgcolor="white">
 <center><h1>403 Forbidden</h1></center>
 <hr><center>nginx/1.13.1</center>
 </body>
 </html>

好了,这就成功了

住:仅用于测试官方给的3.0还在测试中。

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar