免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1579 | 回复: 4
打印 上一主题 下一主题

[系统安全] nginx + lua 构建网站防护waf(一) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-12-12 15:34 |只看该作者 |倒序浏览
本帖最后由 whs8885739 于 2016-12-12 15:39 编辑

zabbix实战--结合saltstack推送自定义key实践
zabbix实战--Memcached,redis监控详解zabbix实战--mysql监控详解
zabbix实战--Php-fpm监控详解

最近几天比较忙,帮朋友维护一个站点。这个站点是一个Php网站。坑爹的是用IIS做代理。出了无数问题之后忍无可忍终于要我帮他切换到nginx上面,前期被不断的扫描和CC。最后找到了waf这样一个解决方案缓解一下。话不多说直接开始。


waf的作用:

防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击防止svn/备份之类文件泄漏防止ApacheBench之类压力测试工具的攻击屏蔽常见的扫描黑客工具,扫描器屏蔽异常的网络请求屏蔽图片附件类目录php执行权限防止webshell上传

nginx 的话我选择春哥开源的:OpenResty一个伟大的项目。


好了步骤开始:


1、安装Luagit:

# wget http://luajit.org/download/LuaJIT-2.1.0-beta1.tar.gz

# tar -xvf LuaJIT-2.1.0-beta1.tar.gz

# cd LuaJIT-2.1.0-beta1

# make

# make install

#ln -sf luajit-2.1.0-beta1 /usr/local/bin/luajit


2、安装openresty:

./configure --prefix=/opt/openresty   --with-luajit     --without-http_redis2_module       --with-http_iconv_module

gmake

gmake install


3、测试openresty:

[root@www ngx_lua_waf]# cd /opt/openresty/nginx/conf/

[root@www conf]# cat nginx.conf

http {

    server {

        listen 80;

        location / {

                 default_type text/html;

              content_by_lua_block {

                  ngx.say("HelloWorld")

                            }

                 }

     }

}

###

测试一下访问是否输出hello world,后面应该会有一些列的简介。

[root@www conf]# curl localhost

HelloWorld


4、下载开源项目:

[root@www nginx]# cd /opt/openresty/nginx/

[root@www nginx]# git clone https://github.com/loveshell/ngx_lua_waf.git


5、然后修改nginx添加配置,支持lua脚本地址,在http段位置:

lua_package_path "/opt/openresty/nginx/ngx_lua_waf/?.lua";  ###相关项目存放地址

lua_shared_dict limit 10m;                       ###存放limit表的大小

init_by_lua_file  /opt/openresty/nginx/ngx_lua_waf/init.lua; ###相应地址

access_by_lua_file /opt/openresty/nginx/ngx_lua_waf/waf.lua; ##相应地址


6、修改ngx_lua_waf相关配置:

[root@www ngx_lua_waf]# vim config.lua

RulePath = "/opt/openresty/nginx/ngx_lua_waf/wafconf/"   ##指定相应位置

attacklog = "on"                            ##开启日志

logdir = "/opt/openresty/nginx/logs/hack/"           ##日志存放位置

UrlDeny="on"                              ##是否开启URL防护

Redirect="on"                             ##地址重定向

CookieMatch="on"                           ##cookie拦截

postMatch="on"                            ##post拦截

whiteModule="on"                           ##白名单

black_fileExt={"php","jsp"}                        

ipWhitelist={"127.0.0.1"}                    ##白名单IP

ipBlocklist={"1.0.0.1"}                     ##黑名单IP

CCDeny="on"                             ##开启CC防护        

CCrate="100/60"                          ##60秒内允许同一个IP访问100次


7、创建日志存放目录:

[root@www ngx_lua_waf]#mkdir /opt/openresty/nginx/logs/hack/

[root@www ngx_lua_waf]#chown -R nobody:nobody /opt/openresty/nginx/logs/hack/


8、启动nginx测试:

[root@www logs]# /opt/openresty/nginx/sbin/nginx


9、网页访问一条测试:


10、压力测试CC攻击:

把congfig.lua的频率改成如下:

CCDeny="on"

CCrate="50/60"

测试结果:

[root@www ngx_lua_waf]# ab -c 100 -n 100 http://192.168.63.242/index.heml

This is ApacheBench, Version 2.3

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking 192.168.63.242 (be patient).....done



Server Software:        openresty/1.11.2.2

Server Hostname:        192.168.63.242

Server Port:            80


Document Path:          /index.heml

Document Length:        2078 bytes


Concurrency Level:      100

Time taken for tests:   0.052 seconds

Complete requests:      100

Failed requests:        49      ###因为做了现在,所以这么多是失败的。



到处已经构建成功了一套waf防御系统,非常感谢loveshell提供这么棒的waf开源项目,还有春哥的openresty.


后期起到更多的lua + nginx学习成果,第一篇完成,希望我们后期都能写出自己的waf防火墙。




论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
2 [报告]
发表于 2016-12-15 10:30 |只看该作者
非常好,支持一下

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
3 [报告]
发表于 2016-12-16 16:26 |只看该作者
谢谢分享,自己找工具也是不错的方案

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
4 [报告]
发表于 2016-12-16 16:57 |只看该作者
good

论坛徽章:
72
20周年集字徽章-20	
日期:2020-10-28 14:04:30操作系统版块每日发帖之星
日期:2016-07-13 06:20:0015-16赛季CBA联赛之广夏
日期:2016-07-10 09:04:02数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00操作系统版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-04 06:20:00数据库技术版块每日发帖之星
日期:2016-07-03 06:20:00操作系统版块每日发帖之星
日期:2016-07-03 06:20:00数据库技术版块每日发帖之星
日期:2016-07-02 06:20:00操作系统版块每日发帖之星
日期:2016-07-02 06:20:00
5 [报告]
发表于 2016-12-23 15:43 |只看该作者
赞一波~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP