tcpdump 可以告诉访问的端口号吗?

San*_*dra 4 linux firewall iptables tcpdump

我有一台带有两个 NIC 的服务器,我只想打开那些eth1正在使用的端口。

如何tcpdump告诉我正在访问的端口号eth1

Sco*_*ack 5

定义一个“使用过的”端口可能非常棘手。您必须考虑协议是什么以及它们是如何工作的,以便能够确定实际作为服务提供的内容,而不是客户端尝试使用但实际上未使用的内容,以及作为服务提供的内容。服务,是正在使用的客户端,但应该不是由该系统提供。

所以,你真正需要弄清楚的是:

  1. 服务器实际提供和使用的内容
  2. 服务器应该提供什么

理想情况下,系统管理员应该根据他们对系统和文档的了解来回答这两个问题。在实践中,由于各种原因,从离职到无能,他们实际上可能没有那个答案。您可以通过多种方式确定此信息,但您将从网络流量分析中获得最佳结果。

tcpdump 是一个很棒的工具,但并不真正适合您想要的那种调查。它存在捕获所有数据包的问题,这意味着您将看到所有网络扫描、广播和所有其他实际上未连接的数据。为此目的使用流分析的好处在于,您可以仅在已建立的连接上过滤流量。这个很重要。这让您知道谁在实际使用您系统上的服务。当然,“已建立”的整个概念非常依赖于 TCP,因此对于 UDP 等无连接协议,您需要在分析中更加小心。

对此的简单答案是使用类似netflows 的东西。与您的网络人员交谈。大多数(如果不是全部)网络领域的大玩家都可以生产出与 Cisco netflow 具有相同功能的产品。Juniper 称之为 jflow,开放标准是 sflow。您的网络人员可能已经启用了此功能,如果没有,请查看您是否可以获得为您的服务器所连接的交换机端口生成的流数据。

如果您没有可用的 netflow,那么 Qosient 生产的开源应用程序称为argus。Argus 也生成流量数据,但它不是在网络设备上运行,而是在系统上运行的软件包。传统上,您会将 argus 守护程序指向连接到镜像/跨接端口或分路器的接口。但是,您可以轻松地将其指向您的eth1端口并生成专门用于该端口的流量数据。

获得流量数据后,您就可以开始进行各种各种分析,以确定正在使用什么以及由谁使用。通过将端口与应用程序相关联,查看-pnetstat的选项,然后您就可以开始确定系统上实际需要运行的内容。此外,由于您将拥有使用该服务的用户的网络地址,您可以使用该地址以及与您的客户的通信来确定受众并制定一些很好的严格定义的防火墙规则。

睁大眼睛进入这个。这个过程令人沮丧,容易出错,而且很困难。会有错误。就像我说的,正确的方法是询问管理员应该运行什么。当你不能这样做时,这是下一个最好的事情。