• 欢迎访问db1024网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏db1024吧

使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击

网络资源 Liam 12个月前 (04-28) 217次浏览 0个评论 扫描二维码
文章目录[隐藏]

前言

现在对于很多站长来说,或多或少的都会遇到CC攻击,而防御最好的办法就是套CDN,比如国外的CloudFlare,而CF很多时候速度并不是很快,在很多地方也被屏蔽了,所以体验不是很好。这时候我们可以用脚本来防一下,之前发过一个防CC脚本,查看:Linux VPS防CC攻击一键脚本,带微信提醒,由于需要访问日志,所以效果并不是很好,稍微大点的CC都会扛不住,所以该脚本在一些情况下不是很适合。

这里再讲个防CC教程,使用Nginx+Lua设置WAF防火墙来防CC,还可以拦截Url关键词等,其优点Nginx占用小,高并发的优势,以及Lua语言的轻快,并在用户访问前就可以处理掉攻击,效果还是很不错的。

由于配置前需要编译Lua模块,而OneinStackLNMP一键包中OpenResty自带Lua模块,所以博主建议使用该一键包安装网站环境。

LNMP安装

先去OneinStack网站获取一键包,访问地址:https://oneinstack.com/auto/Nginx选择OpenResty;如果内存小于1GMysql不能大于5.5,然后其它自己看着办。

使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击 - Rat's Blog

将获取到的一键包复制到SSH客户端运行,直到安装完成。

LNMP操作命令:

#操作前请在oneinstack目录下操作 cd oneinstack #添加网站 ./vhost.sh #删除网站 ./vhost.sh del #添加其它组件 ./addons.sh #网站备份 ./backup_setup.sh #更新版本 ./upgrade.sh

更多命令及图文操作查看:https://oneinstack.com/install/

相关目录:

#数据库文件夹,请将phpMyAdmin改成不容易猜到的名字比如xx,然后可通过IP:xx访问数据库 /data/wwwroot/default #网站目录 /data/wwwroot #网站配置文件 /usr/local/openresty/nginx/conf/vhost 

添加网站后,使用FTP工具将程序上传至根目录,建立数据库,打开网站配置就可以了。

配置WAF防火墙

这里使用Github很火的一个基于ngx_luaWAF防火墙脚本来防CC攻击和拦截Url关键词等。其功能如下:

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

Github地址:https://github.com/loveshell/ngx_lua_waf

先把ngx_lua_waf下载到conf目录下:

cd /usr/local/openresty/nginx/conf wget https://www.moerats.com/usr/down/waf.tar.gz tar zxf waf.tar.gz rm -rf waf.tar.gz 

再编辑/usr/local/openresty/nginx/conf/nginx.conf,将以下代码放入http{}中。

lua_shared_dict limit 10m; lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua"; init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua"; access_by_lua_file "/usr/local/openresty/nginx/conf/waf/waf.lua";

然后运行service nginx restart重启nginx,使其生效。

配置文件:

#配置文件路径 /usr/local/openresty/nginx/conf/waf/config.lua #详细参数,具体自己看着设置 RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/" --规则存放目录 attacklog = "on" --是否开启攻击信息记录,需要配置logdir logdir = "/data/wwwlogs/" --log存储目录,该目录需要用户自己新建,需要nginx用户的可写权限 UrlDeny="on" --是否拦截url访问 Redirect="on" --是否拦截后重定向 CookieMatch = "on" --是否拦截cookie攻击 postMatch = "off" --是否拦截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攻击 CCrate = "10/60" --设置cc攻击频率,单位为秒. --默认1分钟同一个IP只能请求同一个地址10次 

过滤规则:

#过滤规则在/usr/local/openresty/nginx/conf/waf/wafconf下。 #规则可根据需求自行调整,每条规则需换行,或者用|分割 args里面的规则get参数进行过滤的 url是只在get请求url过滤的规则         post是只在post请求过滤的规则         whitelist是白名单,里面的url匹配到不做过滤         user-agent是对user-agent的过滤规则 #默认开启了get和post过滤的,需要开启cookie过滤,编辑waf.lua取消部分--注释即可。 #日志文件名称格式如下:虚拟主机名_sec.log 

白名单设置:

#ip白名单 修改/usr/local/openresty/nginx/conf/waf/wafconf/config.lua中的ipWhitelist。 可以填写多个ip,多个ip中用,分割,例如{"127.0.0.1","192.155.1.1"}。  #url白名单 修改/usr/local/openresty/nginx/conf/waf/wafconf/whiteurl,一行一个,取字符段验证,只取uri,通常用于api链接放行,且不能带参数。 例如https://xxx/Rats.php?xx,我们填入^/Rats.php$即可放行全部以/Rats.php开头的uri。 

效果测试:
拦截CC攻击返回503错误。
使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击 - Rat's Blog

触发关键词会被防火墙拦截。
使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击 - Rat's Blog

注意ngx_lua_waf默认拦截phpMyAdmin目录,请修改成其它名称访问数据库。

部分参考:https://www.94ish.me/1730.html


db1024 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击
喜欢 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址