温馨提示×

如何审计linux进程行为

小樊
37
2026-09-18 15:30:51
栏目: 智能运维

审计 Linux 进程行为,通常可以从内核级审计、系统调用跟踪、日志监控、行为分析等多个层面入手。下面按“由浅入深、由通用到专业”的方式给你一个完整思路。


一、最常用:使用 auditd(推荐,内核级审计)

auditd 是 Linux 自带的审计框架,适合合规、安全审计。

1. 安装与启动

# CentOS / RHEL
yum install audit auditd
systemctl enable --now auditd

# Ubuntu / Debian
apt install auditd
systemctl enable --now auditd

2. 监控某个进程的所有行为(按 PID)

auditctl -a always,exit -F arch=b64 -S all -F pid=1234

3. 监控某个程序文件

auditctl -w /usr/bin/python3 -p x -k python_exec

4. 监控某个用户的进程行为

auditctl -a always,exit -F arch=b64 -S execve -F uid=1000

5. 查看审计日志

ausearch -k python_exec
aureport -x        # 可执行文件报告

✅ 优点:

  • 内核级,难以绕过
  • 可审计 exec / 文件访问 / 网络 / 权限变化

二、实时跟踪:strace / ltrace(调试级)

1. 跟踪正在运行的进程

strace -p 1234

2. 启动并跟踪新进程

strace -f -o out.log ./app

3. 只看关键行为

strace -e trace=network,file ./app

4. 库调用(ltrace)

ltrace ./app

⚠️ 注意:

  • 性能影响大
  • 容易被反调试检测

三、进程行为快照:/proc 文件系统

查看进程实时状态:

ls /proc/1234
cat /proc/1234/cmdline
cat /proc/1234/environ
ls -l /proc/1234/fd
cat /proc/1234/maps

常用审计点:

  • 打开的文件(fd)
  • 内存映射(是否注入)
  • 环境变量(是否异常)

四、高级:eBPF(现代 Linux 审计利器)

1. 使用 bpftrace

bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s\n", str(args->filename)); }'

2. 使用 bcc 工具集

execsnoop          # 监控所有新进程
opensnoop          # 监控文件打开
tcplife           # TCP 连接行为

✅ 优点:

  • 极低性能损耗
  • 可细粒度观测内核行为

✅ 适合:

  • 安全分析
  • 性能 + 行为联合审计

五、日志与历史行为审计

1. 用户命令审计

cat /var/log/audit/audit.log
cat ~/.bash_history

2. 系统登录与进程

last
w
ps aux --sort=-%cpu

3. systemd 服务行为

journalctl -u nginx

六、进程行为审计 checklist(实战)

✅ 是否创建子进程
✅ 是否读取/写入敏感文件
✅ 是否发起网络连接
✅ 是否修改权限(setuid)
✅ 是否加载异常库
✅ 是否存在隐藏进程


七、典型场景建议

场景 推荐方案
合规审计 auditd
排查异常进程 strace + /proc
安全入侵分析 auditd + eBPF
性能 + 行为 bcc / bpftrace
容器进程 eBPF + cgroup 审计

如果你愿意,我可以:

  • 给你 一条可直接用的 audit 规则模板
  • 针对 容器 / K8s 进程审计
  • 或帮你 写一个自动分析脚本

你更关心哪一类场景?

0