我使用tcpdump捕获一个服务器的输出数据包,但我也需要阻止这些数据包。
如果我使用iptables来阻止他们,那么我也无法捕捉任何东西。
我可以使用iptables阻止数据包,并在数据包被丢弃之前仍然捕获这些数据包吗?
我会用一个被动的(未被寻址的)接口来捕捉,而另一个接口(被寻址的)来阻止。
要设置一个捕获接口,没有地址,你需要: ifconfig eth0 up
您可能需要破解您的交换机,以使其全部飞行,但其实质是:将所有stream量镜像到两个接口(即交换机端口),然后捕获该交换机,并在另一个上进行过滤。
如果我明白,你想阻止连接,但捕获数据包。
你可以通过使用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
您可以使用一个相当简单的snort规则集来“logging”数据包以及丢弃或拒绝它们: Snort 。 然而,有几个先决条件,这是另一种语法学习,所以有相当的开销。 Snort :: Docs有几个不同操作系统的快速入门指南。
您不能阻止原始套接字上的数据包,因为当前没有filter。 最重要的是,原始套接字在IPv4 tap和iptables之前获得了数据包,实际上甚至是数据包的副本 。