前言

对于Linux运维工程师而言,系统的安全性、远程管理的便捷性、初始化配置的规范性以及性能问题的定位能力,是构建稳定高效Linux环境的四大基石。本文将围绕SELinux安全增强、SSH密钥登录、服务器初始化配置和系统性能调优工具四大核心模块,结合实操命令与原理讲解,帮你快速掌握Linux运维的关键技能,为后续业务部署与系统维护打下坚实基础。

一、SELinux:Linux系统的“安全防护盾”

在Linux系统中,传统的自主访问控制(DAC)存在明显缺陷——一旦服务被入侵,攻击者可能获取系统最高权限。而SELinux(Security Enhanced Linux,安全性增强Linux)作为NSA开发的强制性访问控制(MAC)机制,能从根本上解决这一问题,相当于B1级军事安全性能标准,已整合到Linux 2.6及以上内核中。

1.1 SELinux的核心特点

SELinux通过三大核心机制实现精细化权限控制,确保“最小权限原则”落地:

  • MAC(Mandatory Access Control,强制性访问控制):所有文件、目录、端口的访问均基于管理员预设的策略,普通用户无法修改,彻底杜绝越权访问;
  • RBAC(Role Base Access Control,基于角色的访问控制):用户被划分到特定角色(如sysadm_r),仅能执行角色对应的操作——即使是root用户,不在sysadm_r角色中也无法完成系统管理;
  • TE(Type Enforcement,类型强制):给文件打上“type”标签,给进程打上“domain”标签,仅允许特定domain的进程访问特定type的文件(例如限制vim进程仅读取type为T1的文件)。

1.2 SELinux的三种执行模式

SELinux通过不同模式平衡“安全性”与“灵活性”,核心区别在于是否阻止违规行为及是否记录日志:

模式 核心作用 适用场景
enforcing(强制模式) 严格执行SELinux策略,阻止所有违规行为并记录日志 生产环境,需最高安全级别
permissive(警告模式) 不阻止违规行为,但会记录所有操作日志 策略调试、新服务部署前测试
disabled(关闭模式) 完全关闭SELinux,不进行任何权限控制 测试环境(不建议生产环境关闭)

1.3 SELinux状态切换与配置

SELinux的状态管理分为“临时切换”(无需重启)和“永久配置”(需重启),关键命令与配置文件如下:

  1. 查看当前状态:通过getenforce命令快速查看,输出为Enforcing/Permissive/Disabled
    在这里插入图片描述

  2. 临时切换模式

    • 强制模式→警告模式:setenforce 0
    • 警告模式→强制模式:setenforce 1(注:Disabled模式无法通过该命令切换)
      在这里插入图片描述在这里插入图片描述
  3. 永久配置模式:编辑配置文件/etc/sysconfig/selinux,修改SELINUX=字段:

    # 永久设置为强制模式
    SELINUX=enforcing
    # 永久设置为关闭模式(需重启系统,首次开启需更新文件标签,耗时较久)
    SELINUX=disabled
    

在这里插入图片描述
在这里插入图片描述

二、SSH密钥登录:免密且更安全的远程访问方案

传统SSH密码登录存在密码泄露、暴力破解的风险,而基于“非对称加密”的SSH密钥登录,通过“公钥(存服务器)+私钥(存本地)”的组合,既能实现免密登录,又能大幅提升远程访问的安全性。

2.1 SSH密钥登录的核心原理

SSH密钥登录的本质是“服务器验证客户端是否拥有对应私钥”,整个交互流程如下:

  1. 客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。
  2. 目标服务器根据 SSH 服务配置,在用户对应目录及文件中读取到有效的公钥信息。
  3. 目标服务器生成一串随机数,然后使用相应的公钥对其加密。
  4. 目标服务器将加密后的密文发回客户端。
  5. 客户端使用默认目录或 -i 参数指定的私钥尝试解密。
  6. 如果解密失败,则会继续尝试密码验证等其它方式进行登录校验。如果解密成功,则将解密后的原文信息重新发送给目标服务器。意思类似于:“看,这是这段话的原文。我能读懂发过来的密文,我拥有服务器的控制权,请让我登录。”
  7. 目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。

2.2 两种场景的实操配置

根据客户端系统不同,密钥登录的配置分为“Linux客户端”和“Windows客户端(Xshell)”

