收集 Linux auditd 和 AIX 系统日志
支持的平台:
Google SecOps
SIEM
此解析器会处理采用 SYSLOG 格式的 Linux 审核日志,并将其转换为 UDM。它可以处理 JSON 格式和纯文本日志消息,使用 grok、XML 解析和 JSON 解析技术提取字段,并根据事件类型将其映射到适当的 UDM 字段。该解析器还会处理 AIX 系统中的特定审核日志格式,并使用 security_result
和中间详细信息等其他字段丰富 UDM。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您拥有对受审核主机的 root 访问权限。
- 确保您已在受审核的主机上安装 rsyslog。
- 确保您使用的是 Windows 2012 SP2 或更高版本,或者使用了 systemd 的 Linux 主机。
- 如果在代理后面运行,请确保防火墙端口处于打开状态。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane Agent
- 对于 Windows 安装,请运行以下脚本:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- 对于 Linux 安装,请运行以下脚本:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- 如需了解其他安装选项,请参阅此安装指南。
配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps
- 访问安装了 BindPlane 的机器。
按如下方式修改
config.yaml
文件:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: auditd raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
使用以下命令重启 BindPlane Agent 以应用更改:
sudo systemctl bindplane restart
从 Auditd 导出 Syslog
- 访问您要从中导出审核日志的机器。
打开 Auditd 配置文件(通常位于
/etc/audit/auditd.conf
)。sudo vi /etc/audit/auditd.conf
找到或添加以下代码行以配置 auditd:
active = yes output = syslog log_format = ENRICHED dispatcher = /sbin/audispd
可选:指定 Syslog 设施:在 auditd.conf
中添加或修改以下行:
```none
syslog_facility = LOG_AUTHPRIV
```
打开 audispd 配置文件(通常位于
/etc/audisp/plugins.d/syslog.conf
中):sudo vi /etc/audisp/plugins.d/syslog.conf
找到或添加以下代码行以配置 audispd:
active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string
重启 Audited 服务以应用更改:
sudo systemctl restart auditd
使用
tail
等工具监控 syslog,并验证是否正在发送审核日志:tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
修改
rsyslog.conf
或创建自定义配置:sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
添加用于转发日志的规则:
if $programname == 'auditd' then @@<BindPlane_Agent>:<BindPlane_Port>
- 使用
@
(适用于 UDP)或@@
(适用于 TCP) - 将
<BindPlane_Agent>
替换为服务器的 IP 地址/主机名。 - 将
<BindPlane_Port>
替换为服务器的端口。
重启 rsyslog 服务以应用更改:
sudo systemctl restart rsyslog
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
acct |
target.user.user_display_name |
原始日志中的 acct 值会映射到 UDM 中的 target.user.user_display_name 字段。表示与事件关联的账号。 |
addr |
principal.ip |
原始日志中的 addr 值会映射到 UDM 中的 principal.ip 字段。表示事件中涉及的主账号的 IP 地址。 |
additional.fields |
additional.fields |
从解析的键值对或标签中提取的其他字段会添加到 UDM 中的 additional.fields 数组。 |
agent.googleapis.com/log_file_path |
(未映射) | 此标签存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。 |
algo |
(此示例中未使用) | 虽然此字段在解析器和某些原始日志中存在,但在提供的示例中未使用,也不会显示在最终的 UDM 中。 |
application |
principal.application |
派生自原始日志中的 terminal 字段或其他字段(例如 exe ),具体取决于日志类型。表示相关应用。 |
arch |
security_result.about.platform_version |
原始日志的 arch 字段中的架构会映射到 security_result.about.platform_version 。 |
auid |
about.user.userid ,security_result.detection_fields.auid |
审核用户 ID (auid ) 会映射到 about.user.userid ,并作为检测字段添加到 security_result 中。 |
cmd |
target.process.command_line |
原始日志的 cmd 字段中的命令会映射到 target.process.command_line 。 |
collection_time |
(未映射) | 此字段是日志收集时间,未映射到 UDM 中的 IDM 对象。 |
comm |
principal.application |
命令名称 (comm ) 映射到 principal.application 。 |
compute.googleapis.com/resource_name |
principal.hostname |
此标签中的资源名称会映射到 principal.hostname 。 |
create_time |
(未映射) | 此字段未映射到 UDM 中的 IDM 对象。 |
cwd |
security_result.detection_fields.cwd |
当前工作目录 (cwd ) 会添加为 security_result 中的检测字段。 |
data |
(已处理) | data 字段包含主要日志消息,并由解析器进行处理以提取各种字段。它不会直接映射到单个 UDM 字段。 |
exe |
principal.process.file.full_path ,target.process.file.full_path |
可执行文件路径 (exe ) 会映射到 principal.process.file.full_path 或 target.process.file.full_path ,具体取决于上下文。 |
extensions.auth.type |
extensions.auth.type |
身份验证类型由解析器逻辑根据事件类型设置。通常设置为 MACHINE 或 AUTHTYPE_UNSPECIFIED 。 |
fp |
network.tls.client.certificate.sha256 |
系统会解析指纹 (fp ) 以提取 SHA256 哈希,并将其映射到 network.tls.client.certificate.sha256 。 |
insertId |
(未映射) | 此字段未映射到 UDM 中的 IDM 对象。 |
jsonPayload.message |
(已处理) | 此字段包含 JSON 格式的主日志消息,并由解析器进行处理。 |
key |
security_result.about.registry.registry_key |
键字段会映射到 security_result.about.registry.registry_key 。 |
labels |
(已处理) | 系统会处理原始日志中的标签,并将其映射到各种 UDM 字段或添加到 additional.fields 。 |
logName |
(未映射) | 此字段未映射到 UDM 中的 IDM 对象。 |
msg |
security_result.summary |
消息 (msg ) 通常用于填充 security_result.summary 字段。 |
network.application_protocol |
network.application_protocol |
由解析器逻辑根据事件类型(例如SSH、HTTP)。 |
network.direction |
network.direction |
由解析器逻辑根据事件类型(例如INBOUND、OUTBOUND)。 |
network.ip_protocol |
network.ip_protocol |
由解析器逻辑设置,通常为 SSH 事件设置为 TCP。 |
network.session_id |
network.session_id |
从 ses 字段映射或从其他字段派生。 |
network.tls.cipher |
network.tls.cipher |
系统会从原始日志中提取密码信息,并将其映射到此字段。 |
network.tls.curve |
network.tls.curve |
密钥交换曲线会从原始日志中提取,并映射到此字段。 |
pid |
principal.process.pid ,target.process.pid |
进程 ID (pid ) 会映射到 principal.process.pid 或 target.process.pid ,具体取决于上下文。 |
ppid |
principal.process.parent_process.pid ,target.process.parent_process.pid |
父进程 ID (ppid ) 会映射到 principal.process.parent_process.pid 或 target.process.parent_process.pid ,具体取决于上下文。 |
principal.asset.hostname |
principal.asset.hostname |
从 principal.hostname 复制。 |
principal.asset.ip |
principal.asset.ip |
从 principal.ip 复制。 |
principal.platform |
principal.platform |
由解析器逻辑根据操作系统(例如LINUX)。 |
principal.port |
principal.port |
与正文关联的端口号。 |
principal.user.group_identifiers |
principal.user.group_identifiers |
与主要用户关联的群组 ID。 |
receiveTimestamp |
(未映射) | 此字段是日志接收时间戳,未映射到 UDM 中的 IDM 对象。 |
res |
security_result.action_details |
结果 (res ) 会映射到 security_result.action_details 。 |
resource.labels |
(未映射) | 这些标签存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。 |
resource.type |
(未映射) | 此字段存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。 |
security_result.action |
security_result.action |
由解析器逻辑根据 res 字段(例如ALLOW、BLOCK)。 |
security_result.detection_fields |
security_result.detection_fields |
系统会将原始日志中的各种字段作为键值对添加到此数组中,以提供上下文。 |
security_result.rule_id |
security_result.rule_id |
由解析器逻辑设置,对于系统调用事件,通常设置为 type_name 。 |
security_result.severity |
security_result.severity |
由解析器逻辑根据原始日志中的严重级别设置。 |
security_result.summary |
security_result.summary |
事件摘要,通常派生自 msg 字段或其他相关字段。 |
ses |
network.session_id |
会话 ID (ses ) 会映射到 network.session_id 。 |
source |
(未映射) | 此字段包含与日志来源相关的元数据,并且未映射到 UDM 中的 IDM 对象。 |
subj |
(已处理) | 系统会处理主题字段 (subj ),以提取用户和安全上下文信息。 |
syscall |
security_result.about.labels.Syscall |
系统调用号会作为标签添加到 security_result.about 中。 |
target.administrative_domain |
target.administrative_domain |
目标用户所在的网域。 |
target.group.group_display_name |
target.group.group_display_name |
目标群组的名称。 |
target.ip |
target.ip |
目标的 IP 地址。 |
target.port |
target.port |
与目标关联的端口号。 |
target.process.command_line |
target.process.command_line |
目标进程的命令行。 |
target.resource.type |
target.resource.type |
目标资源的类型,由解析器逻辑设置(例如,CREDENTIAL, SETTING)。 |
target.user.attribute.permissions |
target.user.attribute.permissions |
与目标用户相关的权限。 |
target.user.group_identifiers |
target.user.group_identifiers |
与目标用户相关联的群组 ID。 |
target.user.userid |
target.user.userid |
目标对象的用户 ID。 |
textPayload |
(已处理) | 日志的文本载荷,由解析器处理以提取各种字段。 |
timestamp |
metadata.event_timestamp |
事件的时间戳。 |
tty |
security_result.about.labels.tty |
tty 会作为标签添加到 security_result.about 中。 |
type |
metadata.product_event_type |
事件类型 (type ) 已映射到 metadata.product_event_type 。 |
uid |
principal.user.userid ,target.user.userid |
用户 ID (uid ) 会映射到 principal.user.userid 或 target.user.userid ,具体取决于上下文。 |
更改
2024-05-08
- 如果值不为“?”,则将“field”映射到“field33”,再映射到“security_result.detection_fields”。
- 当“type_name”为“CRYPTO_KEY_USER”时,将“exe”映射到“principal.process.file.full_path”。
- 如果“type_name”为“CRYPTO_KEY_USER”,则将“fp”映射到“network.tls.client.certificate.sha256”。
- 当“type_name”为“CRYPTO_KEY_USER”时,将“pid”映射到“principal.process.pid”。
- 添加了 Grok 模式来解析新的日志模式。
- 将“syslog-tag”映射到“security_result.detection_fields”。
- 将“inter_ip”映射到“intermediary.ip”。
- 将“inter_hostname”映射到“intermediary.hostname”。
2024-05-02
- 如果“type_name”为“USER_MGMT”,则将“grp”映射到“target.group.group_display_name”。
- 当“type_name”为“USER_MGMT”时,将“uid”的映射从“principal.user.userid”更改为“target.user.userid”。
- 当“type_name”为“USER_MGMT”且“op”等于“deleting-user-from-group”时,请将“metadata.event_type”设置为“GROUP_MODIFICATION”。
- 当“type_name”为“USER_MGMT”时,将“exe”的映射从“target.process.file.full_path”更改为“principal.process.file.full_path”。
- 如果“type_name”为“USER_MGMT”,则将“id”映射到“about.user.userid”。
2024-04-08
- 当“type_name”为“ADD_USER”“principal_user_present”为“true”“target_user_present”为“true”且“has_principal”为“true”时,请将“metadata.event_type”设置为“USER_CREATION”。
- 如果“type_name”为“USER_AUTH”,则将“acct”映射到“target.user.user_display_name”。
- 如果“type_name”为“USER_AUTH”,则将“uid”映射到“principal.user.userid”。
- 如果“type_name”不在“ADD_USER”“USER_AUTH”“CRED_ACQ”和“USER_MGMT”中,则将“auid”映射到“about.user.userid”。
- 如果“type_name”为“ADD_USER”,则将“auid”映射到“target.user.userid”。
- 如果“type_name”为“ADD_USER”或“USER_AUTH”,则将“exe”映射到“principal.process.file.full_path”。
- 如果“type_name”为“ADD_USER”,则将“op”和“id”映射到“security_result.summary”。
- 当“type_name”为“USER_AUTH”时,将“op”和“acct”映射到“security_result.summary”。
2024-03-22
- 添加了对新模式的 JSON 日志的支持。
- 将“labels.compute.googleapis.com/resource_name”“jsonPayload._HOSTNAME”“CollectorHostName”“HOSTNAME”和“Computer”映射到“principal.hostname”。
- 将“HostIP”映射到“principal.ip”。
- 将“ProcessID”和“jsonPayload._PID”映射到“principal.process.pid”。
- 将“SyslogMessage”映射到“metadata.description”。
- 将“TenantId”“_ItemId”“_Internal_WorkspaceResourceId”“_ResourceId”和“Facility”映射到“additional.fields”。
- 将“SeverityLevel”映射到“security_result.severity”。
- 将“SourceSystem”映射到“principal.platform”。
- 将“jsonPayload._COMM”映射到“principal.application”。
- 将“jsonPayload._EXE”映射到“target.process.file.full_path”。
- 将“jsonPayload._AUDIT_FIELD_FILE”映射到“target.file.full_path”。
- 将“jsonPayload._AUDIT_FIELD_HASH”映射到“target.file.hash”。
- 将“jsonPayload._AUDIT_SESSION”映射到“network.session_id”。
- 将“jsonPayload._PPID”映射到“principal.process.parent_process.pid”。
- 将“jsonPayload._AUDIT_FIELD_A0”“jsonPayload._AUDIT_FIELD_A1”“jsonPayload._AUDIT_FIELD_A2”“jsonPayload._AUDIT_FIELD_A3”“jsonPayload._BOOT_ID”和“jsonPayload._AUDIT_FIELD_EXIT”映射到“security_result.detection_fields”。
2023-11-27
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_LOGIN”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_LOGOUT”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_CREATION”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_DELETION”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_UNCATEGORIZED”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_RESOURCE_ACCESS”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_CHANGE_PERMISSIONS”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
- 如果存在用户详细信息但不存在主机详细信息,则将“metadata.event_type”的映射从“USER_CREATION”更改为“USER_UNCATEGORIZED”。
- 如果存在用户详细信息但不存在主要机器详细信息,则将“metadata.event_type”的映射从“USER_DELETION”更改为“USER_UNCATEGORIZED”。
2023-09-06
- 为“cron 守护程序(CROND)”添加了“CMD”与“target.process.command_line”的映射。
2023-06-20
- 增强功能 - 在 type="ADD_USER" 和 "DEL_USER" 时添加或修改了以下映射:
- 将“uid”的映射从“target.user.userid”更改为“principal.user.userid”。
- 将“id”映射到“target.user.userid”。
- 将“ID”映射到“target.user.user_display_name”。
- 将“UID”的映射从“principal.user.userid”更改为“principal.user.user_display_name”。
- 将“acct”的映射从“principal.user.user_display_name”更改为“target.user.user_display_name”和“target.user.userid”。
2023-06-09
- 增强功能 - 将“type=ADD_USER”时的“event_type”从“USER_LOGIN”修改为“USER_CREATION”。
2023-04-17
- 改进
- 添加了 gsub 函数,用于替换破坏 JSON 结构的“GS - 分组分隔符”字符。
2023-04-10
- 改进
- 向 security_result.detection_fields 添加了“gid”“euid”“egid”“suid”“fsuid”“sgid”“fsgid”“tty”“items”字段。
- 此外,还将“gid”映射到“principal.user.group_identifiers”。
- 将“euid”映射到“target.user.userid”。
- 将“egid”映射到“target.user.group_identifiers”。
2023-03-27
- 增强功能 - 添加了对包含日志的“jsonPayload”的支持。
2023-02-28
- bug 修复 - 增强了解析器,以将十六进制编码的字符串转换为 ASCII。
2023-02-09
- 增强功能 - 修改了包含“type=PATH”的日志的 Grok,以从日志中提取正确的主机名。
2023-01-24
- 增强功能 -
- 解析了事件类型为“tac_plus”的日志。
- 添加了用于映射不同 event_type“NETWORK_CONNECTION”“NETWORK_HTTP”“USER_LOGIN”的条件。
2022-12-02
- 增强功能 -
- 将“user_name”映射到“principal.user.userid”。
- 添加了针对“dst_ip”“dst_port”的条件检查。
2022-10-31
- 增强功能 -
- 增强了解析器,以解析 type=ADD_USER、USER_MGMT、DEL_USER 的日志。
- 添加了“principal_hostname”的 null 检查。
- 为“principal.process.file.full_path”“type_syscall_props.key”“type_syscall_props.arch”“msg2”添加了 on_error 检查。
- 添加了用于映射到 event_type="FILE_OPEN"、"USER_UNCATEGORIZED"、"STATUS_UPDATE"、"USER_DELETION" 的条件检查。
- 将“principal_user_userid”映射到“principal.user.userid”。
2022-11-16
- 增强功能 -
- 将包含“访问日志”的日志类型的“GENERIC_EVENT”改为了“STATUS_UPDATE”。
2022-10-14
- 增强功能 -
- 将客户解析器迁移到了默认解析器。
2022-10-13
- 增强功能 - 将“vendor_name”映射到“Linux”。
- 将“product_name”映射到“AuditD”。
- 解析了包含“ProxySG”的日志,并尽可能将“ip”映射到“target.ip”,“port”映射到“target.port”。
- 将“event_type”从“GENERIC_EVENT”修改为“STATUS_UPDATE”。
- 修改了“intermediary.hostname”与“principal.hostname”之间的映射。
2022-07-28
- 增强功能 -
- 将“auid”字段映射到了“about.user.userid”。
- 将字段“AUID”映射到“about.user.user_display_name”。
- 将字段“proctitle”映射到“target.process.file.full_path”。
- 增强了解析器,以解析 type=DAEMON_END、CRYPTO_SESSION、CONFIG_CHANGE、PROCTITLE、USER_ERR、CRYPTO_KEY_USER 的日志。
- 添加了针对 laddr、addr、cipher、pfs、direction、acct、pid、ppid、cmd、exe、ses 的条件检查。
2022-06-17
- 增强功能 - 映射/修改了以下字段:
- 将“auid”的映射从“security_result.about.user.userid”更改为“about.user.userid”。
- 将 type=SYSCALL 的“event_type”从“SYSTEM_AUDIT_LOG_UNCATEGORIZED”更改为“USER_UNCATEGORIZED”。
- 将“success”映射到“security_result.summary”。
- 将“syscall”“exit”“tty”“a0”“a1”“a2”“a3”映射到“security_result.about.labels”。
- 移除了采用 ASCII 格式的日志。
2022-06-14
- 增强
- 增强了解析器,以解析 USER_CMD 类型的日志。
- 将字段“cmd”映射到了“principal.process.command_line”。
- 将字段“ses”映射到“network.session_id”。
- 将字段“res”映射到“security_result.action”和“security_result.action_details”。
- 将字段“auid”和“cwd”映射到了“security_result.detection_fields”。
2022-04-26
- 增强
- 通过解析所有未解析的日志,提高了解析百分比。