收集 Progress MOVEit Transfer 日志

支持的平台:

本文档介绍了如何使用 Bindplane 将 Progress MOVEit Transfer 日志注入到 Google Security Operations 中。

Progress MOVEit Transfer 是一种受管文件传输 (MFT) 解决方案,可使用 HTTPS、FTPS 和 SFTP 等协议提供安全的加密文件传输。它提供防篡改的审核日志记录、基于角色的访问权限控制,并支持 HIPAA、PCI DSS 和 GDPR 等法规的合规性。MOVEit Transfer 会在其审核数据库中记录所有文件传输活动、用户身份验证事件和管理操作。

准备工作

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

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • Bindplane 代理与 Progress MOVEit Transfer 服务器之间的网络连接
  • 如果在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开
  • 对 Progress MOVEit Transfer Web 管理控制台的系统管理员级访问权限
  • 从 MOVEit Transfer 服务器到 Bindplane 代理主机开放的 UDP 端口 514(或您选择的 syslog 端口)

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载数据注入身份验证文件。将该文件安全地保存在将要安装 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)" install_unix.sh
    
  3. 等待安装完成。

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

    sudo systemctl status observiq-otel-collector
    

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

其他安装资源

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

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

找到配置文件

  • Linux

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

修改配置文件

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

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/moveit_transfer:
            compression: gzip
            creds_file_path: '<CREDS_FILE_PATH>'
            customer_id: '<CUSTOMER_ID>'
            endpoint: <REGION_ENDPOINT>
            log_type: IPSWITCH_MOVEIT_TRANSFER
            raw_log_field: body
            ingestion_labels:
                log_source: moveit_transfer
    
    service:
        pipelines:
            logs/moveit_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/moveit_transfer
    

配置参数

替换以下占位符。

导出器配置

  • <CREDS_FILE_PATH>:提取身份验证文件的完整路径:
    • Linux/etc/bindplane-agent/ingestion-auth.json
    • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID>:之前复制的 Google SecOps 客户 ID
  • <REGION_ENDPOINT>:区域端点网址:

    • 美国malachiteingestion-pa.googleapis.com
    • 欧洲europe-malachiteingestion-pa.googleapis.com
    • 亚洲asia-southeast1-malachiteingestion-pa.googleapis.com
    • 如需查看完整列表,请参阅区域级端点
  • 配置示例

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/moveit_transfer:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: IPSWITCH_MOVEIT_TRANSFER
            raw_log_field: body
            ingestion_labels:
                log_source: moveit_transfer
    
    service:
        pipelines:
            logs/moveit_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/moveit_transfer
    

保存配置文件

修改后,保存文件: * Linux:依次按 Ctrl+OEnterCtrl+X * Windows:依次点击文件 > 保存

重启 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. 右键点击并选择重新启动
      4. 验证服务是否正在运行:

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

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

配置 Progress MOVEit Transfer syslog 转发

如需将 MOVEit Transfer 配置为通过 syslog 将审核日志条目转发到 Bindplane 代理,请执行以下操作:

  1. 以具有 SysAdmin 权限的用户身份登录 MOVEit Transfer Web 管理控制台。
  2. 依次前往设置 > 系统 > 审核 > Syslog。系统会显示配置 Syslog 设置页面。
  3. Syslog 记录部分,选择已启用。启用后,每个审核日志条目都会发送到指定的 syslog 主机以及 MOVEit Transfer 审核数据库。
  4. Syslog Host 字段中,输入 Bindplane 代理主机(例如 192.168.1.100)的 IP 地址或主机名。
  5. Syslog 端口字段中,输入 514。如果将此字段留空,则会恢复为默认端口 514

  6. Syslog Facility 下拉菜单中,选择 MOVEit Transfer syslog 消息将显示在远程 syslog 主机上的设施。默认值为 FTP。以下标准 syslog 设施可供使用:

    • KERN
    • 用户
    • MAIL
    • DAEMON
    • AUTH
    • Syslog
    • LPR
    • 最新资讯
    • UUCP
    • CRON
    • AUTHPRIV
    • FTP(默认)
    • LOCAL0 到 LOCAL7
  7. 点击更改日志记录设置以保存配置。

  8. 点击发送测试 Syslog 消息,向指定的 Bindplane 代理主机发送测试消息。由于 BSD Syslog 实现基于 UDP,因此请通过检查 Bindplane 代理日志来手动验证测试消息是否已到达。

  9. 验证 Bindplane 代理是否收到了测试消息:

    • Linux

      sudo journalctl -u observiq-otel-collector -f
      
    • Windows

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

