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

在腾讯云上使用 CentOS(推荐 CentOS 7/8 或更佳的 AlmaLinux/Rocky Linux 8/9,因 CentOS Stream 已非传统稳定版,且 CentOS 7 已于 2024-06-30 停止维护)部署 Web 服务时,初始安全配置至关重要。以下是面向生产环境的关键、实用、可落地的安全加固步骤(按优先级和执行顺序组织):


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

步骤 操作 说明
1. 更新系统 sudo yum update -y(CentOS 7)
sudo dnf update -y(CentOS 8+/Rocky/Alma)
修复已知漏洞,尤其内核、OpenSSL、systemd 等核心组件
2. 创建普通管理用户 + 禁用 root 远程登录 bash<br>sudo useradd -m -s /bin/bash deploy<br>sudo passwd deploy<br>sudo usermod -aG wheel deploy # CentOS 7/8+ 默认启用 sudo 权限组<br>
编辑 /etc/ssh/sshd_config
ini<br>PermitRootLogin no<br>AllowUsers deploy<br>
重启 SSH:sudo systemctl restart sshd
强制要求:杜绝 root 密码远程登录;最小权限原则;建议后续改用 SSH 密钥登录(见下条)
3. 配置 SSH 密钥认证(强烈推荐) 在本地生成密钥对(ssh-keygen -t ed25519 -C "webadmin@yourdomain"),上传公钥到服务器:
sudo mkdir -p /home/deploy/.ssh
sudo tee /home/deploy/.ssh/authorized_keys <<<"ssh-ed25519 AAAA..."
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys
再禁用密码登录:
PasswordAuthentication no → 重启 sshd
✅ 比密码更安全,防暴力破解;务必先测试新密钥能登录,再禁用密码!
4. 启用并配置防火墙(firewalld) bash<br>sudo systemctl enable firewalld<br>sudo systemctl start firewalld<br>sudo firewall-cmd --permanent --add-service=http<br>sudo firewall-cmd --permanent --add-service=https<br># 若需 SSH(默认22端口),确保已放行(或改端口)<br>sudo firewall-cmd --reload<br> | 腾讯云安全组是第一道防线,但 firewalld 是第二道(主机级),必须启用。避免 systemctl disable firewalld

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

步骤 操作 说明
1. 使用非 root 用户运行 Web 服务 ✅ Nginx:检查 /etc/nginx/nginx.confuser nginx;(默认已配)
✅ Apache:/etc/httpd/conf/httpd.confUser apache / Group apache
防止 Web 漏洞导致提权;禁止以 root 运行 Web 进程
2. 隐藏服务版本信息 Nginx:在 http{} 块中添加 server_tokens off;
Apache:在 httpd.conf 中添加 ServerTokens ProdServerSignature Off
减少攻击者识别软件版本进行针对性攻击
3. 配置 TLS(HTTPS 强制) ✅ 使用腾讯云免费 SSL 证书(控制台申请 → 下载 Nginx/Apache 格式)
✅ 配置 HSTS、OCSP Stapling、现代 TLS 协议(TLSv1.2+)、强加密套件
重定向 HTTP → HTTPS(301)
🔒 HTTPS 是底线要求;腾讯云 CDN + WAF 可进一步卸载 TLS
4. 设置合理文件权限 Web 根目录(如 /usr/share/nginx/html):
sudo chown -R root:root /usr/share/nginx/html
sudo find /usr/share/nginx/html -type f -exec chmod 644 {} ;
sudo find /usr/share/nginx/html -type d -exec chmod 755 {} ;
⚠️ 动态内容(如 PHP 上传目录)单独设权限,禁止写入代码目录
防止恶意文件上传执行;静态资源应不可执行、不可写

✅ 三、腾讯云平台层协同配置(常被忽略!)

