![运行 tcpdump 启动 ssh flood](https://linux22.com/image/729515/%E8%BF%90%E8%A1%8C%20tcpdump%20%E5%90%AF%E5%8A%A8%20ssh%20flood.png)
我在 PLC 中运行运行时 Linux。我的开发机器运行的是 Ubuntu 14.04。PLC 和开发机器通过五端口交换机连接。我从我的开发机器通过 ssh 连接到 PLC,以传输我在开发机器上开发的网络应用程序的可执行文件。
我在 PLC 上运行 tcpdump 来调试我的网络应用程序正在接收的数据包类型,但是一旦我启动 tcpdump,就会开始从我的 ubuntu 计算机到 PLC 来回发送大量 ssh 同步和确认。PLC 的以太网控制器以及交换机上的 LED 灯开始快速闪烁。洪水淹没了 PLC,它几乎消失了,而所有其他数据包都被丢弃了。每当我运行 tcpdump 时,感觉就像是 DOS 攻击,但是一旦我停止 tcpdump,一切都会平静下来并恢复正常。
我想知道这个问题的解决办法以及它为什么会发生?
任何帮助,将不胜感激。
答案1
我的命令只是 > tcpdump -i eth0。但我不明白为什么运行 tcpdump 会突然升级为大量流量。
尝试将镜子对着镜子,你就会明白。如果不行,尝试将镜子对着镜子,并阻止镜子看到自己。
因为您的 SSH 流量也是通过 SSH 会话捕获和报告的捕获的一部分。当然,因为它是加密的,所以您看不到 SSH 数据包中的任何内容,但是当 tcpdump 将数据包的标头打印到您的终端时,这些对终端的更改正在通过网络传输。但是通过网络传输的这些更改将导致网络上的更多数据被捕获/显示/等。
无论如何,解决方案会从捕获或客户端计算机(或两者)中过滤掉 ssh。同时设置选项-n
以防止 tcpdump 执行 DNS 查找,以及使用与实际活动无关的 DNS 请求/回复污染您的捕获。
tcpdump -ni eth0 not port 22
tcpdump -ni eth0 not host ip.of.the.sshclient
tcpdump -ni eth0 not host ip.of.the.sshclient and not port 22