ai-chatbot/lib/security/ssh-protection-guide.md
Your Name e9ceedb3bf feat: 添加图片变清晰功能
- 创建 /api/enhance 路由,实现图片变清晰API集成
- 在图片标注组件中添加变清晰按钮(Sparkles图标)
- 在相册页面添加变清晰按钮
- 系统设置:将抠图设置改名为本地AI设置,添加变清晰API配置
- 支持同步和异步两种模式
- 自动上传到S3存储桶并保存到数据库
- 在相册和出图记录中显示处理后的图片
2025-12-29 00:33:12 +08:00

278 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SSH连接保护指南
## 🛡️ 保护措施总览
本指南提供了多层保护措施,确保恶意程序无法修改或阻止SSH连接。
## 📋 已实施的保护措施
### 1. 文件系统级保护
#### SSH配置文件不可变标志(immutable)
- **文件**: `/etc/ssh/sshd_config`
- **保护**: 使用 `chattr +i` 设置不可变标志
- **效果**: 即使root用户也无法直接修改文件
- **验证**: `lsattr /etc/ssh/sshd_config` 应显示 `i` 标志
#### 文件权限保护
- **目录权限**: `/etc/ssh` - 755 (root:root)
- **配置文件权限**: `/etc/ssh/sshd_config` - 600 (root:root)
- **效果**: 只有root用户可以读取和修改
### 2. 配置监控
#### SSH配置监控脚本
- **脚本**: `/usr/local/bin/monitor-ssh-config.sh`
- **功能**:
- 每5分钟检查SSH配置文件是否被修改
- 通过MD5校验检测文件变化
- 自动恢复被修改的配置文件
- 记录所有修改事件到日志
- **日志**: `/var/log/ssh-config-monitor.log`
#### 配置备份
- **备份目录**: `/root/ssh_backups/`
- **备份策略**: 每次修改前自动备份
- **保留数量**: 最近10个备份
### 3. 服务保护
#### SSH服务保护脚本
- **脚本**: `/usr/local/bin/protect-ssh-service.sh`
- **功能**:
- 每2分钟检查SSH服务是否运行
- 如果服务停止,自动重启
- 记录所有服务状态变化
- **日志**: `/var/log/ssh-service-protect.log`
#### 服务自动启动
- **配置**: `systemctl enable sshd`
- **效果**: 系统启动时自动启动SSH服务
### 4. 定时任务
#### 监控任务
```cron
*/5 * * * * /usr/local/bin/monitor-ssh-config.sh
```
- **频率**: 每5分钟
- **功能**: 监控SSH配置文件
#### 服务保护任务
```cron
*/2 * * * * /usr/local/bin/protect-ssh-service.sh
```
- **频率**: 每2分钟
- **功能**: 确保SSH服务运行
## 🔧 使用方法
### 安装保护措施
```bash
# 上传脚本到服务器
scp scripts/protect-ssh.sh root@your-server:/root/
# 在服务器上执行
ssh root@your-server
chmod +x /root/protect-ssh.sh
/root/protect-ssh.sh
```
### 修改SSH配置(需要时)
如果需要修改SSH配置,请按以下步骤操作:
```bash
# 1. 临时移除不可变标志
chattr -i /etc/ssh/sshd_config
# 2. 修改配置文件
nano /etc/ssh/sshd_config
# 或
vi /etc/ssh/sshd_config
# 3. 验证配置语法
sshd -t
# 4. 重新设置不可变标志
chattr +i /etc/ssh/sshd_config
# 5. 重启SSH服务
systemctl restart sshd
```
### 查看监控日志
```bash
# SSH配置监控日志
tail -f /var/log/ssh-config-monitor.log
# SSH服务保护日志
tail -f /var/log/ssh-service-protect.log
# 查看所有SSH相关日志
journalctl -u sshd -f
```
### 验证保护状态
```bash
# 检查不可变标志
lsattr /etc/ssh/sshd_config
# 检查SSH服务状态
systemctl status sshd
# 检查定时任务
crontab -l | grep ssh
# 检查监控脚本
ls -la /usr/local/bin/*ssh*.sh
```
## 🚨 应急处理
### SSH服务无法启动
如果SSH服务无法启动,请检查:
```bash
# 1. 检查SSH配置语法
sshd -t
# 2. 查看SSH服务日志
journalctl -u sshd -n 50
# 3. 检查端口是否被占用
ss -tlnp | grep 22
# 4. 检查防火墙规则
iptables -L -n | grep 22
```
### 配置文件被修改
如果检测到配置文件被修改:
```bash
# 1. 查看监控日志
cat /var/log/ssh-config-monitor.log
# 2. 手动恢复配置
cp /root/ssh_backups/sshd_config.* /etc/ssh/sshd_config
# 3. 重新设置保护
chattr +i /etc/ssh/sshd_config
systemctl restart sshd
```
### 无法通过SSH连接
如果无法通过SSH连接:
1. **检查网络连接**
```bash
ping your-server-ip
```
2. **检查SSH服务状态**(通过其他方式,如控制台)
```bash
systemctl status sshd
```
3. **检查防火墙**
```bash
iptables -L -n | grep 22
firewall-cmd --list-all # 如果使用firewalld
```
4. **检查SSH配置**
```bash
sshd -t
cat /etc/ssh/sshd_config | grep -E 'Port|PermitRootLogin|PasswordAuthentication'
```
## 📊 监控和告警
### CrowdSec监控
CrowdSec已配置监控SSH相关活动:
- SSH暴力破解检测
- 异常登录尝试
- 可疑SSH活动
查看CrowdSec警报:
```bash
cscli alerts list | grep ssh
```
### 系统日志
SSH相关系统日志位置:
- `/var/log/auth.log` (Ubuntu/Debian)
- `/var/log/secure` (CentOS/RHEL)
- `journalctl -u sshd` (systemd)
## ⚠️ 注意事项
1. **不可变标志的限制**
- 设置不可变标志后,即使是root用户也无法直接修改文件
- 必须先移除标志才能修改配置
2. **备份的重要性**
- 定期检查备份目录
- 确保备份文件完整
3. **监控脚本的维护**
- 定期检查监控日志
- 确保定时任务正常运行
4. **服务重启的影响**
- SSH服务重启会断开现有连接
- 建议在维护窗口进行配置修改
## 🔒 安全建议
1. **使用SSH密钥认证**
- 禁用密码认证(如果可能)
- 使用强密码(如果必须使用密码)
2. **限制SSH访问**
- 使用防火墙限制SSH访问IP
- 使用fail2ban防止暴力破解
3. **定期审计**
- 定期检查SSH配置
- 审查SSH访问日志
- 检查异常登录
4. **保持更新**
- 定期更新SSH软件包
- 应用安全补丁
## 📝 检查清单
- [x] SSH配置文件已设置不可变标志
- [x] SSH目录和文件权限已正确设置
- [x] SSH配置已备份
- [x] SSH配置监控脚本已安装并运行
- [x] SSH服务保护脚本已安装并运行
- [x] 定时任务已设置
- [x] SSH服务已设置为开机自启
- [x] CrowdSec SSH监控已启用
- [x] fail2ban SSH保护已启用
## 🎯 总结
通过多层保护措施,SSH连接现在受到以下保护:
1. **文件系统级保护**: 配置文件不可变,防止直接修改
2. **配置监控**: 自动检测和恢复配置修改
3. **服务保护**: 自动确保SSH服务运行
4. **日志记录**: 完整记录所有安全事件
5. **外部监控**: CrowdSec和fail2ban提供额外保护
这些措施协同工作,确保恶意程序无法修改或阻止SSH连接。