当前位置: 代码网 > it编程>数据库>Oracle > Nginx安装配置naxsi waf防火墙的方法实现

Nginx安装配置naxsi waf防火墙的方法实现

2024年08月22日 Oracle 我要评论
naxsi 是第三方 nginx 模块 ,它和 modsecurity 都是开源 waf ,但是它们的防御模式不同。 naxsi 不依赖像防病毒软件这样的签名库,因此不会被“未知&rdqu

naxsi 是第三方 nginx 模块 ,它和 modsecurity 都是开源 waf ,但是它们的防御模式不同。 naxsi 不依赖像防病毒软件这样的签名库,因此不会被“未知”攻击模式所规避,它就像是 windows 下默认的防火墙。naxsi 和其他 waf 之间的另一个主要区别就是仅过滤 get 和 post 请求。

 之前一直在用 modsecurity ,效果还不错,但是它对 nginx 支持真的不太好~.~ 。经常会产生大量错误日志,不过这个并不影响它的正常功能,只是看着揪心。让我想更换它的主要原因是 modsecurity 经常在处理某个请求(正常或不正常)时,会突然导致 cpu 99.9% 以上,这是最不能忍受的。

1、naxsi 和 modsecurity对比

wafnaxsimodsecurity
nginx 兼容性好(第三方 nginx 模块)不好(原 apache 下的模块,nginx 下bug较多)
防御模式简单(不依赖签名库)复杂(依赖更新规则)
白名单规则支持支持
安装难度容易一般(需要安装依赖库)
社区支持一般较好
内存占用大?不到哪去
特色支持学习模式,可借助 nxapi/nxtool 自动分析白名单可开启只记录不阻止,但是官方没有提供分析工具。
总结naxsi 比较灵活,所以学习成本较大,白名单规则需要自己完成。对 nginx 支持良好,快速轻便。modsecurity 操作简单,规则更新较快,比较占用服务器资源,对于生产环境下的 nginx 来说是个噩梦

在日常使用中,可以发现 modsecurity 具有非常严格的防御规则(误报挺多的),并且规则支持较好(有强大的后台?)。如果你使用 apache 服务器,推荐使用 modsecurity waf。如果你使用的是 nginx 服务器,建议先尝试使用 naxsi 。

下面就来在 centos 下编译安装 nginx + naxsi waf 。 【占位:modsecurity 的编译安装】

2、编译 nginx + naxsi

首先先运行:

# nginx -v

然后可以看到现有的模块,复制保存一下备用。

configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2l --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc

3、下载 nginx 和 naxsi

naxsi 应该使用所有高于 0.8.x 的 nginx 版本。 naxsi 版本可以在  https://github.com/nbs-system/naxsi 这里,选择 branch –> tags 查看版本号。

下载 nginx 和 naxsi ,并解压,然后进入解压后的 nginx 目录:

# wget http://nginx.org/download/nginx-1.12.1.tar.gz
# wget https://github.com/nbs-system/naxsi/archive/0.55.3.tar.gz
# tar xvzf nginx-1.12.1.tar.gz 
# tar xvzf naxsi-0.55.3.tar.gz
# cd nginx-1.12.1/

naxsi 不要求任何特定的依赖,它需要的 libpcre ,libssl ,zlib ,gzip 这些 nginx 已经集成了。

然后编译(记得在 ./configure 后面加上 --add-module=../naxsi-0.55.3/naxsi_src/ 和你之前备份的模块):

./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=../naxsi-0.55.3/naxsi_src/ --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2l --with-pcre=../pcre-8.40 --with-pcre-jit --with-ld-opt=-ljemalloc
make //不要 make install,不然就真的覆盖了

等待编译完成。naxsi 安装完成。

4、替换nginx二进制文件

# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# cp ./objs/nginx /usr/local/nginx/sbin/

注:如果提示 cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: text file busy ,请先 service nginx stop

5、检查 nginx 模块

# nginx -v

看到有 –add-module=../naxsi-0.55.3/naxsi_src/ 就成功了。

6、nginx/naxsi 基本配置

6.1、http 部分配置

打开 nginx.conf 在 http 部分配置:

http {
 include naxsi_core.rules;  #导入 naxsi 核心规则
 ...
}
server 部分配置
在 nginx.conf 的 server 部分配置:

location / {
   #开启 naxsi
   secrulesenabled;
   #开启学习模式
   learningmode;
   #定义阻止请求的位置
   deniedurl "/50x.html"; 
   #checkrules, 确定 naxsi 何时采取行动
   checkrule "$sql >= 8" block;
   checkrule "$rfi >= 8" block;
   checkrule "$traversal >= 4" block;
   checkrule "$evade >= 4" block;
   checkrule "$xss >= 8" block;
   #naxsi 日志文件
   error_log /.../foo.log;
   ...
  }
  error_page   500 502 503 504  /50x.html;
  #this is where the blocked requests are going
  location = /50x.html {
  return 418; #i'm a teapot \o/
  }

6.2、测试

测试 nginx 配置

/nginx/sbin/nginx -t
nginx: the configuration file /nginx/conf/nginx.conf syntax is ok
nginx: configuration file /nginx/conf/nginx.conf test is successful 

重启 nginx

service nginx reload

6.3、防御测试

浏览器中打开 http://www.test.com/?a=<>‘ ,出现 403 错误,并且在 foo.log 中出现 naxsi_fmt 开头的日志。恭喜你 naxsi 启用成功。

6.4、白名单规则

naxsi 社区提供了一些常用的白名单规则,例如 wordpress 。可以在  https://github.com/nbs-system/naxsi-rules下载白名单规则。

然后将规则 include 到 server 内的 location 中。重启 nginx 即可。不过目前这些白名单最近的修改日期有点久了~.~ ,可根据自身需要添加白名单规则。

详细的白名单规则以及 naxsi 其他支持,可参考  naxsi wiki

到此这篇关于nginx安装配置naxsi waf防火墙的方法实现的文章就介绍到这了,更多相关nginx安装配置naxsi waf防火墙内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com