Logstash ArcSight 模块

编辑

Logstash ArcSight 模块是 X-Pack 在基础许可证下的一个功能,因此可以免费使用。如有任何问题或需要更多信息,请联系 [email protected]

Logstash ArcSight 模块使您可以轻松地将 ArcSight 数据与 Elastic Stack 集成。通过单个命令,该模块可以直接连接到 ArcSight Smart Connector 或 Event Broker,将安全事件解析并索引到 Elasticsearch,并安装一套 Kibana 仪表板,以便您立即开始探索数据。

先决条件

编辑

这些说明假设 Logstash、Elasticsearch 和 Kibana 已经安装。您需要的产品 可供下载,并且易于安装。此模块需要 Elastic Stack 5.6(或更高版本)和 X-Pack。如果您使用的是 Elastic Stack 6.2 及更早版本,请参阅 说明以了解这些版本的说明。

部署架构

编辑

Logstash ArcSight 模块理解 CEF(通用事件格式),并且可以接受、丰富和索引这些事件以在 Elastic Stack 上进行分析。ADP 包含两个用于数据流的核心数据收集组件

  • Smart Connector(SC)是边缘日志收集器,在发布到 Logstash 接收器之前,会解析和规范化数据到 CEF。
  • Event Broker是传入数据的中心枢纽,基于开源 Apache Kafka。Logstash ArcSight 模块可以直接从 Event Broker 主题中获取数据。

Smart Connector 入门

编辑

要开始使用,您可以使用一个基本的 Elastic Stack 设置,该设置直接读取来自 Smart Connector 的事件。

ArcSight Smart Connector architecture

Smart Connector 已配置为使用 CEF syslog 目标发布 ArcSight 数据(到 TCP 端口 5000)。

Logstash、Elasticsearch 和 Kibana 必须在本地运行。请注意,您也可以在单独的主机上运行 Elasticsearch、Kibana 和 Logstash 以使用 ArcSight 中的数据。

Smart Connector 说明

编辑
  1. 在 Logstash 安装目录中使用您相应的 Smart Connector 主机和端口运行以下命令,启动 Logstash ArcSight 模块

    bin/logstash --modules arcsight --setup \
      -M "arcsight.var.input.smartconnector.port=smart_connect_port"  \
      -M "arcsight.var.elasticsearch.hosts=localhost:9200"  \
      -M "arcsight.var.kibana.host=localhost:5601"

    --modules arcsight 选项启动一个用于摄取的 ArcSight CEF 感知 Logstash 管道。--setup 选项在 Elasticsearch 中创建一个 arcsight-* 索引模式,并导入 Kibana 仪表板和可视化。在后续模块运行或扩展 Logstash 部署时,应省略 --setup 选项,以避免覆盖现有的 Kibana 仪表板。

    有关更多信息,请参阅 Logstash ArcSight 模块配置选项

  2. 使用 Kibana 探索数据

    1. 在浏览器中打开 https://127.0.0.1:5601(用户名:“elastic”;密码:“YOUR_PASSWORD”)
    2. 打开 [ArcSight] 网络概览仪表板
    3. 有关数据探索的更多详细信息,请参阅 探索您的安全数据

如果您想指定控制 ArcSight 模块行为的其他选项,请参阅 配置模块

Event Broker 入门

编辑

要开始使用,您可以使用一个基本的 Elastic Stack 设置,该设置读取来自 Event Broker 事件流的事件。

ArcSight Event Broker architecture

默认情况下,Logstash ArcSight 模块从 Event Broker 的“eb-cef”主题中获取数据。有关其他设置,请参阅 Logstash ArcSight 模块配置选项。可以从受保护的 Event Broker 端口获取数据,请参阅 Logstash ArcSight 模块配置选项

Logstash、Elasticsearch 和 Kibana 必须在本地运行。请注意,您也可以在单独的主机上运行 Elasticsearch、Kibana 和 Logstash 以使用 ArcSight 中的数据。

Event Broker 说明

