具有扩展支持的 IPFIX 收集器

具有扩展支持的 IPFIX 收集器

我需要一个工具来收集 IPFIX 记录并将每个数据包的内容记录到日志文件或数据库中,以验证 IPFIX 发射器的准确性。此 IPFIX 发射器在 ipfix 记录中发送我需要验证的企业扩展以及标准套件。

到目前为止,我已经研究过 NFDump,它满足了我收集和存储记录的需求,但从目前我所看到的情况来看,它不会存储企业扩展的内容。

是否可以配置 NFDump 来存储企业扩展?是否有其他 IPFIX 收集器可以满足我的需求?

答案1

Scrutinizer 可以做到这一点。我们需要一份解释您的企业要素内容的文档,我们可以在几个小时内完成。

答案2

正如 Felix 所建议的,进一步澄清和提供链接可能会有所帮助。所以,开始吧...

IPFIX 为供应商提供了使用自己的信息元素 (IE) 扩展 IPFIX 的能力。这非常强大,但该协议不会传输收集器解释 IE 所需的所有信息。要有效地解释 IE,收集器需要了解 IE 数据类型、语义等。

对于标准 IE,此信息可在 IANA 中找到http://www.iana.org/assignments/ipfix)。对于供应商 IE,此信息不在任何标准位置或格式中提供。

对于 oonska 来说,这意味着收集器可以支持 IPFIX,但仍然无法对使用供应商 IE 导出的数据执行任何有用的操作。对于 Scrutinizer,我们非常努力地了解和支持所有供应商 IE。如果我们目前不支持您感兴趣的 IE,那么正如 Jake 所说,我们可以非常快速地添加支持。

我不知道您在寻找什么,但 Scrutinizer 已经支持来自 Barracuda、Cisco、Citrix、Extreme Networks ntop、SonicWall、VMware 和其他公司的 IPFIX 供应商 IE。如果您感兴趣的 IPFIX IE 不在该列表中,我会很高兴看到它们被添加。

向 Scrutinizer(或任何收集器)添加对供应商 IE 的支持所需的基本信息是:

elementName(vendorPEN/elementId){数据类型语义}

上面提到的 IANA 页面上的表格列出了当前为 IPFIX 定义的语义、单位和类型。

以下是 Plixer IE 的示例,其中填入了以下值:
event_id(13745/106){identifier}

IE 描述的格式并不重要,但我喜欢 RFC7013 中的上述格式。它易于阅读和解析,这使得导入新 IE 变得轻而易举。

其他有用的信息包括

  • 哪些范围的数值有效
  • 任何标志位或枚举值的含义
  • 单位(例如八位字节、数据包等)
  • 详细说明

