收集 Linux auditd 和 AIX 系统日志
此解析器可处理 SYSLOG 格式的 Linux 审核日志,并将其转换为 UDM。它会处理 JSON 格式和纯文本格式的日志消息,使用 grok、XML 解析和 JSON 解析技术提取字段,并根据事件类型将这些字段映射到相应的 UDM 字段。解析器还会处理来自 AIX 系统的特定审核日志格式,并使用 security_result
和中间细节等其他字段来丰富 UDM。
准备工作
- 确保您拥有 Google Security Operations 实例。
- 确保您拥有对 Auditd 主机的 root 访问权限。
- 确保您已在 Auditd 主机上安装 rsyslog。
- 确保您拥有 Windows 2012 SP2 或更高版本或带有 systemd 的 Linux 主机。
- 如果是在代理后面运行,请确保防火墙端口处于开放状态。
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
- 对于 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 代理以注入 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 代理以应用更改:
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 Facility:在 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
重启 Auditd 服务以应用更改:
sudo systemctl restart auditd
使用
tail
等工具监控 syslog 并验证 Auditd 日志是否正在发送: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 。 |
COMMAND |
target.process.command_line |
|
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 |
target.process.file.full_path |
可执行文件路径 (exe ) 已映射到 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 。 |
_Item_Id |
metadata.product_log_id |
|
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 对象。 |
metadata.product_event_type |
SECCOMP | 密钥交换曲线从原始日志中提取并映射到此字段。 |
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。 |
process.name |
target.process.file.full_path |
|
receiveTimestamp |
(未映射) | 此字段是日志接收时间戳,未映射到 UDM 中的 IDM 对象。 |
res |
security_result.action_details |
结果 (res ) 会映射到 security_result.action_details 。 |
_Resource_Id |
target.resource.product_object_id |
|
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。 |
TenantId |
metadata.product_deployment_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 |
target.user.userid |
用户 ID (uid ) 已映射到 target.user.userid 。 |
UDM 映射增量参考信息
2025 年 9 月 23 日,Google SecOps 发布了新版 Okta 解析器,其中对 Okta 日志字段到 UDM 字段的映射以及事件类型的映射进行了重大更改。
日志字段映射增量
下表列出了 2025 年 9 月 23 日之前和之后公开的 Okta 日志到 UDM 字段的映射差异(分别列在旧映射和当前映射列中)。
日志字段 | 旧映射 | 当前映射 | 参考日志示例 |
---|---|---|---|
1.1.1.1 (IP 地址) |
src.ip |
principal.ip |
“<163>Apr 10 09:00:05 hostname.com sshd[3318513]: Accepted password for abc from 1.1.1.1 port 33988 ssh2” |
1.1.1.1 (IP 地址) |
principal.ip |
target.ip |
"<29>Oct 5 08:37:16 abc ProxySG: E0000 Access Log HTTP (main): Connecting to server 1.1.1.1 on port 4433.(0) NORMAL_EVENT alog_stream_http.cpp 261" |
abc (用户) |
principal.user.userid |
target.user.userid |
"<85>Feb 27 08:26:55 offozcav login: FAILED LOGIN 1 FROM ::ffff:1.1.1.1 FOR abc, Authentication failure\r\n\r\n" |
abc.abc (用户) |
principal.user.userid |
target.user.userid |
"<86>Feb 27 08:29:19 offozcav login: LOGIN ON pts/43 BY abc.abc FROM\r\n\r\n::ffff:1.1.1.1" |
COMMAND |
principal.process.command_line |
target.process.command_line |
“<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number” |
exe |
target.process.file.full_path |
principal.process.file.full_path |
|
_ItemId |
additional.fields |
metadata.product_log_id |
|
metadata.product_event_type |
PATH |
SECCOMP |
|
process.name |
principal.process.file.full_path |
target.process.file.full_path |
|
_ResourceId |
additional.fields |
target.resource.product_object_id |
|
TenantId |
additional.fields |
metadata.product_deployment_id |
|
uid |
principal.user.userid |
target.user.userid |
|
USER |
principal.user.user_display_name |
target.user.userid |
“<85>Sep 24 14:33:59 abc sudo: abc : \r\nTTY=unknown ; PWD=/abc ; USER=abc ; COMMAND=/sbin/iptables -t nat -nL \r\n--line-number” |
user |
principal.user.userid |
target.user.userid |
“29>Jan 16 11:28:00 san-auth-1-irl2 tac_plus[17329]: login failure: user 1.1.1.1 (1.1.1.1) vty0” |
user |
principal.user.userid |
target.user.userid |
“<87>7 月 15 日 10:27:01 xpgjrconfdb01 crond[1045]: pam_unix(crond:account): 用户 root 的密码已过期(密码已过时)” |
事件类型映射增量
之前被归类为通用事件的多个事件现在已正确归类为有意义的事件类型。
下表列出了 2025 年 9 月 23 日之前和之后(分别列在旧 event_type 列和当前 event_type 列中)Okta 事件类型处理方式的差异。
日志中的 eventType | 旧 event_type | 当前 event_type |
---|---|---|
aix_event_type=CRON_Start |
USER_LOGIN |
PROCESS_LAUNCH |
CRYPTO_KEY_USER |
NETWORK_CONNECTION |
USER_LOGIN |
FILE_Mknod |
USER_LOGIN |
FILE_CREATION |
FILE_Rename |
USER_LOGIN |
FILE_MODIFICATION |
FILE_Stat |
USER_LOGIN |
FILE_OPEN |
FILE_Unlink |
USER_LOGIN |
FILE_DELETION |
FS_Chabc |
USER_LOGIN |
PROCESS_UNCATEGORIZED |
FS_Mkdir |
USER_LOGIN |
FILE_CREATION |
FS_Rmdir |
USER_LOGIN |
FILE_DELETION |
PROC_Execute |
USER_LOGIN |
PROCESS_LAUNCH |
type=ANOM_ABEND |
STATUS_UPDATE |
PROCESS_TERMINATION |
type=ANOM_PROMISCUOUS |
SETTING_MODIFICATION |
|
type=CRED_REFR |
USER_LOGIN |
USER_CHANGE_PERMISSIONS |
type=PROCTILE |
PROCESS_UNCATEGORIZED |
PROCESS_LAUNCH |
type=SERVICE_START |
USER_RESOURCE_ACCESS |
SERVICE_START |
type=SERVICE_STOP |
USER_RESOURCE_ACCESS |
SERVICE_STOP |
type=USER_ACCT |
USER_LOGIN/SETTING_MODIFICTION |
USER_LOGIN |
type=USER_MGMT |
SETTING_MODIFICATION/GROUP_MODIFICATION |
GROUP_MODIFICATION |
USER_ERR |
USER_LOGOUT |
USER_LOGIN |
其他更改
- 从
security_result.description
中移除了res
的重复映射。它是在security_result.action_details
中捕获的。 - 从其他字段中移除了不必要的
auditd_msg_data
。 - 从
security_result.summary
中移除了不必要的auditd_msg_data
。 - 当
type=ADD_USER
时,移除了acct
到target.user.display_name
的重复映射。它已在target.user.userid
下映射。 - 从
principal.process.command_line
和principal.process.file.names
中移除了comm
的重复映射。它是在principal.application
中捕获的。 - 当
principal
中存在相应值时,移除了target.hostname
的重复映射。 - 移除了不必要的
target.resource.type
到SETTING
的硬编码映射。 - 移除了“关于”标签映射,因为该功能已弃用。
- 更正后的映射:IP 现在路由到
principal.ip
,而不是principal.hostname
。 - 修复了生成事件的重复问题。
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。