ausearch 的 -m 参数仅按预定义消息类型(如 SYSCALL、EXECVE)筛选日志,不能单独定位进程通信行为;需结合 -p、-f、-k 等条件协同过滤,其中 SYSCALL 类型最核心,用于捕获 socket/connect 等网络系统调用。

ausearch 的 -m(message type)参数本身不用于过滤“特定进程的通信行为”,它只按审计日志中预定义的消息类型(如 SYSCALL、EXECVE、CWD、PATH)分类筛选事件。真正定位某进程的异常网络行为,需结合 -m 与进程上下文字段(如 -p PID、-f comm 名、-k 规则键)协同使用。
先确认你要查的是哪类消息类型
网络套接字相关行为主要落在以下两类消息中:
- SYSCALL:所有 socket、connect、bind、accept 等系统调用记录都属此类,含完整参数(如目标 IP、端口、协议族)。这是排查后门外连最核心的消息类型。
-
EXECVE:记录进程启动命令行,可关联到后续的 SYSCALL 行为(比如发现某个可疑 bash 进程执行了
bash -i >& /dev/tcp/...,再顺藤摸瓜查它的 connect 调用)。
用 -m 配合其他条件精准锁定异常通信
单独用 ausearch -m SYSCALL 会返回海量结果。必须叠加约束条件:
- 查某个进程名发起的所有网络建连:
ausearch -m SYSCALL -sc connect -f bash -i | aureport -f -i
(-f 指定 comm 名,-sc 限定系统调用名,-i 启用交互式解析) - 查某 PID 的全部网络动作(含 socket + connect + bind):
ausearch -m SYSCALL -p 12345 -sc socket,connect,bind -i - 查某条审计规则(如你设的
-k net_socket_create)触发的所有事件:ausearch -k net_socket_create -m SYSCALL -i
重点看 SYSCALL 日志里的关键字段
一条典型的 connect 调用日志中,以下字段直接暴露异常:
-
a0、a1、a2:系统调用参数。对 connect 来说,a1 是 sockaddr 结构体地址,实际解析后能看到目标 IP 和端口(需配合
-i或aureport --interpret) - comm=:执行该调用的程序名(如 python、curl、sh),若非常见工具或路径异常(如 /tmp/.x、/dev/shm/a),高度可疑
- exe=:可执行文件绝对路径,可验证是否被篡改或伪装
- key=:对应你配置的审计规则键名,确保日志来源可控
实用组合示例:快速筛查非业务IP外连
假设你已知业务只连 10.0.0.0/8 和 172.16.0.0/12 网段,想查是否有进程连了公网 IP:
- 先提取所有 connect 事件的目标地址:
ausearch -m SYSCALL -sc connect -i | grep "saddr=" | awk -F'saddr=' '{print $2}' | cut -d' ' -f1 | sort -u - 再人工比对或脚本过滤出不在白名单内的地址










