- 创建 /api/enhance 路由,实现图片变清晰API集成 - 在图片标注组件中添加变清晰按钮(Sparkles图标) - 在相册页面添加变清晰按钮 - 系统设置:将抠图设置改名为本地AI设置,添加变清晰API配置 - 支持同步和异步两种模式 - 自动上传到S3存储桶并保存到数据库 - 在相册和出图记录中显示处理后的图片
6.0 KiB
6.0 KiB
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. 定时任务
监控任务
*/5 * * * * /usr/local/bin/monitor-ssh-config.sh
- 频率: 每5分钟
- 功能: 监控SSH配置文件
服务保护任务
*/2 * * * * /usr/local/bin/protect-ssh-service.sh
- 频率: 每2分钟
- 功能: 确保SSH服务运行
🔧 使用方法
安装保护措施
# 上传脚本到服务器
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配置,请按以下步骤操作:
# 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
查看监控日志
# SSH配置监控日志
tail -f /var/log/ssh-config-monitor.log
# SSH服务保护日志
tail -f /var/log/ssh-service-protect.log
# 查看所有SSH相关日志
journalctl -u sshd -f
验证保护状态
# 检查不可变标志
lsattr /etc/ssh/sshd_config
# 检查SSH服务状态
systemctl status sshd
# 检查定时任务
crontab -l | grep ssh
# 检查监控脚本
ls -la /usr/local/bin/*ssh*.sh
🚨 应急处理
SSH服务无法启动
如果SSH服务无法启动,请检查:
# 1. 检查SSH配置语法
sshd -t
# 2. 查看SSH服务日志
journalctl -u sshd -n 50
# 3. 检查端口是否被占用
ss -tlnp | grep 22
# 4. 检查防火墙规则
iptables -L -n | grep 22
配置文件被修改
如果检测到配置文件被修改:
# 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连接:
-
检查网络连接
ping your-server-ip -
检查SSH服务状态(通过其他方式,如控制台)
systemctl status sshd -
检查防火墙
iptables -L -n | grep 22 firewall-cmd --list-all # 如果使用firewalld -
检查SSH配置
sshd -t cat /etc/ssh/sshd_config | grep -E 'Port|PermitRootLogin|PasswordAuthentication'
📊 监控和告警
CrowdSec监控
CrowdSec已配置监控SSH相关活动:
- SSH暴力破解检测
- 异常登录尝试
- 可疑SSH活动
查看CrowdSec警报:
cscli alerts list | grep ssh
系统日志
SSH相关系统日志位置:
/var/log/auth.log(Ubuntu/Debian)/var/log/secure(CentOS/RHEL)journalctl -u sshd(systemd)
⚠️ 注意事项
-
不可变标志的限制
- 设置不可变标志后,即使是root用户也无法直接修改文件
- 必须先移除标志才能修改配置
-
备份的重要性
- 定期检查备份目录
- 确保备份文件完整
-
监控脚本的维护
- 定期检查监控日志
- 确保定时任务正常运行
-
服务重启的影响
- SSH服务重启会断开现有连接
- 建议在维护窗口进行配置修改
🔒 安全建议
-
使用SSH密钥认证
- 禁用密码认证(如果可能)
- 使用强密码(如果必须使用密码)
-
限制SSH访问
- 使用防火墙限制SSH访问IP
- 使用fail2ban防止暴力破解
-
定期审计
- 定期检查SSH配置
- 审查SSH访问日志
- 检查异常登录
-
保持更新
- 定期更新SSH软件包
- 应用安全补丁
📝 检查清单
- SSH配置文件已设置不可变标志
- SSH目录和文件权限已正确设置
- SSH配置已备份
- SSH配置监控脚本已安装并运行
- SSH服务保护脚本已安装并运行
- 定时任务已设置
- SSH服务已设置为开机自启
- CrowdSec SSH监控已启用
- fail2ban SSH保护已启用
🎯 总结
通过多层保护措施,SSH连接现在受到以下保护:
- 文件系统级保护: 配置文件不可变,防止直接修改
- 配置监控: 自动检测和恢复配置修改
- 服务保护: 自动确保SSH服务运行
- 日志记录: 完整记录所有安全事件
- 外部监控: CrowdSec和fail2ban提供额外保护
这些措施协同工作,确保恶意程序无法修改或阻止SSH连接。