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

在腾讯云上部署 CentOS 系统的 Web 服务,初始安全配置的核心逻辑只有一条:最小化权限,最大化隔离。

很多新手上来就装宝塔、装面板,或者直接用 root 登录,这是大忌。下面我按优先级和实操步骤,给你拆解一套“硬核”且有效的初始加固方案。

1. 网络层:腾讯云安全组(第一道防线)

不要指望系统防火墙能挡住所有扫描,云厂商的安全组是入口。

  • 关闭默认开放端口:新建安全组时,默认可能开启了 22 (SSH) 和 3389 (RDP) 对所有 IP 开放。立刻修改为仅允许你的固定 IP 访问。
  • Web 端口精细化:
    • HTTP (80) / HTTPS (443):来源设置为 0.0.0.0/0(公网访问)。
    • 其他所有端口(如数据库 3306/5432、Redis 6379、Docker 2375 等):严禁在安全组中直接对公网开放。这些服务必须通过内网通信,或者通过 SSH 隧道/反向X_X暴露。
  • ICMP 策略:如果不需要 Ping 测试,建议在安全组丢弃 ICMP 入站请求,减少被探测到的概率。

2. 系统层:SSH 加固(命门所在)

SSH 是被暴力破解的重灾区。

  • 禁用 Root 远程登录:

    # 编辑 /etc/ssh/sshd_config
    PermitRootLogin no
    # 重启 sshd 服务
    systemctl restart sshd

    注意:操作前务必先创建一个普通用户并赋予 sudo 权限,否则你会把自己锁在外面。

  • 强制使用密钥认证:

    PasswordAuthentication no
    PubkeyAuthentication yes

    生成一对公私钥,私钥存本地,公钥上传到服务器 ~/.ssh/authorized_keys。密码登录彻底关闭。

  • 更改默认端口:将 SSH 端口从 22 改为一个高位随机端口(如 2222),并在腾讯云安全组中同步修改。这能过滤掉 99% 的自动化脚本扫描。

  • 安装 Fail2Ban:
    防止暴力破解的最有效工具。

    yum install fail2ban -y
    systemctl enable --now fail2ban

    配置 /etc/fail2ban/jail.local,设置尝试失败 3-5 次后封禁 IP 24 小时。

3. 系统更新与清理(减少攻击面)

  • 最小化安装:CentOS 镜像通常预装了大量不需要的软件包(如打印机服务、邮件服务等)。

    # 查看已安装包
    rpm -qa | wc -l
    # 卸载非必要组件
    yum remove cups-* postfix-* sendmail-* -y

    包越少,潜在漏洞点越少。

  • 自动安全更新:
    虽然生产环境建议手动测试更新,但必须开启基础补丁更新。

    yum install yum-cron -y
    systemctl enable --now yum-cron

4. 文件系统与内核参数(防御横向移动)

  • 隐藏敏感文件:
    Web 目录下绝对禁止存在 .git、.svn、.env、.htaccess(Apache)等版本控制或环境变量文件。这些文件泄露会导致密钥、数据库密码直接暴露。

    • Nginx 配置示例:
      location ~ /. {
          deny all;
      }
  • 内核参数优化与安全:
    编辑 /etc/sysctl.conf,添加以下内容:

    # 防止 SYN Flood 攻击
    net.ipv4.tcp_syncookies = 1
    # 忽略 ICMP 重定向
    net.ipv4.icmp_echo_ignore_all = 1
    # 禁止 IP 源路由
    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.accept_source_route = 0
    # 记录可疑日志
    kernel.dmesg_restrict = 1

    生效命令:sysctl -p

5. Web 服务层配置(Nginx/Apache)

假设你使用的是 Nginx:

  • 隐藏版本号:

    server_tokens off;

    防止攻击者根据具体版本寻找已知 CVE 漏洞。

  • 限制请求大小:

    client_max_body_size 10m;

    防止超大文件上传导致磁盘填满或内存溢出。

  • 启用 HTTPS 并强制跳转:
    免费申请 Let’s Encrypt 证书或使用腾讯云 SSL 证书服务。配置 HSTS(HTTP Strict Transport Security)头,防止降级攻击。

  • 目录浏览关闭:

    autoindex off;

6. 监控与日志审计(事后追溯)

  • 启用 Auditd:
    监控系统关键文件变更(如 /etc/passwd, /etc/shadow, /usr/bin 下的可执行文件)。

    yum install audit -y
    systemctl enable --now auditd
  • 日志轮转与集中收集:
    确保 /var/log/messages 和 Nginx/Apache 访问日志有合理的轮转策略,避免磁盘写满。有条件的话,将日志推送到腾讯云 CLS(日志服务)或 ELK 集群,便于异常行为分析。

7. 备份策略(最后的安全网)

安全不是绝对的,一旦沦陷,恢复能力才是关键。

  • 快照策略:在腾讯云控制台为云硬盘设置定时快照(例如每天一次,保留最近 7 天)。
  • 代码与数据分离:确保数据库备份独立于系统盘。使用 mysqldump 或 xtrabackup 定期导出数据库,并存储到 COS(对象存储)等非同一地域的存储桶中。

总结 Checklist

  1. [ ] 腾讯云安全组:仅开放 80/443 和你的 SSH 端口(限 IP)。
  2. [ ] SSH:禁用 Root 登录,改用密钥+非标准端口,安装 Fail2Ban。
  3. [ ] 系统:最小化安装,关闭无用服务,开启自动安全补丁。
  4. [ ] Web:隐藏版本号,关闭目录浏览,HTTPS 强制跳转。
  5. [ ] 防护:隐藏 .git 等敏感目录,配置 sysctl 防攻击。
  6. [ ] 备份:云硬盘快照 + 数据库异地备份。

这套配置完成后,你的 CentOS 服务器在面对自动化扫描和初级攻击时,已经具备了相当高的抵抗力。剩下的,就是持续监控和及时响应了。

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