Linux 烹饪指南 - 照亮您网络中最黑暗的角落

作者:Marcel Gagné

不,弗朗索瓦。这种嗅探器与葡萄酒无关。在葡萄酒领域,人类的鼻子比任何软件都表现出色,无论程序员多么聪明。说真的,mon ami(我的朋友),品尝葡萄酒,当然是出于质量控制的原因,不是我想自动化的任务。当我们用 Linux 烹饪时,我们可能会遇到的那种嗅探器还有其他用途。

看这里,mon ami(我的朋友)。注意我们有多少带宽在这里和这里被使用。您是否好奇这些连接真正代表什么?弗朗索瓦,你为什么要躲开视线?啊,我们的客人到了。你为什么不早说?

Bonsoir, mes amis(晚上好,我的朋友们)!再次欢迎来到 Chez Marcel(马塞尔餐厅),这里有诱人的 Linux 美食、来自世界各地的美酒以及对所有开源事物的普遍 penchant(爱好)。请坐下,放松一下。在您进来之前,我正在告诉弗朗索瓦关于在普通网络上飞速传播的许多隐藏信息。说到隐藏的乐趣,弗朗索瓦,请赶快去酒窖。去西翼,把 1995 年的里奥哈帝国特级珍藏葡萄酒带回来。这种西班牙红葡萄酒是完美的网络葡萄酒,non(不是吗)?

正如我告诉我的忠实服务员的那样,在普通网络上发生了很多事情,许多人完全没有注意到除了他们自己发起的那些连接之外的所有连接。用于检查活动网络连接的最简单工具包含在每个 Linux 发行版中,即 netstat。通过使用 -a 和 -p 选项,您可以了解系统上几乎每个打开的连接(或端口)以及哪些程序正在使用它们。

注意当我运行程序时会发生什么。我还要使用 -n 选项,它告诉 netstat 不必担心将 IP 地址解析为符号地址。这使得程序运行速度更快,因为不执行名称解析。结果可能是一个很长的列表,所以我将输出管道输送到 more

啊,弗朗索瓦,你带着葡萄酒回来了。太棒了。请为我们的客人倒酒。

我向您展示的列表只是部分列表,但整个列表本身也是不完整的。原因是 iptables 伪装连接对 netstat 不可见;该信息位于另一个位置,具体而言是 /proc/net/ip_conntrack。PID 是使用连接的正在运行的程序的进程 ID。现在,我们可以执行cat在 /proc/net/ip_conntrack 上,但输出并不便于阅读。看看下面的示例(输出是单行,换行显示)

tcp      6 431253 ESTABLISHED src=192.168.22.5
↪dst=192.168.22.10 sport=34212 dport=22
↪src=192.168.22.10 dst=192.168.22.5 sport=22
↪dport=34212 [ASSURED] use=1

Patrick Lagacé 显然也发现这难以阅读。他的 conntrack viewer 脚本可在 cv.intellos.net 获取。因为它是一个 Perl 脚本,只需更改权限以使脚本在下载后可执行,然后运行命令

chmod +x conntrack-viewer.pl
./contrack-viewer.pl

默认情况下,输出显示所有连接,包括伪装连接。要将输出限制为仅伪装连接,请使用 -m 选项。可以使用 -d 选项实现相反的效果(无伪装连接)。请查看图 1 以获取输出示例。

Cooking with Linux - Illuminating Your Network's Darkest Corners

图 1. conntrack Viewer 显示伪装连接

Alexander Neptun 的 Nnetstat 是一个不错的图形工具,用于显示活动连接、路由表等等。要获取您的副本,请访问 www.aneptun.de/linux/Nnetstat 并下载最新版本。这基本上是一个 Perl 脚本,因此除了确保 Nnetstat.pl 可执行之外,无需进行真正的安装。事实证明,Nnetstat 还需要 Gtk.pm 模块库,虽然您的系统上应该有 Perl,但此模块可能没有。获取它的最简单方法是从 Perl CPAN 存储库,命令行仍然是您的好朋友

perl -MCPAN -e "install Gtk"

如果这是您第一次以这种方式安装 Perl 模块,您将经历一个简短的问答环节。继续操作,接受默认设置并信任系统。您需要决定的是最近的 CPAN 镜像的位置。当被问及时,选择您所在的洲和国家,然后选择可用的本地镜像。完成此操作后,Gtk 安装将自行继续。

安装 Gtk Perl 模块确实需要一些时间。我可能应该警告您,在安装快结束时,会执行一组测试。当弹出一个图形框,要求您单击“运行”以测试与软件包关联的各种图形魔法时,请不要感到惊讶。当您对结果感到满意时,单击“关闭”以终止测试并完成安装。

Cooking with Linux - Illuminating Your Network's Darkest Corners

图 2. Nnetstat 是一个不错的图形化 netstat。

为了获得真正可怕(或有趣,取决于您的角度)的关于系统上正在传输的内容的视图,请运行 Driftnet。这个名字本身就足以让您不寒而栗。简而言之,Driftnet 监听选定接口上的图像或视频流量(仅限 MPEG),然后显示它找到的图像。这种显示对于发现用户正在观看什么内容的系统管理员还是对于用户自己来说更可怕,这取决于我们在这里无法充分涵盖的更多因素。也就是说,此图像集合是完全不加区分的,并且绝不会指向特定用户。

