在腾讯云上部署 CentOS 系统的 Web 服务时,初始安全配置是防止服务器被入侵、数据泄露或资源滥用的关键步骤。以下是针对 CentOS(以 CentOS 7/8 为例)的详细初始安全配置清单,按优先级和逻辑顺序排列:
一、基础系统加固
1. 创建非 root 用户并禁用 root 远程登录
- 原因:直接暴露 root 账户极易遭受暴力破解攻击。
-
操作:
# 创建新用户(例如 webadmin) useradd -m -s /bin/bash webadmin passwd webadmin # 将用户加入 sudoers 组 visudo # 添加行:webadmin ALL=(ALL) NOPASSWD:ALL (根据需求设置密码验证) # 编辑 SSH 配置文件 vi /etc/ssh/sshd_config # 修改或添加: PermitRootLogin no # 禁止 root 远程登录 PasswordAuthentication yes # 建议启用密钥登录,禁用密码登录更安全 PubkeyAuthentication yes # 启用公钥认证 ChallengeResponseAuthentication no # 重启 SSH 服务 systemctl restart sshd
2. 配置防火墙(firewalld 或 iptables)
- 腾讯云特有建议:优先使用腾讯云控制台的安全组规则,而非仅依赖主机内部防火墙。
- 在腾讯云控制台 → 云服务器 → 安全组中,只开放必要端口(如 80, 443, 以及自定义 SSH 端口)。
- 默认策略设为“拒绝所有入站”,明确允许所需 IP 和端口。
- 主机内防火墙(可选但推荐):
systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
3. 更新系统与内核
yum update -y && yum upgrade -y
# 检查是否有安全补丁
yum check-update | grep security
二、SSH 安全强化
1. 使用密钥登录替代密码登录
- 生成密钥对(本地机器):
ssh-keygen -t rsa -b 4096 - 上传公钥到服务器:
ssh-copy-id webadmin@your_server_ip - 禁用密码登录(见上文
sshd_config中的PasswordAuthentication no)
2. 更改 SSH 默认端口(可选)
- 避免自动化扫描工具探测标准 22 端口。
- 修改
/etc/ssh/sshd_config中的Port 2222,并在腾讯云安全组中开放新端口。
3. 安装 Fail2Ban 防止暴力破解
yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
# 配置 /etc/fail2ban/jail.local,监控 sshd
三、Web 服务安全配置
1. 最小化安装 Web 软件
- 只安装必要的组件(如 Nginx/Apache + PHP/Node.js),避免多余服务。
- 定期更新 Web 服务器及其模块。
2. 隐藏版本信息
- Nginx:
server_tokens off; - Apache:
ServerTokens Prod ServerSignature Off
3. 配置 HTTPS(强制 HTTP → HTTPS)
- 使用 Let’s Encrypt 免费证书:
yum install certbot python2-certbot-nginx -y certbot --nginx - 强制重定向 HTTP 到 HTTPS,并启用 HSTS。
4. 文件权限与所有权
- Web 目录不应由 root 拥有。
chown -R www-data:www-data /var/www/html # Debian/Ubuntu 示例 chown -R nginx:nginx /var/www/html # CentOS Nginx 常见用户 chmod -R 755 /var/www/html find /var/www/html -type f -exec chmod 644 {} ;
5. 禁用危险函数(PHP 环境)
- 在
php.ini中禁用高风险函数:disable_functions = passthru, exec, system, chroot, scandir, chgrp, chown, proc_open, proc_get_status, popen, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, leak, ftp_exec, escapeshellcmd, php_uname, proc_nice, proc_terminate, shell_exec, show_source, highlight_file, pclose, stream_socket_server, pcntl_exec
四、系统级安全加固
1. 关闭不必要的服务
systemctl list-unit-files --type=service --state=enabled
# 关闭如 bluetooth, cups, postfix 等非必需服务
systemctl disable <service_name>
2. 配置 SELinux(CentOS 默认开启)
- 不要直接关闭 SELinux,而是学习其策略。
- 若确需临时调试,可设置为 permissive 模式:
setenforce 0 getenforce - 生产环境建议保持 Enforcing,并通过
audit2allow调整策略。
3. 限制核心转储(Core Dump)
echo "* soft core 0" >> /etc/security/limits.conf
echo "* hard core 0" >> /etc/security/limits.conf
4. 时间同步
yum install chrony -y
systemctl enable chronyd
systemctl start chronyd
五、日志监控与审计
1. 启用系统日志集中管理
- 查看关键日志:
journalctl -u sshd -f journalctl -u nginx -f tail -f /var/log/messages
2. 安装 auditd 进行安全审计
yum install audit -y
systemctl enable auditd
systemctl start auditd
3. 配置日志轮转(logrotate)
- 确保
/etc/logrotate.d/中有适当配置,避免磁盘占满。
六、备份与恢复策略
- 定期快照:利用腾讯云云盘快照功能,每日自动备份系统盘和数据盘。
- 代码与数据库备份:
- 使用脚本定时备份网站文件和数据库。
- 将备份上传至 COS(腾讯云对象存储)或其他异地存储。
- 测试恢复流程:至少每季度进行一次恢复演练。
七、其他建议
- 启用腾讯云云镜(主机安全):提供入侵检测、漏洞扫描、基线检查等功能。
- DDoS 防护:如果业务重要,考虑启用腾讯云 DDoS 基础防护或高防 IP。
- 最小权限原则:每个应用服务使用独立的用户运行,避免共用 root 或同一用户。
| ✅ 总结 checklist: | 项目 | 状态 |
|---|---|---|
| [ ] 创建非 root 用户并禁用 root 登录 | ✅ | |
| [ ] 配置腾讯云安全组(仅开放必要端口) | ✅ | |
| [ ] 启用 SSH 密钥登录 | ✅ | |
| [ ] 安装 Fail2Ban | ✅ | |
| [ ] 配置 HTTPS 证书 | ✅ | |
| [ ] 隐藏 Web 服务器版本信息 | ✅ | |
| [ ] 设置正确的文件权限 | ✅ | |
| [ ] 禁用 PHP 危险函数 | ✅ | |
| [ ] 关闭非必要服务 | ✅ | |
| [ ] 启用 SELinux(Enforcing 模式) | ✅ | |
| [ ] 配置自动快照与备份 | ✅ | |
| [ ] 安装云镜(主机安全Agent) | ✅ |
完成以上配置后,你的 CentOS Web 服务器将具备较高的基础安全防护能力。
轻量云Cloud