收集 Trellix Email Security(以前称为 FireEye eMPS)日志

解析器版本:16.0

支持的语言:

本文档介绍了如何使用 Bindplane 将 Trellix Email Security(以前称为 FireEye eMPS)日志注入到 Google Security Operations。

Trellix Email Security 是一款电子邮件安全设备,可通过实时分析电子邮件内容和附件,保护组织免受高级电子邮件威胁(包括鱼叉式网络钓鱼、恶意软件和定向攻击)的侵害。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • Bindplane 代理与 FireEye eMPS 设备之间的网络连接
  • 如果通过代理运行,请确保防火墙端口根据 Bindplane 代理要求处于开放状态
  • 对 FireEye eMPS 设备 CLI 的特权访问权限(管理员或操作员角色)
  • 具有 syslog 通知功能的 FireEye eMPS 设备

获取 Bindplane 代理的 Google SecOps 凭证

如需向 Google SecOps 验证 Bindplane 代理的身份,请选择以下方法之一:

  • 新部署:使用 Chronicle API(选项 1)。
  • 旧版部署:继续使用提取身份验证文件(方法 2),直到提取 API 于 2027 年 7 月 20 日停用。
  1. 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
  2. 前往 IAM 和管理 > 服务账号。
  3. 点击创建服务账号。
  4. 提供以下配置详细信息:
    • 服务账号名称:输入账号的名称(例如 bindplane-ingest)。
    • 服务账号说明:输入说明(例如 Bindplane agent log ingestion)。
  5. 点击创建并继续。
  6. 在向此服务账号授予对项目的访问权限部分,点击选择角色,然后选择 Chronicle Editor。
  7. 点击继续,然后点击完成。
  8. 点击您创建的服务账号,然后前往密钥标签页。
  9. 依次点击添加密钥> 创建新密钥。
  10. 选择 JSON,然后点击创建。密钥文件会下载到您的计算机上。
  11. 将密钥文件另存为 Bindplane 收集器目录(在 Linux 上为 /opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的 ingestion-auth.json,或更新 config.yaml 中的 creds_file_path 以与您保存密钥文件的路径相匹配。
  12. 前往 IAM 和管理 > 设置,然后复制项目编号。您需要此信息才能配置导出器。

方法 2:下载数据注入身份验证文件(旧版)

  1. 登录 Google SecOps 控制台。
  2. 前往 SIEM 设置> 收集代理。
  3. 下载数据注入身份验证文件。
  4. 将文件安全地保存在将安装 Bindplane 代理的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 前往 SIEM 设置 > 个人资料。
  3. 复制并保存组织详细信息部分中的客户 ID。

安装 Bindplane 代理

根据以下说明,在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符或 PowerShell。
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安装完成。

  4. 运行以下命令,验证安装是否成功:

    sc query observiq-otel-collector
    

该服务应显示为正在运行。

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.sh
    
  3. 等待安装完成。

  4. 运行以下命令,验证安装是否成功:

    sudo systemctl status observiq-otel-collector
    

该服务应显示为有效(正在运行)。

其他安装资源

如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。

配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps

找到配置文件

  • Linux: /opt/observiq-otel-collector/config.yaml
  • Windows: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml

修改配置文件

  • 将 config.yaml 的全部内容替换为以下配置:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/fireeye_emps:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: FIREEYE_EMPS
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/fireeye_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/fireeye_emps
    

配置参数

替换以下占位符:

  • 接收器配置:

    • 接收器配置为在端口 514 上接收 UDP syslog。
    • 如需在 Linux 上使用非特权端口,请将 514 更改为 1514 或更高值。
    • 如需使用 TCP 而非 UDP,请将 udplog 替换为 tcplog。
  • 导出器配置:

    • creds_file_path:服务账号 JSON 密钥文件的完整路径(选项 1)。
    • YOUR_CUSTOMER_ID:替换为您的实际客户 ID。
    • location:将 <LOCATION> 替换为 Google SecOps 实例的区域(例如 us、europe 或 asia-southeast1)。导出器会使用此值作为 chronicle.googleapis.com 的前缀。如需查看完整列表,请参阅区域级端点。
    • project:将 <PROJECT_NUMBER> 替换为 IAM 和管理 > 设置中的项目编号。
    • endpoint:保持设置为 chronicle.googleapis.com。
    • log_type:必须正好为 FIREEYE_EMPS。
    • ingestion_labels:YAML 格式的可选标签。

旧版提取 API 导出工具

  • 如果您使用选项 2 中的数据注入身份验证文件,请将 exporters 代码块替换为以下内容。将 creds_file_path 设置为数据注入身份验证文件的路径,如果您的实例位于美国境外,请将 malachiteingestion-pa.googleapis.com 替换为您的区域端点(例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/fireeye_emps:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: FIREEYE_EMPS
        raw_log_field: body
        ingestion_labels:
          env: production
    

重启 Bindplane 代理以应用更改

如需在 Linux 中重启 Bindplane 代理,请执行以下操作:

  1. 运行以下命令:

    sudo systemctl restart observiq-otel-collector
    
  2. 验证服务是否正在运行:

    sudo systemctl status observiq-otel-collector
    
  3. 检查日志中的错误:

    sudo journalctl -u observiq-otel-collector -f
    

如需在 Windows 中重启 Bindplane 代理,请执行以下操作:

  1. 请从下列选项中选择一项:

    • 以管理员身份运行命令提示符或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • “服务”控制台:
      1. 按 Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry 收集器。
      3. 右键点击并选择重启。
  2. 验证服务是否正在运行:

    sc query observiq-otel-collector
    
  3. 检查日志中是否存在错误:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

配置 FireEye eMPS syslog 转发

访问 FireEye eMPS CLI

  1. 通过 SSH 或控制台连接到 FireEye eMPS 设备。
  2. 登录并进入启用模式:hostname> enable
  3. 进入配置模式:hostname# configure terminal

配置 syslog 服务器

  1. 将 Bindplane 代理添加为 syslog 陷阱接收器: hostname(config)# fenotify rsyslog trap-sink chronicle address <BINDPLANE_IP_ADDRESS>
  2. 将 syslog 格式设置为 CEF: hostname(config)# fenotify rsyslog trap-sink chronicle prefer message format cef
  3. 将 syslog facility 设置为 local4(推荐): hostname(config)# fenotify rsyslog default facility local4
  4. 设置传送模式: hostname(config)# fenotify rsyslog trap-sink chronicle message delivery per-event
  5. 设置提醒的严重程度: hostname(config)# fenotify rsyslog trap-sink chronicle prefer message send-as alert
  6. 设置协议: hostname(config)# fenotify rsyslog trap-sink chronicle protocol udp
  7. 设置端口: hostname(config)# fenotify rsyslog trap-sink chronicle port 514

启用 syslog 通知

  1. 全局启用 rsyslog 通知:hostname(config)# fenotify rsyslog enable
  2. 启用全局通知:hostname(config)# fenotify enable
  3. 启用特定类型的提醒:

    hostname(config)# fenotify rsyslog alert malware-object enable
    hostname(config)# fenotify rsyslog alert malware-callback enable
    hostname(config)# fenotify rsyslog alert infection-match enable
    hostname(config)# fenotify rsyslog alert domain-match enable
    
  4. 验证配置:hostname(config)# show fenotify alerts

  5. 保存并退出:

    hostname(config)# write memory
    hostname(config)# exit
    hostname# exit
    

UDM 映射表

日志字段 UDM 映射 逻辑
about.asset.asset_id 由 device_vendor、device_product 和 deviceExternalId 连接而成
关于 关于 从 about_token 合并
about.file.full_path about.file.full_path 直接复制值
about.file.sha256 about.file.sha256 直接复制值
about.file.size about.file.size 直接复制值
about.hostname about.hostname 直接复制的值
about.ip about.ip 从 ips 数组合并
about.mac about.mac 如果 MAC 有效,则为 dvcmac 中的值,否则为 mac_address 中的值
about.nat_ip about.nat_ip 直接从 deviceTranslatedAddress 复制的值
about.process.command_line about.process.command_line 如果 Subject 不为空,则为 Subject 的值,否则为 Emne 的值,否则为 Path 的值
about.process.file.full_path about.process.file.full_path 直接复制值
about.process.pid about.process.pid 直接复制的值
about.resource.attribute.permissions about.resource.attribute.permissions 直接从权限复制的值
其他 其他 直接重命名
additional_cfp1 additional.fields 已合并到其他字段
additional_cfp2 additional.fields 已合并到其他字段
additional_cfp3 additional.fields 已合并到其他字段
additional_cfp4 additional.fields 已合并到其他字段
additional_cn1 additional.fields 合并到其他字段中
additional_cn2 additional.fields 已合并到其他字段
additional_cn3 additional.fields 已合并到其他字段
additional_cs1 additional.fields 已合并到其他字段
additional_cs2 additional.fields 合并到其他字段中
additional_cs3 additional.fields 合并到其他字段中
additional_cs4 additional.fields 合并到其他字段中
additional_cs5 additional.fields 合并到其他字段中
additional_cs6 additional.fields 合并到其他字段中
additional_cs7 additional.fields 已合并到其他字段
additional_devicePayloadId additional.fields 合并到其他字段中
additional_eventId additional.fields 合并到其他字段中
additional_fname additional.fields 合并到其他字段中
additional_flexString1 additional.fields 已合并到其他字段
additional_flexString2 additional.fields 合并到其他字段中
app_protocol_output network.application_protocol 直接复制的值
cs1Label, cs1 additional.fields 键来自 cs1Label,值来自 cs1
cs2Label, cs2 additional.fields 来自 cs2Label 的键,来自 cs2 的值
cs3Label、cs3 additional.fields 键来自 cs3Label,值来自 cs3
cs4Label, cs4 additional.fields 键来自 cs4Label,值来自 cs4
cs5Label, cs5 additional.fields 键来自 cs5Label,值来自 cs5
cs6Label、cs6 additional.fields 键来自 cs6Label,值来自 cs6
cs7Label, cs7 additional.fields 键来自 cs7Label,值来自 cs7
cfp1Label、cfp1 additional.fields 键来自 cfp1Label,值来自 cfp1
cfp2Label, cfp2 additional.fields 键来自 cfp2Label,值来自 cfp2
cfp3Label, cfp3 additional.fields 来自 cfp3Label 的键,来自 cfp3 的值
cfp4Label, cfp4 additional.fields 键来自 cfp4Label,值来自 cfp4
cn1Label, cn1 additional.fields 来自 cn1Label 的键,来自 cn1 的值
cn2Label, cn2 additional.fields 键来自 cn2Label,值来自 cn2
cn3Label, cn3 additional.fields 键来自 cn3Label,值来自 cn3
customer_label security_result.detection_fields 已合并到检测字段
destination_translated_address target.nat_ip 直接复制的值
device_name_not_present, 设备名称 principal.hostname 如果 Device_name 不为空,则使用该值,否则使用 Enhetsnavn
deviceExternalId about.asset.asset_id 串联的一部分
devicePayloadId additional.fields 键为 devicePayloadId,值已复制
deviceTranslatedAddress about.nat_ip 直接复制值
device_vendor about.asset.asset_id 串联的一部分
device_product about.asset.asset_id 串联的一部分
device_version metadata.product_version 直接复制的值
device_event_class_id、event_name metadata.product_event_type 如果两者都存在,则串联为 [%{device_event_class_id}] - %{event_name},否则为 device_event_class_id 或 event_name
device_process_name about.process.command_line 直接复制值
device_vendor metadata.vendor_name 直接复制的值
device_product metadata.product_name 直接复制的值
dhost target.hostname 直接复制值
dmac target.mac 直接复制的值
dntdom target.administrative_domain 直接复制的值
dpid target.process.pid 直接复制的值
dproc target.process.command_line 直接复制的值
dst target.asset.ip 直接复制值
dst_ip target.ip 直接复制的值
duid target.user.userid grok 提取后 temp_duid 中的值
duser target.user.user_display_name 直接复制的值
dvchost about.hostname 直接复制的值
deviceNtDomain about.administrative_domain 直接复制值
dvcmac about.mac 如果 MAC 有效,则使用 dvcmac 中的值
dvc_mac about.mac 如果 MAC 有效,则为 dvc_mac 中的值
eventId additional.fields 键为 eventId,值已复制
eventid additional.fields 键为 eventId,值来自 eventid
externalId metadata.product_log_id 直接复制值
externalID_value metadata.product_log_id 直接复制的值
file_full_path metadata.event_type 如果 file_full_path 不为空,则设置为 PROCESS_UNCATEGORIZED
fileHash about.file.sha256 如果不是哈希值,则直接复制值,否则复制 about.file.full_path
filePath about.file.full_path 直接复制的值
fileType about.file.mime_type 直接复制值
flexString1Label、flexString1 additional.fields 键来自 flexString1Label,值来自 flexString1
flexString2Label, flexString2 additional.fields 键来自 flexString2Label,值来自 flexString2
fname additional.fields 键作为 fname,值已复制
已生成 metadata.event_timestamp 已使用日期匹配 yyyy-MM-ddTHH:mm:ss 进行转换
Generert metadata.event_timestamp 已使用日期匹配 yyyy-MM-ddTHH:mm:ss 进行转换
Group_name principal.group.group_display_name 直接复制的值
Gruppenavn principal.group.group_display_name 如果 Group_name 为空,则使用 Gruppenavn 中的值
infection_channel_label security_result.detection_fields 已合并到检测字段中
英寸 network.received_bytes 如果不是 0,则转换为无符号整数
IPv6_Address target.ip 如果不是“-”,则合并
ipv6 target.ip 如果不是“-”,则合并
mac principal.mac 直接复制值
mac_address target.mac 直接复制值
mac_address about.mac 来自 mac_address 的值
元数据 元数据 直接重命名
msg metadata.description 直接复制值
msg_data_2 security_result.description 直接复制的值
mottatt_not_present, Mottatt metadata.collected_timestamp 使用日期匹配模式 yyyy-MM-ddTHH:mm:ss 进行转换
网络 网络 直接重命名
oldFilePath src.file.full_path 直接复制的值
oldFileSize src.file.size 已转换为无符号整数
old_permissions src.resource.attribute.permissions 直接复制的值
operasjon_label security_result.detection_fields 已合并到检测字段中
operation_label security_result.detection_fields 已合并到检测字段
out network.sent_bytes 如果不是 0,则转换为无符号整数
permission_label security_result.detection_fields 已合并到检测字段中
权限 about.resource.attribute.permissions 直接复制值
主体 主体 直接重命名
principal_ip principal.ip 直接复制的值
principal_role principal.user.attribute.roles 已合并到角色中
protocol_number_src network.ip_protocol 直接复制的值
已收到 metadata.collected_timestamp 已使用日期匹配 yyyy-MM-ddTHH:mm:ss 进行转换
reason security_result.summary 直接复制的值
请求 target.url 直接复制的值
requestClientApplication network.http.user_agent 直接复制值
requestMethod network.http.method 直接复制的值
resource_Type_label target.resource.attribute.labels 已合并到标签中
rt @timestamp 使用各种日期格式和时区调整进行转换
security_result security_result 直接合并
security_result_token security_result 直接合并
和程度上减少 security_result.severity 如果严重程度位于 [0,1,2,3,LOW] 范围内,则设置为 LOW;如果位于 [4,5,6,MEDIUM,SUBSTANTIAL,INFO] 范围内,则设置为 MEDIUM;如果位于 [7,8,HIGH,SEVERE] 范围内,则设置为 HIGH;如果位于 [9,10,VERY-HIGH,CRITICAL] 范围内,则设置为 CRITICAL
shost principal.hostname 如果不是 IP,则直接复制值,否则复制 principal.ip
shost principal.ip 如果 IP
shost_present principal.machine_id_present 设为 true
smac principal.mac 格式化后直接复制的值
sntdom principal.administrative_domain 直接复制的值
sourceDnsDomain target.asset.hostname、target.hostname 通过 grok 从 sourceDnsDomain 提取到 tar_host 的值
sourceServiceName principal.application 直接复制的值
sourceTranslatedAddress principal.nat_ip 直接复制的值
sourceTranslatedPort principal.nat_port 已转换为整数
spid principal.process.pid 直接复制的值
sproc principal.process.command_line 直接复制的值
spt principal.port 如果不是 0 或 {srcPort},则转换为整数
src principal.asset.ip 直接复制值
src_ip principal.ip 直接复制的值
srcaddr principal.ip 直接复制值
spyware_Grayware_Type_label security_result.detection_fields 已合并到检测字段
suser principal.user.user_display_name 如果值不以 { 开头,则直接复制
suid principal.user.userid 直接复制的值
目标 目标 直接重命名
target_ip target.ip 直接复制的值
target_role target.user.attribute.roles 已合并到角色中
temp_data 在 grok 模式中使用
temp_dhost target.hostname 直接复制的值
temp_duser target.user.user_display_name 直接复制的值
temp_duid target.user.userid grok 之后 temp_duid 中的值
threat_probability_label security_result.detection_fields 已合并到检测字段中
tillatelse_label security_result.detection_fields 已合并到检测字段
type_label security_result.detection_fields 已合并到检测字段中
用户 target.user.userid 直接复制的值
Bruker target.user.userid 如果用户为空,则来自 Bruker 的值
用户名 principal.user.userid 直接复制值
Virus_Malware_Name security_result.threat_name 如果 Spyware 为空,则为 Virus_Malware_Name 的值
间谍软件 security_result.threat_name 直接复制的值
Unknown_Threat security_result.threat_name 如果 Virus_Malware_Name 为空,则为 Unknown_Threat 中的值
_hash about.file.sha256 直接复制值
_message security_result.description 如果值有效,则直接复制
_metadata.customer security_result.detection_fields 以客户身份登录,已复制值
_metadata.proxy.address principal.hostname、principal.asset.hostname 直接复制的值
_metadata.source.address principal.hostname、principal.asset.hostname 直接复制值
_metadata.source.port principal.port 已转换为整数
_metadata.source.type security_result.detection_fields 键为类型,值已复制
_metadata.timestamp.producer_process metadata.event_timestamp 已使用日期匹配 yyyy-MM-ddTHH:mm:ss.SSSZ 进行转换
act security_result.action_details 直接复制的值
act security_result.action 如果 act 为 [accept, notified]、outcome 为 REDIRECTED_USER_MAY_PROCEED、categoryOutcome 为 Success 或 cs2 为 Allow,则设置为 ALLOW;如果 act 为 deny/blocked、outcome 为 BLOCKED、categoryOutcome 为 Failure 或 cs2 为 Denied,则设置为 BLOCK;如果 outcome 为 Failure,则设置为 FAIL
操作 security_result.action 直接复制值
应用 app_protocol_src 直接复制的值
app_protocol_src network.application_protocol app_protocol_src 经过大写转换和映射后的值
categoryOutcome security_result.action 操作的条件的一部分
cs2 security_result.action 操作的条件的一部分
cs5 additional.fields 键来自 cs5Label,值来自 cs5
cs7 additional.fields 键来自 cs7Label,值来自 cs7
destinationTranslatedAddress target.nat_ip 直接复制的值
destinationTranslatedPort target.nat_port 已转换为整数
deviceDirection network.direction 如果为 0,则设置为 INBOUND;如果为 1,则设置为 OUTBOUND
device_event_class_id metadata.product_event_type 串联的一部分
duid target.user.userid grok 之后 temp_duid 中的值
dvcmac about.mac 格式化后的 dvcmac 值
event_name metadata.product_event_type 串联的一部分
event_name metadata.event_type 如果属于 [LogSpyware, LogPredictiveMachineLearning],则设置为 SCAN_UNCATEGORIZED
fileHash about.file.sha256 如果是哈希值,则直接复制值,否则为 about.file.full_path
Mottatt metadata.collected_timestamp 已使用日期匹配 yyyy-MM-ddTHH:mm:ss 进行转换
outcome security_result.action 操作条件的一部分
端口 principal.port 已转换为整数
protocol_number_src network.ip_protocol 映射后 protocol_number_src 中的值
proto protocol_number_src 直接复制值
和程度上减少 security_result.severity 根据值范围进行映射
shost principal.hostname 如果不是 IP,则直接复制值
act security_result.action 根据条件逻辑设置
app_protocol_src network.application_protocol 从 app_protocol_src 映射
protocol_number_src network.ip_protocol 从 protocol_number_src 映射
Virus_Malware_Name security_result.threat_name Virus_Malware_Name 中的值(如果
flexString2 event.idm.read_only_udm.network.email.subject 从更新日志映射
version event.idm.read_only_udm.additional.fields 从更新日志映射
device_product event.idm.read_only_udm.additional.fields 从更新日志映射
cs1 event.idm.read_only_udm.security_result.rule_name 从更新日志映射
cs4 event.idm.read_only_udm.metadata.url_back_to_product 从更新日志映射
suser event.idm.read_only_udm.network.email.from 从更新日志映射
duser event.idm.read_only_udm.network.email.to 从更新日志映射
fname event.idm.read_only_udm.target.file.names 从更新日志映射
fileHash event.idm.read_only_udm.target.file.md5 从更新日志映射
flexString1 event.idm.read_only_udm.about.file.sha256 从更新日志映射
observer_application event.idm.read_only_udm.observer.application 从更新日志映射
syslog_severity_label event.idm.read_only_udm.additional.fields 从更新日志映射
start event.idm.read_only_udm.security_result.first_discovered_time 从更新日志映射

更新日志

查看相应解析器的更新日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。