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

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

如何让tcpdump告诉我在eth1上访问的端口号?

解决方法

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

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

>服务器实际提供和使用的是什么
>服务器应该提供什么

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

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

对此的简单回答是使用像netflows这样的东西.与网络人员交谈.大多数(如果不是全部)网络空间中的大型参与者都可以生成与Cisco netflow功能相同的功能. Juniper将其称为jflow,开放标准是sflow.您的网络人员可能已启用此功能,如果没有查看是否可以获取为您的服务器连接的交换机端口生成的流数据.

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

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

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

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...