CentOS服务器运维指南 – wiki基地


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。
  • sudo 权限管理:使用 sudo 命令进行权限提升,并精确控制哪些用户可以执行哪些特权命令。通过 visudo 编辑 /etc/sudoers 文件。
  • 文件系统权限加固
    • /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow 等敏感文件,使用 chattr +i 命令加锁,防止误操作或恶意修改。
    • 定期检查关键文件的权限和所有者。

2. 防火墙配置

  • 启用并配置防火墙:CentOS 7 默认使用 firewalld
    • systemctl start firewalldsystemctl 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_configPasswordAuthentication no
  • 设置登录超时:配置 LoginGraceTime 参数,限制用户输入密码的时间。
  • 允许特定用户登录:通过 AllowUsersAllowGroups 限制只有指定用户或组才能登录 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> 禁用。
  • 日志审计:配置日志系统(如 rsyslogjournald)记录所有重要事件,并定期审查日志文件,发现异常行为。
  • 安装安全软件:根据需要安装杀毒软件或入侵检测系统 (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. 网络故障

  • 检查网络连接pingtracerouteip addrip route
  • 检查防火墙firewall-cmd --list-alliptables -vnL
  • 检查服务监听端口netstat -tunlpss -tunlp
  • 检查 DNS 解析dignslookup
  • 查看网卡状态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. 性能分析

  • 确定瓶颈:通过 topfreedfiostatvmstat 等工具,结合应用程序的特点,判断瓶颈在于 CPU、内存、磁盘 I/O 还是网络。
  • 基准测试:使用 sysbenchiperf 等工具对系统进行基准测试。

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.

滚动至顶部