一旦定义了新的 IE,Scrutinizer 将允许您以任何您喜欢的方式查看这些 IE 中的数据。您可以使用报告设计器 (http://www.plixer.com/blog/advanced-netflow-reporting-2/custom-netflow-reporting/)或使用 FlowView 查看每个单独的流程(http://www.plixer.com/blog/netflow-reporting-2/flowview-netflow/)。

您可以在以下网址下载 http://www.plixer.com/Scrutinizer-Netflow-Sflow/scrutinizer.html

希望有所帮助。

答案3

对于任何从 Google 来到这里的人,以下是我所学到的东西(与开源工具相关)。我已经使用第二代接收 IPFIX 数据的工具了,我曾经使用过一个工具(从 libipfix 分叉而来),它接收 IPFIX 并将其作为 JSON 发送以提取到 ELK 中。这有点过时了,我现在不推荐它(特别是因为 NetScalar 11 破坏了它的一些预存储模板)。

我建议使用 LogStash(5.3 或更高版本)来接收 IPFIX 数据;特别是如果您打算将其导入 ELK。这是作为“编解码器”完成的(输入将是“udp”)

https://www.elastic.co/guide/en/logstash/current/plugins-codecs-netflow.html

以下是示例输入

input {
  udp {
    host => "0.0.0.0"
    port => 4739
    codec => netflow {
      versions => [10]
      target => ipfix
    }
    type => ipfix
  }
}

为了让您了解从中获得的输出,这里有几条针对 TCP 连接(LDAPS)和 HTTPS(在 NetScaler 终止的 SSL)请求的消息(此处使用带有“rubydebug”编解码器的“stdout”输出显示)

{
         "ipfix" => {
                "destinationTransportPort" => 39912,
                     "flowEndMicroseconds" => "2017-04-11T02:53:09.000Z",
                       "sourceIPv4Address" => "10.x.x.x",
                     "netscalerUnknown329" => 0,
                         "egressInterface" => 0,
                         "octetDeltaCount" => 6600,
                   "netscalerAppNameAppId" => 165707776,
                     "sourceTransportPort" => 636,
                                  "flowId" => 14049270,
                  "destinationIPv4Address" => "10.y.y.y",
                      "observationPointId" => 472006666,
                   "netscalerConnectionId" => 14049269,
                          "tcpControlBits" => 25,
                   "flowStartMicroseconds" => "2017-04-11T02:53:09.000Z",
                        "ingressInterface" => 2147483651,
                                 "version" => 10,
                        "packetDeltaCount" => 16,
                  "netscalerRoundTripTime" => 0,
              "netscalerConnectionChainID" => "00000000000000000000000000000000",
                               "ipVersion" => 4,
                      "protocolIdentifier" => 6,
                     "netscalerUnknown331" => 0,
                     "netscalerUnknown332" => 0,
                      "exportingProcessId" => 0,
                      "netscalerFlowFlags" => 1090527232,
                  "netscalerTransactionId" => 342306495,
        "netscalerConnectionChainHopCount" => 0
    },
    "@timestamp" => 2017-04-11T02:53:09.000Z,
      "@version" => "1",
          "host" => "172.28.128.3",
          "type" => "ipfix"
}


{
         "ipfix" => {
               "netscalerHttpReqUserAgent" => "",
                "destinationTransportPort" => 443,
                  "netscalerHttpReqCookie" => "",
                     "flowEndMicroseconds" => "2017-04-11T02:52:49.000Z",
                     "netscalerHttpReqUrl" => "/someblah",
                       "sourceIPv4Address" => "10.z.z.z",
                  "netscalerHttpReqMethod" => "POST",
                    "netscalerHttpReqHost" => "some.example.com",
                         "egressInterface" => 2147483651,
                         "octetDeltaCount" => 1165,
                   "netscalerAppNameAppId" => 36274176,
                     "sourceTransportPort" => 59959,
                                  "flowId" => 14043803,
           "netscalerHttpReqAuthorization" => "",
                 "netscalerHttpDomainName" => "",
                    "netscalerAaaUsername" => "",
                "netscalerHttpContentType" => "",
                  "destinationIPv4Address" => "10.w.w.w",
                      "observationPointId" => 472006666,
                     "netscalerHttpReqVia" => "",
                   "netscalerConnectionId" => 14043803,
                          "tcpControlBits" => 24,
                   "flowStartMicroseconds" => "2017-04-11T02:52:49.000Z",
                        "ingressInterface" => 1,
                                 "version" => 10,
                        "packetDeltaCount" => 1,
                     "netscalerUnknown330" => 0,
              "netscalerConnectionChainID" => "928ba0c1da3300000145ec5805800e00",
                               "ipVersion" => 4,
                      "protocolIdentifier" => 6,
                  "netscalerHttpResForwLB" => 0,
                 "netscalerHttpReqReferer" => "",
                      "exportingProcessId" => 0,
               "netscalerAppUnitNameAppId" => 0,
                      "netscalerFlowFlags" => 151134208,
                  "netscalerTransactionId" => 342305773,
                  "netscalerHttpResForwFB" => 0,
        "netscalerConnectionChainHopCount" => 1,
           "netscalerHttpReqXForwardedFor" => ""
    },
    "@timestamp" => 2017-04-11T02:52:51.000Z,
      "@version" => "1",
          "host" => "172.28.128.3",
          "type" => "ipfix"
}

我目前仅在开发中使用它,但它看起来比我以前使用的要好得多。

唯一的问题是,既然它已经可以提取,你想用它做什么。你可以制作一个工具,将客户端->NS 流与 NS->后端流以及应用程序请求连接起来(如果你已经记录了该请求)。

相关内容