CentOS 8.5 Minimal Install之后必做的10项安全与效能初始化配置附一键脚本刚完成CentOS 8.5 Minimal Install的系统就像一张白纸——干净但缺乏生产力。作为运维人员我们需要在最短时间内将其转化为安全、高效的生产环境。本文将分享一套经过实战验证的初始化流程涵盖从系统更新到关键工具安装的全套操作。1. 系统更新与软件源优化新安装的系统首要任务是获取最新安全补丁。默认的CentOS软件源在国内访问速度较慢建议替换为阿里云或腾讯云镜像# 备份原有repo文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 使用阿里云镜像 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo # 清理并重建缓存 sudo dnf clean all sudo dnf makecache更新系统所有软件包sudo dnf update -y sudo dnf upgrade -y注意如果使用Development Tools组安装建议同时启用EPEL和PowerTools仓库sudo dnf install -y epel-release sudo dnf config-manager --set-enabled powertools2. 基础安全加固2.1 用户与权限管理永远不要使用root账户进行日常操作。创建具有sudo权限的专用用户# 创建新用户 sudo useradd -m -s /bin/bash opsuser sudo passwd opsuser # 授予sudo权限 sudo usermod -aG wheel opsuser禁用root的SSH登录能力sudo sed -i s/^#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config sudo systemctl restart sshd2.2 防火墙初始配置Firewalld是CentOS 8的默认防火墙解决方案。基础配置如下# 启用常用服务端口 sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --permanent --add-servicehttp sudo firewall-cmd --permanent --add-servicehttps # 限制SSH访问IP按需设置 sudo firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 service namessh accept # 应用更改 sudo firewall-cmd --reload3. SSH安全增强除了禁用root登录外还应修改默认SSH端口可选但推荐启用密钥认证禁用密码认证# 生成密钥对在客户端执行 ssh-keygen -t ed25519 # 将公钥上传到服务器 ssh-copy-id -i ~/.ssh/id_ed25519.pub opsuser服务器IP # 服务器端配置 sudo sed -i s/^#PasswordAuthentication yes/PasswordAuthentication no/ /etc/ssh/sshd_config sudo sed -i s/^#Port 22/Port 2222/ /etc/ssh/sshd_config sudo systemctl restart sshd重要修改端口前确保新端口已在防火墙放行且保持至少一个活跃SSH连接以防配置错误导致锁定4. 必备工具安装Minimal Install缺少许多常用工具建议安装以下基础套件sudo dnf install -y \ vim-enhanced \ # 功能完整的vim net-tools \ # ifconfig等网络工具 telnet \ # 基础网络诊断 wget \ # 文件下载 curl \ # HTTP客户端 lsof \ # 查看打开文件 htop \ # 增强版top tmux \ # 终端复用器 git \ # 版本控制 ncdu \ # 磁盘使用分析 jq \ # JSON处理 unzip \ # 压缩工具 bash-completion # 命令补全5. 系统性能调优5.1 交换空间优化对于物理服务器建议根据内存大小调整swapiness值# 查看当前值 cat /proc/sys/vm/swappiness # 临时修改推荐值10-30 sudo sysctl vm.swappiness20 # 永久生效 echo vm.swappiness 20 | sudo tee -a /etc/sysctl.conf5.2 文件描述符限制对于高并发应用需要调整系统级和用户级限制# 系统全局设置 echo fs.file-max 6553560 | sudo tee -a /etc/sysctl.conf # 用户级限制 echo * soft nofile 65535 | sudo tee -a /etc/security/limits.conf echo * hard nofile 65535 | sudo tee -a /etc/security/limits.conf6. 时间同步配置准确的系统时间对日志分析和证书验证至关重要sudo dnf install -y chrony sudo systemctl enable --now chronyd # 验证同步状态 chronyc tracking chronyc sources7. 日志管理优化7.1 日志轮转配置防止日志文件无限增长sudo sed -i s/^#compress/compress/ /etc/logrotate.conf sudo sed -i s/^rotate 4/rotate 12/ /etc/logrotate.conf7.2 安装日志分析工具sudo dnf install -y logwatch8. 内核参数调优根据服务器角色调整内核参数# 追加到/etc/sysctl.conf cat EOF | sudo tee -a /etc/sysctl.conf net.ipv4.tcp_fin_timeout 30 net.ipv4.tcp_tw_reuse 1 net.core.somaxconn 4096 net.ipv4.ip_local_port_range 1024 65000 EOF # 应用更改 sudo sysctl -p9. 自动化维护任务设置定期安全更新和清理# 创建自动更新脚本 sudo tee /usr/local/bin/auto-update EOF #!/bin/bash dnf update -y --security dnf autoremove -y EOF sudo chmod x /usr/local/bin/auto-update # 设置每周日凌晨3点执行 (crontab -l 2/dev/null; echo 0 3 * * 0 /usr/local/bin/auto-update) | sudo crontab -10. 完整初始化脚本将上述所有操作整合为一个可执行脚本#!/bin/bash # CentOS 8.5 初始化脚本 set -e echo 正在配置阿里云镜像源... curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo dnf install -y epel-release dnf config-manager --set-enabled powertools dnf clean all dnf makecache echo 正在更新系统... dnf update -y dnf upgrade -y echo 正在创建运维用户... useradd -m -s /bin/bash opsuser passwd opsuser usermod -aG wheel opsuser echo 正在加固SSH配置... sed -i s/^#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config sed -i s/^#PasswordAuthentication yes/PasswordAuthentication no/ /etc/ssh/sshd_config systemctl restart sshd echo 正在安装基础工具... dnf install -y vim-enhanced net-tools wget curl htop tmux git jq unzip bash-completion echo 正在优化内核参数... cat EOF /etc/sysctl.conf net.ipv4.tcp_fin_timeout 30 net.ipv4.tcp_tw_reuse 1 net.core.somaxconn 4096 vm.swappiness 20 fs.file-max 6553560 EOF sysctl -p echo 初始化完成请创建~/.ssh/authorized_keys并设置适当权限将此脚本保存为centos-init.sh后执行权限并运行chmod x centos-init.sh sudo ./centos-init.sh