关于linux:使用tcpdump查看原始数据包

53次阅读

共计 2259 个字符,预计需要花费 6 分钟才能阅读完成。

在 Linux 零碎中只管 Snort 之类的工具在筛选通过咱们的网络而来的所有内容方面做得十分杰出,但有时必须要查看原始数据。为此,咱们最好的工具是“tcpdump”。

应用 tcpdump 的最根本办法是简略地收回以下命令:

tcpdump

您能够应用 - v 选项取得更多详细信息,而 -vv 能够获取更多信息。

有用的选项

假如您已登录到要治理的近程计算机。如果您不带任何选项运行“tcpdump”,则输入将被来自您的 SSH 连贯的数据包吞没。为防止这种状况,只需从输入中打消端口 22:

tcpdump not port 22

您能够应用许多不同的端口来执行此操作:

tcpdump not port 143 and not port 25 and not port 22

如果要进行相同的操作,即仅监督某个端口(这对于调试网络应用程序十分有用),则能够执行以下操作:

tcpdump port 143

您还能够从网络上的特定主机获取数据:

tcpdump host hal9000

如果您的计算机具备多个网络接口,则还能够指定要收听的网络接口:

tcpdump -i eth1

您还能够指定协定:

tcpdump udp

您能够在 / etc / protocols 中找到协定列表。

保留输入以备后用

在某些状况下,您可能心愿将输入重定向到文件,以便当前能够具体钻研它或应用其余程序来解析输入。在以下示例中,您依然能够在将输入保留到文件时观看输入:

tcpdump -l | tee tcpdump_`date +%Y%m%e-%k.%M`

在下面的示例中,咱们能够应用日期和工夫来标识每个转储。在解决一天中特定工夫呈现的问题时,这可能会派上用场。

tcpdump 还能够抉择将其输入转储为二进制格局,以便当前读取。要创立一个二进制文件:

tcpdump -w tcpdump_raw_`date +%Y%m%e-%k.%M`

稍后,您能够让 tcpdump 应用以下命令读取文件

tcpdump -r tcpdump_raw_YYYMMDD-H.M

您也能够应用 ethereal 程序关上原始转储并解释它。

tcpdump 为咱们提供了无关往返于网络的所有数据包的信息。

将 Ethereal 与 tcpdump 一起应用 Ethereal

Ethereal 是一种也能够用来捕捉网络数据包的工具。装置后,您能够关上您制作的原始转储文件。

查看正在产生的事件变得相当容易。您能够看到源 IP 和指标 IP 以及它是什么类型的数据包。这很容易,而后即可对您可能遇到的网络问题进行故障排除并剖析可疑行为。只是为了减少一则轶事,当我编写本课并解释本人的转储时,我在集体工作站上看到了一些奇怪的流动。我简直每隔固定工夫就查问世界上不同 IP 的机器上的端口 32772。我为端口 32772 运行了一个特定的转储,如下所示:

tcpdump port 32772 -w dump_32772

读取原始输入

如您所见,即便从 tcpdump 读取所谓的“人类可读”输入也可能有点神秘。看上面的示例,我只是从转储中选出一个随机数据包:

17:26:22.924493 IP www.linux.org.www > test.linux.org.34365: P 2845:3739(894) ack 1624 win 9648 <nop,nop,timestamp 326501459 24374272>

咱们所领有的是对 https://www.linux.org/ 的 Web 服 …。工夫戳记过后,您会在主机名(即端口 80)的开端留神到.www。这将被发送到发出请求的主机 test.linux.org 的端口 34365。“P”代表 TCP“oush”性能。这意味着应该立刻发送数据。在 2845:3739(894)之后的数字中,2845 标记第一个数据包的八位位组的编号。数字 3739 是数据包发送的最初一个字节的数字加 1。数字 894 是发送的数据包的长度。示意“ack 1624”的局部是“acknowledge”的 TCP 术语 - 示意该数据包已被承受,下一个预期的数据包编号为 1624。之后,咱们看到“win 9648”发送主机正在期待窗口大小为 9648 个八位位组的数据包。这之后是工夫戳。

当初,如果您认为难以解释,则应用 - x 选项,它将在十六进制输入中蕴含数据包内容。

18:12:45.149977 IP www.linux.org.www > test.linux.org.34536: . 1:1449(1448) ack 487 win 6432 <nop,nop,timestamp 329284215 27156244>        0x0000:  4500 05dc 6a81 4000 4006 493b c0a8 0006  E...j.@.@.I;....        0x0010:  c0a8 0009 0050 86e8 8fa4 1d47 1c33 e3af  .....P.....G.3..        0x0020:  8010 1920 b4d9 0000 0101 080a 13a0 7a77  ..............zw        0x0030:  019e 5f14 4854 5450 2f31 2e31 2032 3030  .._.HTTP/1.1.200        0x0040:  204f 4b0d 0a44 6174 653a 2054 6875 2c20  .OK..Date:.Thu,.        0x0050:  3135

咱们能够从输入中得悉这是一个 HTTP 申请。至于其余的,它不是人类可读的,然而咱们很容易晓得这是一个非法的数据包。应用这种格局的另一个益处是,即便咱们无奈齐全解释此数据包的情况,也能够将其发送给可能的人。最终,这是未经任何过滤通过网络传输的原始数据

以上就是良许教程网为各位朋友分享的 Linux 相干常识。

正文完
 0