在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

 
         

给Linux VPS折腾上totp(两步验证)用于登录验证

之前提到过使用密钥登录SSH,这种方式禁用了密码,安全性上是没问题的。。。除非,你的私钥也泄露啦~不怕,为了应对这种极端情况,我们不妨弄个2FA组成“多重...

用Telegram 搭建图床?这个可以有

万物皆可图床!今天来介绍用利用Telegram搭建网盘的开源项目:tgfilestream 。我这里用的是fork版,这里推荐使用这个或者这个。这里推荐“TG-Files-to-Link”这...

推荐几个2020年可用的免费SSL证书

推荐几个2020年可用的免费ssl证书,现在给网站上小绿锁是大势所趋,SSL证书一般价格都不菲,如果非特殊需求用免费的SSL证书就够用了~ 亚洲诚信一年域名 网...

自建密码管理器:强烈推荐bitwarden_rs

今天推荐个密码管理程序bitwarden的第三方版bitwarden_rs,是时候抛弃chrome自带的密码管理啦~要问我为什么转投bitwarden的怀抱?其实很简单,chrome浏览器自...

吃螃蟹~试着在debian上使用xanmod内核,

听说升级linux内核会有安全和性能上的加成,目前小鸡用的是Linux version 4.9.0-12-amd64内核,本着“吃螃蟹”的态度,今天试试更新到5.6.14版本的内核,看看有...

测试-【フィクサー】呪術廻戦【MAD】

转载自Youtube,看起来播放速度还不错~ 这个MAD制作真的很精良,结合字幕来看,歌词莫名和漫画剧情很搭233.另外说下,呪術廻戦 已经在TV筹划中啦,喜欢的可惜...