安装naxsi为nginx提供WAF服务

0x01 前言

前些天配置了ELK5(安装配置Elastic Stack 5)处理nginx日志(使用Elastic Stack处理nginx日志)。我发现日志中有好多攻击请求,因此我决定将nginx的waf变更为naxsi。

我之前使用ngx_lua_waf(loveshell/ngx_lua_waf)作为waf,在这里我不对这个waf应用进行说明,感兴趣的朋友可以通过链接到GitHub了解。

0x02 准备

首先naxsi是一款专为nginx打造的抗跨站攻击、防数据库注入的开源软件,GitHub地址如下:

nbs-system/naxsi

需要格外注意的是:naxsi目前还不支持HTTPv2,详细原因请点击:issue #227。因此我已经将我网站的HTTPv2移除。

首先下载nginx(nginx org),我在写这篇文章的时候最新版的nginx版本为:nginx-1.11.6。首先下载nginx源代码到本地并解压:

然后下载naxsi的源码:

0x03 编译

如果你已经编译好nginx而不想升级版本,那么你可以通过以下命令添加naxsi模块:

如果你想重新编译nginx,那么可以在./configure –add-module=/root/codex/naxsi/naxsi_src/ 前后添加你需要添加的模块,例如:

0x04 配置

首先复制核心规则到nginx目录:

编译安装完成后还需要手动添加一些参数。首先需要将核心规则include到nginx.conf文件中:

然后修改每个站点的conf文件,并在location块中添加以下内容:

要注意的是,上面的内容仅对添加的location有效,如果你想对多个location有效,那么需要逐一添加。

完成后重新启动nginx即可。

如果你和我一样运行着Wordpress,那么请添加一下白名单到你的location中:

将wordpress.rules或wordpress-minimal文件include到location中即可。

0x05 结语

wordpress.rules和wordpress-minimal这两个白名单并不是很完美,这两天我一直在手动添加白名单,Wordpress有许多参数都触发了核心规则。

配置完成后记得测试一下:

以下是日志: