在腾讯云上部署Web服务,CentOS镜像需要做哪些初始安全配置?

在腾讯云上使用 CentOS 镜像(推荐 CentOS 7 或迁移至 CentOS Stream / Rocky Linux/AlmaLinux,因 CentOS 8 已停更、CentOS 7 将于 2024-06-30 终止维护)部署 Web 服务时,初始安全配置至关重要。以下是生产环境必备的、分步骤的安全加固清单(兼顾腾讯云特性和通用最佳实践):


✅ 一、系统初始化与基础加固

  1. 更新系统并安装必要工具

    sudo yum update -y
    sudo yum install -y epel-release vim curl wget net-tools bash-completion htop iftop nmap socat
    # CentOS 8+ 使用 dnf;若用 CentOS Stream/Rocky 9,请替换为 dnf
  2. 创建普通管理用户(禁用 root 远程登录)

    sudo useradd -m -s /bin/bash admin
    sudo passwd admin
    sudo usermod -aG wheel admin  # CentOS 7:wheel 组有 sudo 权限;Rocky/Alma 9 可能是 wheel 或 sudo
    # 禁用 root 密码登录(仅允许密钥)
    sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
  3. 配置 SSH 安全(关键!)
    编辑 /etc/ssh/sshd_config

    Port 2222                    # 修改默认端口(可选但推荐)
    Protocol 2
    PermitEmptyPasswords no
    PasswordAuthentication no    # ✅ 强制密钥认证(前提:已上传公钥到 ~/.ssh/authorized_keys)
    PubkeyAuthentication yes
    PermitRootLogin no
    MaxAuthTries 3
    LoginGraceTime 60
    ClientAliveInterval 300
    ClientAliveCountMax 2
    UsePAM yes

    重启 SSH(⚠️ 操作前请确保新用户+密钥已验证成功,避免锁死):

    sudo systemctl restart sshd
  4. 配置防火墙(腾讯云安全组 + 系统防火墙双保险)

    • 腾讯云控制台操作(必须)
      进入【云服务器 CVM】→ 实例 → 【安全组】→ 编辑规则,仅放行必要端口

      • TCP 2222(SSH,限制源 IP,如公司办公IP或堡垒机IP)
      • TCP 80(HTTP,若需 HTTPS 则开 443)
      • TCP 443(HTTPS)
      • ❌ 禁止开放 2233066379 等高危端口给 0.0.0.0/0
      • 建议添加「内网互通」规则(如 VPC 内数据库访问)
    • 系统级防火墙(firewalld)

      sudo systemctl enable firewalld
      sudo systemctl start firewalld
      sudo firewall-cmd --permanent --zone=public --remove-service=ssh  # 移除默认SSH(因已改端口)
      sudo firewall-cmd --permanent --zone=public --add-port=2222/tcp
      sudo firewall-cmd --permanent --zone=public --add-service=http
      sudo firewall-cmd --permanent --zone=public --add-service=https
      sudo firewall-cmd --reload
  5. 禁用不必要服务 & 启动项

    # 查看开机自启服务
    sudo systemctl list-unit-files --type=service | grep enabled
    # 禁用非必要服务(示例)
    sudo systemctl disable avahi-daemon bluetooth cups dhcpd rpcbind
    # CentOS 7 默认无 docker,若后续安装需单独管理

✅ 二、Web 服务专项安全(以 Nginx/Apache 为例)

  1. 最小化安装 Web 服务

    # Nginx(推荐,轻量安全)
    sudo yum install -y nginx
    sudo systemctl enable nginx
    # Apache(如必须)
    # sudo yum install -y httpd
  2. Web 服务基础加固

    • 修改默认 Server Token(隐藏版本信息):
      Nginx:在 /etc/nginx/nginx.confhttp{} 块中添加:

      server_tokens off;

      Apache:在 /etc/httpd/conf/httpd.conf 中添加:

      ServerTokens Prod
      ServerSignature Off
    • 禁止目录遍历与敏感文件访问(Nginx 示例):
      server{} 块中添加:

      location ~ /. {
       deny all;
      }
      location ~ ~$ {
       deny all;
      }
  3. 配置 HTTPS(强制)

    • 使用 腾讯云免费 SSL 证书 或 Let’s Encrypt(推荐 certbot):
      sudo yum install -y certbot python3-certbot-nginx
      sudo certbot --nginx -d your-domain.com
      # 自动续期(添加 cron)
      echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
  4. 设置 Web 目录权限

    sudo chown -R root:root /usr/share/nginx/html  # 静态文件所有者设为 root,防止 Web 进程写入
    sudo chmod -R 755 /usr/share/nginx/html
    # 若需上传功能,单独建 upload 目录并严格限制(如仅 PHP-FPM 可写,且禁用脚本执行)

