我有一台带有两个 NIC 的服务器,并且我只想打开eth1
正在使用的端口。
问题
我如何才能tcpdump
知道正在访问的端口号eth1
?
答案1
定义“已使用”端口可能非常棘手。您必须考虑协议是什么以及它们如何工作,以便能够确定实际作为服务提供的内容,而不是客户端试图使用但实际上未使用的内容,以及作为服务提供的内容,正在被客户端使用,但应该不是由该系统提供。
所以,你真正需要弄清楚的是:
- 服务器实际提供和使用的内容
- 什么应该由服务器提供
理想情况下,系统管理员应该能够根据他们对系统的了解和他们的文档回答这两个问题。实际上,由于各种各样的原因,从离职到能力不足,他们可能实际上没有答案。您可以通过多种方式确定这些信息,但您可以从网络流分析中获得最佳结果。
tcpdump 是一款很棒的工具,但并不真正适合你想要的那种调查。它存在捕获全部数据包,这意味着您将看到所有网络扫描、广播和所有其他实际上未连接的垃圾。为此使用流量分析的好处在于,您可以仅过滤已建立连接的流量。这个很重要。这让您知道谁实际上在使用您系统上的服务。当然,“已建立”的整个概念非常依赖于 TCP,因此对于无连接协议(例如 UDP),您需要在分析时更加小心。
最简单的答案是使用类似净流量。与网络人员交谈。大多数(如果不是全部)网络领域的大公司都可以生产出与 Cisco netflow 具有相同功能的产品。Juniper 称之为 jflow,开放标准是 sflow。您的网络人员可能已经启用了此功能,如果没有,请查看您是否可以获取服务器所连接的交换机端口生成的流数据。
如果你没有可用的 netflow,那么 Qosient 制作了一款开源应用程序,名为阿古斯。Argus 也生成流数据,但它不是在网络设备上运行,而是在系统上运行的软件包。传统上,您会将 argus 守护程序指向连接到镜像/span 端口或分路器的接口。但是,您也可以同样轻松地将其指向您的端口eth1
并专门为该端口生成流数据。
获得流量数据后,您就可以开始进行各种分析,以确定正在使用什么以及由谁使用。通过将端口与应用程序关联起来,查看-p
netstat 的选项,然后您就可以开始确定系统上实际需要运行什么。此外,由于您将拥有使用该服务的用户的网络地址,因此您可以使用该地址以及与客户的通信来确定受众并制定一些严格定义的防火墙规则。
睁大眼睛去做这件事。这个过程令人沮丧、容易出错、而且很艰难。会有错误。就像我说的,正确的方法是询问管理员应该运行什么。当你无法做到这一点时,这是下一个最好的选择。