banner
moeyy

moeyy

一条有远大理想的咸鱼。
github
mastodon
email

VPS主机部署Web应用防火墙Ngx_lua_waf抵抗CC攻击,保护数据安全

服务简介#

越来越多的人使用 VPS 主机建站,但是与虚拟主机或者管理型的服务器相比,个人 VPS 主机基本上是无管理型的,即主机商只负责 VPS 主机的网络畅通,至于技术上的问题都得靠自己来解决。网站经常会受到一些自动化工具的扫描、注入、溢出挂马等等的情况。

image

商用虚拟主机有专门的运维工程师做好安全防范工作,正如上面所说 VPS 等等的虚拟云机是没有什么专门人员辅助运维的,这需要我们自己来进行操作,今天给他家介绍一款非常不错的 Nginx(openresty)WEB 应用防火墙模块 ngx_lua_waf。ngx_lua_waf 一个基于 ngx_lua 的 web 应用防火墙,代码非常的简单,开发者的初衷是方便使用,在高性能的同时保留其轻量级的特点。

Ngx_lua_waf 的主要作用#

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

这里我们可以看出 Ngx_lua_waf 的功能还是相当丰富的,可以有效的拒绝大部分扫描攻击,对于防止网站被挂马有着非常显著的作用。

安装要求#

Ngx_lua_waf 的作者推荐使用 lujit2.1 做 lua 的支持,ngx_lua 如果是 0.9.2 以上版本,建议正则过滤函数改为 ngx.re.find,匹配效率会提高三倍左右。我们的 Nginx 只需要编译 lua 支持就可以部署这款 WEB 应用防火墙,为我们的服务器添加一道安全门。

使用说明#

我们假设 nginx 安装路径为:/usr/local/nginx/conf/

我们只需要把 ngx_lua_waf 下载到 conf 目录下,解压命名为 waf 即可,在 nginx.conf 的 http 段添加,或者单独写作一个 conf 文件,使用 include 引用到 nginx.conf 中亦可。

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;
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

配置 config.lua 里的 waf 规则目录 (一般在 waf/conf/ 目录下)

RulePath = "/usr/local/nginx/conf/waf/wafconf/"

然后我们按照调试准则,先运行 nginx -t 检测一下配置是否正确,如果提示成功加载我们再重启 nginx 即可。

配置文件详细说明:#

  • 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~~]]
  •     -- 警告内容,可在中括号内自定义
  •     备注:不要乱动双引号,区分大小写
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。