配置项 操作建议 为什么重要
安全组(Security Group) 仅开放必需端口
• 入方向:80/tcp, 443/tcp, 22/tcp(建议改非标端口,如 2222
禁止开放 3306270176379 等数据库端口到公网 → 改用内网 VPC 访问或云数据库白名单
❌ 禁止 0.0.0.0/0 开放高危端口
安全组是云服务器的第一道网络屏障,比系统防火墙更前置、更高效
云防火墙 / WAF ✅ 开通腾讯云 Web 应用防火墙(WAF),接入域名
✅ 启用 Bot 管理、CC 防护、SQL 注入/XSS 规则库
主机层无法拦截的 Web 攻击(如扫描、注入)由 WAF 拦截,减轻服务器压力
主机安全(云镜) ✅ 在腾讯云控制台为 CVM 安装「云镜」Agent(免费)
✅ 开启:异常登录检测、木马查杀、漏洞扫描、基线检查
提供入侵检测、漏洞提醒、合规基线(等保2.0支持)

✅ 四、其他关键加固项

类别 推荐操作
日志与监控 sudo journalctl --disk-usage → 清理旧日志
• 配置 logrotate(如 /etc/logrotate.d/nginx
• 将关键日志(auth, nginx access/error)同步至腾讯云 CLS(日志服务)便于审计
时间同步 sudo timedatectl set-ntp on(启用 systemd-timesyncd)或安装 chrony,确保时间准确(影响证书、审计)
禁用不必要服务 sudo systemctl list-unit-files --type=service | grep enabled → 关闭 telnet, ftp, rpcbind, avahi 等无关服务:
sudo systemctl disable --now avahi-daemon
SELinux(推荐 Enforcing) sudo sestatus → 如为 disabled,修改 /etc/selinux/config
SELINUX=enforcing → 重启;配合 setsebool -P httpd_can_network_connect 1(如需 PHP 连接网络)
强制访问控制,防御提权后横向移动(CentOS 默认启用,勿关闭!)
Fail2ban(可选但推荐) sudo yum install epel-release && sudo yum install fail2ban
配置 /etc/fail2ban/jail.local 监控 sshd, nginx-auth,封禁暴力 IP
自动封禁 SSH/Web 登录爆破 IP

⚠️ 特别注意(避坑指南)

  • 不要使用 CentOS 6/7 生产环境:CentOS 7 EOL(2024-06-30),无安全更新 → 强烈建议迁移到 Rocky Linux 9 或 AlmaLinux 9(100% 兼容 RHEL,长期支持)。
  • ❌ 不要在 Web 目录放置 .git.envconfig.php.bak 等敏感文件 → 配置 Nginx/Apache 禁止访问隐藏文件:
    location ~ /. { deny all; }
    location ~ ~$ { deny all; }
  • 定期备份:使用腾讯云 云硬盘快照 + 网站数据/数据库定时备份到 COS(如 mysqldump + coscmd)。
  • 最小化安装:腾讯云创建实例时,选择「精简版」CentOS 镜像,避免预装冗余软件。

📌 附:一键加固脚本(简化版,供参考)

# 请先人工审查,勿直接执行!
#!/bin/bash
echo "【1/5】系统更新..."
sudo dnf update -y

echo "【2/5】创建用户 & 禁用 root SSH..."
sudo useradd -m -s /bin/bash webadmin
echo "webadmin ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/webadmin
sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

echo "【3/5】启用 firewalld..."
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload

echo "【4/5】加固 Nginx..."
echo "server_tokens off;" | sudo tee -a /etc/nginx/nginx.conf
sudo nginx -t && sudo systemctl reload nginx

echo "【5/5】安装云镜(腾讯云专用)..."
curl -O https://mirrors.cloud.tencent.com/qcloud/yum/qcloud_source.repo
sudo mv qcloud_source.repo /etc/yum.repos.d/
sudo yum install -y qcloud-monitor-agent
sudo systemctl enable --now go2cloudmonitor

如需我为你:

  • ✅ 生成完整的 nginx.conf 安全模板(含 HTTPS/HSTS/缓存头)
  • ✅ 编写 fail2ban 针对 Web 的 jail 配置
  • ✅ 提供 Rocky Linux 9 迁移指南
  • ✅ 输出符合等保2.0三级的 CentOS 加固检查清单(Excel/Markdown)

欢迎随时告诉我,我可以立即输出 👇

安全无小事,每一步加固都是在降低被攻陷的概率。从今天开始,让每一台云服务器都成为“有围墙的城堡”。🛡️

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