我有一个有两个网卡的服务器,我只想在eth1上打开那些正在使用的端口。
题
我如何让tcpdump告诉我在eth1上访问的端口号?
定义“使用”端口可能非常棘手。 您必须考虑协议是什么以及如何工作才能确定实际提供的服务,而不是客户正在尝试使用什么,但实际上并未使用,以及作为服务,正在被客户使用,但不应该由该系统提供。
所以,你真正需要弄清楚的是:
理想情况下,系统的pipe理员应该根据他们对系统和文档的了解来回答这两个问题。 在实践中,由于种种原因,从营业到无能,实际上可能没有这个答案。 您可以通过多种方式确定这些信息,尽pipe您可以从networkingstream量分析中获得最佳结果。
tcpdump是一个很好的工具,但并不适合你想要的调查。 它具有捕获所有数据包的问题,这意味着您将看到所有的networking扫描,广播以及所有其他未实际连接的信号。 为此目的使用stream量分析的优点是,您可以只对已build立的连接进行stream量过滤。 这个很重要。 这可以让您知道谁正在使用系统上的服务。 当然,“已build立”的概念完全依赖于TCP,因此对于UDP等无连接协议,您需要在分析时加倍小心。
这个简单的答案是使用类似netflows的东西。 与您的networking人员交谈。 networking空间中的大多数(如果不是全部的话)大公司可以产生与思科networkingstream量function相同的function。 瞻博networking将其称为jflow,开放标准是sflow。 您的networking人员可能已经启用了这个function,如果没有看到您是否可以获取为您的服务器连接的交换机端口生成的stream量数据。
如果你没有netflow,那么Qosient开发的一个叫做argus的开源应用程序。 Argus还生成stream量数据,但不是在networking设备上运行,而是在系统上运行的软件包。 传统上,您可以将阿格斯守护进程指向连接到镜像/端口或水龙头的接口。 但是,您可以轻松地将其指向eth1并专门为该端口生成stream量数据。
一旦你有stream量数据,你可以开始做所有的各种各样的分析,以确定什么是使用和谁。 通过将端口与应用程序相关联,查看netstat的-p选项,然后可以开始确定系统上实际需要运行的内容。 此外,由于您将拥有谁在使用该服务的networking地址,您可以使用该服务,并与客户进行沟通,以确定受众并制定一些精心定义的防火墙规则。
睁大眼睛进去。 这个过程令人沮丧,容易出错,而且很难。 会有错误。 就像我说的, 正确的方法是询问pipe理员应该运行什么。 当你不能这样做时,这是最好的。