我使用 tcpdump 捕获一台服务器的输出数据包,但我也需要阻止这些数据包。
如果我使用 iptables 来阻止它们,那么我也无法捕获任何东西。
我可以使用 iptables 阻止数据包并在数据包被丢弃之前捕获它们吗?
答案1
我将使用被动(未寻址)接口来捕获,并使用第二个接口(寻址)来阻止。
要设置一个没有地址的捕获接口,您可以执行以下操作:
ifconfig eth0 up
您可能需要对交换机进行破解才能使这一切顺利进行,但本质是:将所有流量镜像到两个接口(即交换机端口),然后在一个接口上捕获,在另一个接口上进行过滤。
答案2
如果我理解正确的话,您想阻止连接但捕获数据包。
你可以使用 MARKS 来实现
例如,如果您想要阻止主机 192.168.10.1 与连接 192.168.10.2(*nix) 的连接,您可以这样做
iptables -t mangle -A PREROUTING -s 192.168.10.1 -j CONNMARK --set-mark 1
iptables -t mangle -A POSTROUTING -m connmark --mark 1 -j DROP
答案3
您可以使用一个相当简单的 snort 规则集来“记录”数据包以及丢弃或拒绝它们:呼噜。但是,有几个先决条件,而且这是需要学习的另一种语法,因此开销很大。Snort :: 文档有几种不同操作系统的快速入门指南。
答案4
您无法在原始套接字上阻止数据包,因为目前没有针对它的过滤器。最重要的是,原始套接字会获取数据包,事实上,即使数据包的副本,然后 IPv4 tap 和 iptables 才能获得它们。