收集 Cisco Email Security 日志
本文档介绍了如何使用 Bindplane 将 Cisco Email Security 日志注入到 Google Security Operations。
解析器可从 Cisco Email Security Appliance syslog、键值和 JSON 格式的日志中提取字段。它使用 grok 和/或 kv 来解析日志消息,然后将这些值映射到统一数据模型 (UDM)。它还会为事件来源和类型设置默认元数据值。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - 如果通过代理运行,请确保防火墙端口已根据 Bindplane 代理要求打开
- 对 Cisco Email Security Appliance 网页界面的特权访问权限
获取 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: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_EMAIL_SECURITY' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
配置参数
替换以下占位符:
接收器配置:
tcplog:使用udplog表示 UDP syslog,使用tcplog表示 TCP syslog0.0.0.0:要监听的 IP 地址(0.0.0.0表示监听所有接口)514:要监听的端口号(标准 syslog 端口)
导出器配置:
creds_file_path:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID:从“获取客户 ID”部分获取的客户 IDendpoint:区域端点网址:- 美国:
malachiteingestion-pa.googleapis.com - 欧洲:
europe-malachiteingestion-pa.googleapis.com - 亚洲:
asia-southeast1-malachiteingestion-pa.googleapis.com - 如需查看完整列表,请参阅区域级端点
- 美国:
log_type:日志类型,与在 Chronicle 中显示的完全一致 (CISCO_EMAIL_SECURITY)
保存配置文件
- 修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
- Linux:依次按
重启 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"
- 按
在 Cisco Email Security Appliance 上配置 Syslog 转发
- 登录 Cisco Email Security Appliance 网页界面。
- 前往系统管理 > 日志订阅。
- 点击 Add Log Subscription。
- 提供以下配置详细信息:
- 日志类型:选择要转发的日志类型(例如整合的事件日志、邮件日志、文本邮件日志)。
- 名称:输入一个描述性名称(例如
Google-SecOps-Syslog)。 - 检索方法:选择 Syslog 推送。
- 主机名:输入 Bindplane 代理主机 IP 地址。
- 协议:选择 TCP。
- 端口:输入
514。 - 设施:选择 LOG_MAIL(或您偏好的设施)。
- 点击提交。
- 针对要转发的每种其他日志类型,重复执行第 3 步到第 5 步。建议的日志类型:
- 合并的事件日志
- Text Mail Logs(文本邮件日志)
- 反垃圾邮件日志
- 防病毒日志
- AMP Engine 日志
- 内容过滤日志
- 点击提交更改以应用配置。
- 通过检查 Bindplane 代理日志,验证是否正在发送 syslog 消息。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| acl_decision_tag | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“ACL Decision Tag”。 |
| access_or_decryption_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“AccessOrDecryptionPolicyGroup”。 |
| act | read_only_udm.security_result.action_details | 直接映射。 |
| authenticated_user | read_only_udm.principal.user.userid | 如果不为空,则直接映射;否则为“-”或“NONE”。 |
| cache_hierarchy_retrieval | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“Cache Hierarchy Retrieval”。 |
| 加密 | read_only_udm.network.tls.cipher | 直接映射。 |
| 国家/地区 | read_only_udm.principal.location.country_or_region | 直接映射。 |
| data_security_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“DataSecurityPolicyGroup”。 |
| 说明 | read_only_udm.metadata.description | 直接映射到 syslog 消息。对于 CEF 消息,它会成为总体产品说明。各种 Grok 模式会根据 product_event 提取特定说明。某些说明已通过 gsub 修改,以移除开头/结尾处的空格和英文冒号。 |
| deviceDirection | read_only_udm.network.direction | 如果为“0”,则映射到“INBOUND”。如果为“1”,则映射到“OUTBOUND”。用于确定直接映射哪些 TLS 密码和协议,以及将哪些映射为标签。 |
| deviceExternalId | read_only_udm.principal.asset.asset_id | 映射为“设备 ID:”。 |
| 域名 | read_only_udm.target.administrative_domain | 直接从 JSON 日志映射。 |
| domain_age | read_only_udm.security_result.about.labels.value | 直接映射。键为“YoungestDomainAge”。 |
| duser | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | 如果包含“;”,则拆分为多个电子邮件地址,并将每个电子邮件地址映射到两个 UDM 字段。否则,如果电子邮件地址有效,则直接映射到这两个 UDM 字段。还用于在 network_to 为空时填充该字段。 |
| dvc | read_only_udm.target.ip | 直接映射。 |
| entries.collection_time.nanos, entries.collection_time.seconds | read_only_udm.metadata.event_timestamp.nanos, read_only_udm.metadata.event_timestamp.seconds | 用于构造事件时间戳。 |
| env-from | read_only_udm.additional.fields.value.string_value | 直接映射。键为“Env-From”。 |
| ESAAttachmentDetails | read_only_udm.security_result.about.file.full_path、read_only_udm.security_result.about.file.sha256 | 经过解析以提取文件名和 SHA256 哈希值。可以提取多个文件和哈希值。 |
| ESADCID | read_only_udm.security_result.about.labels.value | 直接映射。键为“ESADCID”。 |
| ESAFriendlyFrom | read_only_udm.principal.user.user_display_name, read_only_udm.network.email.from | 经过解析以提取显示名称和电子邮件地址。 |
| ESAHeloDomain | read_only_udm.intermediary.administrative_domain | 直接映射。 |
| ESAHeloIP | read_only_udm.intermediary.ip | 直接映射。 |
| ESAICID | read_only_udm.security_result.about.labels.value | 直接映射。键为“ESAICID”。 |
| ESAMailFlowPolicy | read_only_udm.security_result.rule_name | 直接映射。 |
| ESAMID | read_only_udm.security_result.about.labels.value | 直接映射。密钥为“ESAMID”。 |
| ESAReplyTo | read_only_udm.network.email.reply_to | 如果电子邮件地址有效,则直接映射。还用于填充 network_to。 |
| ESASDRDomainAge | read_only_udm.security_result.about.labels.value | 直接映射。键为“ESASDRDomainAge”。 |
| ESASenderGroup | read_only_udm.principal.group.group_display_name | 直接映射。 |
| ESAStatus | read_only_udm.security_result.about.labels.value | 直接映射。键为“ESAStatus”。 |
| ESATLSInCipher | read_only_udm.network.tls.cipher 或 read_only_udm.security_result.about.labels.value | 如果 deviceDirection 为“0”,则直接映射到密码。否则,映射为键为“ESATLSInCipher”的标签。 |
| ESATLSInProtocol | read_only_udm.network.tls.version 或 read_only_udm.security_result.about.labels.value | 如果 deviceDirection 为“0”,则直接提取并映射 TLS 版本。否则,会映射为键为“ESATLSInProtocol”的标签。 |
| ESATLSOutCipher | read_only_udm.network.tls.cipher 或 read_only_udm.security_result.about.labels.value | 如果 deviceDirection 为“1”,则直接映射到密码。否则,会映射为键为“ESATLSOutCipher”的标签。 |
| ESATLSOutProtocol | read_only_udm.network.tls.version 或 read_only_udm.security_result.about.labels.value | 如果 deviceDirection 为“1”,则直接提取并映射 TLS 版本。否则,会映射为键为“ESATLSOutProtocol”的标签。 |
| ESAURLDetails | read_only_udm.target.url | 解析以提取网址。由于该字段未重复,因此仅映射第一个网址。 |
| external_dlp_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“ExternalDlpPolicyGroup”。 |
| ExternalMsgID | read_only_udm.security_result.about.labels.value | 在移除单引号和尖括号后直接映射。键为“ExternalMsgID”。 |
| 来自 | read_only_udm.network.email.from | 如果电子邮件地址有效,则直接映射。还用于填充 network_from。 |
| host.hostname | read_only_udm.principal.hostname 或 read_only_udm.intermediary.hostname | 如果 host 字段无效,则映射到主主机名。还映射到中间主机名。 |
| host.ip | read_only_udm.principal.ip 或 read_only_udm.intermediary.ip | 如果 JSON 日志中未设置 IP 字段,则映射到主 IP。还映射到中介 IP。 |
| 主机名 | read_only_udm.target.hostname | 直接映射。 |
| http_method | read_only_udm.network.http.method | 直接映射。 |
| http_response_code | read_only_udm.network.http.response_code | 直接映射并转换为整数。 |
| identity_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“IdentityPolicyGroup”。 |
| ip | read_only_udm.principal.ip | 直接映射。如果存在,则会被 source_ip 覆盖。 |
| kv_msg | 多项 | 使用 kv 过滤条件进行解析。预处理包括将键前面的空格替换为“#”以及交换 csLabel 值。 |
| log_type | read_only_udm.metadata.log_type | 硬编码为“CISCO_EMAIL_SECURITY”。 |
| loglevel | read_only_udm.security_result.severity、read_only_udm.security_result.action | 用于确定严重程度和操作。“Info”“”“Debug”“Trace”映射到“INFORMATIONAL”和“ALLOW”。“警告”对应于“中”和“允许”。“高”映射到“HIGH”和“BLOCK”。“Critical”和“Alert”映射到“CRITICAL”“BLOCK”。 |
| mail_id | read_only_udm.network.email.mail_id | 直接从 JSON 日志映射。 |
| mailto | read_only_udm.target.user.email_addresses, read_only_udm.network.email.to | 如果电子邮件地址有效,则直接映射到这两个 UDM 字段。 |
| MailPolicy | read_only_udm.security_result.about.labels.value | 直接映射。键为“MailPolicy”。 |
| 消息 | 多项 | 尽可能解析为 JSON。否则,将作为 syslog 消息进行处理。 |
| message_id | read_only_udm.network.email.mail_id | 直接映射。还用于填充 network_data。 |
| msg | read_only_udm.network.email.subject | 在 UTF-8 解码并移除回车符、换行符和多余的引号后直接映射。还用于填充 network_data。 |
| msg1 | 多项 | 使用 kv 过滤条件进行解析。用于提取主机名、helo、env-from 和 reply-to。 |
| outbound_malware_scanning_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“DataSecurityPolicyGroup”。 |
| 端口 | read_only_udm.target.port | 直接映射并转换为整数。 |
| principalMail | read_only_udm.principal.user.email_addresses | 直接映射。 |
| principalUrl | read_only_udm.principal.url | 直接映射。 |
| product_event | read_only_udm.metadata.product_event_type | 直接映射。用于确定要应用哪些 Grok 模式。移除前导“%”字符。“amp”替换为“SIEM_AMPenginelogs”。 |
| product_version | read_only_udm.metadata.product_version | 直接映射。 |
| 协议 | read_only_udm.network.tls.version | 直接映射。 |
| received_bytes | read_only_udm.network.received_bytes | 直接映射并转换为无符号整数。 |
| 回复地址 | read_only_udm.additional.fields.value.string_value | 直接映射。键为“Reply-To”。 |
| 声誉 | read_only_udm.security_result.confidence_details | 直接映射。 |
| request_method_uri | read_only_udm.target.url | 直接映射。 |
| result_code | read_only_udm.security_result.detection_fields.value | 直接映射。键为“结果代码”。 |
| routing_policy_group | read_only_udm.security_result.detection_fields.value | 如果不为空,则直接映射;否则为“-”或“NONE”。键为“RoutingPolicyGroup”。 |
| 规则 | read_only_udm.security_result.detection_fields.value | 直接映射。键为“匹配的条件”。 |
| SDRThreatCategory | read_only_udm.security_result.threat_name | 如果不为空或为“不适用”,则直接映射。 |
| SenderCountry | read_only_udm.principal.location.country_or_region | 直接映射。 |
| senderGroup | read_only_udm.principal.group.group_display_name | 直接映射。 |
| security_description | read_only_udm.security_result.description | 直接映射。 |
| security_email | read_only_udm.security_result.about.email 或 read_only_udm.principal.hostname | 如果电子邮件地址有效,则映射到电子邮件。否则,在通过 grok 提取后映射到主机名。 |
| 来源 | read_only_udm.network.ip_protocol | 如果包含“tcp”,则映射为“TCP”。 |
| sourceAddress | read_only_udm.principal.ip | 直接映射。 |
| sourceHostName | read_only_udm.principal.administrative_domain | 如果不是“未知”,则直接映射。 |
| source_ip | read_only_udm.principal.ip | 直接映射。如果存在,则覆盖 IP。 |
| 主题 | read_only_udm.network.email.subject | 移除末尾句点后直接映射。还用于填充 network_data。 |
| suser | read_only_udm.principal.user.email_addresses, read_only_udm.network.email.bounce_address | 如果电子邮件地址有效,则直接映射到这两个 UDM 字段。 |
| target_ip | read_only_udm.target.ip | 直接映射。 |
| 至 | read_only_udm.network.email.to | 如果电子邮件地址有效,则直接映射。还用于填充 network_to。 |
| total_bytes | read_only_udm.network.sent_bytes | 直接映射并转换为无符号整数。 |
| trackerHeader | read_only_udm.additional.fields.value.string_value | 直接映射。键为“Tracker Header”。 |
| ts、ts1、year | read_only_udm.metadata.event_timestamp.seconds | 用于构建事件时间戳。如果存在 ts1,则将 ts1 与 year 结合使用。支持各种格式,包括带年份和不带年份的格式。如果未提供年份,则使用当前年份。硬编码为“Cisco”。硬编码为“Cisco Email Security”。默认值为“ALLOW”。根据日志级别或说明设置为“BLOCK”。如果存在 application_protocol,则默认为“INBOUND”。根据 CEF 消息的 deviceDirection 设置。根据多个字段(包括 network_from、network_to、target_ip、ip、description、event_type、principal_host、Hostname、user_id 和 sourceAddress)的组合来确定。默认值为“GENERIC_EVENT”。如果 application_protocol 为“SMTP”或“smtp”,或者存在 target_ip 和 ip,则设置为“SMTP”。如果 sshd 日志中存在 login_status 和 user_id,则设置为“AUTHTYPE_UNSPECIFIED”。如果日志级别为“严重”或“提醒”,则设置为 true。 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。