VPS建站

解决VPS网站小型CC攻击的方法-CloudFlare+Nginx+iptables防火墙

最近网站遇到一波CC攻击,导致服务器访问不稳定。从这多年建站的经验来看,网站遭受攻击是非常平常的事情,最开始还可能想着去处理一下,后来没有时间和精力就懒得管了。但是这次的攻击持续时间有点长,影响了网站的“正常”访问。

其实解决VPS网站小型的CC攻击的基本思路我在

二、快速阻止国外IP访问网站

一般来说,攻击者用的肉机有一半以上都来自国外,所以如果你的网站为中文网站的话,为了解除攻击给网站带来的访问困扰,此时可以直接拒绝国外的IP访问网站。

通过分析我们可以看到攻击者用的美国IP居多,我们也可以单独设置某个国家的IP不能访问。打开CloudFlare的防火墙。

这里就可以设置非国内IP用户不能访问了,CloudFlare的防火墙还提供了Cookie、IP地址、主机名等规则,你可以灵活选择。

一般来说CloudFlare设置为质询就可以了,当然你也可以选择直接阻止。

此时,我们在CloudFlare的防火墙日志中能看到已经阻止的IP了。

三、仅允许CloudFlare IP访问

通过上面的操作,一般来说已经阻挡了一半以上的攻击力量了。此时,我们还需要进入服务器做进一步的设置:仅允许CloudFlare IP访问。

Nginx仅允许CloudFlare IP访问请参考:

1.网站仅允许CloudFlare IP访问 隐藏源站IP 防止源站被扫描 自动添加IP

想使用VPS的iptables防火墙仅允许CloudFlare IP访问,请参考:

1.防止CC攻击利用iptables设置白名单允许Cloudflare访问

有些服务器在开启CDN后获取到的IP会是CDN的IP,并不是真实用户的IP地址,此时我们需要对Nginx或者Apache做进一步的调整。参考:

2.启用CDN后网站获取用户真实IP:Cloudflare CDN真实IP地址(Nginx,Apache)

四、分析日志自动启用防火墙

3.1  一键屏蔽指定国家IP访问

  1. https://github.com/iiiiiii1/Block-IPs-from-countries

原理是下载指定国家的IP段,然后将IP段添加到iptables规则当中,直接执行以下命令:

wget https://raw.githubusercontent.com/iiiiiii1/Block-IPs-from-countries/master/block-ips.sh
chmod +x block-ips.sh
./block-ips.sh

然后会要你选择是封禁IP还是解封IP。

选择封禁IP后会让你输入国家代码,请到这里查看:http://www.ipdeny.com/ipblocks,例如美国就是输入us,确定好完成对整个US的IP封禁。

2.3  使用脚本定时检测日志

我们能否通过分析日志来确认恶意的访问请求呢?我们可以监控服务器日志,将请求出错的访问者 IP 放入一个 List 特别观察,在一段时间内如果没有太多的出错,我们就将其从列表中移除,否则,错误太多达到警戒值就调用 iptable 将其禁封。参考:

1.Nginx自动检测日志屏蔽IP地址

五、总结

从使用体验来看,解决VPS网站小型的CC攻击最有效的方法就是接入CloudFlare开启五秒防护,利用CloudFlare自带的防火墙可以对攻击者的IP进行区别对待,从而最大限度地提高防御效果。

另外,防御攻击还有一个关键是主机商,像阿里云腾讯云这类的云主机,一旦遭遇到攻击直接就是黑洞,根本就没有给站长施展“拳脚”的机会,黑洞24小时过了攻击者也“散场”了。

文章出自:挖站否 https://wzfou.com/vps-cc-fanghu/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

文章更新于: %s = human-readable time difference 上午2:30

Qi

关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。

查看评论