macOS 安全审计:查看系统登录日志与异常进程监控方法

一、查看系统登录日志

macOS 使用统一日志系统(Unified Logging System),通过命令行工具 log 访问日志数据:

  1. 基础登录事件查询
    查看最近 24 小时登录事件:

    log show --predicate 'eventMessage contains "login"' --last 24h
    

    • --predicate:过滤条件(如 "login" 含登录/登出事件)
    • --last 24h:时间范围(支持 1d/12h 等格式)
  2. 精细化过滤
    查询特定用户的 SSH 登录记录:

    log show --predicate 'process == "sshd" AND eventMessage contains "Accepted"' --info
    

    • 关键字段:
      Accepted(成功登录)、Failed(失败尝试)、session opened(会话开始)
  3. 导出日志分析
    将日志输出到文件进行深度分析:

    log show --predicate 'subsystem == "com.apple.eventkit"' --last 7d > ~/login_audit.log
    

二、异常进程监控方法
  1. 实时进程监控
    使用 top 命令动态观察资源占用:

    top -o cpu -s 5  # 按CPU排序,每5秒刷新
    

    • 重点关注:
      %CPU > 70%、COMMAND 含非常见进程名(如随机字符串)
  2. 进程快照对比
    定期保存进程列表并对比差异:

    # 生成当前进程快照
    ps aux > ~/process_snapshot_$(date +%F).txt
    
    # 对比两次快照差异
    diff ~/process_snapshot_2023-08-01.txt ~/process_snapshot_2023-08-02.txt
    

  3. 恶意进程检测
    检查未签名或可疑进程:

    # 列出所有运行进程的签名状态
    codesign -dv --verbose=4 $(ps aux | awk '{print $2}' | tail -n +2) 2>/dev/null
    

    • 警报项:not signed(未签名)、adhoc(临时签名)
三、自动化监控方案
  1. 创建定时审计脚本
    audit_script.sh 示例:

    #!/bin/bash
    # 记录登录事件
    log show --predicate 'eventType == "auth"' --last 1h >> /var/log/security_audit.log
    # 捕获高CPU进程
    ps -eo pid,user,%cpu,command --sort=-%cpu | head -n 10 >> /var/log/high_cpu.log
    

    通过 launchd 每小时执行:

    <!-- /Library/LaunchDaemons/com.security.audit.plist -->
    <dict>
      <key>ProgramArguments</key>
      <array><string>/path/to/audit_script.sh</string></array>
      <key>StartInterval</key>
      <integer>3600</integer> 
    </dict>
    

  2. 第三方工具推荐

    • osquery:SQL 方式查询系统状态
      SELECT * FROM process_events WHERE time > NOW() - 300;  -- 最近5分钟进程创建事件
      

    • Lynis:自动化安全审计工具
四、关键安全实践
  1. 日志保护
    sudo chmod 640 /var/log/*.log  # 限制日志访问权限
    sudo chown root:admin /var/log/security*.log
    

  2. 告警阈值设置
    • 单日登录失败 > 5 次触发邮件告警
    • 未知进程持续运行 > 30 分钟时报警
  3. 审计重点
    • 凌晨时段的登录活动(00:00 - 05:00)
    • root 用户的直接登录
    • 监听非常用端口(> 1024)的进程

操作注意:所有日志查询需管理员权限(sudo),敏感操作建议在隔离环境测试。定期备份 /var/log 目录防止日志篡改。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