场景1:Linux客户端→Linux服务器
  1. 生成密钥对:使用ssh-keygen生成RSA密钥对(无密码保护,适合自动化脚本;若需安全可设置密码):
    # -t rsa:指定RSA算法;-P '':空密码;-f:指定密钥保存路径
    ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
    
    执行后会在/root/.ssh/下生成两个文件:id_rsa(私钥,本地保管,不可泄露)和id_rsa.pub(公钥,需上传服务器)。
    在这里插入图片描述
    在这里插入图片描述
参数 含义 解释
ssh-keygen 密钥生成工具 OpenSSH 套件中用于创建认证密钥对的程序。
-t rsa 指定密钥类型 -t 是 type 的缩写。rsa 是一种非对称加密算法。这是最常用和兼容性最好的算法之一(其他还有 ed25519, ecdsa)。
-P '' 设置私钥的密码(Passphrase) -P 后面跟一个密码字符串。''(两个单引号)表示空密码。这意味着生成的私钥文件没有密码保护这是一个安全权衡:方便自动化脚本,但降低了密钥本身的安全性。 如果密钥文件泄露,任何人都可以直接使用它。
-f /root/.ssh/id_rsa 指定密钥文件的保存路径和文件名 -f 是 file 的缩写。这里指定将私钥保存为 /root/.ssh/id_rsa,公钥则会自动保存在同名目录下的同名文件加上 .pub 后缀,即 /root/.ssh/id_rsa.pub
  1. 复制公钥到服务器:通过ssh-copy-id自动将公钥追加到服务器目标用户的authorized_keys中:

    # 格式:ssh-copy-id -i 本地公钥路径 目标用户@服务器IP
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.23
    

    首次执行需输入服务器密码,后续登录无需密码。
    在这里插入图片描述

  2. 测试登录:直接通过ssh命令登录,无需输入密码:

    ssh root@192.168.10.23
    

在这里插入图片描述

场景2:Windows客户端(Xshell)→Linux服务器
  1. 生成密钥对:打开Xshell→工具→用户密钥管理者→生成,选择RSA算法(默认2048位),密钥密码留空(或设置),完成后导出公钥。
    在这里插入图片描述
    在这里插入图片描述

  2. 上传公钥到服务器:登录Linux服务器,将Xshell生成的公钥追加到/root/.ssh/authorized_keys(若文件不存在需手动创建):

    # 将公钥内容替换为Xshell生成的公钥字符串
    echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WPScj31fl+...' >> /root/.ssh/authorized_keys
    

在这里插入图片描述

  1. Xshell配置登录:新建会话→输入服务器IP→身份验证选择“公钥”→选择本地生成的私钥→确定登录,无需密码即可连接。
    在这里插入图片描述
    在这里插入图片描述

三、服务器初始化:标准化配置,为稳定运行“打底”

新服务器到手后,若直接部署业务,可能面临“软件下载慢、时间不准、安全漏洞”等问题。标准化的初始化配置能解决这些痛点,核心包括“源优化、工具安装、网络验证、时间同步、安全加固”五大步骤。

3.1 配置Yum源:加速软件安装(外网/内网适配)

Yum源是Linux软件安装的“仓库”,默认国外源速度慢,需替换为国内源(外网)或配置本地源(内网)。

外网场景:配置国内源(阿里云/清华源)
  1. 备份默认源,下载阿里云CentOS 7源:

    # 备份原源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # 下载阿里云源
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    # 配置EPEL源(提供额外软件)
    yum install -y epel-release
    sed -e 's|^metalink=|#metalink=|g' -e 's|^#baseurl=|baseurl=|g' -e 's|//download.fedoraproject.org/pub|//mirrors.aliyun.com|g' -i /etc/yum.repos.d/epel.repo
    

    在这里插入图片描述

  2. 清理缓存并生成新缓存:

    yum clean all && yum makecache
    

在这里插入图片描述
在这里插入图片描述

