使用 GeoIP 信息丰富事件

编辑

使用 GeoIP 信息丰富事件

编辑

你可以将 Winlogbeat 与 Elasticsearch 中的 GeoIP 处理器 一起使用,根据 IP 地址导出地理位置信息。然后,你可以使用此信息在 Kibana 的地图上可视化 IP 地址的位置。

geoip 处理器根据 Maxmind GeoLite2 城市数据库中的数据添加有关 IP 地址地理位置的信息。由于该处理器使用安装在 Elasticsearch 上的 geoIP 数据库,因此你无需在运行 Winlogbeat 的计算机上安装 geoIP 数据库。

如果你的用例涉及使用 Logstash,则可以使用 Logstash 中提供的 GeoIP 过滤器,而不是使用 geoip 处理器。但是,当你不需要 Logstash 的额外处理能力时,使用 geoip 处理器是最简单的方法。

配置 geoip 处理器

编辑

要配置 Winlogbeat 和 geoip 处理器

  1. 定义一个使用一个或多个 geoip 处理器将位置信息添加到事件的摄取管道。例如,你可以使用 Kibana 中的控制台创建以下管道

    PUT _ingest/pipeline/geoip-info
    {
      "description": "Add geoip info",
      "processors": [
        {
          "geoip": {
            "field": "client.ip",
            "target_field": "client.geo",
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "database_file": "GeoLite2-ASN.mmdb",
            "field": "client.ip",
            "target_field": "client.as",
            "properties": [
              "asn",
              "organization_name"
            ],
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "field": "source.ip",
            "target_field": "source.geo",
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "database_file": "GeoLite2-ASN.mmdb",
            "field": "source.ip",
            "target_field": "source.as",
            "properties": [
              "asn",
              "organization_name"
            ],
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "field": "destination.ip",
            "target_field": "destination.geo",
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "database_file": "GeoLite2-ASN.mmdb",
            "field": "destination.ip",
            "target_field": "destination.as",
            "properties": [
              "asn",
              "organization_name"
            ],
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "field": "server.ip",
            "target_field": "server.geo",
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "database_file": "GeoLite2-ASN.mmdb",
            "field": "server.ip",
            "target_field": "server.as",
            "properties": [
              "asn",
              "organization_name"
            ],
            "ignore_missing": true
          }
        },
        {
          "geoip": {
            "field": "host.ip",
            "target_field": "host.geo",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "server.as.asn",
            "target_field": "server.as.number",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "server.as.organization_name",
            "target_field": "server.as.organization.name",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "client.as.asn",
            "target_field": "client.as.number",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "client.as.organization_name",
            "target_field": "client.as.organization.name",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "source.as.asn",
            "target_field": "source.as.number",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "source.as.organization_name",
            "target_field": "source.as.organization.name",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "destination.as.asn",
            "target_field": "destination.as.number",
            "ignore_missing": true
          }
        },
        {
          "rename": {
            "field": "destination.as.organization_name",
            "target_field": "destination.as.organization.name",
            "ignore_missing": true
          }
        }
      ]
    }

    在此示例中,管道 ID 为 geoip-infofield 指定包含用于地理位置查找的 IP 地址的字段,而 target_field 是将保存地理信息的字段。"ignore_missing": true 配置管道在遇到没有指定字段的事件时继续处理。

    有关更多选项,请参阅 GeoIP 处理器

    要了解有关向事件添加主机信息的更多信息,请参阅 add_host_metadata

  2. 在 Winlogbeat 配置文件中,配置 Elasticsearch 输出以使用管道。在 output.elasticsearch 下的 pipeline 选项中指定管道 ID。例如

    output.elasticsearch:
      hosts: ["localhost:9200"]
      pipeline: geoip-info
  3. 运行 Winlogbeat。如果配置文件由 root 拥有,请记住使用 sudo

    ./winlogbeat -e

    如果查找成功,事件将使用 geo_point 字段(例如 client.geo.locationhost.geo.location)进行丰富,你可以使用这些字段在 Kibana 中填充可视化效果。

如果在索引模板中添加的字段尚未定义为 geo_point,请添加映射,以便正确索引该字段。

可视化位置

编辑

要可视化 IP 地址的位置,你可以在 Kibana 中创建一个新的 坐标地图,并选择位置字段(例如 client.geo.locationhost.geo.location)作为 Geohash。

Coordinate map in Kibana