在腾讯云上部署 CentOS 系统的 Web 服务,初始安全配置的核心逻辑只有一条:最小化权限,最大化隔离。
很多新手上来就装宝塔、装面板,或者直接用 root 登录,这是大忌。下面我按优先级和实操步骤,给你拆解一套“硬核”且有效的初始加固方案。
1. 网络层:腾讯云安全组(第一道防线)
不要指望系统防火墙能挡住所有扫描,云厂商的安全组是入口。
- 关闭默认开放端口:新建安全组时,默认可能开启了 22 (SSH) 和 3389 (RDP) 对所有 IP 开放。立刻修改为仅允许你的固定 IP 访问。
- Web 端口精细化:
- HTTP (80) / HTTPS (443):来源设置为
0.0.0.0/0(公网访问)。 - 其他所有端口(如数据库 3306/5432、Redis 6379、Docker 2375 等):严禁在安全组中直接对公网开放。这些服务必须通过内网通信,或者通过 SSH 隧道/反向X_X暴露。
- HTTP (80) / HTTPS (443):来源设置为
- ICMP 策略:如果不需要 Ping 测试,建议在安全组丢弃 ICMP 入站请求,减少被探测到的概率。
2. 系统层:SSH 加固(命门所在)
SSH 是被暴力破解的重灾区。
-
禁用 Root 远程登录:
# 编辑 /etc/ssh/sshd_config PermitRootLogin no # 重启 sshd 服务 systemctl restart sshd注意:操作前务必先创建一个普通用户并赋予 sudo 权限,否则你会把自己锁在外面。
-
强制使用密钥认证:
PasswordAuthentication no PubkeyAuthentication yes生成一对公私钥,私钥存本地,公钥上传到服务器
~/.ssh/authorized_keys。密码登录彻底关闭。 -
更改默认端口:将 SSH 端口从 22 改为一个高位随机端口(如 2222),并在腾讯云安全组中同步修改。这能过滤掉 99% 的自动化脚本扫描。
-
安装 Fail2Ban:
防止暴力破解的最有效工具。yum install fail2ban -y systemctl enable --now fail2ban配置
/etc/fail2ban/jail.local,设置尝试失败 3-5 次后封禁 IP 24 小时。
3. 系统更新与清理(减少攻击面)
-
最小化安装:CentOS 镜像通常预装了大量不需要的软件包(如打印机服务、邮件服务等)。
# 查看已安装包 rpm -qa | wc -l # 卸载非必要组件 yum remove cups-* postfix-* sendmail-* -y包越少,潜在漏洞点越少。
-
自动安全更新:
虽然生产环境建议手动测试更新,但必须开启基础补丁更新。yum install yum-cron -y systemctl enable --now yum-cron
4. 文件系统与内核参数(防御横向移动)
-
隐藏敏感文件:
Web 目录下绝对禁止存在.git、.svn、.env、.htaccess(Apache)等版本控制或环境变量文件。这些文件泄露会导致密钥、数据库密码直接暴露。- Nginx 配置示例:
location ~ /. { deny all; }
- Nginx 配置示例:
-
内核参数优化与安全:
编辑/etc/sysctl.conf,添加以下内容:# 防止 SYN Flood 攻击 net.ipv4.tcp_syncookies = 1 # 忽略 ICMP 重定向 net.ipv4.icmp_echo_ignore_all = 1 # 禁止 IP 源路由 net.ipv4.ip_forward = 0 net.ipv4.conf.all.accept_source_route = 0 # 记录可疑日志 kernel.dmesg_restrict = 1生效命令:
sysctl -p
5. Web 服务层配置(Nginx/Apache)
假设你使用的是 Nginx:
-
隐藏版本号:
server_tokens off;防止攻击者根据具体版本寻找已知 CVE 漏洞。
-
限制请求大小:
client_max_body_size 10m;防止超大文件上传导致磁盘填满或内存溢出。
-
启用 HTTPS 并强制跳转:
免费申请 Let’s Encrypt 证书或使用腾讯云 SSL 证书服务。配置 HSTS(HTTP Strict Transport Security)头,防止降级攻击。 -
目录浏览关闭:
autoindex off;
6. 监控与日志审计(事后追溯)
-
启用 Auditd:
监控系统关键文件变更(如/etc/passwd,/etc/shadow,/usr/bin下的可执行文件)。yum install audit -y systemctl enable --now auditd -
日志轮转与集中收集:
确保/var/log/messages和 Nginx/Apache 访问日志有合理的轮转策略,避免磁盘写满。有条件的话,将日志推送到腾讯云 CLS(日志服务)或 ELK 集群,便于异常行为分析。
7. 备份策略(最后的安全网)
安全不是绝对的,一旦沦陷,恢复能力才是关键。
- 快照策略:在腾讯云控制台为云硬盘设置定时快照(例如每天一次,保留最近 7 天)。
- 代码与数据分离:确保数据库备份独立于系统盘。使用 mysqldump 或 xtrabackup 定期导出数据库,并存储到 COS(对象存储)等非同一地域的存储桶中。
总结 Checklist
- [ ] 腾讯云安全组:仅开放 80/443 和你的 SSH 端口(限 IP)。
- [ ] SSH:禁用 Root 登录,改用密钥+非标准端口,安装 Fail2Ban。
- [ ] 系统:最小化安装,关闭无用服务,开启自动安全补丁。
- [ ] Web:隐藏版本号,关闭目录浏览,HTTPS 强制跳转。
- [ ] 防护:隐藏
.git等敏感目录,配置 sysctl 防攻击。 - [ ] 备份:云硬盘快照 + 数据库异地备份。
这套配置完成后,你的 CentOS 服务器在面对自动化扫描和初级攻击时,已经具备了相当高的抵抗力。剩下的,就是持续监控和及时响应了。
云知道CLOUD