防火墙要求

确保已设置以下防火墙规则,以允许从 MOVEit Transfer 到 Bindplane 代理的 syslog 流量:

方向 协议 来源 目的地 端口
从 MOVEit Transfer 传出的出站流量 UDP MOVEit Transfer 服务器 IP Bindplane 代理主机 IP 514

UDM 映射表

日志字段 UDM 映射 逻辑
第 1 列 metadata.collected_timestamp 使用以下日期匹配模式转换:d/M/yyyy H:mm:ss A、M/d/yyyy H:mm:ss A、MM/dd/yyyy HH:mm:ss A
第 1 列 metadata.event_timestamp 使用以下日期匹配模式转换:d/M/yyyy H:mm:ss A、M/d/yyyy H:mm:ss A、MM/dd/yyyy HH:mm:ss A
第 2 列 security_result.action_details 直接复制值
第 3 列 target.hostname、target.asset.hostname 直接从第 3 列复制的值
column4 principal.ip、principal.asset.ip 使用 IP 的 Grok 模式从 column4 中提取
column6 target.file.full_path 如果 folderPath 和 fileName 都存在,则由两者串联而成;否则,仅由 fileName 组成
column7 target.file.full_path
column15 target.file.full_path
column7 target.user.email_addresses 如果 column2 == file_sentemail,则合并
column10 metadata.description 直接复制值
column11 metadata.product_event_type 如果值不为 None,则直接复制
column12 target.ip、target.asset.ip 使用 IP 的 Grok 模式从 column12 中提取
column16 target.file.full_path 如果 folderPath 和 fileName 都存在,则由两者串联而成;否则,仅由 fileName 组成
column23 target.file.full_path
column19 target.user.user_display_name 如果 column2 == file_sentemail 且 column8 == sender,则直接复制值;否则,针对目标用户
event_received_time metadata.collected_timestamp 使用日期匹配模式转换:UNIX_MS、dd/MM/yyyy HH:mm:ss、yyyy-MM-dd HH:mm:ss、MM/dd/yyyy HH:mm:ss A、yyyy/MM/dd HH:mm:ss、RFC 3339、yyyy-MM-ddTHH:mm:ss
时间戳 metadata.event_timestamp 使用以下日期匹配模式进行转换:MMM d HH:mm:ss、MMM dd HH:mm:ss、ISO8601、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm:ss Z、MM/dd/yyyy HH:mm:ss A、yy-MM-dd HH:mm:ss、RFC 3339、yyyy-MM-ddTHH:mm:ss
prin_ip principal.ip、principal.asset.ip 直接复制值
AgentVersion metadata.product_version 直接复制值
principal_host principal.hostname、principal.asset.hostname 直接复制值
用户名 principal.user.userid 直接复制值
company_name principal.user.company_name 直接复制值
ID target.process.pid 直接复制值
InstID metadata.product_log_id 直接复制值
FileID target.resource.attribute.labels 合并为 additional_id_2,键为 FileID,值为来自 FileID 的值
FolderID target.resource.attribute.labels 合并为 additional_id_3,键为 FolderID,值为来自 FolderID
FolderPath target.file.full_path 如果 FolderPath 和 FileName 都存在,则由两者串联而成;否则,由 FolderPath 组成
FileName target.file.full_path
FileName target.resource.attribute.labels 合并为文件名,键为 FileName,值为来自 FileName 的值
主机 principal.hostname、principal.asset.hostname 直接复制值
log_level security_result.severity 如果为 INFO 或 DEBUG,则设置为 INFORMATIONAL;如果为 ERROR,则设置为 ERROR
source_module_name observer.resource.attribute.labels 合并为 source_module_label,键为 source_module_name,值为 source_module_name
source_module_type observer.application 直接复制值
log_msg metadata.description 如果 http_method != GET 且 file_path 为空,则为 log_msg 中的值;否则为 log_desc;否则为 description;否则为 Message
log_desc metadata.description
说明 metadata.description
消息 metadata.description
端口 principal.port 直接复制的值,已转换为整数
tgtport target.port 直接复制的值,已转换为整数
软件包 principal.process.command_line 直接复制值
srcip principal.ip、principal.asset.ip 直接复制值
用户名 principal.user.userid 直接复制值
版本 metadata.product_version 直接复制值
http_method network.http.method 直接复制值
操作 security_result.action_details 直接复制值
摘要 security_result.summary 直接复制值
security_result security_result 直接合并
tgtip target.ip、target.asset.ip 直接复制值
application_proto network.application_protocol 直接复制并转换为大写
网址 network.http.referral_url 直接复制值
status_code network.http.response_code 直接复制的值,已转换为整数
file_path principal.process.file.full_path 直接复制值
file_size principal.process.file.size 如果不是 0,则转换为无符号整数
process_id principal.process.pid 直接复制值
session_id network.session_id 直接复制值
task_id additional.fields 合并为附加字段,键为 TASK_ID,string_value 来自 task_id
AgentBrand metadata.product_event_type 直接复制值
Parm1 additional.fields 合并为 additional_field_3,键为 Parm1,string_value 来自 Parm1
Parm2 additional.fields 合并为 additional_field_4,键为 Parm2,string_value 来自 Parm2
错误 additional.fields 合并为 additional_field_5,包含键 Error 和来自 Error 的 string_value
XFerSize target.resource.attribute.labels 合并为 additional_field_1,键为 XFerSize,值为 XFerSize
FolderPath metadata.event_type 如果 FolderPath 和 action_performed 与“删除文件”匹配,则设置为 FILE_DELETION;如果 tgtip 或 host 和 application_proto == HTTP,则设置为 NETWORK_HTTP;如果 Username 或 username,则设置为 USER_LOGIN;如果 tgtip 或 host 或 principal_host 或 IPAddress,则设置为 STATUS_UPDATE;否则设置为 GENERIC_EVENT
tgtip metadata.event_type
主机 metadata.event_type
principal_host metadata.event_type
IPAddress metadata.event_type
用户名 metadata.event_type
用户名 metadata.event_type
tgtip metadata.event_type 如果 column2 为 sec_signon 且包含 tgtip 或 tar_host,则设置为 USER_LOGIN;如果 column2 为 sec_signoff 且包含 tgtip 或 tar_host,则设置为 USER_LOGOUT;如果 column2 为 folder_add,则设置为 FILE_UNCATEGORIZED;如果 column2 为 file_upload 或 download 且包含 tgtip 和 is_tgt_file_present,则设置为 FILE_CREATION;如果 column2 为 file_delete 且包含 srcip 和 is_tgt_file_present,则设置为 FILE_DELETION;如果 column2 为 file_rename,则设置为 FILE_MODIFICATION;如果 column2 为 file_dlhashchk,则设置为 FILE_UNCATEGORIZED;如果 column2 为 file_sentemail 且包含 useremail,则设置为 EMAIL_TRANSACTION;如果 column2 包含 srcip,则设置为 STATUS_UPDATE;否则设置为 GENERIC_EVENT
tar_host metadata.event_type
srcip metadata.event_type
is_tgt_file_present metadata.event_type
第 2 列 metadata.event_type
useremail metadata.event_type
security_result metadata.event_type
extensions.auth.type extensions.auth.type 针对登录/退出登录事件设置为 MACHINE
metadata.vendor_name metadata.vendor_name 设置为“IPS”
metadata.product_name metadata.product_name 设置为“IPSWITCH MOVEIT TRANSFER”
target_application event.idm.read_only_udm.target.application 从变更日志映射
product_event event.idm.read_only_udm.metadata.product_event_type 从变更日志映射
dstip event.idm.read_only_udm.target.ipevent.idm.read_only_udm.target.asset.ip之间 从变更日志映射
AdminTrust event.idm.read_only_udm.additional.fields 从变更日志映射
Permission event.idm.read_only_udm.additional.fields 从变更日志映射
log_status event.idm.read_only_udm.security_result.action.details 从变更日志映射
srcip event.idm.read_only_udm.principal.ipevent.idm.read_only_udm.principal.asset.ip之间 从变更日志映射
EventReceivedTime event.timestamp 从变更日志映射
SourceModuleName observer.resource.attribute.labels 从变更日志映射
SourceModuleType observer.application 从变更日志映射
SourceName metadata.product_event_type 从变更日志映射
Severity security_result. 从变更日志映射
Hostname principal.hostname 从变更日志映射
Channel security_result.about.resource.attribute.labels 从变更日志映射
AgentVersion metadata.version 从变更日志映射

更新日志

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

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