在云服务器(如阿里云、腾讯云、AWS等)上安装 CentOS(建议使用 CentOS 7 或更推荐的 Rocky Linux / AlmaLinux 8/9,因 CentOS 8 已停维,CentOS 7 于2024-06-30终止支持)后,为保障安全性、稳定性、性能与可维护性,需进行系统级优化。以下是关键优化项(按优先级和类别整理),适用于主流云环境:
✅ 一、基础安全加固(必须优先执行)
| 项目 | 操作说明 | 命令示例/要点 |
|---|---|---|
| 1. 更新系统 | 升级内核及关键安全补丁 | sudo yum update -y(CentOS 7)sudo dnf update -y(CentOS 8+/Rocky/Alma) |
| 2. 禁用 root 远程 SSH 登录 | 防止暴力破解 | 编辑 /etc/ssh/sshd_config:PermitRootLogin noPasswordAuthentication no(启用密钥登录后)✅ 重启: sudo systemctl restart sshd |
| 3. 创建普通管理用户 + sudo 权限 | 避免直接使用 root | sudo useradd -m -s /bin/bash deploysudo passwd deployecho "deploy ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/deploy |
| 4. 配置 SSH 密钥登录(推荐) | 替代密码认证 | 客户端生成密钥 → 上传公钥到 ~/.ssh/authorized_keys → 验证后禁用密码登录 |
| 5. 启用防火墙(firewalld) | 默认放行最小端口 | sudo systemctl enable --now firewalldsudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --permanent --add-port=80/tcp(按需添加)sudo firewall-cmd --reload |
| 6. 安装并配置 fail2ban(可选但强烈推荐) | 自动封禁恶意 IP | sudo yum install -y epel-release && sudo yum install -y fail2ban启用 jail-sshd,调整 bantime 和 maxretry |
✅ 二、性能与内核调优(按业务场景选择)
⚠️ 注意:云环境(尤其虚拟化层)对部分参数敏感,避免盲目套用物理机调优;建议先压测再调整。
| 类别 | 推荐配置(典型 Web/DB 场景) | 说明 |
|---|---|---|
| 网络栈优化 | /etc/sysctl.conf 中追加:net.ipv4.tcp_tw_reuse = 1<br>net.ipv4.ip_local_port_range = 1024 65535<br>net.core.somaxconn = 65535<br>net.core.netdev_max_backlog = 5000<br>net.ipv4.tcp_fin_timeout = 30 |
提升高并发连接处理能力;云平台通常已优化,可微调 |
| 文件系统 & I/O | mount -o remount,noatime,nodiratime,barrier=1 /(XFS/ext4)检查磁盘 I/O 调度器(云盘多为 none 或 kyber,勿强制设 deadline) |
noatime 减少元数据写入;云盘(ESSD/SSD)无需传统调度器优化 |
| 内存 & OOM | vm.swappiness = 1(SSD 云盘)或 0(纯内存服务)vm.vfs_cache_pressure = 50(缓存更持久) |
降低交换倾向,提升缓存效率 |
| 时钟同步 | sudo timedatectl set-ntp true确认 NTP 服务(chronyd)运行: sudo systemctl status chronyd |
云服务器务必启用 NTP,避免时间漂移(影响 SSL、日志、分布式服务) |
🔍 验证:
sudo sysctl -p && sudo sysctl -a | grep 'tcp|somaxconn'
✅ 三、云平台适配与运维增强
| 项目 | 说明 |
|---|---|
| 1. 安装云监控 agent | – 阿里云:cloudmonitor(自动安装或手动下载)– 腾讯云: tencent-monitor– AWS: amazon-cloudwatch-agent→ 实时监控 CPU/内存/磁盘/网络,触发告警 |
| 2. 配置 cloud-init(首次启动) | 确保 /etc/cloud/cloud.cfg 中 disable_root: 1、ssh_deletekeys: 1 等合理;云平台通过 metadata 注入 SSH 密钥、主机名等,勿禁用 |
| 3. 日志集中管理 | – 启用 rsyslog 或 journalctl --rotate(防止 /var/log/journal 占满)– 配置 logrotate(如 /etc/logrotate.d/nginx)– 推荐对接 ELK/Splunk 或云日志服务(SLS/CLS/CloudWatch Logs) |
| 4. 磁盘空间预警 | 编写简单脚本监控 /、/var 使用率(>90% 发邮件/钉钉告警) |
✅ 四、其他关键实践(易忽略但重要)
-
✅ 关闭 SELinux?
→ 不建议关闭! 改为permissive模式调试,生产环境保持enforcing并正确配置策略(semanage port -a -t http_port_t -p tcp 8080)。云环境 SELinux 兼容性良好。 -
✅ 时间同步验证
timedatectl status # 确认 "System clock synchronized: yes" chronyc tracking # 查看 NTP 偏移 -
✅ 内核参数持久化
所有sysctl修改需写入/etc/sysctl.conf或/etc/sysctl.d/99-custom.conf,否则重启失效。 -
✅ 禁用无用服务
sudo systemctl list-unit-files --state=enabled # 查看启用服务 sudo systemctl disable postfix avahi-daemon bluetooth # 按需禁用(Web 服务器通常无需邮件/蓝牙) -
✅ 安装基础工具包
sudo yum groupinstall "Development Tools" -y sudo yum install -y vim-enhanced curl wget git htop iftop iotop net-tools lsof unzip zip rsync
🚫 避坑提醒(云环境特有)
- ❌ 不要修改
/proc/sys/net/ipv4/conf/*/rp_filter(云网络可能依赖反向路径过滤) - ❌ 不要禁用
cloud-init(导致后续扩容、重置密码等功能异常) - ❌ 不要手动编译内核(云平台提供定制优化内核,且升级困难)
- ❌ 不要关闭
systemd-journald(影响故障排查和云平台日志采集)
✅ 最终建议流程(自动化脚本化)
# 示例:一键初始化脚本框架(生产前务必测试!)
curl -fsSL https://raw.githubusercontent.com/your-org/centos-init/main/cloud-init.sh | bash -s --
--user deploy
--ssh-key "ssh-rsa AAAA..."
--timezone Asia/Shanghai
--firewall-ports "22,80,443"
💡 终极提示:
- 备份快照:所有优化前,务必在云平台创建系统盘快照!
- 文档记录:变更的每个参数、原因、预期效果,写入运维 Wiki。
- 持续监控:用 Prometheus+Grafana 监控关键指标(load、IO wait、swap、conn_established)。
如需我为你生成:
- ✅ 完整的
sysctl.conf优化模板(适配 Web/数据库/容器场景) - ✅ 自动化初始化 Bash 脚本(含安全加固+云平台适配)
- ✅ fail2ban + 钉钉告警配置详解
- ✅ Rocky Linux 9 的完整迁移/优化指南
欢迎随时告知你的具体场景(如:Nginx+PHP+MySQL、Docker/K8s 节点、大数据计算节点),我可提供定制化方案 👇
PHPWP博客