设为首页收藏本站 今天是: 2021-06-21    美好的一天,从现在开始

站内搜索

搜索
热搜: 活动 交友 discuz

寻宝楼论坛

[网页教程] 对自己网站:Nginx+Lua实现的WAF

名人堂:
No.2
88888888

1500

主题

1550

帖子

9669

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
300
贡献
151
金币
7353 枚
精华
3篇
在线时间
343 小时
注册时间
2020-5-12
最后登录
2021-6-20

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老吾是土豪帅哥认证问题达人吾是智囊精品之王我是单身我拍谁!!!好人卡!!!

版主专享版主专享

发表于 2020-7-5 09:47:22 | 显示全部楼层 |阅读模式
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
对自己网站:Nginx+Lua实现的WAF29 作者:挽弦暮笙 帖子ID:261 需求产生 由于原生态的Nginx的一些安全防护功能有限.于是自己就在GitHub找到对应得教程
  • 功能列表:
    / P. {% z9 y# b3 [8 A4 @
  • 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。
  • 支持URL白名单,将不需要过滤的URL进行定义。
  • 支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
  • 支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。
  • 支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
  • 支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。
  • 支持URL参数过滤,原理同上。
  • 支持日志记录,将所有拒绝的操作,记录到日志中去。
  • 日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展示。7 X6 e4 A- U8 Z: Y  |
Nginx + Lua部署
  1. [root@nginx-lua ~]# cd /usr/local/src* C1 S! `6 o% D# s/ U! N& O9 t% ^! w. g
  2. [root@nginx-lua src]# wget 'http://nginx.org/download/nginx-1.12.1.tar.gz'
    0 D  J* g% A* h$ f9 s" v
  3. [root@nginx-lua src]# wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
复制代码
下载当前最新的luajit和ngx_devel_kit (NDK)
  1. [root@nginx-lua src]# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz4 W  e: u7 L% i+ R
  2. [root@nginx-lua src]# wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz, u2 [+ ]* O) r7 k0 X" l/ r
  3. [root@nginx-lua src]# wget wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.10.10.zip
复制代码
创建Nginx运行的普通用户
  1. [root@nginx-lua src]# useradd -s /sbin/nologin -M www
复制代码
解压NDK和lua-nginx-module,安装LuaJIT Luajit是Lua即时编译器。3 P% I2 z- z) |
  1. [root@openstack-compute-node5 src]# tar zxvf v0.3.0.tar.gz 解压后为ngx_devel_kit-0.3.0
    # [$ I: G7 _# v9 ?" n4 J
  2. [root@openstack-compute-node5 src]# unzip -q v0.10.10.zip解压后为lua-nginx-module-0.10.10: B' H+ q: n. Z) @8 k2 K, H4 E
  3. [root@webs-ebt src]# tar zxvf LuaJIT-2.0.5.tar.gz ' G6 Y! P$ D& M6 ~, `' V
  4. [root@webs-ebt src]# cd LuaJIT-2.0.5
    ' @8 ~7 V! s' o/ E6 `8 `1 j$ y4 F' v7 E
  5. [root@webs-ebt LuaJIT-2.0.5]# make && make install
