Linux默认不记录非法出站连接,需通过iptables/nftables添加LOG规则或auditd审计进程级行为来实现,且须明确定义“非法”并配置日志轮转。

Linux系统默认不记录非法出站连接,因为传统防火墙(如 firewalld、ufw)主要聚焦入站控制,默认放行本机主动发起的出站流量。要实现“记录非法出站连接”,需明确两点:一是定义什么是“非法”(比如非白名单进程、非常用端口、未知远程IP);二是启用日志能力并配合底层机制(如 iptables/nftables 的 LOG 目标或 auditd 系统审计)。这不是开个开关就能完成的事,但对安全监控非常有价值。
先确认你的防火墙工具类型
不同发行版默认工具不同,操作路径完全不同:
-
CentOS/RHEL/Alibaba Cloud Linux 7+、Fedora:默认用 firewalld,但它本身不支持直接记录出站连接,必须切换到底层
iptables或nftables配置日志规则。 -
Ubuntu/Debian/Kali Linux:常用 ufw,它基于 iptables,但默认也不记录出站;需手动添加 iptables 日志链,或改用
iptables -t filter -A OUTPUT ... -j LOG方式。 -
较新系统(如 RHEL 9+/Ubuntu 22.04+):底层已逐步迁移到 nftables,推荐优先使用
nft命令配置带日志的 OUTPUT 链。
用 iptables 记录可疑出站连接(通用兼容方案)
这是最广泛适用的方法,适合所有支持 iptables 的系统(包括 firewalld 启用中,只要没禁用 iptables legacy 接口):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 执行以下命令,记录所有非本地回环、非已建立状态的出站连接(即新发起的外部连接):
-
-o eth0:请替换成你实际的外网网卡名(可用ip -br a查看); -
--log-prefix:为每条日志加标识,便于从/var/log/messages或/var/log/syslog中过滤; - 该规则放在 OUTPUT 链最前(
-I OUTPUT 1),确保能捕获到新连接; - 注意:此规则只记录,不限制——若要阻断,再加一条
-j DROP规则(慎用,可能断网)。
用 nftables 实现更清晰的出站日志(推荐新系统)
nftables 是 iptables 的现代化替代,语法统一、性能更好,也更适合做精细出站审计:
- 查看当前 nft 表:
sudo nft list tables; - 若已有
inet filter表,可追加日志规则:
- 该规则含义:从 eth0 发出、目标非本地、且是新连接的包,全部打日志;
- 日志同样输出到系统日志(
journalctl -k | grep OUTBOUND或查/var/log/syslog); - 如需持久化,把上述命令写入
/etc/nftables.conf的output链中。
结合 auditd 追踪进程级出站行为(进阶精准定位)
iptables/nftables 只能看到 IP+端口,看不到是哪个程序发起的。要锁定“非法进程”,需用内核审计子系统:
- 安装并启用 auditd:
sudo apt install auditd && sudo systemctl enable --now auditd(Debian/Ubuntu)或sudo yum install audit -y && sudo systemctl enable --now auditd(RHEL/CentOS); - 添加规则,监控 socket 连接系统调用:
- 之后用
sudo ausearch -i -k network-connect | grep -E "(dst=|comm=)"即可看到每次出站连接的进程名(comm=)、目标 IP(dst=)和端口; - 该方式开销略高,建议仅在排查阶段启用,或配合定时脚本抽样采集。
不复杂但容易忽略:日志量可能很大,记得配置日志轮转(logrotate)和定期清理,否则磁盘会被撑满。真正落地时,建议先用 journalctl -f 实时观察几条日志格式,再决定是否加过滤条件(比如只记录目标端口非 53/80/443 的连接)。

















