惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

Rat's Blog - lnmp

宝塔面板LNMP开启Brotli压缩,可提高网站加载速度 - Rat's Blog LNMP中一些隐藏的安装脚本及目录详解 - Rat's Blog LNMP一键安装包V1.5测试版已发布 - Rat's Blog LNMP环境下,利用Nginx反代Google网站的方法 - Rat's Blog LNMP环境下WordPress后台只显示一个主题预览的解决方法 - Rat's Blog LNMP环境下php-fpm启动失败的解决方法 - Rat's Blog LNMP环境下使用CDN后获取访客真实IP的方法 - Rat's Blog lnmp1.4安装及部署typecho或其它博客教程 - Rat's Blog LNMP一键安装后Nginx不能自启的解决方法 - Rat's Blog
使用OneinStack搭建网站LNMP环境,并配置WAF防火墙防CC攻击 - Rat's Blog
博主: Rat's · 2018-05-02 · via Rat's Blog - lnmp

前言

现在对于很多站长来说,或多或少的都会遇到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,然后其它自己看着办。

请输入图片描述

将获取到的一键包复制到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错误。
请输入图片描述

触发关键词会被防火墙拦截。
请输入图片描述

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

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


版权声明:本文为原创文章,版权归 Rat's Blog 所有,转载请注明出处!

本文链接:https://www.moerats.com/archives/611/

如教程需要更新,或者相关链接出现404,可以在文章下面评论留言。