网站配置 nginx 来抵御 CC 攻击,下面配置主要是限制 HTTP 头字段来达到防御效果。老实讲,对于大流量 CC 攻击,在 nginx 上配置防御,效果并不明显,因为攻击流量已经到达 nginx 了,即使返回403还是444,服务器都会产生负载。
之所以配置出来,只是姥爷抛砖引玉,服务器前面不是还有个 CDN 吗?如果配置在 Cloudflare 上,岂不就把流量挡在了服务器之前。Cloudflare上的策略姥爷就不放出来了(暂列为网站机密,因网站这段时间还在遭受攻击),就类似下面的思路配置在 Cloudflare 就可以挡住大部分恶意流量。
#禁止非 Mozilla/ 请求头的访问
if ($http_user_agent !~* "Mozilla/") {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
#禁止Scrapy等爬虫工具的采集
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#限制http版本号
if ($server_protocol !~* "HTTP/2.0|HTTP/3.0|SPDY/3.1") {
return 403;
}
还是那句话,任何攻击都有特征的,分析日志,然后对应屏蔽才是最好的办法。