收集 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 。 |
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 。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。