lovart3/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

6.0 KiB
Raw Blame History

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连接:

  1. 检查网络连接

    ping your-server-ip
    
  2. 检查SSH服务状态(通过其他方式,如控制台)

    systemctl status sshd
    
  3. 检查防火墙

    iptables -L -n | grep 22
    firewall-cmd --list-all  # 如果使用firewalld
    
  4. 检查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)

⚠️ 注意事项

  1. 不可变标志的限制

    • 设置不可变标志后,即使是root用户也无法直接修改文件
    • 必须先移除标志才能修改配置
  2. 备份的重要性

    • 定期检查备份目录
    • 确保备份文件完整
  3. 监控脚本的维护

    • 定期检查监控日志
    • 确保定时任务正常运行
  4. 服务重启的影响

    • SSH服务重启会断开现有连接
    • 建议在维护窗口进行配置修改

🔒 安全建议

  1. 使用SSH密钥认证

    • 禁用密码认证(如果可能)
    • 使用强密码(如果必须使用密码)
  2. 限制SSH访问

    • 使用防火墙限制SSH访问IP
    • 使用fail2ban防止暴力破解
  3. 定期审计

    • 定期检查SSH配置
    • 审查SSH访问日志
    • 检查异常登录
  4. 保持更新

    • 定期更新SSH软件包
    • 应用安全补丁

📝 检查清单

  • SSH配置文件已设置不可变标志
  • SSH目录和文件权限已正确设置
  • SSH配置已备份
  • SSH配置监控脚本已安装并运行
  • SSH服务保护脚本已安装并运行
  • 定时任务已设置
  • SSH服务已设置为开机自启
  • CrowdSec SSH监控已启用
  • fail2ban SSH保护已启用

🎯 总结

通过多层保护措施,SSH连接现在受到以下保护:

  1. 文件系统级保护: 配置文件不可变,防止直接修改
  2. 配置监控: 自动检测和恢复配置修改
  3. 服务保护: 自动确保SSH服务运行
  4. 日志记录: 完整记录所有安全事件
  5. 外部监控: CrowdSec和fail2ban提供额外保护

这些措施协同工作,确保恶意程序无法修改或阻止SSH连接。