捕获 HTTP 流量编辑

HTTP 协议有几个特定的配置选项。以下是 packetbeat.yml 配置文件 http 部分的示例配置

packetbeat.protocols:
- type: http
  ports: [80, 8080, 8000, 5000, 8002]
  hide_keywords: ["pass", "password", "passwd"]
  send_headers: ["User-Agent", "Cookie", "Set-Cookie"]
  split_cookie: true
  real_ip_header: "X-Forwarded-For"

配置选项编辑

另请参阅 通用协议选项.

hide_keywords编辑

Packetbeat 将自动屏蔽它保存的交易中的一系列查询参数。与这些参数关联的值将被替换为 'xxxxx'。默认情况下,HTTP 消息不会进行任何更改。

Packetbeat 提供此选项的原因是,与通常只包含密码哈希的 SQL 流量不同,HTTP 流量可能包含敏感数据。为了降低安全风险,您可以配置此选项以避免发送某些 HTTP POST 参数的内容。

此选项会替换来自 GET 请求的查询参数以及来自 POST 请求的顶级参数。如果敏感数据编码在您在此处未指定的参数中,则 Packetbeat 无法对其进行屏蔽。此外,请注意,如果您配置 Packetbeat 以保存原始请求和响应字段(请参阅 send_requestsend_response 选项),则这些字段中可能存在敏感数据。

redact_authorization编辑

启用此选项时,Packetbeat 会隐藏 AuthorizationProxy-Authorization HTTP 标头的值,并在响应中屏蔽这些字符串。

对于使用基本身份验证的交易,您应该将此选项设置为 true,因为它们可能包含 base64 未加密的用户名和密码。

send_headers编辑

要捕获并发送到 Elasticsearch 的标头名称列表。这些标头将放置在结果 JSON 中的 headers 字典下。

send_all_headers编辑

您可以通过将此选项设置为 true 来发送所有标头,而不是发送要发送到 Elasticsearch 的标头白名单。默认值为 false。

redact_headers编辑

要屏蔽的标头列表,如果这些标头存在于 HTTP 请求中。这将保留标头字段,但会屏蔽其值以显示标头的存在。

include_body_for编辑

Packetbeat 导出完整 HTTP 负载的内容类型列表。对于这些内容类型,HTTP 主体在 http.request.body.contenthttp.response.body.content 下可用。

此外,如果启用了 send_response 选项,则 HTTP 主体将与 HTTP 标头一起导出到 response 下,如果启用了 send_request,则 request 包含整个 HTTP 消息,包括主体。

在以下示例中,HTTP 响应的 HTML 附件将在 response 字段下以及 http.request.body.contenthttp.response.body.content 下导出

packetbeat.protocols:
- type: http
  ports: [80, 8080]
  send_response: true
  include_body_for: ["text/html"]

decode_body编辑

控制 HTTP 负载解码的布尔标志。它会解释 Content-EncodingTransfer-Encoding 标头并解压缩实体主体。支持的编码是 gzipdeflate。此选项仅适用于导出 HTTP 负载的情况,即,当指定了某个 include_*_body_for 选项或 POST 请求包含 URL 编码参数时。

split_cookie编辑

如果发送了 CookieSet-Cookie 标头,则此选项控制是否将它们拆分为各个值。例如,使用此选项设置,HTTP 响应可能会导致以下 JSON

"response": {
  "code": 200,
  "headers": {
    "connection": "close",
    "content-language": "en",
    "content-type": "text/html; charset=utf-8",
    "date": "Fri, 21 Nov 2014 17:07:34 GMT",
    "server": "gunicorn/19.1.1",
    "set-cookie": { 
      "csrftoken": "S9ZuJF8mvIMT5CL4T1Xqn32wkA6ZSeyf",
      "expires": "Fri, 20-Nov-2015 17:07:34 GMT",
      "max-age": "31449600",
      "path": "/"
    },
    "vary": "Cookie, Accept-Language"
  },
  "status_phrase": "OK"
}

请注意,set-cookie 是一个包含 cookie 名称作为键的映射。

默认值为 false。

real_ip_header编辑

要从中提取真实 IP 的标头字段。当您想捕获反向代理后面的流量,但又想获取地理位置信息时,此设置很有用。如果此标头存在且包含有效的 IP 地址,则该信息将用于 network.forwarded_ip 字段。

max_message_size编辑

如果单个 HTTP 消息大于此设置(以字节为单位),它将被修剪到此大小。除非此值非常小(<1.5K),否则 Packetbeat 仍然能够正确跟踪交易并为其创建一个事件。默认值为 10485760(10 MB)。