- 创建 /api/enhance 路由,实现图片变清晰API集成 - 在图片标注组件中添加变清晰按钮(Sparkles图标) - 在相册页面添加变清晰按钮 - 系统设置:将抠图设置改名为本地AI设置,添加变清晰API配置 - 支持同步和异步两种模式 - 自动上传到S3存储桶并保存到数据库 - 在相册和出图记录中显示处理后的图片
278 lines
6.0 KiB
Markdown
278 lines
6.0 KiB
Markdown
# 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连接。
|
||
|