tcpdump 会绕过 iptables 吗?

tcpdump 会绕过 iptables 吗?

我错误地设置了开放解析器 DNS 服务器,该服务器很快就被用于一系列来自俄罗斯的 DDoS 攻击。出于这个原因,我完全阻止了两个 DNS 服务器上除受信任 IP 之外的所有人使用端口 53。它确实有效,因为我无法再连接到它们,但我觉得奇怪的是,当我运行 tcpdump eth1(这是服务器上与公共互联网的接口)时,我看到大量来自攻击者到端口 53 的传入数据包。

即使 iptables 丢弃了这些数据包,tcpdump 仍会显示这些数据包,这是正常的吗?还是我错误地配置了 iptables?

另一方面,我没有看到任何从我的服务器传出的数据包,而之前我看到过,所以我猜想防火墙在工作。令我惊讶的是内核并没有完全丢弃数据包?还是内核tcpdump以某种方式挂接到内核,以至于在数据包到达 iptables 之前它就能看到它们?

答案1

这是一个好问题。

事实上,tcpdump是经过网络(和 NIC,如果你愿意的话)后发现的第一个软件,也是路上的最后一辆出去

Wire -> NIC -> tcpdump -> netfilter/iptables

iptables -> tcpdump -> NIC -> Wire

因此,它可以看到所有到达您接口的数据包,以及所有离开您接口的数据包。由于发往端口 53 的数据包没有收到回复(如 tcpdump 所见),因此您已成功验证您的 iptables 规则已正确配置。

编辑

也许我应该补充一些细节。tcpdump是基于libpcap,创建一个库数据包套接字当网络堆栈接收到常规数据包时,内核第一的检查是否有数据包套接字对新到达的数据包感兴趣,如果有,则将数据包转发到该数据包套接字。如果选项ETH_P_全部被选中,那么全部协议通过数据包套接字。

libpcap实现一个这样的数据包套接字,并激活该选项,保留一份副本供自己使用,并将数据包复制回网络堆栈,内核以通常的方式处理该数据包,包括首先将其传递给网络过滤器,内核空间对应部分iptables. 以相反的顺序做同样的事情(IE,首先是 netfilter,然后最后通过数据包套接字),在出去的路上。

这是否容易受到黑客攻击?当然。肯定有使用概念验证的 rootkitlibpcap拦截发往 rootkit 的通信防火墙可以控制它们。但与一个简单的 Google 查询就能发现的事实相比,这就算不上什么了在职的代码隐藏流量甚至libpcap。但是,大多数专业人士认为,在调试网络数据包过滤器时,其优点远远大于缺点。

答案2

今天我做了一些数据包分析的练习。我对 IPsec 和 特别感兴趣tcpdump。所以我找到了这个网页,其中讨论了窃听和数据包流之间的关系。我认为它可能有助于解决你的困惑。

图 9:ICMP 回显请求 h1 → h2,r1 遍历,加密+封装: 图 9

来源:Nftables - Netfilter 和 VPN/IPsec 数据包流

相关内容