UA拦截和URL关键词拦截,大大降低因CC攻击导致的资源消耗

WordPress技术博客wp应用技术

网站运行一段时间后,CPU老是在一段时间突然负载100%,导致网站无法访问

很多的用户在网站运行一段时间之后会遇到CPU100%满负载的情况,导致网站访问慢或者网站引擎关闭,数据库关闭导致直接无法访问,或者造成500错误、502错误。

这种情况的发生大部分的原因是随着技术的发展,互联网上越来越多稀奇古怪的爬虫造成的,各种不同目的的爬虫在互联网上夜以继日的爬取数据。

还有就是一些恶意机器人在无时不刻的想要用各种手段获取用户权限、或者找到漏洞,将木马、病毒、钓鱼信息篡改到我们的网站中。

特别是一些做了推广广告的用户,会非常迅速的被机器人和爬虫所关注到,而遭到攻击。

这些问题会造成对网站的严重影响,占用资源、网站访问慢等问题,因此很多人安装了防火墙,如宝塔的付费防火墙,开启了cc防御,在严重被攻击时,将cc防御开到增强模式,但这种情况并不能完全杜绝,开了增强模式的防火墙cc防御之后的十分钟,会降低到正常负载水平,一旦关闭了增强模式,一段时间之后,又会卷土重来,给网站的维护运营来带非常大的麻烦。

下面就来说说,针对恶意机器人和恶意爬虫两个方面,如何进行防御,避免这两种情况导致的cpu报警。

UA拦截,屏蔽大部分的恶意爬虫

设置网站服务器的用户代理(User-Agent,简称UA)拦截来屏蔽大部分的恶意爬虫是一种常见的安全措施。用户代理字符串是在HTTP请求头中用来标识请求来源的一段文本信息。通过分析用户代理,可以识别出请求是否来自于常见的搜索引擎爬虫、浏览器、或是某些恶意爬虫。

用户代理字符串识别:用户代理字符串(UA)通常包含设备类型、浏览器类型和版本等信息。通过识别这些信息,可以判断请求的合法性。

由此可见,我们只需要将一些常见的恶意爬虫UA进行拦截,即可完全避免这些爬虫疯狂的爬取我们的网站,造成资源不足。

如果你使用了防火墙,可以将下面txt文件下载,将这些我们所归纳的恶意UA加入你的防火墙-UA黑名单中:

恶意UAtxt下载

如果上面的恶意UA加入了还存在被cc攻击的情况,那么你可以开启防火墙cc防御的增强,然后过几分钟看看拦截的情况,查看是否有新的恶意UA,如下图:

UA拦截和URL关键词拦截,大大降低因CC攻击导致的资源消耗

如图所示,可以见UA显示为Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/),在CC防御的增强模式中,三次无法通过验证被拦截。

这种情况之下,CC拦截肯定不止一个,会有多个拦截的日志信息,查看这些日志就可以看到一些被拦截的UA都是相同的。

那么我们加入UA的关键词  MJ12bot 到UA黑名单里面去,这样相同的UA就会被拦截了。

URL拦截,禁止机器人的恶意链接

机器人的恶意链接访问也是CC攻击发生时的一个重要的原因,机器人会通过一些常见的攻击注入链接来试图找到突破点,因此我们禁用一些常见的URL恶意的关键词,也可以将这些内容快速屏蔽。

可以下载下面的txt文件,将一些常见的恶意url关键词加入到你的防火墙中的url拦截中

恶意URL关键词

 

没有购买防火墙,通过重定向进行防御

如果没有购买防火墙,那么你可以根据你的WEB引擎,编写一些重定向规则,将恶意的UA和URL关键词重定向到403状态,这个方法也是简单可行的。

以这三个UA为例:curl、scrapy、httpclient

例如apache引擎,我们可以使用.htaccess文件来实现用户代理拦截。

示例:

SetEnvIfNoCase User-Agent "curl" bad_bot
SetEnvIfNoCase User-Agent "scrapy" bad_bot
SetEnvIfNoCase User-Agent "httpclient" bad_bot
<RequireAll>
Require all granted
Require not env bad_bot
</RequireAll>

在Nginx服务器中,可以在配置文件中添加拦截规则

示例:

if ($http_user_agent ~* "(curl|scrapy|httpclient)") {
return 403;
}

下一篇:

文章评论

您好!请登录

取消回复
    展开更多