您的网络秘生活,第 1 部分
首先,我想说威利·莎士比亚在经典舞台剧方面没有什么可担心的。像 那样 在 这个 网站上的开场只能意味着您已经找到了 SysAdmin's Corner,这是所有关于 Linux 的地方,以及您的常驻主持人 Marcel Gagné。在全身心投入一个全新的系列之前,我想花一点时间感谢大家对“共享”系列的评论。有了大家的热情,我们可能不得不在未来再次回顾它(当然,带着全新的想法)。但现在,是时候用一个全新的系列探索一些新的领域了。
在本系列文章中,我希望能够让您深入了解您的网络。在您不知道的情况下,您的双绞线电缆上发生了什么?我们将看看您已经拥有的工具,以及一些不错的图形化工具,这些工具不仅可以让您监控您的网络,还可以将其可视化。想用 Linux 的功能给老板留下深刻印象吗?旧的 Corner 可能会有办法。
虽然这似乎非常明显,但了解网络上发生的事情的最佳方法是了解您的网络。如果有一个主机在做任何事情,您需要能够识别它(或至少对其进行说明)。
最有效(且被忽视)的网络发现工具之一是 netstat。它与每个 Linux 发行版捆绑在一起,它可以告诉您很多关于服务器上正在发生的事情。例如,通过使用带有 -a 和 -p 标志的程序,您可以找到系统上打开的每个连接(或端口)以及哪些程序正在使用这些端口。
对于你们这些有安全意识的人(你们所有人都是,对吧?),netstat 应该成为您的密友。检查那些打开的端口。每个连接对您来说都有意义吗?是否有来自您无法识别的主机的实时连接?
在下面的示例中,我还使用了 -n 标志。这告诉 netstat 不用担心将 IP 地址解析为符号地址。它也使程序运行得更快一点,正是因为没有进行名称解析。由于这可能是一个很长的列表,我建议您将整个内容管道输送到“more”。
# netstat -apn | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 20 192.168.22.10:22 192.168.22.100:1014 ESTABLISHED 4003/sshd tcp 0 0 192.168.22.10:22 192.168.22.100:1015 ESTABLISHED 6122/named tcp 0 0 192.168.22.10:53 0.0.0.0:* LISTEN 6122/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 6122/named tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1231/httpd tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
PID 是使用连接的正在运行的程序的进程 ID。因此,您可以执行 ps ax 并查找连接,并根据您的需要进行处理。
netstat 是一个非常灵活的程序,您应该掌握一些有用的选项。为了过滤输出以仅显示 TCP 连接,请使用 -t 标志。-u 标志将输出限制为 UDP,而 -w 将显示原始会话。最后,-x 将显示限制为 UNIX 类型的套接字(一些数据库应用程序、X11 连接、字体服务器等)。
看到 Linux 服务器通过与网络上的其他 PC 共享单个网络连接(无论是拨号、电缆还是 DSL)为企业或家庭办公室网络提供互联网访问并不罕见。这就是 IP 转发和伪装的魔力。要查看您的伪装会话在做什么,请使用 -M 标志,如下所示
# netstat -M IP masquerading entries prot expire source destination ports icmp 0:59.13 gateway.mydomain.dom gateway.mycustomer.dom 49165 -> 8 (61808)
正如您所看到的,我正在 ping 远程站点以生成伪装连接。这是另一个可以尝试的。-e 选项(意思是“扩展”)将为您提供有关谁在使用活动套接字的更多信息。
# netstat -et Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 3419 www:www ts2-f-p01.rndm.dom:1328 ESTABLISHED www 1143804 tcp 0 12728 www:www ts2-f-p01.rndm.dom:1327 ESTABLISHED www 1143797 tcp 0 20 website.mysite.dom:ssh gateway.site22.dom:1760 ESTABLISHED root 1143189 tcp 0 0 www:smtp n1.groups.yahoo.c:27247 TIME_WAIT root 0
那么,对于整个 netstat 业务,有没有一种不错的图形化方法呢?Alexander Neptun 的 Nnetstat.pl 程序(见图 1)用 Perl 编写并使用 Gtk 库,提供了一种访问 netstat 许多功能的简单方法。首先,访问 Alexander 的网站并获取该脚本的副本;网址是 http://www.aneptun.de/linux/Nnetstat。
由于无需编译,请确保脚本是可执行的并运行它。
./Nnetstat.pl &
这仍然是 alpha 代码,但它非常可用。您可以通过单击相应的选项卡(TCP、UDP 等)在不同的视图之间切换。您还可以在“选项”菜单下打开扩展选项或 DNS 解析。简单而干净。
是的,又到了总结的时候了。但是,在结束之前,我想就狡猾的系统破解者提出一个建议。因为 netstat 可以告诉您很多关于系统上正在发生的事情,所以它是破解者在您的系统上建立据点后首先会替换的程序之一。新版本的工作方式几乎与旧版本完全相同,只是它会隐藏破解者打开的端口和地址。
因此,netstat 是一个很好的程序,可以在软盘上保存一个干净的(来自全新安装的)副本,放在系统以外的其他地方。(您也希望在那里有一个副本,当然)。该程序可以从软盘运行(您需要挂载软盘文件系统并像执行任何其他程序一样执行它),或者您可以使用 tar 将其保存到软盘并在需要时恢复它。
tar -cvf /dev/fd0 /bin/netstat # To save the file tar -xvf /dev/fd0 # To extract the file
您还可以通过使用 chattr 程序使文件 immutable 来减慢潜在破解者的速度(但不一定阻止他们)。不可变设置由 +i 标志定义。
chattr +i /bin/netstat
如果您现在尝试修改文件,您会得到类似这样的结果
# mv /bin/netstat /bin/netstat.old mv: cannot unlink `/bin/netstat': Operation not permitted mv: cannot remove `/bin/netstat': Operation not permitted
属性已以这种方式修改的文件无法修改、重命名或删除。您必须首先获得 root 访问权限,然后 在 进行任何更改之前,使用 chattr(带有 -i 标志)重置属性。正如您所看到的,这给普通脚本小子的破解尝试增加了一些步骤。
下次我们见面时,我们将把这个网络发现的东西提升到一个新的水平。 <在此处插入适当的笑脸>。在下一个 SysAdmin's Corner 之前,请记住……如果您不监控您的网络,谁会监控?
正在查找本系列过去的文章? 点击此处查看列表。