编辑
  1. 在 Logstash 安装目录中使用您相应的 Event Broker 主机和端口运行以下命令,启动 Logstash ArcSight 模块

    bin/logstash --modules arcsight --setup \
     -M "arcsight.var.input.eventbroker.bootstrap_servers=event_broker_host:event_broker_port"  \
     -M "arcsight.var.elasticsearch.hosts=localhost:9200"  \
     -M "arcsight.var.kibana.host=localhost:5601"

    --modules arcsight 选项启动一个用于摄取的 ArcSight CEF 感知 Logstash 管道。--setup 选项在 Elasticsearch 中创建一个 arcsight-* 索引模式,并导入 Kibana 仪表板和可视化。在后续模块运行或扩展 Logstash 部署时,应省略 --setup 选项,以避免覆盖现有的 Kibana 仪表板。

    有关更多信息,请参阅 Logstash ArcSight 模块配置选项

  2. 使用 Kibana 探索数据

    1. 在浏览器中打开 https://127.0.0.1:5601(用户名:“elastic”;密码:“YOUR_PASSWORD”)
    2. 打开 [ArcSight] 网络概览仪表板
    3. 有关数据探索的更多详细信息,请参阅 探索您的安全数据

如果您想指定控制 ArcSight 模块行为的其他选项,请参阅 配置模块

探索您的安全数据

编辑

Logstash ArcSight 模块开始接收事件后,您可以立即开始使用打包的 Kibana 仪表板来探索和可视化您的安全数据。这些仪表板可以快速减少安全分析师和运营人员需要花费的时间和精力来获取有关流经环境的网络、端点和 DNS 事件的态势和行为洞察。您可以按原样使用这些仪表板,也可以根据现有用例和业务需求对其进行调整。

这些仪表板具有一个导航窗格,用于在三个核心用例之间切换上下文和向下钻取

  • 网络数据

    • 仪表板:网络概览、网络可疑活动
    • 数据类型:网络防火墙、入侵检测系统、VPN 设备
  • 端点数据

    • 仪表板:端点概览、端点操作系统活动
    • 数据类型:操作系统、应用程序、主机入侵检测系统
  • DNS 数据

    • 仪表板:Microsoft DNS 概览
    • 数据类型:Microsoft DNS 设备

网络仪表板示例

编辑
Network overview dashboard
Network suspicious activity dashboard

这些 Kibana 可视化使您能够快速了解顶级设备、端点、攻击者和目标。这种洞察力,以及能够即时向下钻取特定主机、端口、设备或时间范围的能力,提供了整个环境的整体视图,以识别可能需要立即关注或采取行动的特定部分。您可以轻松地找到以下问题的答案

  • 我的攻击者是谁?他们在攻击什么目标?
  • 我的哪些设备或端点最繁忙?提供了哪些服务?
  • 在任何给定时间点触发了多少个唯一的攻击者、技术、签名或目标?
  • 导致故障数量增加的主要来源、目标、协议和行为是什么?

配置模块

编辑

您可以在 logstash.yml 配置文件中或通过命令行覆盖指定 Logstash ArcSight 模块的其他选项,就像入门中一样。有关配置模块的更多信息,请参阅 使用 Logstash 模块

例如,以下设置可以追加到 logstash.yml 以配置您的模块

modules:
  - name: arcsight
    var.input.eventbroker.bootstrap_servers: "eb_host:39092"
    var.input.eventbroker.topics: "eb_topic"
    var.elasticsearch.hosts: "localhost:9200"
    var.elasticsearch.username: "elastic"
    var.elasticsearch.password: "YOUR_PASSWORD"
    var.kibana.host: “localhost:5601”
    var.kibana.username: "elastic"
    var.kibana.password: "YOUR_PASSWORD"

Logstash ArcSight 模块配置选项

编辑

ArcSight 模块提供以下设置来配置模块的行为。这些设置包括 ArcSight 特定的选项以及所有 Logstash 模块都支持的通用选项。

当您在命令行中覆盖设置时,请记住在设置前添加模块名称,例如 arcsight.var.inputs 而不是 var.inputs

如果您未指定配置设置,则 Logstash 将使用默认值。

ArcSight 模块选项

var.inputs
  • 值类型为 字符串
  • 默认值为“eventbroker”

设置要为 Logstash ArcSight 模块公开的输入。有效设置为“eventbroker”、“smartconnector”或“eventbroker,smartconnector”(同时公开这两个输入)。

ArcSight 模块 Event Broker 特定选项

