WAF 全称是「Web application firewall」,中文就是 Web 应用防火墙,之前我一直是用的 Cloudflare 提供的 WAF,但由于他们的路由都在美国,延迟很高,所以我打算自己在本地搭建一个。
当你搭建好一个网站后,总有些莫名其妙的访问,这些并不是有人在入侵你的网站,都是些无聊的脚本,正在到处XJB扫描。为了避免这些无聊的扫描,我们就需要一个防火墙来阻止这些访问。WAF 能够根据规则拦截例如爬虫、SQL注入、恶意扫描、恶意请求,从而保护你的网站或应用的安全。
ngxluawaf是一个基于lua-nginx-module(openresty)的web应用防火墙,开源地址: https://github.com/loveshell/ngxluawaf。
它的一般用途:
防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止webshell上传
LNMP 一键安装包本身是有 lua 支持的,将 lnmp.conf 内新增一行即可。
Enable_Nginx_Lua='y'
如果没有安装过 LNMP,修改后安装的 LNMP 就是支持 lua 的。 如果已经安装好了,也是一样修改,然后在 LNMP 安装包目录下执行 ./upgrade.sh nginx 升级 Nginx,升级完成就支持 lua 了。
./upgrade.sh nginx
关于 LNMP 一键安装包的教程可以在这里查看: https://lnmp.org/install.html
wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip -O ngx_lua_waf.zip && unzip ngx_lua_waf.zip && mv ngx_lua_waf-master /usr/local/nginx/conf/waf
编辑/usr/local/nginx/conf/nginx.conf文件,在server_tokens off;下添加以下代码:
/usr/local/nginx/conf/nginx.conf
server_tokens off;
lua_package_path "/usr/local/nginx/conf/waf/?.lua"; lua_shared_dict limit 10m; init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
修改后如上图所示即可,记得保存。
编辑你想要启用 ngxluawaf 的网站的conf文件,它们位于/usr/local/nginx/conf/vhost/内。
conf
/usr/local/nginx/conf/vhost/
在server行下添加以下代码:
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
如上图所示即可。
使用命令lnmp nginx reload重新加载 Nginx。如果不报错就说明配置已经生效。
lnmp nginx reload
你可以通过访问https://域名/test.php?id=../etc/passwd来测试 ngxluawaf 是否已经启用。
https://域名/test.php?id=../etc/passwd
如果出现如上图所示内容,即说明已经正确设置好了。
按照上面的步骤操作,你就已经配置好了一个基本的 WAF 了,但想要做到更多,你可以修改配置文件/usr/local/nginx/conf/waf/config.lua
/usr/local/nginx/conf/waf/config.lua
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --规则存放目录 attacklog = "off" --是否开启攻击信息记录,需要配置logdir logdir = "/usr/local/nginx/logs/hack/" --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限 UrlDeny="on" --是否拦截url访问 Redirect="on" --是否拦截后重定向 CookieMatch = "on" --是否拦截cookie攻击 postMatch = "on" --是否拦截post攻击 whiteModule = "on" --是否开启URL白名单 black_fileExt={"php","jsp"} --填写不允许上传文件后缀类型 ipWhitelist={"127.0.0.1"} --ip白名单,多个ip用逗号分隔 ipBlocklist={"1.0.0.1"} --ip黑名单,多个ip用逗号分隔 CCDeny="on" --是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;) CCrate = "100/60" --设置cc攻击频率,单位为秒. --默认1分钟同一个IP只能请求同一个地址100次 html=[[Please go away~~]] --警告内容,可在中括号内自定义 备注:不要乱动双引号,区分大小写
其实这个只能防一防脚本,真的想搞直接一发DDos就没了。
本文主要内容为如何提升搜索引擎 i-Book.in 内的资源下载速度、介绍IPFS网络以及一些奇技淫巧。
这大概是墙内开发者必备的一个东西之一了。
本问题主要影响忘记密码时的找回密码功能以及新用户注册,系统给新用户发送的密码设置功能。可通过以下两个步骤解决此问题
虽然还有很多功能还没开发,可还是不得不提前退场。很多事情并不以个人意志为转移。
本文将简单介绍bootstrap 两种部署第三方字体的方法。
目录
热门标签
更多语言
站点信息