最近阿里云cdn出现了被盗刷的问题,由于我是后付费,一天就要跑100多大洋

我抓紧排查了一下,进入cdn主页,我直接天塌了,请看图片
在这里插入图片描述
这个shit商家竟然让我自己想解决办法

于是我在评论看到:

aliyun的员工每天什么都不用干,只要去访问别人的cdn就可以了

分享自己的解决办法, 先限流避免大额消费,下载离线日志,分析高频IP,拉入黑名单。开启运营报表,自动监控高频IP

第一步:设置cdn限流,这个方法可以让你省点经费,但是超过限制后,cdn就没作用了
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5fcef51ef71040c897950905e4f03a31.png

第二步:下载离线日志,把所有文件都下载,然后解压到同一个文件夹里
在这里插入图片描述
第三步:写了一段nodejs代码,自动读取目录里的文件分析,最后把ip段添加到黑名单里

const fs = require('fs');
const path = require('path');

// 用于存储提取到并处理后的IP地址(最后一位改成0/24格式)的数组
const ipArray = [];

// 读取文件夹下所有文件内容的函数
function readAllFilesInFolder(folderPath) {
    const files = fs.readdirSync(folderPath);
    files.forEach((file) => {
        const filePath = path.join(folderPath, file);
        const stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            readAllFilesInFolder(filePath);
        } else if (stats.isFile()) {
            const content = fs.readFileSync(filePath, 'utf8');
            const lines = content.split('\n');
            lines.forEach((line) => {
                // 这里假设只要包含链接就算符合筛选条件,可按需调整
                if (line.includes('https://www.syjsq.com/soft/%E9%97%AA%E6%B8%B8%E7%BD%91%E6%B8%B8%E5%8A%A0%E9%80%9F%E5%99%A8%20Setup%202.7.0.exe')) {
                    // 简单假设IP地址是以空格隔开在该行的后半部分,提取IP的简单逻辑,可按实际格式调整
                    const parts = line.split(' ');
                    const ip = parts[parts.length - 1].trim();
                    if (ip.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)) {
                        const ipSegments = ip.split('.');
                        ipSegments[3] = '0/24';
                        const modifiedIp = ipSegments.join('.');
                        ipArray.push(modifiedIp);
                    }
                }
            });
        }
    });
}

const logFolderPath = './log'; // 这里替换成实际的log文件夹路径
readAllFilesInFolder(logFolderPath);

// 用于统计每个IP段出现次数的对象
const ipCountObj = {};
ipArray.forEach((ip) => {
    ipCountObj[ip] = (ipCountObj[ip] || 0) + 1;
});

// 将统计结果转换为数组,每个元素是包含IP段和对应次数的对象
const resultArray = Object.keys(ipCountObj).map((key) => ({
    ipSegment: key,
    count: ipCountObj[key]
}));

// 按照出现次数进行降序排序
resultArray.sort((a, b) => b.count - a.count);

console.log(resultArray);

这个是目录结构
在这里插入图片描述

执行node index.js 发现高频ip全部来自于山东(正好这几天也有很多山东用户反馈网站打不开,有可能阿里云也针对山东ip进行了防护)
在这里插入图片描述
最后把高频ip,全部添加到黑名单,过了一天时间,目前没有发现被盗刷的情况了。
在这里插入图片描述
以上就是本次的处理方案,目前还在持续观测,如果还不能解决,我准备转到百度云加速了。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