在腾讯云上使用 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
- Nginx/Apache:确保
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/9 或 Rocky 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