温馨提示×

Linux Context如何进行安全审计

小樊
46
2026-01-09 18:17:51
栏目: 智能运维

Linux 安全审计实战指南

一 审计目标与总体架构

  • 覆盖三类关键审计面:
    1. 用户与命令行为(谁在何时执行了什么、来源与结果);
    2. 系统调用与文件访问(关键目录/敏感文件的读写、权限变更、进程执行);
    3. 安全策略与合规(SELinux/AppArmor 拒绝事件、CIS/等保基线偏差、漏洞与配置弱点)。
  • 日志链路与保留:启用 auditd 内核审计,集中到 rsyslog/journald,通过 TLS 发送到 SIEM/日志服务器;关键系统建议日志保留不少于 6 个月(等保 2.0 三级常见要求)。

二 核心审计方案与落地步骤

  • 内核审计 auditd(必选)
    • 安装与启动:sudo apt/yum install auditd audispd-plugins && sudo systemctl enable --now auditd
    • 关键规则示例(持久化写入 /etc/audit/rules.d/audit.rules):
      • 监控关键文件与目录:
        -w /etc/ -p wa -k etc_changes
        -w /var/www/ -p wa -k web_content
        -w /root/.ssh/ -p wa -k root_ssh
      • 监控特权命令执行:
        -a always,exit -F path=/usr/bin/sudo -F perm=x -k priv_cmd
        -a always,exit -F path=/usr/bin/su -F perm=x -k priv_cmd
      • 监控用户与身份变更:
        -w /etc/passwd -p wa -k passwd_changes
        -w /etc/shadow -p wa -k shadow_changes
        -w /etc/group -p wa -k group_changes
        -e 1(失败即停,变更前先评估以免影响业务)
    • 查询与报表:ausearch -k etc_changes | aureport -f -iaureport --loginaureport --summary
  • 命令执行审计(增强与兜底)
    • snoopy:通过 LD_PRELOAD 封装 execve/execv,记录完整命令行与进程上下文,支持按 uid/comm 过滤,能覆盖脚本内部命令;注意控制日志量避免过载。
    • 定制 Bash:在 /etc/profile.d/ 注入审计函数,将 history 1logger 结合输出到 local6.info,附带 TTY、PID、PWD、SSH 来源 等字段,便于还原会话。
    • 注意:history 方案易被绕过、缺少上下文,仅作补充。
  • 日志集中与合规留存
    • rsyslog 转发:*.* @@192.168.1.100:514(生产建议启用 TLS);
    • Journald 持久化:sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald
    • 合规:按等保/内部制度设置保留周期与访问控制。
  • 合规基线自动化
    • Lynissudo lynis audit system
    • OpenSCAPsudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml(按系统替换对应 DataStream)。

三 SELinux 上下文专项审计

  • 快速发现拒绝事件
    • aureport | grep AVCausearch -m avc
    • 若未运行 auditd,可用 journalctl | grep AVC 检索内核日志中的 AVC。
  • 定位与修复
    • 使用 sealert -a /var/log/audit/audit.log 获取处理建议;
    • 临时策略生成与应用:
      ausearch -c 'httpd' --raw | audit2allow -M my-httpd
      semodule -X 300 -i my-httpd.pp(优先最小权限,必要时再放宽)。
  • 非标准目录与类型纠正
    • 例如将自定义目录标记为 HTTP 内容:semanage fcontext -a -t httpd_sys_content_t "/abc/www/html(/.*)?"
    • 应用:restorecon -R -v /abc/www/html
  • 排查技巧
    • 若怀疑被 dontaudit 隐藏,可临时 semodule -DB 禁用 dontaudit 再复现;定位完成后恢复默认 semodule -B
  • 审计要点
    • 关注 AVC 中的 scontext/tcontext/tclass 与触发进程 comm/path,还原“谁在访问什么、为何被拒”。

四 用户与权限审计要点

  • 账户与认证
    • 空口令检查:sudo awk -F: '($2 == "" ) {print $1}' /etc/shadow
    • 最近登录与异常:lastlog | grep -v "Never logged in"
    • SSH 安全基线与远程登录审计:sshd -T | egrep 'permitrootlogin|passwordauthentication|maxauthtries';建议 PermitRootLogin prohibit-passwordPasswordAuthentication noMaxAuthTries 3
  • 特权使用与 sudo 审计
    • 审计规则已覆盖 sudo/su 执行;
    • 权限扩散排查:sudo grep -ER '^%|ALL=' /etc/sudoers /etc/sudoers.d/
  • 登录失败与暴力防护(与审计互补)
    • PAM 失败锁定(示例):auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300(按系统选择 pam_faillock 或 pam_tally2,注意发行版差异与测试)。
  • 合规提示
    • 等保 2.0 三级常见要求包含:登录失败处理、会话超时、远程管理加密、账户与权限最小化、日志保留 ≥6 个月 等。

五 文件完整性与漏洞审计

  • 文件完整性监控(FIM)
    • AIDE:初始化 sudo aideinit;每日检查并告警:
      /usr/bin/aide --check | mail -s "AIDE Report $(hostname)" admin@example.com
    • 与 auditd 配合:auditd 负责“谁在何时改了”,AIDE 负责“改了什么(哈希校验)”。
  • 漏洞与配置弱点扫描
    • 本地:sudo lynis audit system
    • 合规:oscap xccdf eval ...(CIS/等保基线);
    • 网络与主机漏洞:
      • OpenVAS/GVM:sudo gvm-start,Web 访问 https://localhost:9392 创建任务;
      • Nessus(商业):全面漏洞评估;
      • 包管理器安全更新:Debian 系 debsecan --suite bookworm --format detail;RHEL 系 dnf updateinfo list updates --security
  • 风险处置节奏(建议)
    • CVSS ≥ 9.0:24 小时内修复7.0–8.9:72 小时<7.0:14 天评估

0