收集 CA ACF2 日志
本文档介绍了如何使用 Bindplane 代理将 CA ACF2 日志注入到 Google Security Operations。
Broadcom ACF2 (Access Control Facility 2) for z/OS 是一款大型机安全产品,可为 IBM z/OS 系统提供访问权限控制、身份验证和审核功能。ACF2 会将安全事件记录到 IBM 系统管理设施 (SMF) 记录(默认类型为 230)中,包括身份验证尝试、数据集访问违规、资源访问事件、TSO 命令日志记录和数据库修改。必须使用第三方代理(例如 BMC AMI Defender for z/OS)将这些 SMF 记录转发到 Chronicle。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 BMC AMI Defender for z/OS 代理之间的网络连接
- 如果通过代理运行,请确保防火墙端口已根据 Bindplane 代理要求打开
- BMC AMI Defender for z/OS 已安装并正在 ACF2 处于活跃状态的 z/OS LPAR 上运行
- 访问权限:修改
amihlq.CZAGENT.PARM数据集中的 BMC AMI Defender 参数文件 - 在 z/OS 上启动或修改 CZAGENT 启动任务的权限
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
下载注入身份验证文件。将该文件安全地保存在要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令来验证安装:
sc query observiq-otel-collector该服务应显示为 RUNNING。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令来验证安装:
sudo systemctl status observiq-otel-collector该服务应显示为有效(正在运行)。
其他安装资源
如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/acf2_logs: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: CA_ACF2 raw_log_field: body ingestion_labels: env: production source: acf2 service: pipelines: logs/acf2_to_chronicle: receivers: - udplog exporters: - chronicle/acf2_logs替换以下占位符:
接收器配置:
listen_address:设置为0.0.0.0:514可在 UDP 端口 514 上监听所有接口- 对于以非 root 身份运行的 Linux 系统,请使用端口
1514或更高端口 - 将此端口与 BMC AMI Defender SERVER 语句配置相匹配
- 对于以非 root 身份运行的 Linux 系统,请使用端口
导出器配置:
creds_file_path:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:将YOUR_CUSTOMER_ID替换为您的customer ID。如需了解详情,请参阅获取 Google SecOps 客户 ID。endpoint:区域端点网址:- 美国:
malachiteingestion-pa.googleapis.com - 欧洲:
europe-malachiteingestion-pa.googleapis.com - 亚洲:
asia-southeast1-malachiteingestion-pa.googleapis.com - 如需查看完整列表,请参阅区域级端点
- 美国:
log_type:设置为CA_ACF2(ACF2 日志的 Chronicle 提取标签)ingestion_labels:用于对日志进行分类的可选标签(可根据需要自定义)
保存配置文件
修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请执行以下操作:
运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请执行以下操作:
请从下列选项中选择一项:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重新启动。
- 按
验证服务是否正在运行:
sc query observiq-otel-collector检查日志是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
配置 BMC AMI Defender for z/OS 以转发 ACF2 SMF 记录
修改 $$$SERVR parameter member
- Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
- Navigate to the BMC AMI Defender parameter library:
- Enter
ISPFat the TSO READY prompt. - Select option 2 (Edit).
- In the ISPF Library field, enter the data set name:
amihlq.CZAGENT.PARM(replaceamihlqwith your installation high-level qualifier). - Press Enter.
- Enter
- Edit the $$$SERVR 成员:
- 在 $$$SERVR member.
- Press Enter.
- Locate the SERVER statement section (approximately line 40-60).
- Uncomment one of the SERVER statements by removing the leading semicolon (
;). Configure the SERVER statement with the Bindplane agent IP address and port:
SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)- Replace
bindplane-host-ipwith the IP address of the Bindplane agent host (for example,192.168.1.100). - If using a non-standard port (for example,
1514), specify:bindplane-host-ip:1514. TRANS(UDP)specifies UDP transport protocol (recommended for syslog).MAXMSG(2000)sets the maximum message length to 2000 bytes (ACF2 records may require larger sizes).
- Replace
Verify the OPTIONS statement for syslog format:
- Scroll up to locate the OPTIONS statements (approximately line 10-30).
Ensure one of the following OPTIONS statements is uncommented based on your preferred format:
OPTIONS IF(RFC3164) SIEM(RFC3164) TIMESTAMP INSTNAME(SIEM.Agent)- RFC3164: Standard syslog format (recommended for Chronicle)
- CEF: Common Event Format (alternative)
- LEEF: Log Event Extended Format (alternative)
- JSON: JSON format (alternative)
Save the changes:
- Press F3 to exit the editor.
- Type
SAVEwhen prompted. - Press Enter.
Edit the $$$CONFIG 参数成员旁边输入 E,以启用 ACF2 SMF 记录收集
在
amihlq.CZAGENT.PARM数据集成员列表中,修改 $$$CONFG member:- Type
Enext to the $$$CONFG 成员。 - 按 Enter 键。
- Type
找到 ACF2 SMF 记录选择开关(搜索
ACF2或SMF 230)。取消注释 ACF2 的 SELECT 语句:
SELECT IF(ACF2) SMF(ACF2)- 这样即可收集 ACF2 SMF 记录(默认类型为 230)。
- 如果您的网站针对 ACF2 使用其他 SMF 记录类型,请在 TSO 中使用命令
ACF SHOW SYSTEMS验证该类型。
保存更改:
- 按 F3 退出编辑器。
- 出现提示时,请输入
SAVE。 - 按 Enter 键。
- 在
amihlq.CZAGENT.PARM数据集成员列表中,检查是否存在名为 $$$ACF2 or SMFACF2 exists. If the member does not exist, create it:
- Type
C(Create) on the command line. - Enter the member name:
$$$ACF2.
- Type
创建或修改 SMF ACF2 语句参数成员
修改成员并添加以下 SMF ACF2 语句:
SMF ACF2(230) FACILITY(SECURITY4) SEVERITY(INFORMATIONAL)
ACF2(230):为 ACF2 指定 SMF 记录类型(默认值为 230;请使用ACF SHOW SYSTEMS进行验证)。FACILITY(SECURITY4):将 syslog 功能设置为 Security (4)。SEVERITY(INFORMATIONAL):将默认严重程度设置为“信息”。- 系统会自动发送严重程度为 ERROR 的无效密码或权限违规问题。
- 资源违规行为会自动发送,严重程度为 ERROR。
您可以选择配置特定的 ACF2 子类型和严重程度:
SMF ACF2(230) +
FACILITY(SECURITY4) +
SEVERITY(INFORMATIONAL) +
SUBTYPES(P SEV(ERROR)) +
SUBTYPES(V SEV(ERROR)) +
SUBTYPES(D SEV(ERROR))
- 子类型 P:密码或授权事件无效(严重程度为“错误”)
- 子类型 V:资源违规问题(严重程度为“错误”)
- 子类型 D:数据集访问违规(严重程度为“错误”)
保存更改:
- 按 F3 退出编辑器。
- 出现提示时,请输入
SAVE。 - 按 Enter 键。
刷新 BMC AMI Defender 参数文件
- 退出 ISPF 并返回到 TSO READY 提示。
发出 MODIFY 命令以重新加载参数文件:
F CZAGENT,PARMS- 如果您的 BMC AMI Defender 启动的任务名称不同,请将
CZAGENT替换为您的 BMC AMI Defender 启动的任务名称。 - 此命令会重新加载参数文件,而不会停止代理。
- 如果您的 BMC AMI Defender 启动的任务名称不同,请将
通过检查 CZAPRINT 输出验证配置:
- 在 ISPF 中,选择选项 3.4 (DSLIST)。
- 输入数据集名称模式:
CZAGENT.CZAPRINT(或您网站特定的命名惯例)。 - 按 Enter 键。
- 在最新的 CZAPRINT 数据集旁边输入
B(浏览)。 - 按 Enter 键。
搜索表明已成功连接到 syslog 服务器的消息:
CZA0070I Connected to server bindplane-host-ip:514CZA0100I SMF ACF2 statement processed
如果 CZAGENT 启动的任务未运行,请启动该任务:
S CZAGENT
验证 ACF2 日志转发
生成测试 ACF2 安全事件:
- 在 TSO 中,尝试访问您无权访问的数据集。
- 尝试使用无效密码登录(使用测试账号)。
- 执行由 ACF2 记录的 TSO 命令。
检查 Bindplane 代理日志,验证是否收到了 ACF2 syslog 消息:
Linux:
sudo journalctl -u observiq-otel-collector -f | grep ACF2Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
登录 Google SecOps 控制台,并验证是否正在提取 ACF2 日志:
- 依次前往搜索 > UDM 搜索。
输入以下查询:
metadata.log_type = "CA_ACF2"验证 ACF2 安全事件是否显示在搜索结果中。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| extensions.auth.mechanism | 所用的身份验证机制。 | |
| extensions.auth.type | 身份验证类型。 | |
| 总和 | metadata.description | 活动说明。 |
| metadata.event_type | 事件的类型。 | |
| event_type, cat | metadata.product_event_type | 特定于产品的事件类型。 |
| product_version | metadata.product_version | 产品的版本。 |
| 终端 | principal.hostname | 与正文相关联的主机名。 |
| name | principal.user.user_display_name | 用户的显示名称。 |
| usrName | principal.user.userid | 用户 ID。 |
| security_result.action | 安防系统采取的操作。 | |
| security_result.category | 安全结果的类别。 | |
| class | security_result.category_details | 有关安全结果类别的其他详细信息。 |
| reason | security_result.severity | 安全结果的严重级别。 |
| reason | security_result.severity_details | 详细的严重程度信息。 |
| logstr | security_result.summary | 安全结果摘要。 |
| job_id | target.application | 要定位的应用。 |
| job_group | target.group.group_display_name | 群组的显示名称。 |
| target.namespace | 目标的命名空间。 | |
| dsn | target.resource.name | 资源的名称。 |
| 成交量 | target.resource.parent | 父级资源。 |
| res, dsn | target.resource.product_object_id | 特定于产品的对象标识符。 |
| target.resource.resource_type | 资源类型。 | |
| name | target.user.user_display_name | 目标用户的显示名称。 |
| usrName | target.user.userid | 目标用户的用户 ID。 |
| product_name | metadata.product_name | 生成相应事件的商品的名称。 |
| vendor_name | metadata.vendor_name | 供应商的名称。 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。