我有一个应用程序被防火墙阻止,但不logging任何types的日志失败。 我已经在防火墙上打开了这个漏洞,但是有没有一种很好的方法来看看实际的请求是什么,所以我可以弄清楚为什么发生这种情况呢?
有没有一个很好的方法来看看实际的请求是什么?
运行一个像tcpdump或wireshark的networking嗅探器。 您可以捕获整个数据包并查看所有内容。 您可以使用tcpdump构build捕获,使用类似tcpdump -qni eth0 -s 0 -w filename.dmp的命令通过wireshark进行分析。
有一件事你可以做,使未来的故障排除更容易,只需运行两个tcpdump副本。 设置一个使用内部接口,一个使用外部接口。 根据需要为特定主机添加filter。 观察stream量是否跨越计算机如果stream量来自一侧,并且不应该出现另一侧stream量,那么您几乎可以认为防火墙已经阻止了stream量。
在服务器和远程服务器上使用wireshark(ethereal)或tcpdump会给你一个完整的stream量图。
在我看来,最简单的select是启用任何适用于服务器的防火墙规则的日志logging,使您认为可能会阻止它的请求,或者在防火墙本身上进行跟踪。
如果这些都在非生产设备上,并且只有pipe理访问权限,则可以使用连接到防火墙远端的集线器来镜像所有stream量,然后从那里获取wireshark / tcpdump跟踪。
我使用了这个命令
netstat -an | grep -i ack
以确定有来自我的服务器的TCP请求的一半打开,但我需要一个很好的方式来查看请求的内容。 目标服务器是一个将Web服务调用路由到适当的机器的机器,所以我仍然需要更多的信息来确定实际上调用了哪个Web服务。
如果您打开了防火墙上的端口,请再次closures该端口并启用该filter/代理的日志logging。 你应该能够看到防火墙为什么丢弃数据包。
既然你有防火墙的控制…
如果要logging掉落的数据包,请configuration日志logging规则。 就像是:
-A INPUT -i eth0 -p tcp -m limit --limit 3/min -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "eth0-DROP-DEFLT " --log-tcp-options --log-ip-options -A INPUT -i eth0 -p icmp -m limit --limit 3/min -j LOG --log-prefix "eth0-DROP-DEFLT " --log-tcp-options --log-ip-options -A INPUT -i eth0 -p udp -m limit --limit 3/min -j LOG --log-prefix "eth0-DROP-DEFLT " --log-tcp-options --log-ip-options -A INPUT -i eth0 -m limit --limit 3/min -m state --state INVALID -j LOG --log-prefix "eth0-DROP-DEFLT-INV " --log-tcp-options --log-ip-options
可能会为你工作。 适当修改。
(写完之后,我意识到你的防火墙可能不是Linux,希望它是:))