收集 BlueCat Edge DNS 解析器日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 将 BlueCat Edge DNS Resolver 注入到 Google Security Operations。解析器首先尝试将输入消息解析为 JSON。如果成功,它会将各种字段提取并结构化为统一数据模型 (UDM) 架构,尤其侧重于 DNS 相关信息。如果 JSON 解析失败,它会尝试使用 grok 和键值对等替代解析方法来提取相关数据,并将其映射到 UDM 架构。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机 - 如果在代理后运行,防火墙端口处于开放状态
- 对 BlueCat DNS/DHCP 的特权访问权限
获取 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
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
如需了解其他安装选项,请参阅安装指南。
配置 BindPlane 代理以注入 Syslog 并将其发送到 Google SecOps
- 访问配置文件:
- 找到
config.yaml
文件。通常,它位于 Linux 上的/etc/bindplane-agent/
目录中或 Windows 上的安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
config.yaml
文件:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'BLUECAT_EDGE' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- 根据基础架构的需要替换端口和 IP 地址。
- 将
<customer_id>
替换为实际的客户 ID。 - 将
/path/to/ingestion-authentication-file.json
更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart bindplane-agent
如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:
net stop BindPlaneAgent && net start BindPlaneAgent
在 BlueCat Edge DNS Resolver 上配置 Syslog
- 登录 BDDS 网页界面。
- 前往配置 >“服务器”标签页。
- 选择 BDDS 的名称,打开服务器的“详细信息”标签页。
- 依次点击服务器名称菜单 > 服务配置。
- 依次点击服务类型 > Syslog。
- 提供以下配置详细信息:
- 选中 ISO 8601 时间戳复选框,即可为本地记录的消息使用 ISO 8601 时间戳格式。
- 服务器:输入 Bindplane 代理 IP 地址。
- 端口:输入 Bindplane 代理端口号。
- 级别:选择信息。
- 选中使用 RFC5 424 Syslog 协议复选框,以使用 RFC5 424 syslog 协议来处理 syslog 消息。
- 选中 ISO 8601 时间戳复选框,即可为重定向到远程 Syslog 服务器的 Syslog 消息使用 ISO 8601 时间戳格式。
- 在服务类型下,选择 DNS、DHCP 和所有其他服务。
- 传输:选择 UDP。
- 点击添加。
- 点击更新。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
answer.domainName | network.dns.answers.name | DNS 响应的 answer 部分中的域名。移除了末尾的 . 。 |
answer.recordTypeId | network.dns.answers.type | DNS 响应的 answer 部分中的记录类型 ID,已转换为无符号整数。 |
answer.ttl | network.dns.answers.ttl | DNS 响应的 answer 部分中的存留时间 (TTL) 值,已转换为无符号整数。 |
customerId | target.user.userid | 日志中的客户 ID,表示发起 DNS 请求的用户。 |
domain.domainName | network.dns.authority.data | DNS 响应的 authority 或 additional 部分中的域名。移除了末尾的 . 。 |
主机名 | principal.hostname | 从原始日志中的 Host 标头提取的主机名,仅当日志不是 JSON 格式时才适用。 |
方法 | network.http.method | 从原始日志中提取的 HTTP 方法,仅当日志不是 JSON 格式时才适用。 |
parentDomain | principal.administrative_domain | 所查询 DNS 名称的父网域。移除了末尾的 . 。 |
端口 | principal.port | 从原始日志中的 Host 标头提取的端口号(仅当日志不是 JSON 格式时),并转换为整数。 |
question.domainName | network.dns.questions.name | DNS 请求的 question 部分中的域名。移除了末尾的 . 。 |
question.questionTypeId | network.dns.questions.type | DNS 请求的 question 部分中的问题类型 ID,转换为无符号整数。 |
responseData.header.aa | network.dns.authoritative | DNS 响应是否为权威响应,从 responseData 部分提取。 |
responseData.header.id | network.dns.id | 从 responseData 部分提取的 DNS 消息 ID,转换为无符号整数。 |
responseData.header.opcode | network.dns.opcode | 从 responseData 部分提取的 DNS 消息操作码,转换为无符号整数。 |
responseData.header.ra | network.dns.recursion_available | 是否支持递归,从 responseData 部分提取。 |
responseData.header.rcode | network.dns.response_code | 从 responseData 部分提取的 DNS 响应代码,转换为无符号整数。 |
responseData.header.rd | network.dns.recursion_desired | 是否选择了递归,从 responseData 部分提取。 |
responseData.header.tc | network.dns.truncated | DNS 消息是否被截断,提取自 responseData 部分。 |
servicePointId | additional.fields.value.string_value | 日志中的服务点 ID。 |
网站 ID | additional.fields.value.string_value | 日志中的网站 ID。 |
socketProtocol | network.ip_protocol | 用于 DNS 请求的网络协议(TCP 或 UDP)。 |
sourceAddress | principal.ip | DNS 客户端的 IP 地址。 |
sourcePort | principal.port | DNS 客户端的端口号,已转换为整数。 |
threat.indicators | security_result.category_details | 与检测到的威胁关联的指标。 |
threat.type | security_result.threat_name | 检测到的威胁的类型。 |
时间 | metadata.event_timestamp.seconds | DNS 事件的时间戳,从 time 字段中提取并从毫秒转换为秒。 |
用户代理 | network.http.user_agent | 从原始日志中提取的用户代理字符串,仅当日志不是 JSON 格式时才适用。 |
additional.fields.key | servicePointId 、siteId 、Content-Type 或 Content-Length ,具体取决于原始日志的内容。 |
|
metadata.event_type | 事件类型,如果存在 DNS 问题,则设置为 NETWORK_DNS ,否则设置为 GENERIC_EVENT 。 |
|
metadata.log_type | 日志类型,始终设置为 BLUECAT_EDGE 。 |
|
network.application_protocol | 应用协议,如果存在 DNS 问题,则设置为 DNS ;否则,如果提取了 HTTP 方法,则设置为 HTTP ,或留空。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。