使用路由器上的 tcpdump 记录 HTTP 流量

使用路由器上的 tcpdump 记录 HTTP 流量

我有一个 Linux 机箱,充当许多客户端和互联网之间的路由器,我需要提取一些使用情况统计数据:我需要记录哪些内部 IP 访问哪些外部地址。

我使用这个来检查哪些内部 IP 访问哪些外部 IP:

tcpdump -n -i any port 80 or port 443 and src net 192.168.101.0/24

(我使用 -n 并稍后进行查找)

但是,这也向我展示了许多与 TCP 握手和窗口相关的额外信息。是否可以仅显示实际的 HTTP 请求?

我找到了一些方法,其中大多数涉及grepping GET\|POST,但这会剥离 IP,而这才是我主要关心的。

编辑:

  • 除了 tcp + 标准 linux 和 bash 命令之外,我没有其他的选择(因此我只能使用 tcpdump 和 grep/strings/awk/sed
  • 包含过滤器是否tcp[13] & 2!=0'有帮助,因为据我了解,它只会显示初始 SYN?

答案1

如果你仅限于使用本机工具,我认为你可以使用 perl。也许你可以使用这个 perl 脚本叫做 chaosreader

否则,你可以捕获流量,并使用另一个系统上的 perl 脚本对其进行解析

答案2

简而言之,是的。使用httpry(和这里)。它是开源的,并且基于您的libpcap需求,并且非常接近您的需求,因此只需要进行很少的调整。

答案3

你可以使用 wiresharks tshark 控制台捕获工具以下是一些捕获示例一个具体的例子是捕获 http gets

我个人建议使用 dsniff 工具中的 urlsnarf这里

(请注意,无论使用哪种工具,您都只能获得 http ...除非您在中间进行解密,否则 https 将是安全的。您仍然会看到客户端正在与之通信的主机,但看不到他们正在访问的完整 url)

你可能还需要研究一个名为 ntop 的工具,它提供了非常精细的流量报告功能

相关内容