✅ 三、日志与监控(安全可观测性)

  1. 集中日志(可选但强烈推荐)

    • /var/log/secure, /var/log/messages, /var/log/nginx/access.log 发送到腾讯云 CLS(日志服务)或 ELK。
  2. 安装 Fail2ban(防暴力破解)

    sudo yum install -y fail2ban
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    # 编辑 jail.local,启用 sshd 和 nginx-http-auth
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
  3. 基础监控(腾讯云云监控 Agent)

    # 下载并安装 TencentCloud Monitor Agent(按官网最新指引)
    curl -O https://update.cloud.tencent.com/installer/linux/tencent-monitor-agent.sh
    sudo bash tencent-monitor-agent.sh

✅ 四、腾讯云专属注意事项

项目 推荐操作
密钥对管理 ✅ 创建密钥对时选择「仅私钥下载」,私钥本地保存(chmod 600),永不传到服务器
安全组粒度 按业务分组(如 Web 层、DB 层),Web 服务器安全组不放行内网 DB 端口,通过内网 VPC 对等连接或数据库X_X访问
云硬盘加密 创建 CVM 时勾选「云硬盘加密」(KMS 托管密钥)
镜像选择 优先选用腾讯云官方 「Rocky Linux」或「AlmaLinux」 镜像(CentOS 替代,长期支持),避免使用已 EOL 的 CentOS 7/8
漏洞修复 开启腾讯云「主机安全(云镜)」免费版,自动检测高危漏洞和弱口令

🚫 绝对禁止的操作(常见高危行为)

  • ❌ 使用 root 用户直接运行 Web 服务(Nginx/Apache 应以 nginx/apache 用户运行)
  • ❌ 在 Web 目录中放置 .git.envconfig.php.bak 等敏感文件
  • ❌ 关闭 SELinux(setenforce 0)→ 应保持 enforcing 并正确配置策略(如 sudo setsebool -P httpd_can_network_connect 1
  • ❌ 为方便调试开放 0.0.0.0/0 到 SSH/MySQL/Redis

✅ 最后检查清单(部署后立即执行)

# 1. 验证 SSH 是否仅允许密钥+新端口
ssh -p 2222 admin@your-server-ip

# 2. 检查监听端口(应只有 2222, 80, 443)
sudo ss -tlnp | grep -E ':2222|:80|:443'

# 3. 检查防火墙规则
sudo firewall-cmd --list-all

# 4. 检查 Web 服务是否隐藏版本号
curl -I http://your-domain.com | grep Server

# 5. 检查 HTTPS 是否生效
curl -I https://your-domain.com | grep "HTTP/2 200"

# 6. 检查安全组(控制台确认无宽泛规则)

🔐 重要提醒

  • CentOS 7 已进入 EOL(2024-06-30),新项目务必使用 Rocky Linux 9 / AlmaLinux 9(兼容 RHEL,长期支持至 2032)。
  • 腾讯云提供 CVM 安全加固模板 和 云安全中心,建议开启「基础防护」免费版。
  • 每次变更后,务必在测试环境验证,再上线生产

如需我为你生成:

  • ✅ 自动化加固脚本(Bash)
  • ✅ Nginx 完整安全配置模板(含 WAF 规则)
  • ✅ 腾讯云 CLI 批量配置安全组命令
  • ✅ Docker + Nginx + Let’s Encrypt 一键部署方案

欢迎随时提出,我可以立即为你定制 👇

未经允许不得转载:CLOUD云枢 » 在腾讯云上部署Web服务,CentOS镜像需要做哪些初始安全配置?