var.input.eventbroker.bootstrap_servers
  • 值类型为 字符串
  • 默认值为“localhost:39092”

要用于建立与集群的初始连接的 Event Broker URL 列表。此列表应采用 host1:port1,host2:port2 的形式。这些 URL 仅用于初始连接以发现完整的集群成员身份(可能会动态更改)。此列表不必包含所有服务器。(如果某台服务器出现故障,您可能希望有多个服务器。)

var.input.eventbroker.topics
  • 值类型为 数组
  • 默认值为 ["eb-cef"]

要订阅的 Event Broker 主题列表。

var.input.eventbroker.security_protocol
  • 值可以是以下任何一项:PLAINTEXTSSLSASL_PLAINTEXTSASL_SSL
  • 默认值为 "PLAINTEXT"

要使用的安全协议,可以是 PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL 中的任何一个。如果您指定了除 PLAINTEXT 之外的任何其他内容,则还需要指定下面列出的一些选项。在指定 SSLSASL_SSL 时,应为以 ssl_ 为前缀的选项提供值,在指定 SASL_PLAINTEXTSASL_SSL 时,应为 jaas_pathkerberos_configsasl_mechanismsasl_kerberos_service_name 提供值。

var.input.eventbroker.ssl_key_password
  • 值类型为 密码
  • 此设置没有默认值。

密钥存储文件中的私钥的密码。

var.input.eventbroker.ssl_keystore_location
  • 值类型为 路径
  • 此设置没有默认值。

如果需要客户端身份验证,此设置将存储密钥存储路径。

var.input.eventbroker.ssl_keystore_password
  • 值类型为 密码
  • 此设置没有默认值。

如果需要客户端身份验证,此设置将存储密钥存储密码。

var.input.eventbroker.ssl_keystore_type
  • 值类型为 字符串
  • 此设置没有默认值。

密钥存储类型。

var.input.eventbroker.ssl_truststore_location
  • 值类型为 路径
  • 此设置没有默认值。

用于验证 Kafka 代理证书的 JKS 信任存储路径。

var.input.eventbroker.ssl_truststore_password
  • 值类型为 密码
  • 此设置没有默认值。

信任存储密码。

var.input.eventbroker.ssl_truststore_type
  • 值类型为 字符串
  • 此设置没有默认值。

信任存储类型。

var.input.eventbroker.sasl_kerberos_service_name
  • 值类型为 字符串
  • 此设置没有默认值。

Kafka 代理运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。

var.input.eventbroker.sasl_mechanism
  • 值类型为 字符串
  • 默认值为 "GSSAPI"

SASL 机制用于客户端连接。这可以是安全提供程序可用的任何机制。GSSAPI 是默认机制。

var.input.eventbroker.jaas_path
  • 值类型为 路径
  • 此设置没有默认值。

Java 身份验证和授权服务 (JAAS) API 为 Kafka 提供用户身份验证和授权服务。此设置提供 JAAS 文件的路径。Kafka 客户端的 JAAS 文件示例

KafkaClient {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true
  renewTicket=true
  serviceName="kafka";
  };

请注意,在此处指定 jaas_pathkerberos_config 会将它们添加到全局 JVM 系统属性中。这意味着如果您有多个 Kafka 输入,所有输入都将共享相同的 jaas_pathkerberos_config。如果不需要这样做,则必须在不同的 JVM 实例上运行 Logstash 的单独实例。

var.input.eventbroker.kerberos_config
  • 值类型为 路径
  • 此设置没有默认值。

Kerberos 配置文件的可选路径。这与 https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html 中详细说明的 krb5.conf 样式相同

ArcSight 模块 Smart Connector 特定选项

var.input.smartconnector.port
  • 值类型为 数字
  • 默认值为 5000

在接收来自 SC 的数据时要侦听的 TCP 端口。

var.input.smartconnector.ssl_enable

启用 SSL(必须设置为其他 ssl_ 选项才能生效)。

var.input.smartconnector.ssl_cert
  • 值类型为 路径
  • 此设置没有默认值。

SSL 证书路径。

var.input.smartconnector.ssl_extra_chain_certs
  • 值类型为 数组
  • 默认值为 []

要添加到证书链中的额外 X509 证书的路径数组。当系统存储中不需要 CA 链时很有用。

