- 添加速率限制中间件,防止API滥用和DDoS攻击 - 添加可疑请求检测,基于行为模式识别攻击 - 添加输入清理和验证,防止命令注入和XSS攻击 - 更新middleware.ts,集成所有安全功能 - 添加fail2ban安装脚本,防止SSH暴力破解 - 不依赖IP黑名单,适用于所有攻击者 安全功能: - API速率限制:每分钟100次请求 - 认证速率限制:每分钟5次请求 - 自动检测可疑请求模式 - 输入清理和验证 - 详细的安全日志记录
2.2 KiB
2.2 KiB
开源安全解决方案推荐
1. 应用层安全(Next.js/Node.js)
1.1 速率限制 - @upstash/ratelimit 或 next-rate-limit
- 功能:防止暴力破解和DDoS攻击
- 安装:
pnpm add @upstash/ratelimit - 优势:基于Redis,支持分布式,自动阻止异常请求
1.2 请求验证 - zod + 自定义中间件
- 功能:严格验证所有输入,防止命令注入
- 已使用:项目中已有zod
- 增强:添加更严格的输入清理
1.3 安全头 - helmet.js
- 功能:设置安全HTTP头
- 安装:
pnpm add helmet - 优势:防止XSS、点击劫持等攻击
2. 服务器层安全
2.1 fail2ban - SSH暴力破解防护
- 功能:自动封禁多次失败登录的IP
- 安装:
dnf install fail2ban(CentOS) 或apt-get install fail2ban(Ubuntu) - 配置:监控SSH日志,自动封禁攻击者
2.2 ModSecurity - Web应用防火墙(WAF)
- 功能:检测和阻止SQL注入、XSS、命令注入等攻击
- 安装:需要编译安装或使用预编译版本
- 优势:行业标准,规则库丰富
2.3 CrowdSec - 现代安全引擎
- 功能:基于行为的威胁检测,社区共享IP黑名单
- 安装:
dnf install crowdsec或从官网安装 - 优势:轻量级,社区驱动,自动更新威胁情报
3. 系统层安全
3.1 SELinux - 强制访问控制
- 功能:限制进程权限,防止恶意代码执行
- 状态:CentOS/RHEL默认启用
- 配置:设置适当的SELinux策略
3.2 AppArmor - 应用沙箱(Ubuntu)
- 功能:限制应用程序的系统调用
- 安装:Ubuntu默认安装
- 配置:为Node.js应用创建配置文件
4. 推荐实施方案
优先级1:立即实施
- fail2ban - 防止SSH暴力破解
- 速率限制中间件 - 防止API滥用
- 输入验证增强 - 防止命令注入
优先级2:短期实施
- CrowdSec - 威胁检测和IP黑名单
- helmet.js - 安全HTTP头
- 请求监控和日志 - 异常行为检测
优先级3:长期优化
- ModSecurity - 完整的WAF保护
- SELinux策略优化 - 细粒度权限控制
- 安全审计工具 - 定期安全检查