要获取您的 Driftnet 副本,请访问 Chris Lightfoot 的网站 www.ex-parrot.com/~chris/driftnet 并获取源代码。在你们这些 Python 爱好者问之前,上次我检查时,他的网站还没有停止存在,也没有渴望峡湾。

构建 Driftnet 需要一些先决条件库,最值得注意的是 libungif、libjpeg 和 libpcap。如果您尚未安装它们,则链接位于本文的“资源”部分,但请首先检查您的发行版 CD。然后,构建软件包只需解压缩 tarball 并运行make在源目录中。然后,您可以从目录本身运行生成的程序,或将其复制到更有用的位置

./driftnet -i eth0

由于 Driftnet 需要将接口设置为混杂模式,因此您需要以 root 身份运行它。查看图 3 以获取 Driftnet 运行示例。

Cooking with Linux - Illuminating Your Network's Darkest Corners

图 3. Driftnet 运行示例:您的所有图像都属于我们。

当然,如果您不考虑带宽成本,那么查看在您的网络上传输的漂亮图片很有趣,但是还有哪些其他有趣的东西在这些电线上移动呢?有 Web 请求、文件下载、电子邮件消息、即时消息会话等等。大多数网络监视器(包括 netstat)都会向您显示活动连接,但是这些连接到底代表什么?

David Leonard 创建了一个基于 ncurses 的程序,名为 pktstat (www.itee.uq.edu.au/~leonard/personal/software/#pktstat),它可以很好地显示每个连接使用的带宽百分比。它还保持类似 uptime 的运行负载平均值,但跟踪网络传输速率而不是运行队列中的进程。该程序与众不同之处在于它能够显示与在您的 Web 服务器上传输的数据包或从网络上的客户端 PC 下载的文件关联的文件名。构建 pktstat 需要解压缩源代码,切换到目录并键入make:

tar -xzvf pktstat-1.7.2q.tar.gz
cd pktstat-1.7.2q
make
su -c "make install"

要运行该程序,请使用 -i 参数来指定您希望监听的接口

pktstat -i eth1

将出现一个窗口,类似于图 4 中的窗口。正如您所看到的,我已经开始下载最新的 OpenOffice.org 软件。实际文件名显示在连接信息下方;HTTP Web 请求也是如此。您不仅可以看到正在下载的文件的地址,还可以看到文件名,无论是 HTML 页面还是图像。

Cooking with Linux - Illuminating Your Network's Darkest Corners

图 4. 文件名在 pktstat 的显示中被解析。

说到流量,如果您希望将精力集中在您的网络正在使用什么以及在何处使用上,那么今晚菜单上的最后一项可能更合适。IPTraf 是您谦逊的厨师最喜欢的 IP 流量监控工具之一,我一次又一次地使用它。这是一个基于 ncurses 的应用程序,可以显示 IP 流量、字节和数据包计数(包括非 IP 数据包)、UDP 流量、传入与传出流量等等。IPTraf 是每个网络负责人应该手头都有的软件包。

访问 Gerard Paul Java 的网站 iptraf.seul.org 以获取您的 IPTraf 副本。解压缩 tar.gz 源代码,然后cd到该目录并运行 Setup 以构建软件包。安装过程通过将二进制文件复制到 /usr/local/bin 完成。要运行 IPTraf,请键入iptraf,按 Enter 键即可开始使用(图 5 显示了活动的 IPTraf 会话)。

Cooking with Linux - Illuminating Your Network's Darkest Corners

图 5. IPTraf 的默认监控窗口

当 IPTraf 收集和显示信息时,屏幕可能会变得非常繁忙,非常快。我喜欢做的是在更大的 X 终端中运行该程序,例如 80 × 40。按 Esc 键可让您退出当前功能或视图。从那里,您可以更改设置、添加或删除过滤器并继续收集数据。IPTraf 还提供不同的视图,从默认的站到站流量、基本和详细的接口流量统计信息以及物理统计信息到数据包大小细分。不要被此软件包的表面简单性所迷惑。IPTraf 足够灵活,可以满足许多 IP 监控需求。

好了,mes amis(我的朋友们),结束时间正在快速临近。当弗朗索瓦为您续杯时,我希望您能对您的网络上正在发生的事情有所了解。但是请记住,除了这些工具可以提供的丰富信息之外,还附加了道德和社会影响。优秀的系统管理员知道他们的网络上正在发生的事情。他们也知道何时该睁一只眼闭一只眼。为此,我向您举杯,mes amis(我的朋友们)。A vôtre santé! Bon appétit!(祝您健康!祝您好胃口!)

Marcel Gagné 居住在安大略省密西沙加市。他是 Linux 系统管理:用户指南 (ISBN 0-201-71934-7) 的作者,该书由 Addison-Wesley 出版,目前正在撰写他的下一本书。您可以通过电子邮件 mggagne@salmar.com 与他联系。

加载 Disqus 评论