iptables 记录来自外界的数据包

iptables 记录来自外界的数据包

为了审计目的,我想要记录所有不是源自 LAN 的 INPUT 数据包,我有一个 tcpdump 脚本,基本上将以下结果附加到文件中:

tcpdump "(dst net 192.168.0.0/24 and ! src net 192.168.0.0/24)"

不过,我在 /var/log/syslog 中看到了一些外部尝试

[567325.985994] iptables INPUT denied: IN=eth1 OUT= MAC=..... SRC=69.163.149.200 DST=192.168.0.2 LEN=60 TOS=0x00 PREC=0x00 TTL=57 ID=50281 DF PROTO=TCP SPT=51380 DPT=1194 WINDOW=5840 RES=0x00 SYN URGP=0 
[567895.076532] iptables INPUT denied: IN=eth1 OUT= MAC=.... SRC=72.21.91.19 DST=192.168.0.2 LEN=40 TOS=0x00 PREC=0x00 TTL=59 ID=0 DF PROTO=TCP SPT=80 DPT=52589 WINDOW=0 RES=0x00 RST URGP=0 

这些在 tcpdump outout 中没有显示。我想添加一条规则,例如

-A INPUT -j LOG

但我想(如果有意义的话)避免将来自 LAN 的日志输入数据包放入

放这个就够了吗?

-A INPUT ! -s 192.168.0.0/24 -j LOG

顺便说一句,作为一个附带问题,iptables 是否支持将不同的东西记录到不同的文件中?

答案1

iptables 总是记录到 syslog 的内核工具中,你可以将你的syslog 工具存放到不同的文件中- 参见syslog.conf 文档了解详情。

你的规则

-A 输入!-s 192.168.0.0/24 -j 日志

将记录没有源 IP 192.168.0.0/24 的数据包,但 iptables 日志记录仅涵盖部分数据包头数据,而不是数据包的有效负载。

那么,我怎样才能捕获有效载荷?

tcpdump 是捕获有效负载的工具。您应该明确指定您期望流量进入的接口(-i eth1)或使用任何接口(-i any)。您可能还想增加 snaplen(-s 参数)并将捕获的内容写入二进制格式的文件(-W 参数)。

但由于 tcpdump 不是一个安全工具,而是一个具有复杂安全历史的诊断工具,并且可能在你的配置中以 root 权限运行(尽管非 root 运行方法),你应该考虑一个以安全性为重点的其他解决方案 -IDS 系统可能合适。

相关内容