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

209 lines
7.4 KiB
Bash
Executable File
Raw Permalink 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.

#!/bin/bash
# SSH配置保护脚本
# 用于防止恶意程序修改或阻止SSH连接
set -e
echo "=================================================================================="
echo "🛡️ SSH配置保护脚本"
echo "=================================================================================="
# 1. 设置SSH配置文件为不可变(immutable)
echo ""
echo "1. 设置SSH配置文件为不可变..."
if command -v chattr >/dev/null 2>&1; then
# 移除现有的不可变标志(如果存在)
chattr -i /etc/ssh/sshd_config 2>/dev/null || true
# 设置不可变标志
chattr +i /etc/ssh/sshd_config
echo " ✅ SSH配置文件已设置为不可变(immutable)"
# 验证设置
if lsattr /etc/ssh/sshd_config | grep -q 'i'; then
echo " ✅ 验证成功:文件已设置为不可变"
else
echo " ⚠️ 警告:无法验证不可变标志"
fi
else
echo " ⚠️ chattr命令不可用,跳过不可变标志设置"
fi
# 2. 设置SSH目录权限
echo ""
echo "2. 设置SSH目录权限..."
chmod 755 /etc/ssh
chmod 600 /etc/ssh/sshd_config
chown root:root /etc/ssh/sshd_config
echo " ✅ SSH目录和文件权限已设置"
# 3. 创建SSH配置备份
echo ""
echo "3. 创建SSH配置备份..."
BACKUP_DIR="/root/ssh_backups"
mkdir -p "$BACKUP_DIR"
cp /etc/ssh/sshd_config "$BACKUP_DIR/sshd_config.$(date +%Y%m%d_%H%M%S)"
# 只保留最近10个备份
ls -t "$BACKUP_DIR"/sshd_config.* 2>/dev/null | tail -n +11 | xargs rm -f 2>/dev/null || true
echo " ✅ SSH配置已备份到 $BACKUP_DIR"
# 4. 创建SSH配置监控脚本
echo ""
echo "4. 创建SSH配置监控脚本..."
cat > /usr/local/bin/monitor-ssh-config.sh << 'MONITOREOF'
#!/bin/bash
# SSH配置监控脚本
# 检测SSH配置文件是否被修改
SSH_CONFIG="/etc/ssh/sshd_config"
BACKUP_DIR="/root/ssh_backups"
LOG_FILE="/var/log/ssh-config-monitor.log"
# 创建日志文件(如果不存在)
touch "$LOG_FILE"
# 获取当前配置文件的MD5值
CURRENT_MD5=$(md5sum "$SSH_CONFIG" 2>/dev/null | awk '{print $1}')
# 获取最新备份的MD5值
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/sshd_config.* 2>/dev/null | head -1)
if [ -n "$LATEST_BACKUP" ]; then
BACKUP_MD5=$(md5sum "$LATEST_BACKUP" | awk '{print $1}')
# 如果MD5不匹配,说明文件被修改
if [ "$CURRENT_MD5" != "$BACKUP_MD5" ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 警告:SSH配置文件被修改!" >> "$LOG_FILE"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 当前MD5: $CURRENT_MD5" >> "$LOG_FILE"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份MD5: $BACKUP_MD5" >> "$LOG_FILE"
# 尝试恢复配置文件
if [ -f "$LATEST_BACKUP" ]; then
# 临时移除不可变标志
chattr -i "$SSH_CONFIG" 2>/dev/null || true
cp "$LATEST_BACKUP" "$SSH_CONFIG"
chmod 600 "$SSH_CONFIG"
chown root:root "$SSH_CONFIG"
chattr +i "$SSH_CONFIG" 2>/dev/null || true
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 已恢复SSH配置文件" >> "$LOG_FILE"
# 重启SSH服务
systemctl restart sshd 2>/dev/null || service sshd restart 2>/dev/null || true
fi
fi
fi
# 检查SSH服务是否运行
if ! systemctl is-active --quiet sshd && ! service sshd status >/dev/null 2>&1; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 警告:SSH服务未运行!" >> "$LOG_FILE"
# 尝试启动SSH服务
systemctl start sshd 2>/dev/null || service sshd start 2>/dev/null || true
fi
MONITOREOF
chmod +x /usr/local/bin/monitor-ssh-config.sh
echo " ✅ SSH配置监控脚本已创建"
# 5. 设置定时监控任务
echo ""
echo "5. 设置定时监控任务..."
# 移除现有的监控任务(如果存在)
crontab -l 2>/dev/null | grep -v "monitor-ssh-config" | crontab - 2>/dev/null || true
# 添加新的监控任务(每5分钟检查一次)
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/local/bin/monitor-ssh-config.sh") | crontab -
echo " ✅ 定时监控任务已设置(每5分钟检查一次)"
# 6. 创建SSH服务保护脚本
echo ""
echo "6. 创建SSH服务保护脚本..."
cat > /usr/local/bin/protect-ssh-service.sh << 'PROTECTEOF'
#!/bin/bash
# SSH服务保护脚本
# 确保SSH服务始终运行
SSH_SERVICE="sshd"
# 检查SSH服务状态
if ! systemctl is-active --quiet "$SSH_SERVICE" && ! service "$SSH_SERVICE" status >/dev/null 2>&1; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 警告:SSH服务未运行,正在启动..." | tee -a /var/log/ssh-service-protect.log
# 尝试启动SSH服务
systemctl start "$SSH_SERVICE" 2>/dev/null || service "$SSH_SERVICE" start 2>/dev/null || true
# 等待服务启动
sleep 2
# 再次检查
if systemctl is-active --quiet "$SSH_SERVICE" || service "$SSH_SERVICE" status >/dev/null 2>&1; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ SSH服务已启动" | tee -a /var/log/ssh-service-protect.log
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ SSH服务启动失败!" | tee -a /var/log/ssh-service-protect.log
fi
fi
PROTECTEOF
chmod +x /usr/local/bin/protect-ssh-service.sh
echo " ✅ SSH服务保护脚本已创建"
# 7. 设置SSH服务保护定时任务
echo ""
echo "7. 设置SSH服务保护定时任务..."
# 移除现有的保护任务(如果存在)
crontab -l 2>/dev/null | grep -v "protect-ssh-service" | crontab - 2>/dev/null || true
# 添加新的保护任务(每2分钟检查一次)
(crontab -l 2>/dev/null; echo "*/2 * * * * /usr/local/bin/protect-ssh-service.sh") | crontab -
echo " ✅ SSH服务保护定时任务已设置(每2分钟检查一次)"
# 8. 配置SSH服务自动启动
echo ""
echo "8. 配置SSH服务自动启动..."
systemctl enable sshd 2>/dev/null || chkconfig sshd on 2>/dev/null || true
echo " ✅ SSH服务已设置为开机自启"
# 9. 验证SSH配置
echo ""
echo "9. 验证SSH配置..."
if sshd -t 2>/dev/null; then
echo " ✅ SSH配置语法正确"
else
echo " ⚠️ 警告:SSH配置语法可能有误"
fi
# 10. 重启SSH服务(应用配置)
echo ""
echo "10. 重启SSH服务..."
systemctl restart sshd 2>/dev/null || service sshd restart 2>/dev/null || true
sleep 2
if systemctl is-active --quiet sshd || service sshd status >/dev/null 2>&1; then
echo " ✅ SSH服务已重启并运行正常"
else
echo " ⚠️ 警告:SSH服务重启后状态异常"
fi
echo ""
echo "=================================================================================="
echo "✅ SSH配置保护已完成!"
echo "=================================================================================="
echo ""
echo "📋 保护措施总结:"
echo " 1. ✅ SSH配置文件已设置为不可变(immutable)"
echo " 2. ✅ SSH目录和文件权限已设置"
echo " 3. ✅ SSH配置已备份"
echo " 4. ✅ SSH配置监控脚本已创建(每5分钟检查)"
echo " 5. ✅ SSH服务保护脚本已创建(每2分钟检查)"
echo " 6. ✅ SSH服务已设置为开机自启"
echo ""
echo "📝 查看监控日志:"
echo " - SSH配置监控: tail -f /var/log/ssh-config-monitor.log"
echo " - SSH服务保护: tail -f /var/log/ssh-service-protect.log"
echo ""
echo "⚠️ 重要提示:"
echo " - 如果需要修改SSH配置,请先运行: chattr -i /etc/ssh/sshd_config"
echo " - 修改完成后,请运行: chattr +i /etc/ssh/sshd_config"
echo " - 配置文件备份位置: /root/ssh_backups/"
echo ""