静看光阴荏苒
不管不顾不问不说也不念

Debian10不重新编译nginx配置modsecurity v3

modsecurity是一个国外的开源WAF,前身只支持Apache,后来因为各种因素也开始支持Nginx了,但v2版本一直以来饱受诟病的是性能问题,高性能的Nginx配上了modsecurity v2就变成了低性能。。

modsecurity v3的诞生解决了v2的性能问题,同时还有一些别的更新,这篇文章记录一下在Debian10上把modsecurity v3加载到APT安装的Nginx内。

安装所需依赖:

apt -y install build-essential autoconf zlib1g-dev pkgconf \
libtool libpcre++-dev libssl-dev libgeoip-dev libgd-dev \
libxml2-dev liblmdb-dev libyajl-dev libxslt1-dev \
libcurl4-openssl-dev curl git

编译安装libmodsecurity:

cd /opt
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make -j$(nproc)
make install

查看当前的Nginx版本以及编译时用到的参数:

nginx -V

从Nginx官网下载同版本的源码/解压/进入到源码目录:

cd /opt
git clone https://github.com/SpiderLabs/ModSecurity-nginx
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -xzvf nginx-1.14.2.tar.gz
cd nginx-1.14.2

配置:

./configure --add-dynamic-module=../ModSecurity-nginx --<除去原Nginx的所有add-module参数后,剩下的所有编译参数都应该加在这里>

编译modsecurity连接器模块:

make modules

完成之后把modsecurity连接器模块复制到nginx的模块加载目录:

cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules

编辑Nginx主配置文件:

nano /etc/nginx/nginx.conf

文件的顶行加入:

load_module modules/ngx_http_modsecurity_module.so;

现在应该测试一下看Nginx的配置有没报错:

nginx -t

没问题的话,现在就可以配置WAF规则了,owasp是modsecurity维护的一个额外规则:

mkdir /etc/nginx/modsec && cd /etc/nginx/modsec
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
mv /etc/nginx/modsec/owasp-modsecurity-crs/crs-setup.conf.example /etc/nginx/modsec/owasp-modsecurity-crs/crs-setup.conf

modsecurity.conf-recommended这个文件也要重命名并移动到相关目录,unicode.mapping也需要移动,否则Nginx启动的时候会报错:

cp /opt/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
cp /opt/ModSecurity/unicode.mapping /etc/nginx/modsec

之后编辑modsecurity.conf:

nano /etc/nginx/modsec/modsecurity.conf

modsecurity默认不会拦截恶意请求,它只会提示并写入日志,要开启拦截,需要把下图的参数改为On:

现在新建一个main的主配置文件:

nano /etc/nginx/modsec/main.conf

在main.conf内引用全部的规则:

Include /etc/nginx/modsec/modsecurity.conf
Include /etc/nginx/modsec/owasp-modsecurity-crs/crs-setup.conf
Include /etc/nginx/modsec/owasp-modsecurity-crs/rules/*.conf

最后在需要开启WAF的站点配置文件(server段内)加入如下配置:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

再测试一遍Nginx配置:

nginx -t

没问题的话,重启下Nginx就大功告成了:

systemctl restart nginx

有拦截或者其他信息都可以看看这个日志文件:

/var/log/modsec_audit.log

其实说实话这个东西不是很符合天朝国情(网络环境),因为是老外开发的,最了解中国人的永远只有中国人自己,就好比杀毒软件一样,360就是一个最好的例子。。

下篇文章介绍一个比这个更简单更好用的。。

赞(0)
未经允许不得转载:荒岛 » Debian10不重新编译nginx配置modsecurity v3
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这个东西简直是福音, 每次编译pagespeed我头都大了… 还要去复制apt安装的参数路径 = =#

    天毅5年前 (2019-09-11) Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 GNU/Linux x64 GNU/Linux x64回复

分享创造快乐

广告合作资源投稿