在我的工作场所,当我们尝试在谷歌中搜索某些内容时,我们偶尔会遇到那些烦人的验证码。
当我们进入该页面时,它表示我们的网络正在尝试多次快速访问 Google。我们怀疑有一台计算机感染了某种病毒或脚本,正在后台运行并试图对 Google 或其他主机执行某些操作。
我想知道我可以在 Linux 中使用什么工具来发现网络中的坏节点或者如何开始调试这个问题。
答案1
我可能会首先使用 tcpdump 来找到罪魁祸首。
如果您有一个运行 Linux 的路由器(很多都是这样),您通常可以直接在路由器上运行 tcpdump。
如果没有,您可以尝试在与路由器位于同一网络的 PC 上运行 tcpdump(或wireshark)。这并不总是有效,因为以太网交换机并不总是将所有流量复制到所有端口。在这种情况下,您必须将一台计算机设置为路由器并将其放置在外部路由器和内部网络之间,然后您可以在其上运行 tcpdump。
或者您可以找到一个不进行交换的旧以太网集线器。我的工具包里放着一个旧的,就是为了这个目的!
一旦你找到了一个可以可靠地进行 tcpdump 并查看退出网络的网络流量的地方,请首先查找 google 的 IP 地址,如下所示:
$ host google.com
google.com has address 74.125.21.100
google.com has address 74.125.21.113
google.com has address 74.125.21.138
google.com has address 74.125.21.139
google.com has address 74.125.21.101
google.com has address 74.125.21.102
google.com has IPv6 address 2607:f8b0:4002:c06::8b
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
这些 74.125.21.X 地址可能与您在网络上的有利位置不同。要找出哪些流量正在访问 tcpdump 中的这些地址,请使用如下命令:
tcpdump dst host 173.194.219.113 or dst host 173.194.219.139 or dst host 173.194.219.100 or dst host 173.194.219.138 or dst host 173.194.219.102 or dst host 173.194.219.101
现在坐下来观察一下,看看您是否能发现一台主机比另一台主机点击谷歌的次数更多。
您可能希望将 tcpdump 的输出转储到文件中,并稍后使用一些脚本对其进行排序。将 tcpdump 保存到 tmp 中,如下所示(将 ... 替换为上面的 arg 列表):
tcpdump ... > /tmp/x
然后让它运行一段时间并^C它。然后用它来找出谷歌最大的用户是谁:
awk '{ print $3 }' /tmp/x | uniq -c | sort -n
所有这一切的棘手部分是获得一台可以运行 tcpdump 并可以查看所有网络流量的机器。