要监控网络套接字创建行为,需同时配置b64和b32架构的auditd规则捕获socket()系统调用,记录auid、comm、family、type等关键字段,并固化至/etc/audit/rules.d/socket.rules后执行augenrules --load生效。

要监控网络套接字创建行为,核心是捕获 socket() 系统调用——这是所有网络通信的起点。auditd 本身不识别“TCP连接”或“监听端口”这类应用层概念,但它能精准记录每次套接字创建的完整上下文:哪个用户、哪个进程、什么时间、使用什么协议族(AF_INET/AF_INET6/AF_UNIX等)。
必须同时覆盖双架构规则
现代 x86_64 系统常运行 32 位兼容程序(如某些旧版工具、容器内进程),若只写 b64 规则,会漏掉大量事件:
-a always,exit -F arch=b64 -S socket -k network_socket-a always,exit -F arch=b32 -S socket -k network_socket
这两条规则需共存,关键字 network_socket 便于后续统一检索。
确认规则已加载并触发
临时验证是否生效,不用重启服务:
- 执行
sudo auditctl -l | grep socket,确认两条规则在列表中 - 手动触发一次套接字创建,例如
ping -c1 127.0.0.1或curl -I http://localhost - 立即查日志:
sudo ausearch -k network_socket -i | head -5,应看到含syscall=socket、auid(登录用户)、comm(命令名)、family(协议族)和type(SOCK_STREAM/SOCK_DGRAM)的记录
日志里关键字段说明
一条典型 socket 审计记录包含:
-
auid:原始登录用户 ID(即使 sudo 切换也保留,不可伪造) -
uid和euid:当前有效用户 ID,区分普通执行与提权行为 -
comm:发起调用的程序名(如curl、sshd、python3) -
family:地址族,2=AF_INET(IPv4)、10=AF_INET6、16=AF_NETLINK等 -
type:套接字类型,1=SOCK_STREAM(TCP)、2=SOCK_DGRAM(UDP) -
protocol:协议号,0=IPPROTO_IP、6=IPPROTO_TCP、17=IPPROTO_UDP
固化为永久规则
验证无误后,写入配置文件确保重启不失效:
- 新建
/etc/audit/rules.d/socket.rules - 粘贴上述两条
socket规则,保存 - 执行
sudo augenrules --load重载全部规则 - 检查是否生效:
sudo auditctl -l | grep socket











