在nginx上安装ModSecurity和 OWASP CRS(debian9)

心血来潮,想在nginx上配置个WAF,经多方搜索,最终选择ModSecurity.选择这个,一方面是因为开源,二方面是官方更新比较勤,而这类应用拼的就是防护规则~好吧,话不多说,开始正文.

ModSecurity介绍

ModSecurity是由Trustwave的SpiderLabs开发的开源,跨平台Web应用程序防火墙(WAF)。它具有强大的基于事件的编程语言,可提供针对Web应用程序的多种攻击保护,并允许HTTP流量监视,日志记录和实时分析。ModSecurity在全球范围内进行了10,000多次部署,是现有部署最广泛的WAF。

安装ModSecurity

以debian9为例,运行以下命令

apt install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
git submodule init
git submodule update
sh build.sh
./configure
make
make install
安装ModSecurity-nginx
git clone https://github.com/SpiderLabs/ModSecurity-nginx

安装完安装ModSecurity还不行,你需要重新编译nginx,./configure添加以下一行
./configure --add-module=/path/ModSecurity-nginx
make && make install即可
或者
--with-compat --add-dynamic-module=/path/ModSecurity-nginx
mkdir -p /usr/local/nginx/modules
make modules
cp objs/ngx_http_modsecurity_module.so /usr/local/nginx/modules

我这里选择静态编译的方式,两种方式选一个即可.

配置ModSecurity

mkdir /usr/local/nginx/conf/modsecurity

返回到ModSecurity源码目录

cp modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp unicode.mapping /usr/local/nginx/conf/modsecurity
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.zip
unzip v3.3.0.zip
cd coreruleset-3.3.0
cp crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
cp -r rules /usr/local/nginx/conf/modsecurity

(可选)可以将/usr/local/nginx/conf/modsecurity/rules下的REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example与RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example的.example去掉,以后可将自己写的规则纳入其中~

找到nginx.conf文件,在末尾填入以下行,nginx -t没问题就可以service nginx reload即可.

modsecurity on;
modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;

如果选择动态.so方式,你需要额外填以下代码到nginx.conf(顶部)
load_module modules/ngx_http_modsecurity_module.so;
vi /usr/local/nginx/conf/modsecurity/modsecurity.conf
修改 SecRuleEngine DetectionOnly 为On.至此,整个安装过程结束了.

针对wordpress的额外操作

默认规则不做改动的话wordpress肯定是不能正常运行的,你要要添加以下代码到crs-setup.conf(350行),其实就是开启REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf规则
SecAction \
"id:900130,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.crs_exclusions_wordpress=1"

参考链接

Nginx + ModSecurity and OWASP CRS
ModSecurity

 
         

分享几个临时邮箱合集

临时邮箱合集,以下这些小编亲测可用,值得收藏哦 👉 Temp-Mail Temp-Mail 👉 AdGuard Temp Mail AdGuard Temp Mail 👉 Guerrilla Mail Guerrilla Mail 👉 Best T...

注册bgm账号提示“抱歉抱歉,帐户激活服务暂时不可用,请稍后再试”之解决办法

今天尝试注册https://bangumi.tv/,注册前半段没啥说的,很简单。结果跑去激活账户遇到了 “抱歉抱歉,帐户激活服务暂时不可用,请稍后再试”…一阵无语过...

本富科技锂电池充电器wifi连接密码是多少?

搜了一圈,在某音找到了答案。。。 默认wifi密码 BFKJ1688 登录页面 http://192.168.4.1 调试密码 666666 希望能帮到你哈

pantaloon 6月解密可获得游戏 Polterguys: Possession Party(附简易答案)

参与地址 pantaloon ,输入名字和邮箱地址join获取验证码登入。 送的游戏是这个Polterguys: Possession Party 简单说下答案哈。。。解密苦手表示猜了好久,也...

手动部署tuicV5到linux vps上

刚刚折腾了下,成功安装tuicV5到小鸡上2333 ,还别说,速度和hysteria比起来也不差,用起来还不错~ 我这里分享下我折腾安装全过程,其实还挺简单的 #新建个...

API切换cloudflare边缘证书颁发机构

已知cf边缘证书颁发机构有四种 cf自家 、Google、let‘s encrypt、setcigo。其中cf自家证书有效期最长,有一年,其余皆是三个月。。。 可以用命令行手动切换为...