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 包含两个用于数据流的核心数据收集组件

  • 智能连接器 (SC) 是边缘日志收集器,它在发布到 Logstash 接收器之前解析并将数据标准化为 CEF。
  • 事件代理是传入数据的中央枢纽,基于开源 Apache Kafka。Logstash ArcSight 模块可以直接从事件代理主题中获取数据。

智能连接器入门

编辑

要开始使用,您可以使用基本的 Elastic Stack 设置,直接从智能连接器读取事件。

ArcSight Smart Connector architecture

智能连接器已配置为使用 CEF syslog 目标发布 ArcSight 数据(到 TCP 端口 5000)。

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

智能连接器说明

编辑
  1. 通过在 Logstash 安装目录中使用您的智能连接器主机和端口运行以下命令来启动 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 模块的行为,请参阅 配置模块

事件代理入门

编辑

要开始使用,您可以使用基本的 Elastic Stack 设置,从事件代理事件流中读取事件。

ArcSight Event Broker architecture

默认情况下,Logstash ArcSight 模块从事件代理“eb-cef”主题中获取数据。有关其他设置,请参阅 Logstash ArcSight 模块配置选项。可以从安全的事件代理端口获取数据,请参阅 Logstash ArcSight 模块配置选项

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

事件代理说明

编辑
  1. 通过在 Logstash 安装目录中使用您的事件代理主机和端口运行以下命令来启动 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 模块事件代理特定选项

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

用于建立与集群的初始连接的事件代理 URL 列表。此列表应采用 host1:port1,host2:port2 的形式。这些 URL 仅用于初始连接以发现完整的集群成员资格(可能会动态更改)。此列表不必包含完整的服务器集。(您可能需要多个,以防服务器发生故障。)

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

要订阅的事件代理主题列表。

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 配置文件的可选路径。这是一种 krb5.conf 样式,详细信息请参见 https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html

ArcSight 模块智能连接器特定选项

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 设置为客户端证书的 subject。

常用选项

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

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 通信时进行客户端身份验证的证书密钥的路径。