奋斗
努力

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

云计算

在腾讯云 CentOS 镜像上部署 Web 服务前,进行规范、务实的初始安全配置至关重要。以下是面向生产环境的关键且可落地的安全加固步骤(基于 CentOS 7/8,兼顾腾讯云特性):


✅ 一、系统基础加固(登录即执行)

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

    sudo yum update -y
    sudo yum install -y epel-release vim curl wget net-tools bash-completion fail2ban firewalld policycoreutils-python-utils
    # CentOS 8+ 可选:dnf install -y dnf-plugins-core && dnf config-manager --set-enabled powertools
  2. 创建普通管理用户(禁用 root 远程登录)

    sudo useradd -m -s /bin/bash deploy
    sudo passwd deploy
    sudo usermod -aG wheel deploy  # CentOS 7 加入 wheel 组;CentOS 8+ 为 wheel 或 sudo 组
    # 禁用 root 密码登录(仅允许密钥)
    sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
    sudo systemctl restart sshd
  3. 配置 SSH 安全(关键!)

    # 编辑 /etc/ssh/sshd_config:
    Port 2222                    # 修改默认端口(非必须但推荐)
    Protocol 2
    PermitEmptyPasswords no
    PasswordAuthentication no    # ⚠️ 必须关闭密码登录(确保已配置好 SSH 密钥!)
    PubkeyAuthentication yes
    AllowUsers deploy            # 仅允许指定用户登录
    MaxAuthTries 3
    ClientAliveInterval 300
    ClientAliveCountMax 2

    操作前提:本地已将公钥 ~/.ssh/id_rsa.pub 添加到 ~deploy/.ssh/authorized_keys,并测试新用户+密钥+新端口能成功登录,再重启 sshd

  4. 启用并配置防火墙(firewalld)

    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    # 开放必要端口(按需调整)
    sudo firewall-cmd --permanent --add-port=2222/tcp     # SSH
    sudo firewall-cmd --permanent --add-service=http        # 或 80/tcp
    sudo firewall-cmd --permanent --add-service=https       # 或 443/tcp
    sudo firewall-cmd --permanent --add-port=8080/tcp       # 如 Nginx 反向X_X端口
    # ❗禁止开放所有端口!尤其避免暴露 22、3306、6379 等敏感端口到公网
    sudo firewall-cmd --reload
  5. 启用 Fail2ban(防暴力破解)

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo vim /etc/fail2ban/jail.local  # 修改:
     [sshd]
     enabled = true
     maxretry = 3
     bantime = 1h
     findtime = 10m
    sudo systemctl enable fail2ban && sudo systemctl start fail2ban

✅ 二、腾讯云专属安全建议

  • 安全组(Security Group)是第一道防线!
    ✅ 在腾讯云控制台设置最小化安全组规则(比系统防火墙更前置):

    • 入站:仅放行 2222/tcp(SSH)、80/tcp443/tcp(Web),源 IP 限制为运维 IP 或 CDN 回源段(如 1.2.3.4/32162.247.240.0/20);
    • ❌ 禁止 0.0.0.0/0 开放 SSH/Web 管理端口;
    • 出站:默认允许(或按需限制到可信域名/IP)。
  • 云硬盘加密:在腾讯云控制台为系统盘/数据盘开启 KMS 加密(免费且透明)。

  • 启用云监控与告警
    配置「登录异常」、「CPU/内存突增」、「网络连接数激增」等告警,关联企业微信/短信。


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

  1. 运行用户隔离
    修改 Nginx 配置 /etc/nginx/nginx.conf

    user nginx;  # 不要用 root!确保 nginx 用户权限最小化
    # 禁用 server_tokens(隐藏版本号)
    server_tokens off;
  2. 禁用危险 HTTP 方法 & 敏感路径
    在 Nginx server 块中添加:

    # 禁用 TRACE/DELETE 等非必要方法
    if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS|PATCH)$ ) {
       return 405;
    }
    # 禁止访问 .git / .env / backup.zip 等敏感文件
    location ~ /.(git|env|log|ini|sh|bak|swp|swo)$ {
       deny all;
    }
  3. 配置 HTTPS 强制跳转 & 安全头

    add_header X-Frame-Options "DENY" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';" always;
  4. 应用层防护(可选但强烈推荐)

    • 部署 ModSecurity + OWASP CRS 规则集(Nginx 版本);
    • 或使用腾讯云 Web 应用防火墙(WAF)(托管型,推荐生产环境启用)。

✅ 四、持续安全基线(自动化建议)

项目 推荐方案
漏洞扫描 每月用 yum update + yum check-update;配合腾讯云「主机安全」服务(免费版含漏洞扫描)
日志审计 启用 auditd 记录关键操作;日志推送至腾讯云 CLS(日志服务)集中分析
备份策略 使用腾讯云 COS + rclonecoscmd 自动备份网站代码、数据库、Nginx 配置;保留 7 天快照
合规检查 运行 lynis audit system(Lynis)生成加固报告

🚫 绝对禁止的操作(常见高危错误)

  • ❌ 直接用 root 用户运行 Web 服务(Nginx/Apache/PHP-FPM)
  • ❌ 开放 22/tcp0.0.0.0/0(即使有密码)
  • ❌ 在代码中硬编码数据库密码、API Key(应使用环境变量 + .env 文件权限 600
  • ❌ 关闭 SELinux(setenforce 0)→ 应设为 enforcing 并用 semanage 精确放行
  • ❌ 使用弱密码或未轮换密钥(定期更换 SSH 密钥,禁用密码登录)

✅ 最后一步:验证清单

  • [ ] 能通过 ssh -p 2222 deploy@公网IP 登录
  • [ ] curl -I http://公网IP 返回 200 OK 且无 Server: nginx/x.x.x 版本信息
  • [ ] nmap -sV -p 22,2222,80,443 公网IP 显示仅开放预期端口,且 22 端口关闭
  • [ ] 腾讯云安全组规则中无 0.0.0.0/0 的宽泛授权
  • [ ] sudo -l 显示 deploy 用户仅有必要 sudo 权限(如 NOPASSWD: /bin/systemctl restart nginx

💡 提示:完成上述配置后,建议保存当前镜像为「自定义镜像」(腾讯云控制台 → CVM → 更多 → 制作镜像),便于后续快速部署同安全标准的实例。

如需具体某一步的脚本化部署(如一键加固 Shell 脚本)、SELinux 详细策略配置,或 Docker/K8s 场景下的安全方案,可随时告知,我可为你定制输出。安全无小事,稳扎稳打才是正道 🔒

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