内网场景:配置本地Yum源
  1. 挂载Linux镜像到/mnt(建议永久挂载,避免重启失效):

    # 临时挂载
    mount /dev/cdrom /mnt
    # 永久挂载:编辑/etc/fstab,添加一行
    echo '/dev/cdrom /mnt iso9660 defaults 0 0' >> /etc/fstab
    mount -a  # 生效挂载
    

    在这里插入图片描述
    在这里插入图片描述

  2. 创建本地源配置文件/etc/yum.repos.d/local.repo

    [local]
    name=Local Yum Repo
    baseurl=file:///mnt
    enabled=1  # 启用该源
    gpgcheck=0  # 关闭GPG校验(本地源无需校验)
    
  3. 清理并生成缓存:yum clean all && yum makecache

3.2 安装运维必备工具

新服务器默认工具较少,需安装一批高频使用的运维工具,提升后续操作效率:

yum install -y \
    vim-enhanced \  # 增强版Vi编辑器
    wget curl \     # 下载与网络传输工具
    telnet net-tools \  # 网络诊断(telnet)与配置(ifconfig)
    bash-completion \   # 命令自动补全
    lsof sysstat \      # 文件查看(lsof)与性能监控(iostat/sar)
    htop tree \         # 进程管理(htop)与目录树(tree)
    git unzip lrzsz     # 版本控制(git)、解压(unzip)、文件传输(sz/rz)

在这里插入图片描述
在这里插入图片描述

3.3 基础环境配置:网络、主机名、时间同步

  1. 网络验证:确保服务器能正常上网,排查DNS与网卡配置:
    # 查看IP地址
    ip addr show 或 ifconfig
    # 测试DNS解析(百度)
    ping -c 4 www.baidu.com
    # 测试外网连通性(公共DNS)
    ping -c 4 8.8.8.8
    
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
# 如果无法上网,需要检查网络配置
cat /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

  1. 配置主机名与hosts映射:方便服务器识别与访问:
    # 设置主机名(例:centos7-master)
    hostnamectl set-hostname centos7-master
    # 配置hosts映射,添加本地解析
    echo '127.0.0.1 centos7-master' >> /etc/hosts
    bash  # 立即生效
    

在这里插入图片描述
在这里插入图片描述

  1. 时间同步:服务器时间不准会导致日志混乱、证书失效,需通过chrony同步时间:
    # 安装chrony
    yum install -y chrony
    # 启动并设置开机自启
    systemctl start chronyd && systemctl enable chronyd
    # 强制立即同步
    chronyc -a makestep
    # 查看同步状态
    chronyc sources -v
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 防火墙配置:按需开放端口,拒绝无用访问

Linux防火墙有iptables(经典)和firewalld(CentOS 7默认)两种管理方式,核心原则是“默认拒绝入站,只开放必要端口”。

方式1:使用iptables(适合习惯传统配置的用户)
  1. 停止并禁用firewalld,安装iptables-services开启并开机自启:
    systemctl stop firewalld && systemctl disable firewalld
    yum install -y iptables-services
    systemctl start iptables && systemctl enable iptables
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 配置基础规则(拒绝入站、允许出站、开放SSH/HTTP/HTTPS):
    # 默认策略:拒绝入站/转发,允许出站
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    # 允许本地回环(系统内部通信)
    iptables -A INPUT -i lo -j ACCEPT
    # 允许已建立连接的返回流量
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # 开放必要端口:SSH(22)、HTTP(80)、HTTPS(443)
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    

在这里插入图片描述

  1. 保存规则(避免重启失效):
    service iptables save
    systemctl restart iptables
    

在这里插入图片描述

  1. 验证配置:
# 查看当前生效的所有iptables规则,检查配置是否正确
iptables -nvL --line-numbers

# 检查iptables服务状态
systemctl status iptables

在这里插入图片描述
在这里插入图片描述

方式2:使用firewalld(CentOS 7默认,操作更简洁)
  1. 启动并设置开机自启:
    systemctl start firewalld && systemctl enable firewalld
    
  2. 开放必要服务/端口:
    # 开放SSH、HTTP、HTTPS服务(永久生效)
    firewall-cmd --permanent --add-service=ssh
    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https
    # 开放自定义端口(例:8080)
    # firewall-cmd --permanent --add-port=8080/tcp
    # 重新加载规则生效
    firewall-cmd --reload
    
  3. 查看已开放规则:firewall-cmd --list-all

3.5 SSH安全加固

