黑帽联盟

标题: linux nginx 安装waf防火墙实战教程 [打印本页]

作者: 定位    时间: 2017-3-29 15:38
标题: linux nginx 安装waf防火墙实战教程
这里使用的是nginx自带的一个lua模块,即ngx_lua_waf

ngx_lua_waf是一款开源的 基于 ngx_lua的 web应用防火墙。代码很简单,开发初衷主要是使用简单,高性能和轻量级。下面我们来看看如何在为nginx安装waf模块

搭建nginx的时候为保证安全,决定安装下waf模块,以下是具体步骤,首先下载需要的安装包,进行每个安装

1、下载LuaJIT源码包
  1. wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
  2. tar xf LuaJIT-2.0.3.tar.gz
  3. cd LuaJIT-2.0.3
  4. make && make install
  5. ln -sv /usr/local/lib/libluajit-5.1.so.2.0.3 /lib64/libluajit-5.1.so.2
复制代码
2、然后下载nginx(如果你现在的系统已经安装过nginx,跳过这步,后面你直接重新编译安装nginx即可,参考第五步)
  1. wget http://nginx.org/download/nginx-1.7.6.tar.gz
  2. tar -zxvf nginx-1.7.6.tar.gz
复制代码
3、下载ngx_devel_kit并解压
  1. wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz
  2. tar xf v0.2.19.tar.gz
复制代码
4、 下载ngx_lua并解压
  1. wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.9.6.tar.gz
  2. tar xf v0.9.6.tar.gz
复制代码
5、编译安装nginx(这里如果你的nginx之前安装好了,同样也执行这步骤,重新编译安装)
  1. <blockquote>--user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/usr/local/src/lua-nginx-module-0.9.13rc1 --add-module=/usr/local/src/ngx_devel_kit-0.2.19 --with-pcre
复制代码
6、下载ngx_lua_waf并解压
  1. wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip –no-check-certificate
  2. unzip master.zip
  3. cd ngx_lua_waf-master/
  4. mkdir /usr/local/nginx/conf/waf
  5. mv * /usr/local/nginx/conf/waf/
  6. cd /usr/local/nginx/conf/
  7. vi nginx.conf
复制代码
7、修改 nginx的配置文件  根据实际情况更改路径
  1. lua_need_request_body on;
复制代码
8、最后测试 重启nginx
下面是我自己测试的截图,很多规则我就不一一去测试了,只列出其中一种:敏感关键字
1.png
2.png

还没完哈,最后简单的介绍下waf主配置文件里面参数
  1. RulePath="/usr/local/nginx/conf/waf/wafconf/"

  2. --规则存放目录

  3. attacklog="off"

  4. --是否开启攻击信息记录,需要配置logdir

  5. logdir="/usr/local/nginx/logs/hack/"

  6. --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限

  7. UrlDeny="on"

  8. --是否拦截url访问

  9. Redirect="on"

  10. --是否拦截后重定向

  11. CookieMatch="on"

  12. --是否拦截cookie攻击

  13. postMatch="on"

  14. --是否拦截post攻击

  15. whiteModule="on"

  16. --是否开启URL白名单

  17. black_fileExt={"php","jsp"}

  18. --填写可上传文件后缀类型

  19. ipWhitelist={"127.0.0.1"}

  20. --ip白名单,多个ip用逗号分隔

  21. ipBlocklist={"1.0.0.1"}

  22. --ip黑名单,多个ip用逗号分隔

  23. CCDeny="on"

  24. --是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dictlimit10m;)

  25. CCrate="100/60"

  26. --设置cc攻击频率,单位为秒.

  27. --默认1分钟同一个IP只能请求同一个地址100次

  28. html=[[Pleasegoaway~~]]

  29. --警告内容,可在中括号内自定义

  30. 备注:不要乱动双引号,区分大小写

  31. 可以把config.lua中的Redirect设置为off,只记录不拦截,观察没有误拦后再开启。
复制代码
/usr/local/nginx/conf/waf/wafconf下面的文件都是规则文件,自己可以自定义,文件如下:
args  cookie  post  url  user-agent  whiteurl
每个文件里面都有一些默认的规则,还有很多需要我们自己去填写。

好了,就写到这里了,觉得不错的话,转载给你身边的朋友。对于新手来说,还是挺实用的







欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5