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

服务器

在腾讯云上使用 CentOS 镜像部署 Web 服务时,初始安全配置至关重要。以下是针对 CentOS 7/8(推荐 CentOS 8 Stream 或迁移至 Rocky Linux/AlmaLinux,因 CentOS 7 已于 2024-06-30 停止维护)生产级最小可行安全加固清单,兼顾实用性与腾讯云环境特性:


✅ 一、基础系统安全(部署后立即执行)

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

    # CentOS 7(EOL,仅限存量环境)
    sudo yum update -y && sudo yum install -y epel-release vim curl wget net-tools bash-completion
    
    # CentOS 8/Stream(推荐)
    sudo dnf update -y && sudo dnf install -y epel-release vim curl wget net-tools bash-completion
  2. 创建普通管理用户 + 禁用 root 远程登录

    sudo useradd -m -s /bin/bash admin
    sudo passwd admin
    sudo usermod -aG wheel admin  # CentOS 8:wheel 组等效于 sudoers
    # 编辑 SSH 配置:
    sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
    sudo systemctl restart sshd
  3. 强化 SSH 安全(关键!)

    sudo tee -a /etc/ssh/sshd_config << 'EOF'
    # 禁用密码登录(必须先配置密钥!)
    PasswordAuthentication no
    # 限制协议和加密算法(增强兼容性与安全性)
    Protocol 2
    KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
    # 限制登录尝试
    MaxAuthTries 3
    LoginGraceTime 60
    # 可选:限制允许登录的用户(按需启用)
    # AllowUsers admin
    EOF
    sudo systemctl restart sshd

    ⚠️ 操作前务必:

    • 本地生成并上传 SSH 密钥到 ~admin/.ssh/authorized_keys
    • 在腾讯云控制台【安全组】中确认已放行 SSH 端口(默认22),且避免对公网开放22端口(见下文安全组配置)。

✅ 二、腾讯云专属安全配置

  1. 安全组(Security Group)—— 最重要的网络防线

    • 禁止开放所有端口(0.0.0.0/0)
    • 最小化放行规则(示例):
      | 协议 | 端口 | 授权对象 | 说明 |
      |——|——|———-|——|
      | TCP | 80 | 0.0.0.0/0 | HTTP(若需公网访问) |
      | TCP | 443 | 0.0.0.0/0 | HTTPS(建议强制启用) |
      | TCP | 22 | 您的办公IP/32 | 仅允许可信IP访问SSH(强烈建议!) |
      | ICMP | – | 您的办公IP/32 | 方便诊断(可选) |
    • ❌ 禁止放行 3306(MySQL)、6379(Redis)等数据库端口到公网!内网通信走私有网络(VPC)。
  2. 云防火墙(可选但推荐)

    • 在腾讯云控制台开通【云防火墙】,配置应用层防护(如拦截恶意 User-Agent、SQL注入特征);
    • 启用“Web应用防护”(WAF)服务(可单独购买或使用 CLB/WAF 集成方案)。

✅ 三、Web 服务专项加固(以 Nginx + PHP 为例)

  1. Web 服务最小权限运行

    # 创建专用用户(非 root、非 nginx 默认用户)
    sudo useradd -r -s /sbin/nologin webapp
    # 修改 Nginx 配置(/etc/nginx/nginx.conf)
    user webapp;
    # PHP-FPM 池配置(/etc/php-fpm.d/www.conf)
    user = webapp
    group = webapp
    listen.owner = webapp
    listen.group = webapp
  2. 禁用危险的 Web 功能

    • Nginx 中关闭 .git/.htaccess、备份文件暴露:
      location ~ /.(git|hg|svn|bzr|cvs|sh|bak|swp|tmp|log)$ {
          deny all;
      }
    • PHP 中禁用高危函数(php.ini):
      disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec
  3. 启用 HTTPS(强制要求)

    • 使用腾讯云【SSL证书服务】免费申请 DV 证书;
    • Nginx 配置强制 HTTPS 重定向:
      server {
          listen 80;
          server_name your-domain.com;
          return 301 https://$server_name$request_uri;
      }

✅ 四、系统级纵深防御

  1. 启用防火墙(firewalld)

    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    sudo firewall-cmd --permanent --remove-service=ssh  # 若已通过安全组管控SSH,可禁用firewalld的SSH规则
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  2. 安装并配置 Fail2ban(防暴力破解)

     sudo yum install -y fail2ban  # CentOS 7
     sudo dnf install -y fail2ban  # CentOS 8
     sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
     echo "[sshd]
     enabled = true
     maxretry = 3
     bantime = 1h" | sudo tee -a /etc/fail2ban/jail.local
     sudo systemctl enable fail2ban && sudo systemctl start fail2ban
  3. 日志审计与监控

    • 启用 auditd 记录关键操作(如 /etc/shadow 修改、sudo 命令):
      sudo yum install -y audit audit-libs-python
      sudo systemctl enable auditd && sudo systemctl start auditd
      # 添加规则示例(记录敏感文件访问)
      sudo auditctl -w /etc/passwd -p wa -k identity
    • /var/log/secure, /var/log/messages, /var/log/nginx/access.log 日志接入腾讯云【CLS 日志服务】集中分析。
  4. 定期安全检查

    • 安装 rkhunter(Rootkit 检测):
      sudo yum install -y rkhunter
      sudo rkhunter --update && sudo rkhunter --propupd
      sudo rkhunter --check --sk
    • 使用腾讯云【主机安全(CWP)】Agent(免费版提供漏洞扫描、木马查杀、基线检查)。

🚫 绝对禁止事项(腾讯云常见风险)

  • ❌ 不要将数据库(MySQL/PostgreSQL)端口(3306/5432)直接暴露到公网 → 改用 云数据库 TencentDB + 内网连接
  • ❌ 不要在实例中存储 AccessKey/SecretKey → 使用 CAM 角色授权给 CVM 实例(通过元数据服务获取临时凭证);
  • ❌ 不要关闭 SELinux(CentOS 默认启用)→ 如需调整,用 setsebool 而非 setenforce 0
  • ❌ 不要使用弱密码或默认密码(如 root:root, admin:123456)。

✅ 推荐自动化脚本(快速部署)

可将上述步骤封装为初始化脚本(注意:需提前上传 SSH 公钥):

# save as init-security.sh, run once after login
#!/bin/bash
# ...(上述命令整合,加入错误检查和日志)
echo "✅ Security hardening completed. Reboot recommended."

🔐 终极建议

  • 对外 Web 服务务必前置 腾讯云 CLB(负载均衡) + WAF(Web应用防火墙)
  • 敏感业务启用 VPC 私有网络 + 子网隔离(Web 层、应用层、DB 层分属不同子网);
  • 定期执行 腾讯云「云安全中心」基线检查(自动修复 CIS 标准项)。

如需我为你生成完整的可执行初始化脚本(含变量配置、兼容 CentOS 7/8)、Nginx 安全模板或腾讯云 CLI 自动化部署代码,请随时告知 👍

安全无小事,祝你构建坚如磐石的 Web 服务!

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