复制代码
安装Nginx并加载模块
3 M7 r% Q$ M+ d9 P8 w& N+ j
  1. [root@webs-ebt src]# tar zxf nginx-1.12.1.tar.gz
    8 Y' ?/ [1 b: g- e9 F- e) e# y
  2. [root@webs-ebt src]# tar zxvf pcre-8.41.tar.gz ) K; G; L+ j" E
  3. [root@webs-ebt src]# cd nginx-1.12.14 f* C; B8 X; r% @; k/ a4 b
  4. [root@webs-ebt nginx-1.12.1]# export LUAJIT_LIB=/usr/local/lib7 {: e6 d( d( |% L8 v
  5. [root@webs-ebt nginx-1.12.1]# export LUAJIT_INC=/usr/local/include/luajit-2.0
    . v$ q7 j1 d' y9 I, q
  6. [root@webs-ebt nginx-1.12.1]#./configure --user=www --group=www --prefix=/usr/local/nginx-1.12.1/ --with-pcre=/usr/local/src/pcre-8.41 --with-http_stub_status_module --with-http_sub_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module  --add-module=../ngx_devel_kit-0.3.0/ --add-module=../lua-nginx-module-0.10.10/$ g- E- N8 s! l0 V$ w1 z
  7. [root@webs-ebt nginx-1.12.1]# make -j2 && make install3 M0 l# R2 Z5 o4 m3 l; o  [1 q" d
  8. [root@webs-ebt nginx-1.12.1]# ln -s /usr/local/nginx-1.12.1 /usr/local/nginx
    8 j* N1 |( m- L. P& }" ?
  9. [root@webs-ebt nginx-1.12.1]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
复制代码
安装完毕后,修改nginx.conf,增加第一个配置。