var.input.smartconnector.ssl_key
  • 值类型为 路径
  • 此设置没有默认值。

SSL 密钥路径

var.input.smartconnector.ssl_key_passphrase
  • 值类型为 密码
  • 默认值为 nil

SSL 密钥密码短语

var.input.smartconnector.ssl_verify

根据 CA 验证 SSL 连接另一端的身份。对于输入,将 sslsubject 字段设置为客户端证书的字段。

常用选项

以下配置选项受所有模块支持

var.elasticsearch.hosts
  • 值类型为 uri
  • 默认值为 "localhost:9200"

设置 Elasticsearch 集群的主机。对于每个主机,您必须指定主机名和端口。例如,“myhost:9200”。如果给定一个 数组,Logstash 将在 hosts 参数中指定的主机之间负载均衡请求。重要的是要从主机列表中排除 专用的主节点,以防止 Logstash 将批量请求发送到主节点。因此,此参数应仅引用 Elasticsearch 中的数据节点或客户端节点。

此处 URL 中存在的任何特殊字符都必须进行 URL 编码!这意味着 # 应该以 %23 的形式输入。

var.elasticsearch.username
  • 值类型为 字符串
  • 默认值为 "elastic"

用于身份验证到安全 Elasticsearch 集群的用户名。

var.elasticsearch.password
  • 值类型为 字符串
  • 默认值为 "changeme"

用于身份验证到安全 Elasticsearch 集群的密码。

var.elasticsearch.ssl.enabled
  • 值类型为 布尔值
  • 此设置没有默认值。

启用到 Elasticsearch 集群的安全 SSL/TLS 通信。不指定此选项将使用 hosts 中列出的 URL 中指定的任何方案。如果未指定显式协议,则将使用纯 HTTP。如果此处显式禁用 SSL,则如果在 hosts 中给出了 HTTPS URL,插件将拒绝启动。

var.elasticsearch.ssl.verification_mode
  • 值类型为 字符串
  • 默认值为 "strict"

与 Elasticsearch 通信时的主机名验证设置。设置为 disable 以关闭主机名验证。禁用此选项存在严重的安全问题。

var.elasticsearch.ssl.certificate_authority
  • 值类型为 字符串
  • 此设置没有默认值

要用于在与 Elasticsearch 通信时验证 SSL 证书的 X.509 证书的路径。

var.elasticsearch.ssl.certificate
  • 值类型为 字符串
  • 此设置没有默认值

要用于在与 Elasticsearch 通信时进行客户端身份验证的 X.509 证书的路径。

var.elasticsearch.ssl.key
  • 值类型为 字符串
  • 此设置没有默认值

用于在与 Elasticsearch 通信时进行客户端身份验证的证书密钥的路径。

var.kibana.host
  • 值类型为 字符串
  • 默认值为 "localhost:5601"

设置要用于导入仪表盘和可视化的 Kibana 实例的主机名和端口。例如:“myhost:5601”。

var.kibana.scheme

设置用于访问 Kibana 实例的协议。选项包括:“http”或“https”。默认值为“http”。

var.kibana.username
  • 值类型为 字符串
  • 默认值为 "elastic"

用于身份验证到安全 Kibana 实例的用户名。

var.kibana.password
  • 值类型为 字符串
  • 默认值为 "changeme"

用于身份验证到安全 Kibana 实例的密码。

var.kibana.ssl.enabled

启用到 Kibana 实例的安全 SSL/TLS 通信。

var.kibana.ssl.verification_mode
  • 值类型为 字符串
  • 默认值为 "strict"

与 Kibana 通信时的主机名验证设置。设置为 disable 以关闭主机名验证。禁用此选项存在严重的安全问题。

var.kibana.ssl.certificate_authority
  • 值类型为 字符串
  • 此设置没有默认值

要用于在与 Kibana 通信时验证 SSL 证书的 X.509 证书的路径。

var.kibana.ssl.certificate
  • 值类型为 字符串
  • 此设置没有默认值

要用于在与 Kibana 通信时进行客户端身份验证的 X.509 证书的路径。

var.kibana.ssl.key
  • 值类型为 字符串
  • 此设置没有默认值

用于在与 Kibana 通信时进行客户端身份验证的证书密钥的路径。