- 添加速率限制中间件,防止API滥用和DDoS攻击 - 添加可疑请求检测,基于行为模式识别攻击 - 添加输入清理和验证,防止命令注入和XSS攻击 - 更新middleware.ts,集成所有安全功能 - 添加fail2ban安装脚本,防止SSH暴力破解 - 不依赖IP黑名单,适用于所有攻击者 安全功能: - API速率限制:每分钟100次请求 - 认证速率限制:每分钟5次请求 - 自动检测可疑请求模式 - 输入清理和验证 - 详细的安全日志记录
66 lines
2.2 KiB
Markdown
66 lines
2.2 KiB
Markdown
# 开源安全解决方案推荐
|
||
|
||
## 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:立即实施
|
||
1. **fail2ban** - 防止SSH暴力破解
|
||
2. **速率限制中间件** - 防止API滥用
|
||
3. **输入验证增强** - 防止命令注入
|
||
|
||
### 优先级2:短期实施
|
||
1. **CrowdSec** - 威胁检测和IP黑名单
|
||
2. **helmet.js** - 安全HTTP头
|
||
3. **请求监控和日志** - 异常行为检测
|
||
|
||
### 优先级3:长期优化
|
||
1. **ModSecurity** - 完整的WAF保护
|
||
2. **SELinux策略优化** - 细粒度权限控制
|
||
3. **安全审计工具** - 定期安全检查
|
||
|