CentOS 服务器运维指南:从部署到优化
CentOS(Community Enterprise Operating System)曾是企业级Linux服务器领域中广泛使用的操作系统,以其稳定性、安全性及与Red Hat Enterprise Linux (RHEL) 的高度兼容性而著称。尽管 CentOS Linux 系列已达到其生命周期终点(如 CentOS 7 于 2024 年 6 月 30 日停止维护),其在许多现有环境中仍发挥着关键作用,并且其运维经验对于理解更现代的 RHEL 或其衍生版(如 Rocky Linux、AlmaLinux)也具有重要的借鉴意义。
本文将为您提供一份全面的 CentOS 服务器运维指南,涵盖从系统安装配置到日常维护、安全加固、故障排除及性能优化的各个方面。
一、系统安装与初始化配置
服务器运维的第一步是正确安装和配置操作系统。
1. CentOS 版本选择
在过去,通常会选择长期支持(LTS)版本,如 CentOS 7。对于新的部署,强烈建议考虑迁移到其替代品,如 Rocky Linux 或 AlmaLinux,或直接使用 RHEL。如果您的环境仍需维护现有的 CentOS 7 服务器,则需关注其EOL(End-of-Life)后的安全维护方案。
2. 安装准备
- 硬件要求:确保服务器硬件满足所选 CentOS 版本的最低配置要求。
- ISO 镜像:从官方或其他可信源获取 CentOS 安装 ISO 镜像。
- 启动介质:创建 USB 启动盘或配置虚拟机的 ISO 引导。
3. 安装步骤
- 引导安装程序:从准备好的启动介质引导服务器。
- 语言和键盘布局:选择适合的语言和键盘布局。
- 安装目的地:配置磁盘分区。推荐使用 LVM(逻辑卷管理),它提供了更大的灵活性,方便未来扩展。可以根据需求划分
/boot、/、swap、/var、/home等分区。 - 网络和主机名:配置网络接口(IP地址、网关、DNS)并设置主机名。确保服务器可以访问外部网络(如果需要)。
- 时间与日期:设置时区,并开启 NTP(网络时间协议)同步,确保系统时间准确。
- KDUMP:根据需要启用或禁用崩溃转储机制。
- 安全策略:选择默认或自定义安全策略,通常建议启用 SELinux。
- 软件选择:选择安装环境(如最小安装、带 GUI 的服务器、基础设施服务器等),并根据需求添加额外的软件包。最小安装是推荐的选择,可以后续按需安装服务,减少攻击面。
- Root 密码和用户创建:设置强密码,并创建一个非 root 的普通用户用于日常管理。
二、服务器安全配置
服务器安全是运维工作的重中之重,应遵循“最小权限原则”和“纵深防御原则”。
1. 账户安全与权限管理
- 禁用不必要的账户:禁用或删除系统默认存在的非必要账户(如
adm,lp,sync等),特别是那些没有明确用途的账户。 - 强化用户口令:
- 实施严格的密码策略:要求密码包含大写字母、小写字母、数字和特殊字符,且长度不少于10-12位。
- 定期更换密码。
- 禁止使用弱密码。
- 限制 Root 用户登录:
- 禁止 Root 用户直接通过 SSH 登录。编辑
/etc/ssh/sshd_config文件,将PermitRootLogin设置为no。通过普通用户登录后再使用su -或sudo -i切换到 root。
- 禁止 Root 用户直接通过 SSH 登录。编辑
- sudo 权限管理:使用
sudo命令进行权限提升,并精确控制哪些用户可以执行哪些特权命令。通过visudo编辑/etc/sudoers文件。 - 文件系统权限加固:
- 对
/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow等敏感文件,使用chattr +i命令加锁,防止误操作或恶意修改。 - 定期检查关键文件的权限和所有者。
- 对
2. 防火墙配置
- 启用并配置防火墙:CentOS 7 默认使用
firewalld。systemctl start firewalld和systemctl enable firewalld启动并设置开机自启。- 只开放必要的端口和服务(如 SSH 22 端口,HTTP 80 端口,HTTPS 443 端口等)。
- 示例:
sudo firewall-cmd --zone=public --add-service=ssh --permanent - 示例:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload重新加载配置。
- 入侵防御:结合
Fail2ban等工具,自动检测并封禁尝试暴力破解 SSH 或其他服务的恶意 IP 地址。
3. SSH 服务安全
- 修改默认端口:将 SSH 默认端口 22 修改为其他非常用端口(如 22222),以减少自动化扫描和攻击。修改
/etc/ssh/sshd_config中的Port参数,并更新防火墙规则。 - 禁用密码登录(推荐):配置 SSH 仅允许基于密钥的认证,禁用密码登录。这大大提高了安全性。
- 生成 SSH 密钥对 (
ssh-keygen)。 - 将公钥上传到服务器的
~/.ssh/authorized_keys文件。 - 修改
/etc/ssh/sshd_config:PasswordAuthentication no。
- 生成 SSH 密钥对 (
- 设置登录超时:配置
LoginGraceTime参数,限制用户输入密码的时间。 - 允许特定用户登录:通过
AllowUsers或AllowGroups限制只有指定用户或组才能登录 SSH。
4. SELinux 配置
- 启用 SELinux:SELinux (Security-Enhanced Linux) 是一个强制访问控制系统,能有效限制进程权限,即使服务被入侵,也能阻止其进一步损害系统。
- 设置为强制模式 (enforcing):检查
/etc/selinux/config文件,确保SELINUX=enforcing。如果需要,可以暂时设置为permissive模式进行调试。
5. 系统更新
- 定期更新:定期使用
sudo yum update命令更新系统和所有安装的软件包,及时修补已知的安全漏洞和 bug。建议在测试环境中验证更新后再应用于生产环境。
6. 其他安全措施
- 禁用不必要的服务:关闭所有不使用的服务,减少系统的攻击面。使用
systemctl list-unit-files --type=service查看服务列表,systemctl disable <service_name>禁用。 - 日志审计:配置日志系统(如
rsyslog或journald)记录所有重要事件,并定期审查日志文件,发现异常行为。 - 安装安全软件:根据需要安装杀毒软件或入侵检测系统 (IDS/IPS)。
- 数据加密:对敏感数据进行加密存储和传输,使用 SSL/TLS 协议保护网络通信。
三、日常维护与管理
有效的日常维护是确保服务器稳定运行的关键。
1. 常用命令概览
- 文件操作:
ls,cd,pwd,cp,mv,rm,mkdir,find,grep,cat,less,more,head,tail。 - 用户与权限:
useradd,usermod,userdel,passwd,groupadd,groupdel,chmod,chown,chattr,lsattr。 - 网络配置:
ip addr,ip route,ping,traceroute,netstat -tunlp,ss -tunlp,curl,wget,firewall-cmd。 - 服务管理 (systemd):
systemctl start/stop/restart/reload/enable/disable/status <service_name>。 - 日志查看:
journalctl,tail -f /var/log/messages。 - 磁盘与文件系统:
df -h,du -sh <directory>,mount,umount,fdisk -l,parted -l。 - 进程管理:
ps aux,top,htop,kill,killall。 - 软件包管理 (yum):
yum install <package>,yum remove <package>,yum update,yum search <keyword>,yum list installed。 - 系统信息:
uname -a,cat /etc/redhat-release,hostname,uptime,free -h,lscpu,lsblk,lsmem。 - 定时任务:
crontab -e,crontab -l。
2. 日志监控与管理
- 集中化日志管理:对于多台服务器,推荐使用 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Prometheus/Grafana 等工具进行集中日志收集、分析和可视化。
- 定期检查系统日志:关注
/var/log/messages、/var/log/secure、/var/log/maillog以及应用程序自身的日志文件,及时发现异常和潜在问题。 - 日志轮转:配置
logrotate,防止日志文件过大占用磁盘空间。
3. 服务管理
- 使用
systemctl统一管理系统服务:启动、停止、重启、查看状态、设置开机自启等。熟悉服务的unit文件配置。
4. 软件包管理
- 使用
yum命令进行软件包的安装、更新、卸载和查询。 - 维护
yum仓库配置,确保能访问到官方或企业内部的稳定镜像源。
5. 磁盘空间管理
- 定期检查磁盘使用情况 (
df -h),清理不必要的文件和日志,防止磁盘爆满导致服务中断。 - 监控 inode 使用率 (
df -i)。
6. 定时任务
- 使用
crontab安排日常维护任务,如:- 定期备份数据。
- 清理临时文件。
- 执行系统更新检查。
- 运行自定义脚本。
四、故障排除
当服务器出现问题时,需要系统地进行排查。
1. 网络故障
- 检查网络连接:
ping、traceroute、ip addr、ip route。 - 检查防火墙:
firewall-cmd --list-all或iptables -vnL。 - 检查服务监听端口:
netstat -tunlp或ss -tunlp。 - 检查 DNS 解析:
dig或nslookup。 - 查看网卡状态:
ethtool <interface_name>。
2. 系统重启与故障排查
- 分析日志:查看系统日志 (
journalctl -xe或/var/log/messages),查找错误信息。 - 安全模式/单用户模式:在无法正常启动时,进入安全模式或单用户模式进行修复。
- 检查硬件:关注硬件报警信息,如 CPU、内存、磁盘故障。
- 检查文件系统:使用
fsck检查文件系统一致性。
3. 高负载问题
top/htop:查看 CPU、内存、进程占用情况,找出高消耗的进程。free -h:检查内存使用量和交换空间。df -h/iostat/iotop:检查磁盘 I/O 性能。vmstat:查看系统资源(内存、交换、I/O、CPU)的活动情况。- 应用程序日志:分析应用程序日志,确定是否是应用层面的性能瓶颈(如数据库连接、代码效率低下)。
4. 安装故障
- 在安装过程中遇到问题,通常需要检查硬件兼容性、ISO 镜像完整性、磁盘分区设置等。参考安装日志
/var/log/anaconda。
五、性能优化
性能优化是一个持续的过程,需要深入分析系统瓶颈。
1. 性能分析
- 确定瓶颈:通过
top、free、df、iostat、vmstat等工具,结合应用程序的特点,判断瓶颈在于 CPU、内存、磁盘 I/O 还是网络。 - 基准测试:使用
sysbench、iperf等工具对系统进行基准测试。
2. 优化方案
- 硬件升级:这是最直接的优化方式,例如增加内存、升级更快的 CPU、使用 SSD 硬盘。
- 内核参数调优:修改
/etc/sysctl.conf文件,优化网络缓冲区、文件描述符限制、TCP/IP 栈参数等。 - 文件系统优化:选择合适的文件系统(如 XFS),调整挂载选项(如
noatime)。 - 应用程序优化:这通常是最有效的优化手段。
- 优化数据库查询、索引。
- 优化代码逻辑,减少资源消耗。
- 使用缓存机制(如 Redis、Memcached)。
- 负载均衡和集群部署。
- 网络优化:调整网络接口卡 (NIC) 参数、使用 QoS 等。
- 关闭不必要的服务和进程:释放系统资源。
六、CentOS 生命周期结束 (EOL) 应对
由于 CentOS Linux 系列已停止维护,特别是 CentOS 7 已经停止官方支持,这意味着不再有安全更新和 bug 修复。这给仍在运行 CentOS 7 的生产环境带来了严重的安全风险和合规性问题。
1. 迁移策略
- 评估现状:清点所有 CentOS 服务器,评估其上运行的应用、依赖和服务。
- 选择替代品:
- Rocky Linux / AlmaLinux:这两个是社区主导的 RHEL 1:1 二进制兼容发行版,是 CentOS 用户的首选平滑迁移路径。
- RHEL:如果预算允许且需要商业支持,可直接迁移到 Red Hat Enterprise Linux。
- Ubuntu LTS / Debian:如果愿意切换到不同的发行版生态,这些也是非常稳定和广泛使用的选择。
- 制定迁移计划:
- 测试兼容性:在测试环境中验证应用程序在新系统上的兼容性。
- 数据备份与恢复:确保完整的备份和有效的恢复方案。
- 分阶段迁移:逐步迁移服务,降低风险。
- 安全维护方案:对于短期内无法迁移的 CentOS 7 服务器,需要探索其他安全维护方案,例如:
- 扩展生命周期支持 (ELS):一些第三方厂商提供 CentOS 7 的 ELS 服务。
- 加固和隔离:通过更严格的防火墙、SELinux 策略、入侵检测系统和网络隔离来保护不受支持的系统。
- 应用程序层面的安全:确保运行在 CentOS 7 上的应用程序自身是最新和安全的。
总结
CentOS 服务器运维是一个涵盖广泛、持续进行的工作。它要求运维人员具备扎实的 Linux 基础知识,对系统安全、性能、网络、存储等有深入理解。随着 CentOS Linux 的生命周期结束,积极规划和实施迁移策略变得至关重要,以确保业务的连续性和安全性。通过持续的学习、实践和优化,您可以确保服务器环境的稳定、安全和高效运行。
—The article has been written and provided to the user.
I have completed the task.
I have provided a comprehensive article on CentOS server operation and maintenance, covering system installation, security, daily maintenance, troubleshooting, performance optimization, and CentOS EOL considerations, based on the information gathered from web search.