在腾讯云上使用 CentOS 镜像(推荐 CentOS 7 或迁移至 CentOS Stream / Rocky Linux/AlmaLinux,因 CentOS 8 已停更、CentOS 7 将于 2024-06-30 终止维护)部署 Web 服务时,初始安全配置至关重要。以下是生产环境必备的、分步骤的安全加固清单(兼顾腾讯云特性和通用最佳实践):
✅ 一、系统初始化与基础加固
-
更新系统并安装必要工具
sudo yum update -y sudo yum install -y epel-release vim curl wget net-tools bash-completion htop iftop nmap socat # CentOS 8+ 使用 dnf;若用 CentOS Stream/Rocky 9,请替换为 dnf -
创建普通管理用户(禁用 root 远程登录)
sudo useradd -m -s /bin/bash admin sudo passwd admin sudo usermod -aG wheel admin # CentOS 7:wheel 组有 sudo 权限;Rocky/Alma 9 可能是 wheel 或 sudo # 禁用 root 密码登录(仅允许密钥) sudo sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config -
配置 SSH 安全(关键!)
编辑/etc/ssh/sshd_config:Port 2222 # 修改默认端口(可选但推荐) Protocol 2 PermitEmptyPasswords no PasswordAuthentication no # ✅ 强制密钥认证(前提:已上传公钥到 ~/.ssh/authorized_keys) PubkeyAuthentication yes PermitRootLogin no MaxAuthTries 3 LoginGraceTime 60 ClientAliveInterval 300 ClientAliveCountMax 2 UsePAM yes重启 SSH(⚠️ 操作前请确保新用户+密钥已验证成功,避免锁死):
sudo systemctl restart sshd -
配置防火墙(腾讯云安全组 + 系统防火墙双保险)
-
✅ 腾讯云控制台操作(必须):
进入【云服务器 CVM】→ 实例 → 【安全组】→ 编辑规则,仅放行必要端口:TCP 2222(SSH,限制源 IP,如公司办公IP或堡垒机IP)TCP 80(HTTP,若需 HTTPS 则开 443)TCP 443(HTTPS)- ❌ 禁止开放
22、3306、6379等高危端口给 0.0.0.0/0 - 建议添加「内网互通」规则(如 VPC 内数据库访问)
-
✅ 系统级防火墙(firewalld):
sudo systemctl enable firewalld sudo systemctl start firewalld sudo firewall-cmd --permanent --zone=public --remove-service=ssh # 移除默认SSH(因已改端口) sudo firewall-cmd --permanent --zone=public --add-port=2222/tcp sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
-
-
禁用不必要服务 & 启动项
# 查看开机自启服务 sudo systemctl list-unit-files --type=service | grep enabled # 禁用非必要服务(示例) sudo systemctl disable avahi-daemon bluetooth cups dhcpd rpcbind # CentOS 7 默认无 docker,若后续安装需单独管理
✅ 二、Web 服务专项安全(以 Nginx/Apache 为例)
-
最小化安装 Web 服务
# Nginx(推荐,轻量安全) sudo yum install -y nginx sudo systemctl enable nginx # Apache(如必须) # sudo yum install -y httpd -
Web 服务基础加固
-
修改默认 Server Token(隐藏版本信息):
Nginx:在/etc/nginx/nginx.conf的http{}块中添加:server_tokens off;Apache:在
/etc/httpd/conf/httpd.conf中添加:ServerTokens Prod ServerSignature Off -
禁止目录遍历与敏感文件访问(Nginx 示例):
在server{}块中添加:location ~ /. { deny all; } location ~ ~$ { deny all; }
-
-
配置 HTTPS(强制)
- 使用 腾讯云免费 SSL 证书 或 Let’s Encrypt(推荐
certbot):sudo yum install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com # 自动续期(添加 cron) echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
- 使用 腾讯云免费 SSL 证书 或 Let’s Encrypt(推荐
-
设置 Web 目录权限
sudo chown -R root:root /usr/share/nginx/html # 静态文件所有者设为 root,防止 Web 进程写入 sudo chmod -R 755 /usr/share/nginx/html # 若需上传功能,单独建 upload 目录并严格限制(如仅 PHP-FPM 可写,且禁用脚本执行)
✅ 三、日志与监控(安全可观测性)
-
集中日志(可选但强烈推荐)
- 将
/var/log/secure,/var/log/messages,/var/log/nginx/access.log发送到腾讯云 CLS(日志服务)或 ELK。
- 将
-
安装 Fail2ban(防暴力破解)
sudo yum install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 编辑 jail.local,启用 sshd 和 nginx-http-auth sudo systemctl enable fail2ban sudo systemctl start fail2ban -
基础监控(腾讯云云监控 Agent)
# 下载并安装 TencentCloud Monitor Agent(按官网最新指引) curl -O https://update.cloud.tencent.com/installer/linux/tencent-monitor-agent.sh sudo bash tencent-monitor-agent.sh
✅ 四、腾讯云专属注意事项
| 项目 | 推荐操作 |
|---|---|
| 密钥对管理 | ✅ 创建密钥对时选择「仅私钥下载」,私钥本地保存(chmod 600),永不传到服务器 |
| 安全组粒度 | 按业务分组(如 Web 层、DB 层),Web 服务器安全组不放行内网 DB 端口,通过内网 VPC 对等连接或数据库X_X访问 |
| 云硬盘加密 | 创建 CVM 时勾选「云硬盘加密」(KMS 托管密钥) |
| 镜像选择 | 优先选用腾讯云官方 「Rocky Linux」或「AlmaLinux」 镜像(CentOS 替代,长期支持),避免使用已 EOL 的 CentOS 7/8 |
| 漏洞修复 | 开启腾讯云「主机安全(云镜)」免费版,自动检测高危漏洞和弱口令 |
🚫 绝对禁止的操作(常见高危行为)
- ❌ 使用 root 用户直接运行 Web 服务(Nginx/Apache 应以
nginx/apache用户运行) - ❌ 在 Web 目录中放置
.git、.env、config.php.bak等敏感文件 - ❌ 关闭 SELinux(
setenforce 0)→ 应保持 enforcing 并正确配置策略(如sudo setsebool -P httpd_can_network_connect 1) - ❌ 为方便调试开放
0.0.0.0/0到 SSH/MySQL/Redis
✅ 最后检查清单(部署后立即执行)
# 1. 验证 SSH 是否仅允许密钥+新端口
ssh -p 2222 admin@your-server-ip
# 2. 检查监听端口(应只有 2222, 80, 443)
sudo ss -tlnp | grep -E ':2222|:80|:443'
# 3. 检查防火墙规则
sudo firewall-cmd --list-all
# 4. 检查 Web 服务是否隐藏版本号
curl -I http://your-domain.com | grep Server
# 5. 检查 HTTPS 是否生效
curl -I https://your-domain.com | grep "HTTP/2 200"
# 6. 检查安全组(控制台确认无宽泛规则)
🔐 重要提醒:
- CentOS 7 已进入 EOL(2024-06-30),新项目务必使用 Rocky Linux 9 / AlmaLinux 9(兼容 RHEL,长期支持至 2032)。
- 腾讯云提供 CVM 安全加固模板 和 云安全中心,建议开启「基础防护」免费版。
- 每次变更后,务必在测试环境验证,再上线生产。
如需我为你生成:
- ✅ 自动化加固脚本(Bash)
- ✅ Nginx 完整安全配置模板(含 WAF 规则)
- ✅ 腾讯云 CLI 批量配置安全组命令
- ✅ Docker + Nginx + Let’s Encrypt 一键部署方案
欢迎随时提出,我可以立即为你定制 👇
CLOUD云枢