5 ]) t6 M5 i+ o, Y, _3 j& t
  1. location /hello {$ f$ ^/ D8 w; f. i2 `
  2.                 default_type 'text/plain';; H, ?5 i; s, T+ C! y3 v: G
  3.                 content_by_lua 'ngx.say("hello,lua")';+ I2 J9 W* G; m9 G' c* Y
  4.         }
    ( O  f- j. Y3 H+ i! A5 c
  5.     8 f. \: n, m# i' v( t
  6. [root@webs-ebt src]# /usr/local/nginx/sbin/nginx -t
    ! C/ u7 S+ {# Q& [5 d- o
  7. [root@webs-ebt src]# /usr/local/nginx/sbin/nginx -t
复制代码
然后访问http://xxx.xxx.xxx.xxx/hello 如果出现hello,lua。表示安装完成,然后就可以。
& C2 K1 `" Y6 V+ N1 Y& j4 ~. n' o
+ C1 e/ p2 J5 f3 }( ~6 o( k8 d

$ W& U/ O& w7 U2 vOpenResty部署
% B+ L& {* k9 i2 M$ O
  1. 安装依赖包% I7 T! F* o! l* ]& Q: S! ?7 r
  2. # yum install -y readline-devel pcre-devel openssl-devel
    $ ]1 }* R# X, P
  3. # cd /usr/local/src
    # S% o( B9 _* V9 |
  4. 下载并编译安装openresty
    & }# ~) Z7 r- Q. a, A
  5. # wget "https://openresty.org/download/openresty-1.11.2.5.tar.gz"
    8 {4 c* \& P1 w- C/ j. d, ?
  6. # tar zxf openresty-1.11.2.5.tar.gz) g, N1 V8 E# F# b/ e1 R
  7. # cd openresty-1.11.2.55 C" V+ @% J' H+ O' V3 M6 t
  8. # ./configure --prefix=/usr/local/openresty-1.11.2.5 \* R- y2 h# e0 \
  9. --with-luajit --with-http_stub_status_module \
    ( y# @# s5 o- }3 B' [
  10. --with-pcre=/usr/local/src/pcre-8.41 --with-pcre-jit2 K+ U; ]2 V% U- D% O7 D+ X5 l
  11. # gmake && gmake install$ O/ N& {$ |( I; q, M7 }
  12. # ln -s /usr/local/openresty-1.11.2.5 /usr/local/openresty: o1 q/ X. z% T( }9 P4 z+ ^
  13. # b, G/ c+ h7 ~9 U" F, m& ?
  14. 测试openresty安装
    $ b9 j9 C6 s. z" r: B, m: H
  15. # vim /usr/local/openresty/nginx/conf/nginx.conf
    * m# l/ [5 C# ]( e/ G
  16. server {- N( x$ |* q4 J) u2 }6 i9 A9 J  e
  17.     location /hello {
    * x* m7 N2 Q! P3 {3 H$ i! P! t( A6 I
  18.             default_type text/html;
      t% @' v7 f& Z% }
  19.             content_by_lua_block {  i  `) F2 q, o" ?1 n  T# f; ]( B9 q
  20.                 ngx.say("HelloWorld")  i1 T! ~+ y8 w9 d4 d9 h
  21.             }
    : O$ T, C+ T7 c" q$ @0 n7 ]
  22.         }
    8 m! v7 o* J1 v7 a8 q( \" ~2 x3 ^
  23. }
    ! l2 h3 Y. P; k9 {
  24. [root@webs-ebt src]# /usr/local/openresty-1.11.2.5/nginx/sbin/nginx -t6 v" m5 O/ S- l* i+ ]$ i- X2 R
  25. nginx: the configuration file /usr/local/openresty-1.11.2.5/nginx/conf/nginx.conf syntax is ok
    / k; S6 _' E  g$ X* L' s
  26. nginx: configuration file /usr/local/openresty-1.11.2.5/nginx/conf/nginx.conf test is successful
    : C' L! l3 ?  }+ `
  27. # /usr/local/openresty/nginx/sbin/nginx
    1 w  ]) Z! n- v5 G: ]% F
  28. Hello World
    5 ^( e2 X! ^" A' v# n5 h
  29. # curl http://192.168.199.33/hello4 I# b; t2 J9 j5 ]- e
  30. HelloWorld
复制代码
最后WAF部署
5 y) c4 \8 _0 Y0 F+ p
  1. #git clone https://github.com/unixhot/waf.git
    ( b9 c; Z# P, r5 Q/ U) ^% [
  2. #cp -a ./waf/waf /usr/local/openresty/nginx/conf/2 b$ A+ Y0 l; H7 s- M- @6 Z# u

  3. + w! @) k( O3 O) j
  4. 修改Nginx的配置文件,加入以下配置。注意路径,同时WAF日志默认存放在/tmp/日期_waf.log" e; j/ `& H$ h! n: V! y' R
  5. #WAF
    6 G4 A2 @, @+ L3 O) K0 g6 \
  6.     lua_shared_dict limit 50m;- z" V7 ?, l( s( Z) Z
  7.     lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
      V1 X1 S; R1 F8 d3 \% Q0 ^0 |2 w9 ^! k
  8.     init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";+ [2 s- H8 S1 P8 D2 u$ C
  9.     access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";5 {$ [' `# o( c$ i- l% c! h$ Z
  10. " C7 |; O' X7 B- ?1 \% Y! e: a; u: w5 H. _; O
  11. [root@openstack-compute-node5 ~]# /usr/local/openresty/nginx/sbin/nginx –t9 z% r+ W" b! j9 [
  12. [root@openstack-compute-node5 ~]# /usr/local/openresty/nginx/sbin/nginx
复制代码

2 X. `0 n7 W6 [% x$ L
7 Z5 N; e: ]+ `( c/ L' g

帖子地址: 

相关帖子

TA在排名榜Top100

积分 : NO. 89 名

主题 : NO. 44 名

金钱 : NO. 75 名

0

主题

97

帖子

26

积分

【赞助贵宾】

Rank: 6Rank: 6

威望
0
贡献
0
金币
24 枚
精华
0篇
在线时间
0 小时
注册时间
2020-5-17
最后登录
2020-7-13

    发表于 2020-7-6 13:28:27 | 显示全部楼层
    不知该说些什么。。。。。。就是谢谢

    TA在排名榜Top100

    积分 : NO. 97 名

    主题 : NO. 80 名

    金钱 : 暂未上榜

    0

    主题

    94

    帖子

    24

    积分

    新手上路

    Rank: 1

    威望
    0
    贡献
    0
    金币
    18 枚
    精华
    0篇
    在线时间
    0 小时
    注册时间
    2020-6-11
    最后登录
    2020-7-13

      发表于 2020-7-8 12:29:37 | 显示全部楼层
      这是什么东东啊

      TA在排名榜Top100

      积分 : NO. 62 名

      主题 : NO. 75 名

      金钱 : NO. 51 名

      0

      主题

      89

      帖子

      36

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      33 枚
      精华
      0篇
      在线时间
      1 小时
      注册时间
      2020-6-10
      最后登录
      2020-7-13
      发表于 2020-7-8 21:17:52 | 显示全部楼层
      看帖回帖是美德!:lol

      TA在排名榜Top100

      积分 : 暂未上榜

      主题 : NO. 79 名

      金钱 : 暂未上榜

      0

      主题

      73

      帖子

      14

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      13 枚
      精华
      0篇
      在线时间
      0 小时
      注册时间
      2020-6-10
      最后登录
      2020-7-13
      发表于 2020-7-9 00:13:28 | 显示全部楼层
      找到好贴不容易,我顶你了,谢了

      0

      主题

      83

      帖子

      20

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      16 枚
      精华
      0篇
      在线时间
      0 小时
      注册时间
      2020-6-25
      最后登录
      2020-7-13
      发表于 2020-7-10 18:27:54 | 显示全部楼层
      小手一抖,钱钱到手!

      TA在排名榜Top100

      积分 : 暂未上榜

      主题 : NO. 72 名

      金钱 : 暂未上榜

      0

      主题

      84

      帖子

      18

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      15 枚
      精华
      0篇
      在线时间
      0 小时
      注册时间
      2020-6-8
      最后登录
      2020-7-13
      发表于 2020-7-11 12:56:54 | 显示全部楼层
      写的真的很不错

      TA在排名榜Top100

      积分 : NO. 23 名

      主题 : NO. 77 名

      金钱 : NO. 37 名

      0

      主题

      83

      帖子

      124

      积分

      注册会员

      Rank: 2

      威望
      0
      贡献
      0
      金币
      41 枚
      精华
      0篇
      在线时间
      1 小时
      注册时间
      2020-6-10
      最后登录
      2020-9-23
      发表于 2020-7-11 13:25:20 | 显示全部楼层
      好好 学习了 确实不错

      TA在排名榜Top100

      积分 : 暂未上榜

      主题 : NO. 63 名

      金钱 : 暂未上榜

      0

      主题

      102

      帖子

      18

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      3 枚
      精华
      0篇
      在线时间
      1 小时
      注册时间
      2020-5-30
      最后登录
      2020-7-13
      发表于 2020-7-12 10:39:31 | 显示全部楼层
      帮你顶下哈!!

      TA在排名榜Top100

      积分 : 暂未上榜

      主题 : 暂未上榜

      金钱 : NO. 98 名

      0

      主题

      80

      帖子

      22

      积分

      新手上路

      Rank: 1

      威望
      0
      贡献
      0
      金币
      21 枚
      精华
      0篇
      在线时间
      1 小时
      注册时间
      2020-6-26
      最后登录
      2020-7-13
      发表于 2020-7-12 16:57:35 | 显示全部楼层
      写的真的很不错
      您需要登录后才可以回帖 登录 | 立即注册

      本版积分规则

      快速回复 收藏帖子 返回列表 客服中心 搜索 官方QQ群
      企业
      关于我们 加入我们
      友情链接 媒体合作
      联系我们 QQ群
      官方
      新浪微博 腾讯微博
      百度贴吧 人人主页
      脸书 推特
      下载
      安卓客户端下载 桌面客户端
      反馈
      意见建议 用户使用协议
      帮助
      更多
      捐助本站
      安卓客户端下载

      安卓客户端下载

      苹果端下载密码:dmwu

      苹果端下载密码:dmwu

      快速回复 收藏帖子 返回列表 客服中心 搜索 官方QQ群
      桂ICP备2021004265号-1

      Powered by Discuz! X3.4 © 2001-2013 寻宝楼论坛