跳转至

Linux 操作系统安全

Linux 系统概述

  • 免费使用、自由传播的类 Unix 操作系统,主要适用于 Intel X86 系列 CPU 计算机。
  • 特点
    • 完全免费:免费获取源代码,支持任意修改。
    • 兼容 POSIX 1.0 标准:可通过模拟器运行 DOS、Windows 程序,降低用户迁移门槛。
    • 多用户、多任务:各用户文件设备权限独立,多个程序可同时独立运行。
    • 界面丰富:兼具字符界面(键盘指令操作)和图形界面(X-Windows 系统,鼠标操作)。
    • 网络功能强大:同时具有字符界面和图形界面
    • 丰富的网络功能:支持网页浏览、文件传输等网络操作,可作为 WWW、FTP、E-Mail 服务器。
    • 安全稳定:具备权限控制、审计跟踪、核心授权等安全技术。
    • 跨平台支持:可运行于 x86、SPARC 等多种硬件平台,支持多处理器技术,也可作为嵌入式操作系统。

Linux 系统用户管理

  • 用户类型
    • 超级用户 root
      • 进程控制(修改优先级、调试进程等)
      • 设备控制(格式化硬盘、关机等)
      • 网络控制(配置防火墙、使用 1-1024 端口等)
      • 文件系统控制(读写任意文件、挂载分区等)
      • 用户控制(增删用户、修改密码等)
    • 普通用户
      • 仅能在 1024 以上端口运行网络服务
      • 只能修改自身密码
  • 关键标识
    • UID(User ID):系统唯一用户标识
      • root 用户 UID=0
      • 1-499 为系统账号
      • 500 及以上为普通登录账号。
    • GID(Group ID):用户组唯一标识
      • 未指明组时系统自动创建与用户名同名的组
      • 组与用户是多对多关系
  • 用户信息与密码
    • /etc/passwd:记录所有用户信息,7 个字段以 : 分隔,分别为账号名称、密码占位符(x,实际密码存于 /etc/shadow)、UID、GID、用户信息说明、主文件夹、shell 程序。
      • 示例:
        • root:x:0:0:root:/root:/bin/bash
        • maocai:x:1000:1000:maocai,,,:/home/maocai:/bin/bash
    • /etc/shadow:存储用户加密密码,字段以 : 分隔,包括账号名称、加密密码(格式 $id$ salt$hashed),最近改密日期,密码不可更改天数,密码需更改天数,警告天数,宽限日,账户失效日期,保留字段.
      • 示例:
        • root:!:19394:0:99999:7:::
        • maocai:$y$ j9T $LGJ8iqUm5n5F4ZTzeXXkU0$ q/kF7ieVx9s0r1wZ0eFYpH/G/0GOiFLX5MXH6OBO/y3:19394:0:99999:7:::
  • 设置密码复杂度
    • 命令:authconfig --passminlen=12 --passminclass=4 --passmaxrepeat=2 --update
      • 密码不少于 12 位,包含大写字母、小写字母、数字、其他字符四类,单个字符最多重复 2 次。
    • 配置文件:/etc/security/pwquality.conf,对应参数 minlen=12minclass=4maxrepeat=2
  • 用户特权控制
    • Linux 系统的普通用户可通过 susudo 命令拥有超级用户的权限,可能导致安全问题
    • 限定可以使用 su 的用户
      • 默认:所有用户,只要知道 root 用户的密码,就可通过 su –root 拥有 root 权限
      • /etc/pam.d/su:配置可以使用 su 命令的用户组
        • 示例:auth required pam-wheel.so group=wheel
        • 只有 wheel 组的用户可以使用 su 变成 root,其它组的用户即使知道 root 密码,也无法使用 su
    • 安全配置 sudo:(文件:/etc/sudoers
      • #wheel ALL=(ALL) NOPASSWD: ALL
        • 设置 wheel 组的用户直接 sudo 成 root 而不需要密码
      • %developers ALL=/usr/local/bin/tomcat.sh
        • 设置仅 developers 组的用户可以 sudo 成 root 运行 /usr/local/bin/tomcat.sh

Linux 系统访问控制

  • 根目录下各文件夹功能
    • /bin:存放常用命令二进制文件
    • /boot:存放启动内核与启动文件
    • /dev:存放抽象硬件设备文件
    • /etc:存放系统配置文件
    • /home:存放普通用户主目录
    • /lib:存放系统库文件
    • /mnt:文件挂载目录(U 盘、光驱等)
    • /root:超级用户 root 的主目录
    • /sbin:存放特权级二进制文件
    • /opt:存放大型软件(可选)
    • /usr:存放安装程序和数据
    • /var:存放经常变化的数据文件,如日志文件
    • /tmp:存放临时文件
    • /proc:虚拟文件系统,存放内核和进程信息
  • 常见文件系统类型
    • 主流类型:
      • EXT3(第 3 代扩展文件系统)
      • EXT4(第 4 代扩展文件系统)
      • XFS(高性能日志文件系统)。
    • 其他兼容类型:FAT16、FAT32、NTFS(Windows)、JFS、GFS 等。
  • 文件系统挂载与卸载
    • 挂载命令:mount [选项] 设备名 挂载点
      • 将分区关联至指定的挂载点目录,使用户可通过该目录访问分区内容。
    • 卸载命令:umount 设备路径|挂载点
  • procfs 虚拟文件系统
    • 定义:procfs(Process Information Pseudo-Filesystem)为虚拟文件系统,挂载于 /proc 目录,提供内核数据结构接口。
    • 核心功能:
      • 存储内核运行状态(CPU、内存、进程等)
      • 用户可查看系统硬件及进程信息
      • 部分文件可修改以调整内核状态(如 echo "1" > /proc/sys/net/ipv4/ip_forward 启用 IP 转发路由功能)
    • 常见信息:
      • /proc/cpuinfo:处理器信息
      • /proc/stat:系统统计信息,含 CPU 运行模式时间、进程数等。
  • 文件基本属性与权限操作

    • 文件属性解析

      • 第 0 位:文件类型
        • d:目录
        • -:文件
        • l:链接文件
        • b:存储接口设备
        • c:串行端口设备,如键盘、鼠标
      • 第 1-3 位:属主(所有者)权限
      • 第 4-6 位:属组权限
      • 第 7-9 位:其他用户权限
        • 权限标识:
      • r:可读,数字 4
      • w:可写,数字 2
      • x:可执行,数字 1
      • -:无该权限,数字 0
      • 权限操作命令
        • ls –al:列出目录详细信息(含隐藏文件),显示文件属性与权限。
        • chown:修改文件/目录所有者(如 chown user1 file.txt)。
        • chgrp:修改文件/目录所属群组(如 chgrp group1 file.txt)。
        • chmod:控制文件权限,格式 chmod [ugoa][+-=][rwxX] 文件
      • u = 属主、g = 属组、o = 其他用户、a = 所有用户;
      • + = 增加权限、- = 取消权限、= = 唯一设定权限。
      • r = 读、w = 写、x = 执行、X = 目录或已有执行权限时赋予执行权限。如 chmod ugo+r file.txt 设置所有用户可读该文件。
      • 也可以使用掩码方式设置权限,如 chmod 755 file.txt
      • 文件访问流程
    • 用户程序通过 open() 等系统调用发起访问请求,经系统调用服务例程进入内核。

    • 虚拟文件系统(VFS)统一处理请求,隐藏不同文件系统差异。
    • 内核依次进行普通权限检查、DAC(自主访问控制)检查、MAC(强制访问控制)检查。
      • DAC 检查时,VFS 调用对应文件系统函数,从文件扩展属性中查找 ACL 权限,通过则允许访问,否则拒绝。
    • 权限检查全部通过后,访问对应文件系统(EXT3/EXT4/XFS 等)的数据。
    • 基于 Capability 的安全控制机制
    • root 用户的进程默认具有所有操作权限(包括所有特权权限),普通用户拥有非特权权限
    • 核心思想:分割超级用户权限,实现细粒度权限控制,允许进程在不完全提升到超级用户权限的情况下执行特定的特权操作,符合最小特权原则。
    • 特权分类:文件、进程、网络、ipc、系统、设备等。