在腾讯云上使用 CentOS 镜像部署 Web 服务时,初始安全配置至关重要。以下是针对 CentOS 7/8(推荐 CentOS 8 Stream 或迁移至 Rocky Linux/AlmaLinux,因 CentOS 7 已于 2024-06-30 停止维护) 的生产级最小可行安全加固清单,兼顾实用性与腾讯云环境特性:
✅ 一、基础系统安全(部署后立即执行)
-
更新系统并安装必要工具
# CentOS 7(EOL,仅限存量环境) sudo yum update -y && sudo yum install -y epel-release vim curl wget net-tools bash-completion # CentOS 8/Stream(推荐) sudo dnf update -y && sudo dnf install -y epel-release vim curl wget net-tools bash-completion -
创建普通管理用户 + 禁用 root 远程登录
sudo useradd -m -s /bin/bash admin sudo passwd admin sudo usermod -aG wheel admin # CentOS 8:wheel 组等效于 sudoers # 编辑 SSH 配置: sudo sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart sshd -
强化 SSH 安全(关键!)
sudo tee -a /etc/ssh/sshd_config << 'EOF' # 禁用密码登录(必须先配置密钥!) PasswordAuthentication no # 限制协议和加密算法(增强兼容性与安全性) Protocol 2 KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com # 限制登录尝试 MaxAuthTries 3 LoginGraceTime 60 # 可选:限制允许登录的用户(按需启用) # AllowUsers admin EOF sudo systemctl restart sshd⚠️ 操作前务必:
- 本地生成并上传 SSH 密钥到
~admin/.ssh/authorized_keys; - 在腾讯云控制台【安全组】中确认已放行 SSH 端口(默认22),且避免对公网开放22端口(见下文安全组配置)。
- 本地生成并上传 SSH 密钥到
✅ 二、腾讯云专属安全配置
-
安全组(Security Group)—— 最重要的网络防线
- ✅ 禁止开放所有端口(0.0.0.0/0)
- ✅ 最小化放行规则(示例):
| 协议 | 端口 | 授权对象 | 说明 |
|——|——|———-|——|
| TCP | 80 |0.0.0.0/0| HTTP(若需公网访问) |
| TCP | 443 |0.0.0.0/0| HTTPS(建议强制启用) |
| TCP | 22 |您的办公IP/32| 仅允许可信IP访问SSH(强烈建议!) |
| ICMP | – |您的办公IP/32| 方便诊断(可选) | - ❌ 禁止放行
3306(MySQL)、6379(Redis)等数据库端口到公网!内网通信走私有网络(VPC)。
-
云防火墙(可选但推荐)
- 在腾讯云控制台开通【云防火墙】,配置应用层防护(如拦截恶意 User-Agent、SQL注入特征);
- 启用“Web应用防护”(WAF)服务(可单独购买或使用 CLB/WAF 集成方案)。
✅ 三、Web 服务专项加固(以 Nginx + PHP 为例)
-
Web 服务最小权限运行
# 创建专用用户(非 root、非 nginx 默认用户) sudo useradd -r -s /sbin/nologin webapp # 修改 Nginx 配置(/etc/nginx/nginx.conf) user webapp; # PHP-FPM 池配置(/etc/php-fpm.d/www.conf) user = webapp group = webapp listen.owner = webapp listen.group = webapp -
禁用危险的 Web 功能
- Nginx 中关闭
.git/、.htaccess、备份文件暴露:location ~ /.(git|hg|svn|bzr|cvs|sh|bak|swp|tmp|log)$ { deny all; } - PHP 中禁用高危函数(
php.ini):disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec
- Nginx 中关闭
-
启用 HTTPS(强制要求)
- 使用腾讯云【SSL证书服务】免费申请 DV 证书;
- Nginx 配置强制 HTTPS 重定向:
server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; }
✅ 四、系统级纵深防御
-
启用防火墙(firewalld)
sudo systemctl enable firewalld sudo systemctl start firewalld sudo firewall-cmd --permanent --remove-service=ssh # 若已通过安全组管控SSH,可禁用firewalld的SSH规则 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload -
安装并配置 Fail2ban(防暴力破解)
sudo yum install -y fail2ban # CentOS 7 sudo dnf install -y fail2ban # CentOS 8 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local echo "[sshd] enabled = true maxretry = 3 bantime = 1h" | sudo tee -a /etc/fail2ban/jail.local sudo systemctl enable fail2ban && sudo systemctl start fail2ban -
日志审计与监控
- 启用
auditd记录关键操作(如/etc/shadow修改、sudo 命令):sudo yum install -y audit audit-libs-python sudo systemctl enable auditd && sudo systemctl start auditd # 添加规则示例(记录敏感文件访问) sudo auditctl -w /etc/passwd -p wa -k identity - 将
/var/log/secure,/var/log/messages,/var/log/nginx/access.log日志接入腾讯云【CLS 日志服务】集中分析。
- 启用
-
定期安全检查
- 安装
rkhunter(Rootkit 检测):sudo yum install -y rkhunter sudo rkhunter --update && sudo rkhunter --propupd sudo rkhunter --check --sk - 使用腾讯云【主机安全(CWP)】Agent(免费版提供漏洞扫描、木马查杀、基线检查)。
- 安装
🚫 绝对禁止事项(腾讯云常见风险)
- ❌ 不要将数据库(MySQL/PostgreSQL)端口(3306/5432)直接暴露到公网 → 改用 云数据库 TencentDB + 内网连接;
- ❌ 不要在实例中存储 AccessKey/SecretKey → 使用 CAM 角色授权给 CVM 实例(通过元数据服务获取临时凭证);
- ❌ 不要关闭 SELinux(CentOS 默认启用)→ 如需调整,用
setsebool而非setenforce 0; - ❌ 不要使用弱密码或默认密码(如
root:root,admin:123456)。
✅ 推荐自动化脚本(快速部署)
可将上述步骤封装为初始化脚本(注意:需提前上传 SSH 公钥):
# save as init-security.sh, run once after login
#!/bin/bash
# ...(上述命令整合,加入错误检查和日志)
echo "✅ Security hardening completed. Reboot recommended."
🔐 终极建议:
- 对外 Web 服务务必前置 腾讯云 CLB(负载均衡) + WAF(Web应用防火墙);
- 敏感业务启用 VPC 私有网络 + 子网隔离(Web 层、应用层、DB 层分属不同子网);
- 定期执行 腾讯云「云安全中心」基线检查(自动修复 CIS 标准项)。
如需我为你生成完整的可执行初始化脚本(含变量配置、兼容 CentOS 7/8)、Nginx 安全模板或腾讯云 CLI 自动化部署代码,请随时告知 👍
安全无小事,祝你构建坚如磐石的 Web 服务!
CDNK博客