在腾讯云 CentOS 镜像上部署 Web 服务前,进行规范、务实的初始安全配置至关重要。以下是面向生产环境的关键且可落地的安全加固步骤(基于 CentOS 7/8,兼顾腾讯云特性):
✅ 一、系统基础加固(登录即执行)
-
更新系统并安装必要工具
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 -
创建普通管理用户(禁用 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 -
配置 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。 -
启用并配置防火墙(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 -
启用 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/tcp、443/tcp(Web),源 IP 限制为运维 IP 或 CDN 回源段(如1.2.3.4/32或162.247.240.0/20); - ❌ 禁止
0.0.0.0/0开放 SSH/Web 管理端口; - 出站:默认允许(或按需限制到可信域名/IP)。
- 入站:仅放行
-
云硬盘加密:在腾讯云控制台为系统盘/数据盘开启 KMS 加密(免费且透明)。
-
启用云监控与告警:
配置「登录异常」、「CPU/内存突增」、「网络连接数激增」等告警,关联企业微信/短信。
✅ 三、Web 服务专项加固(以 Nginx + PHP/Python 为例)
-
运行用户隔离
修改 Nginx 配置/etc/nginx/nginx.conf:user nginx; # 不要用 root!确保 nginx 用户权限最小化 # 禁用 server_tokens(隐藏版本号) server_tokens off; -
禁用危险 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; } -
配置 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; -
应用层防护(可选但强烈推荐)
- 部署 ModSecurity + OWASP CRS 规则集(Nginx 版本);
- 或使用腾讯云 Web 应用防火墙(WAF)(托管型,推荐生产环境启用)。
✅ 四、持续安全基线(自动化建议)
| 项目 | 推荐方案 |
|---|---|
| 漏洞扫描 | 每月用 yum update + yum check-update;配合腾讯云「主机安全」服务(免费版含漏洞扫描) |
| 日志审计 | 启用 auditd 记录关键操作;日志推送至腾讯云 CLS(日志服务)集中分析 |
| 备份策略 | 使用腾讯云 COS + rclone 或 coscmd 自动备份网站代码、数据库、Nginx 配置;保留 7 天快照 |
| 合规检查 | 运行 lynis audit system(Lynis)生成加固报告 |
🚫 绝对禁止的操作(常见高危错误)
- ❌ 直接用
root用户运行 Web 服务(Nginx/Apache/PHP-FPM) - ❌ 开放
22/tcp到0.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 场景下的安全方案,可随时告知,我可为你定制输出。安全无小事,稳扎稳打才是正道 🔒
云服务器