除了密钥登录,还需通过“修改默认端口、设置复杂密码”进一步提升SSH安全性:

  1. 修改SSH默认端口(22→自定义,如5922)
    # 编辑SSH配置文件
    vim /etc/ssh/sshd_config
    # 找到Port 22,修改为Port 5922(去掉注释)
    # 重启SSH服务生效
    systemctl restart sshd
    # 防火墙开放新端口(以firewalld为例)
    firewall-cmd --permanent --add-port=5922/tcp
    firewall-cmd --reload
    
  2. 设置密码复杂性:通过/etc/pam.d/system-auth配置密码策略,要求“数字+大小写+符号,长度≥18位”,避免弱密码被破解。

四、系统调优工具:定位性能瓶颈的“显微镜”

Linux系统运行中可能出现“CPU占用高、内存不足、磁盘I/O卡顿、网络带宽满”等问题,掌握以下性能监控工具,能快速定位瓶颈根源,为调优提供依据。

4.1 CPU监控:识别CPU密集型进程

工具 核心命令 关键指标解读
uptime uptime 输出“1/5/15分钟平均负载”,若1分钟负载>CPU核心数,可能过载
top top(按P排序CPU) %us(用户态CPU占比)、%sy(内核态CPU占比)、%idle(空闲占比)
ps ‘ps -aux --sort -pcpu head -10’ 查看CPU使用率前10的进程,%cpu字段为使用率
mpstat mpstat -P ALL 1 4 查看所有CPU核心的详细状态,%iowait高表示CPU等待I/O

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 内存监控:避免内存不足导致的卡顿

工具 核心命令 关键指标解读
free free -m(以MB显示) available(实际可用内存,含可回收缓存),used(已用内存)
/proc/meminfo cat /proc/meminfo Active(活跃内存)、Inactive(非活跃内存,可换出)
top top(按M排序内存) %mem(进程内存占比)、VIRT(虚拟内存)、RES(物理内存)

在这里插入图片描述
在这里插入图片描述

4.3 磁盘I/O监控:定位I/O密集型进程

工具 核心命令 关键指标解读
iostat iostat -d -k -p /dev/sda 1 4 kB_read/s(每秒读)、kB_wrtn/s(每秒写),反映磁盘繁忙度
iotop iotop -o -d 1 实时显示进程I/O情况,-o只显示活跃I/O进程
dd dd if=/dev/zero of=testfile bs=1M count=1000; sync 测试磁盘写入速度,执行时间越短速度越快(测试后删除testfile)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 网络监控:排查带宽瓶颈

工具 核心命令 关键指标解读
nload nload 实时显示网卡进出带宽,Curr(当前速率)、Max(峰值速率)
nethogs nethogs 按进程显示网络使用,定位“吃带宽”的进程
ab ab -n 1000 -c 2 http://www.baidu.com/ HTTP压测工具,Requests per second(吞吐量)、Time per request(响应时间)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5 系统整体监控:全局掌握系统状态

  • vmstatvmstat 1 5,输出“进程、内存、磁盘I/O、CPU”综合信息,r(等待进程数)、wa(CPU等待I/O占比)是核心指标;

在这里插入图片描述

  • sar:可记录与回放系统状态,例如:
    # 记录CPU状态到cpu.sar(每2秒采样5次)
    sar -u 2 5 -o cpu.sar
    # 回放记录
    sar -u -f cpu.sar
    # 监控网络状态(每1秒采样5次)
    sar -n DEV 1 5
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:构建安全、高效、稳定的Linux环境

本文围绕Linux运维的四大核心场景——安全增强(SELinux)、远程登录(SSH密钥)、服务器初始化、性能调优,从原理到实操进行了全面讲解。SELinux为系统筑起“安全防护盾”,阻止越权访问;SSH密钥登录兼顾“便捷性”与“安全性”,避免密码泄露风险;标准化的服务器初始化确保系统“开箱即用”,减少后续隐患;而性能调优工具则像“显微镜”,帮助快速定位CPU、内存、磁盘、网络的瓶颈。

这四大技能并非孤立存在——例如SELinux与防火墙共同构成系统安全防线,SSH密钥登录是服务器初始化的重要环节,性能调优则需基于初始化后的稳定环境。掌握这些技能,不仅能应对日常运维工作中的常见问题,更能为业务系统的稳定运行提供坚实保障,是Linux运维工程师必备的核心能力。

Logo

一站式 AI 云服务平台

更多推荐