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

在腾讯云上使用 CentOS 镜像部署 Web 服务时,初始安全配置至关重要。以下是针对 CentOS 7/8(推荐 CentOS 8 Stream 或 Rocky/AlmaLinux 替代,因 CentOS 7 已于 2024-06-30 停止维护) 的专业级安全加固清单,兼顾腾讯云平台特性与最小权限原则:


✅ 一、系统基础安全配置(首次登录后立即执行)

1. 更新系统并禁用不安全服务

# 更新系统(CentOS 7/8)
sudo yum update -y  # CentOS 7
sudo dnf update -y  # CentOS 8+

# 禁用不必要服务(减少攻击面)
sudo systemctl disable postfix tuned avahi-daemon bluetooth cups
sudo systemctl stop postfix tuned avahi-daemon bluetooth cups

# 关闭 IPv6(若业务无需,可选但推荐,简化防火墙规则)
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

2. 强化 SSH 安全(⚠️ 最关键步骤)

# 编辑 SSH 配置(备份后修改)
sudo cp /etc/ssh/sshd_config{,.bak}
sudo vim /etc/ssh/sshd_config

必须修改项:

Port 2222                      # 修改默认端口(避免暴力扫描)
PermitRootLogin no              # 禁止 root 直接登录
PasswordAuthentication no       # 强制密钥认证(提前配好密钥!)
PubkeyAuthentication yes
AllowUsers your_username        # 仅允许指定用户(替换 your_username)
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
UsePAM yes
# 重载 SSH 服务(⚠️ 确保已测试密钥登录成功再重启!)
sudo systemctl restart sshd
# 验证新端口是否生效(本地测试)
ssh -p 2222 your_username@your_server_ip

🔑 密钥管理建议:

  • 本地生成 ssh-keygen -t ed25519 -C "webadmin@company"
  • 公钥上传至服务器 ~/.ssh/authorized_keys,设置权限:
    chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

3. 配置腾讯云安全组(云平台层防护)

  • 登录 腾讯云控制台 → 云服务器 CVM → 安全组
  • 最小化放行规则:
    | 类型 | 协议 | 端口 | 源 IP(建议) | 说明 |
    |——|——|——|—————-|——|
    | SSH | TCP | 2222 | 你的办公IP(非 0.0.0.0/0!) | 严格限制SSH来源 |
    | HTTP | TCP | 80 | 0.0.0.0/0 | Web访问必需 |
    | HTTPS | TCP | 443 | 0.0.0.0/0 | Web访问必需 |
    | ICMP | ICMP | – | 你的办公IP | 便于诊断(可选) |
  • 禁止开放: 22、3306、6379、27017 等数据库/管理端口到公网!

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

sudo systemctl enable firewalld
sudo systemctl start firewalld

# 仅放行必要端口(与安全组策略协同)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=2222/tcp  # 注意:是自定义SSH端口
sudo firewall-cmd --reload

# 查看规则
sudo firewall-cmd --list-all

✅ 二、Web 服务专项安全加固

1. 运行用户隔离

  • 禁止以 root 运行 Web 服务!
    • Nginx/Apache:确保 user nginx;User apache 在配置中,且进程由非特权用户启动。
    • 应用(如 Node.js/Python):使用 systemd 服务文件指定 User=www-data 或专用低权限用户:
      # /etc/systemd/system/myapp.service
      [Service]
      User=webapp
      Group=webapp
      NoNewPrivileges=true
      ProtectSystem=strict
      ProtectHome=true

2. 文件权限最小化

# Web 根目录(如 /var/www/html)
sudo chown -R root:root /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} ;
sudo find /var/www/html -type f -exec chmod 644 {} ;
# 上传目录(如有)单独设为 755,且禁止执行脚本
sudo chmod 755 /var/www/html/uploads
sudo echo "php_flag engine off" > /var/www/html/uploads/.htaccess  # Apache

3. 禁用危险的 Web 功能

  • Nginx 示例(/etc/nginx/nginx.conf):
    server {
        # 禁止访问敏感文件
        location ~ /. { deny all; }
        location ~ ~$ { deny all; }
        location ~ .(git|svn|log|sh|bak|swp|conf)$ { deny all; }
        # 禁止执行上传目录中的脚本
        location /uploads/ {
            location ~ .(php|pl|py|jsp|sh|rb|lua)$ { deny all; }
        }
    }

✅ 三、运维与监控加固

1. 日志审计与告警

# 启用 auditd(记录关键系统调用)
sudo yum install audit -y
sudo systemctl enable auditd && sudo systemctl start auditd

# 记录所有用户命令(添加到 /etc/bashrc)
echo 'export PROMPT_COMMAND="history -a"' >> /etc/bashrc
echo 'export HISTTIMEFORMAT="%F %T "' >> /etc/bashrc

2. 安装 Fail2ban(防暴力破解)

sudo yum install epel-release -y
sudo yum install fail2ban -y

# 配置 jail.local(防止 SSH 暴力破解)
sudo cp /etc/fail2ban/jail.{local,example}
sudo vim /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222          # 匹配自定义SSH端口
maxretry = 3
bantime = 1h
findtime = 10m
sudo systemctl enable fail2ban && sudo systemctl start fail2ban

3. 定期安全检查

  • 使用腾讯云 主机安全(原云镜):免费版提供漏洞扫描、木马查杀、基线检查。
  • 手动检查:sudo yum list security --security(查看待更新安全补丁)

✅ 四、重要提醒(腾讯云特有)

项目 建议
镜像选择 ✅ 优先选用腾讯云官方 AlmaLinux 8/9Rocky Linux 8/9(CentOS 替代品,长期支持)
❌ 避免 CentOS 7(EOL),避免自建镜像含预装软件(如 phpMyAdmin)
数据盘加密 在创建 CVM 时勾选「云硬盘加密」(KMS 加密),保护静态数据
快照策略 设置自动快照(每日/每周),用于快速恢复被篡改的 Web 文件
WAF 防护 生产环境务必接入腾讯云 Web 应用防火墙(WAF),防御 SQL 注入/XSS/CC 攻击

📌 附:一键初始化脚本(谨慎使用,需人工审核)

# 保存为 secure_init.sh,运行前务必阅读注释!
#!/bin/bash
set -e
echo "=== 腾讯云 CentOS 安全初始化 ==="

# 1. 更新系统
yum update -y

# 2. 创建普通用户(替换 your_user)
useradd -m -s /bin/bash your_user
passwd -l your_user  # 锁定密码(仅密钥登录)

# 3. 配置 SSH(需提前上传公钥)
mkdir -p /home/your_user/.ssh
cp /root/.ssh/authorized_keys /home/your_user/.ssh/
chown -R your_user:your_user /home/your_user/.ssh
chmod 700 /home/your_user/.ssh
chmod 600 /home/your_user/.ssh/authorized_keys

# 4. 配置 firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --add-port={80,443,2222}/tcp
firewall-cmd --reload

echo "✅ 初始化完成!请手动验证 SSH 登录,并配置腾讯云安全组。"

如需进一步协助,可提供:

  • 具体 Web 服务类型(Nginx + PHP?Node.js?Docker?)
  • 是否需要 HTTPS 自动续签(推荐腾讯云 SSL 证书 + Certbot)
  • 是否启用容器化(Docker 安全最佳实践)

安全无小事,每一步配置都应先在测试环境验证。腾讯云控制台操作+命令行加固双管齐下,方能构建可信 Web 服务底座。

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