- 添加速率限制中间件,防止API滥用和DDoS攻击 - 添加可疑请求检测,基于行为模式识别攻击 - 添加输入清理和验证,防止命令注入和XSS攻击 - 更新middleware.ts,集成所有安全功能 - 添加fail2ban安装脚本,防止SSH暴力破解 - 不依赖IP黑名单,适用于所有攻击者 安全功能: - API速率限制:每分钟100次请求 - 认证速率限制:每分钟5次请求 - 自动检测可疑请求模式 - 输入清理和验证 - 详细的安全日志记录
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
/**
|
||
* IP黑名单管理
|
||
* 用于阻止已知的攻击者IP
|
||
*/
|
||
|
||
// 已知的攻击者IP列表
|
||
const BLOCKED_IPS = [
|
||
"193.142.147.209", // 恶意命令执行的攻击者IP
|
||
"94.154.35.154", // 恶意脚本服务器IP
|
||
"45.172.152.74", // SSH暴力破解IP
|
||
"181.46.131.55", // SSH暴力破解IP
|
||
"220.80.223.144", // SSH暴力破解IP
|
||
"181.104.58.194", // SSH暴力破解IP
|
||
"185.141.132.26", // SSH暴力破解IP
|
||
"80.253.31.232", // SSH暴力破解IP
|
||
"167.99.49.89", // SSH暴力破解IP
|
||
"128.199.168.119", // SSH暴力破解IP
|
||
"83.142.209.191", // SSH暴力破解IP
|
||
"171.244.141.86", // SSH暴力破解IP
|
||
];
|
||
|
||
/**
|
||
* 检查IP是否在黑名单中
|
||
*/
|
||
export function isBlockedIP(ip: string | null): boolean {
|
||
if (!ip) return false;
|
||
|
||
// 检查精确匹配
|
||
if (BLOCKED_IPS.includes(ip)) {
|
||
return true;
|
||
}
|
||
|
||
// 检查IP段(如果需要)
|
||
// 例如:192.168.1.0/24
|
||
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 获取客户端真实IP
|
||
*/
|
||
export function getClientIP(request: Request): string | null {
|
||
// 从请求头中获取真实IP(考虑代理情况)
|
||
const forwarded = request.headers.get("x-forwarded-for");
|
||
if (forwarded) {
|
||
// x-forwarded-for可能包含多个IP,取第一个
|
||
const ips = forwarded.split(",").map(ip => ip.trim());
|
||
return ips[0] || null;
|
||
}
|
||
|
||
const realIP = request.headers.get("x-real-ip");
|
||
if (realIP) {
|
||
return realIP;
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|