CentOS生产环境部署与安全加固实战指南

发布时间:2026/7/21 4:25:00
CentOS生产环境部署与安全加固实战指南 1. CentOS生产环境部署基础配置1.1 系统安装与初始化设置在物理机或虚拟机上安装CentOS 7.9时建议选择Minimal Install模式。这个最小化安装包仅包含基础系统组件能有效减少攻击面。安装完成后立即执行以下初始化操作# 更新系统基础组件 yum update -y yum install -y epel-release # 安装基础工具集 yum install -y vim wget curl net-tools lsof telnet traceroute bind-utils # 关闭不必要的服务 systemctl disable postfix systemctl stop postfix systemctl disable firewalld systemctl stop firewalld注意生产环境中防火墙建议使用iptables而非firewalld因其规则配置更灵活。若必须使用firewalld需仔细规划zone和service配置。1.2 安全加固关键步骤SSH安全配置 修改/etc/ssh/sshd_config关键参数Port 2222 # 修改默认端口 PermitRootLogin no MaxAuthTries 3 ClientAliveInterval 300 PasswordAuthentication no # 强制使用密钥登录内核参数优化 在/etc/sysctl.conf中添加net.ipv4.tcp_syncookies 1 net.ipv4.conf.all.rp_filter 1 fs.file-max 65535 kernel.pid_max 65536用户权限控制# 创建运维账户 useradd ops -G wheel passwd ops visudo # 确保%wheel有sudo权限1.3 存储规划实战方案典型生产环境存储配置建议系统盘50GBext4/xfs数据盘根据业务需求单独挂载建议xfs日志盘单独分区防止写满系统# 数据盘格式化挂载示例 mkfs.xfs /dev/sdb mkdir /data echo /dev/sdb /data xfs defaults,noatime,nodiratime 0 0 /etc/fstab mount -a2. 生产环境服务部署规范2.1 中间件标准化安装以MySQL 8.0为例说明标准化部署流程配置官方YUM源wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm rpm -ivh mysql80-community-release-el7-7.noarch.rpm安装优化配置yum install -y mysql-community-server # 关键my.cnf配置 [mysqld] innodb_buffer_pool_size 4G # 物理内存的50-70% innodb_log_file_size 512M max_connections 5002.2 高可用架构实现Keepalived双主MySQL配置要点Keepalived配置示例vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } }MySQL双主复制配置# 主库A执行 CREATE USER repl% IDENTIFIED BY password; GRANT REPLICATION SLAVE ON *.* TO repl%; # 主库B执行 CHANGE MASTER TO MASTER_HOSTmasterA_ip, MASTER_USERrepl, MASTER_PASSWORDpassword, MASTER_AUTO_POSITION1; START SLAVE;3. 系统升级与迁移策略3.1 CentOS 7到AlmaLinux迁移准备工作# 备份关键数据 rsync -avz /etc /backup/etc_backup mysqldump -A /backup/mysql_full.sql # 安装迁移工具 yum install -y epel-release yum install -y leapp-upgrade leapp-data-almalinux执行迁移leapp preupgrade leapp upgrade reboot关键检查点迁移后需验证/etc下配置文件是否保留完整特别是网络配置和系统服务单元文件。3.2 大版本升级风险控制创建可回退的快照方案# 使用LVM创建快照 lvcreate -L 10G -s -n centos_snap /dev/centos/root分阶段验证流程阶段1测试环境完整迁移验证1周阶段2预发布环境灰度迁移2周阶段3生产环境分批迁移每周10%节点4. 生产环境运维实战技巧4.1 性能问题排查三板斧快速诊断命令集# CPU瓶颈 top -H -p pgrep -d, nginx # 进程级CPU分析 perf top -g -p $PID # 函数级热点分析 # 内存分析 pmap -x $PID | tail -n 10 # 内存分布 cat /proc/$PID/smaps | grep -i swap # 交换内存 # IO瓶颈 iotop -oP biosnoop # 需要安装bcc-tools日志分析黄金组合# Nginx错误日志分析 grep -E 50[0-9] /var/log/nginx/error.log | awk {print $9} | sort | uniq -c | sort -nr # MySQL慢查询优化 pt-query-digest /var/log/mysql/mysql-slow.log4.2 自动化运维体系构建基础监控方案PrometheusGranfana# docker-compose.yml示例 version: 3 services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml node_exporter: image: prom/node-exporter ports: - 9100:9100配置管理Ansible Playbook示例- hosts: webservers tasks: - name: Ensure Nginx is installed yum: name: nginx state: latest - name: Copy customized config template: src: templates/nginx.conf.j2 dest: /etc/nginx/nginx.conf notify: restart nginx handlers: - name: restart nginx systemd: name: nginx state: restarted在实际运维中我发现CentOS 7升级到AlmaLinux 8时最容易出现的问题是与老版本Python组件的兼容性。建议提前用leapp preupgrade生成兼容性报告对于确实无法兼容的组件可以考虑使用Podman容器化方案进行隔离部署。另外对于数据库这类有状态服务采用双机并行运行数据同步的方案进行灰度迁移比直接升级更稳妥。