Mengumpulkan log Linux Audit Daemon
Dokumen ini menjelaskan cara menyerap log Linux Audit Daemon (auditd) ke Google Security Operations menggunakan Bindplane.
Linux Audit Daemon adalah komponen userspace dari sistem audit Linux. Audit merekam peristiwa yang relevan dengan keamanan di sistem, termasuk akses file, panggilan sistem, peristiwa autentikasi, dan penolakan SELinux. Log auditd sangat penting untuk pemantauan kepatuhan, deteksi penyusupan, dan analisis forensik di host Linux.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Windows Server 2016 atau yang lebih baru, atau host Linux dengan
systemd. - Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane.
- Akses root atau sudo di host Linux yang menjalankan auditd.
- Paket
auditddiinstal dan berjalan di host Linux sumber. - Paket
audispd-pluginsyang diinstal di host Linux sumber (menyediakan pluginaudisp-syslog).
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal agen Bindplane
Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Referensi penginstalan tambahan
Untuk opsi penginstalan tambahan, lihat Panduan penginstalan agen BindPlane.
Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps
Akses file konfigurasi:
- Linux:
/status observiq-otel-collector/config.yaml - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
- Linux:
Edit file
config.yamlsebagai berikut: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: '<your_customer_id>' endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'AUDITD' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
- Ganti
<your_customer_id>dengan ID Pelanggan yang sebenarnya. - Ganti
/path/to/ingestion-authentication-file.jsondengan jalur file tempat file autentikasi disimpan di langkah Mendapatkan file autentikasi penyerapan.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux:
Jalankan perintah berikut:
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa log untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -f
Untuk memulai ulang agen Bindplane di Windows:
Pilih salah satu opsi berikut:
- Command Prompt atau PowerShell sebagai administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Konsol layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
- Klik kanan, lalu pilih Mulai Ulang.
- Tekan
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Mengonfigurasi auditd untuk meneruskan log melalui syslog
Plugin audisp syslog meneruskan peristiwa audit ke syslog, yang kemudian mengirimkannya ke agen Bindplane. Ini adalah metode yang direkomendasikan untuk meneruskan log auditd.
Menginstal plugin syslog audisp
- Login ke host Linux yang menjalankan auditd dengan hak istimewa root atau sudo.
Menginstal paket
audispd-plugins- RHEL/CentOS/Fedora:
sudo yum install audispd-plugins- Debian/Ubuntu:
sudo apt install audispd-plugins
Mengonfigurasi plugin syslog
Edit file konfigurasi plugin syslog:
sudo nano /etc/audit/plugins.d/syslog.confTetapkan nilai berikut dalam file:
active = yes direction = out path = /sbin/audisp-syslog type = always args = LOG_LOCAL6 format = string- active: Setel ke
yesuntuk mengaktifkan plugin. - path: Jalur ke biner
audisp-syslog. - type: Tetapkan ke
alwaysuntuk menjalankan plugin sebagai program eksternal. - args: Fasilitas syslog yang akan digunakan.
LOG_LOCAL6direkomendasikan untuk memisahkan log audit dari pesan syslog lainnya. - format: Setel ke
stringuntuk meneruskan peristiwa dalam format teks yang sesuai untuk syslog.
- active: Setel ke
Mengonfigurasi aturan audit (opsional)
Edit file aturan audit untuk menentukan peristiwa mana yang akan direkam:
sudo nano /etc/audit/rules.d/audit.rulesTambahkan aturan berdasarkan persyaratan pemantauan Anda. Contoh:
## Delete all existing rules -D ## Set buffer size (increase for high-volume systems) -b 8192 ## Set failure mode (1 = printk, 2 = panic) -f 1 ## Monitor authentication-related files -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k sudoers ## Monitor login events -w /var/log/faillog -p wa -k logins -w /var/log/lastlog -p wa -k logins ## Monitor process execution -a always,exit -F arch=b64 -S execve -k exec ## Monitor network configuration changes -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network ## Make the configuration immutable (must be the last rule) -e 2Muat aturan audit baru:
sudo augenrules --load
Mulai ulang auditd
Mulai ulang layanan auditd untuk menerapkan perubahan plugin dan aturan:
sudo service auditd restart
Mengonfigurasi rsyslog untuk meneruskan log audit ke BindPlane
Buat file konfigurasi rsyslog baru untuk penerusan log audit:
sudo nano /etc/rsyslog.d/audit-forward.confTambahkan baris berikut untuk meneruskan log melalui UDP ke agen Bindplane:
local6.* @<BINDPLANE_IP>:514Mulai ulang rsyslog untuk menerapkan perubahan:
sudo systemctl restart rsyslog
Memverifikasi penerusan log
Di host Linux sumber, buat peristiwa audit pengujian:
sudo auditctl -w /tmp/test_audit -p wa -k test_chroniclePicu smartwatch dengan menyentuh file:
touch /tmp/test_auditDi host agen BindPlane, pastikan log diterima:
sudo journalctl -u observiq-otel-collector -f
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
acct |
target.user.userid |
Nilai diambil dari kolom acct. |
addr |
principal.ip |
Nilai diambil dari kolom addr jika merupakan alamat IP yang valid. |
arch |
additional.fields |
Ditambahkan sebagai key-value pair dengan kunci "arch". |
auid |
principal.user.userid |
Nilai diambil dari kolom auid. Digunakan sebagai ID pengguna audit. |
comm |
target.process.command_line |
Nilai diambil dari kolom comm. |
cwd |
additional.fields |
Ditambahkan sebagai key-value pair dengan kunci "cwd". |
exe |
target.process.file.full_path |
Nilai diambil dari kolom exe. |
exit |
additional.fields |
Ditambahkan sebagai key-value pair dengan kunci "exit". |
gid |
principal.user.group_identifiers |
Nilai diambil dari kolom gid. |
hostname |
principal.hostname |
Nilai diambil dari kolom hostname. |
key |
security_result.detection_fields |
Ditambahkan sebagai key-value pair dengan kunci "audit_key". |
msg |
metadata.description |
Diuraikan dari kolom msg. Berisi pesan peristiwa audit. |
name |
target.file.full_path |
Nilai diambil dari kolom name jika berlaku. |
node |
principal.hostname |
Nilai diambil dari kolom node jika hostname tidak ada. |
op |
metadata.product_event_type |
Nilai diambil dari kolom op (jenis operasi). |
pid |
principal.process.pid |
Nilai diambil dari kolom pid. |
ppid |
principal.process.parent_process.pid |
Nilai diambil dari kolom ppid. |
res |
security_result.action |
Setel ke "ALLOW" jika res adalah "success" atau "1". Disetel ke "BLOCK" jika res adalah "failed" atau "0". |
ses |
network.session_id |
Nilai diambil dari kolom ses (ID sesi). |
subj |
principal.process.file.full_path |
Nilai yang diambil dari kolom subj (konteks subjek SELinux). |
syscall |
additional.fields |
Ditambahkan sebagai key-value pair dengan kunci "syscall". |
terminal |
additional.fields |
Ditambahkan sebagai key-value pair dengan kunci "terminal". |
type |
metadata.product_event_type |
Nilai diambil dari kolom type (jenis catatan audit, misalnya, SYSCALL, USER_LOGIN, EXECVE). |
uid |
principal.user.userid |
Nilai diambil dari kolom uid. |
metadata.event_type |
Berasal dari jenis catatan audit. Setel ke "USER_LOGIN" untuk peristiwa login, "USER_LOGOUT" untuk peristiwa logout, "PROCESS_LAUNCH" untuk peristiwa exec, "FILE_MODIFICATION" untuk peristiwa file. Default-nya adalah "GENERIC_EVENT". | |
metadata.product_name |
Tetapkan ke "auditd". | |
metadata.vendor_name |
Tetapkan ke "Linux". | |
home |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
shell |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
name |
event.idm.read_only_udm.target.user.userid |
Dipetakan dari log perubahan |
name |
event.idm.read_only_udm.target.group.group_display_name |
Dipetakan dari log perubahan |
UID |
event.idm.read_only_udm.target.user.product_object_id |
Dipetakan dari log perubahan |
GID |
event.idm.read_only_udm.target.user.group_identifiers |
Dipetakan dari log perubahan |
GID |
event.idm.read_only_udm.target.group.product_object_id |
Dipetakan dari log perubahan |
key_type |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
hash |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
key_fingerprint |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
user |
event.idm.read_only_udm.target.user.userid |
Dipetakan dari log perubahan |
error_detail1 |
event.idm.read_only_udm.security_result.summary |
Dipetakan dari log perubahan |
service_name |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
ssh_disconnect_code |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
labels.bp_csoc |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
labels.bp_env_id |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
labels.log.file.name |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
resource.labels.node_id |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
intermediary_host |
event.idm.read_only_udm.intermediary.hostname |
Dipetakan dari log perubahan |
PWD |
event.idm.read_only_udm.target.file.full_path |
Dipetakan dari log perubahan |
log_details |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
indicator.SUID |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.UID |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.AUID |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
type_crypto_props.msg |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
usr |
event.idm.read_only_udm.principal.user.userid |
Dipetakan dari log perubahan |
pi |
event.idm.read_only_udm.principal.process.pid |
Dipetakan dari log perubahan |
cmnd |
event.idm.read_only_udm.target.process.command_line |
Dipetakan dari log perubahan |
proctitle_value |
event.idm.read_only_udm.principal.process.file.full_path |
Dipetakan dari log perubahan |
filename |
event.idm.read_only_udm.principal.process.file.names |
Dipetakan dari log perubahan |
filepath |
event.idm.read_only_udm.target.file.full_path |
Dipetakan dari log perubahan |
uid |
event.idm.read_only_udm.principal.user.userid |
Dipetakan dari log perubahan |
acct |
event.idm.read_only_udm.principal.user.user_display_name |
Dipetakan dari log perubahan |
exe |
event.idm.read_only_udm.target.process.file.full_path |
Dipetakan dari log perubahan |
pid |
event.idm.read_only_udm.principal.process.pid |
Dipetakan dari log perubahan |
auid |
event.idm.read_only_udm.about.user.userid |
Dipetakan dari log perubahan |
ses |
event.idm.read_only_udm.network.session_id |
Dipetakan dari log perubahan |
addr |
event.idm.read_only_udm.principal.ip dan event.idm.read_only_udm.principal.asset.ip |
Dipetakan dari log perubahan |
subj |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
res |
event.idm.read_only_udm.security_result.summary |
Dipetakan dari log perubahan |
op |
event.idm.read_only_udm.security_result.summary |
Dipetakan dari log perubahan |
msg_value |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
grantors_value |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.msg |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.grantors |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
terminal |
event.idm.read_only_udm.principal.application |
Dipetakan dari log perubahan |
sec_result |
event.idm.read_only_udm.security_result |
Dipetakan dari log perubahan |
hostname |
event.idm.read_only_udm.principal.hostname |
Dipetakan dari log perubahan |
indicator.mode |
event.idm.read_only_udm.src.user.attribute.permissions |
Dipetakan dari log perubahan |
indicator.nametype |
event.idm.read_only_udm.security_result.rule_name |
Dipetakan dari log perubahan |
indicator.cap_frootid |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.cap_fver |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.cap_fi |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.cap_fp |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.cap_fe |
event.idm.read_only_udm.security_result.detection_fields |
Dipetakan dari log perubahan |
OUID |
event.idm.read_only_udm.principal.user.userid |
Dipetakan dari log perubahan |
OGID |
event.idm.read_only_udm.principal.group.group_display_name |
Dipetakan dari log perubahan |
action_data |
event.idm.read_only_udm.security_result.action_details |
Dipetakan dari log perubahan |
target_email |
event.idm.ready_only_udm.target.user.email_addresses |
Dipetakan dari log perubahan |
target_port |
event.idm.ready_only_udm.target.port |
Dipetakan dari log perubahan |
status |
event.idm.ready_only_udm.security_result.action_details |
Dipetakan dari log perubahan |
to_email |
event.idm.ready_only_udm.network.email.to |
Dipetakan dari log perubahan |
target_hostname |
event.idm.ready_only_udm.target.hostname |
Dipetakan dari log perubahan |
"relay_data" |
event.idm.ready_only_udm.additional.fields |
Dipetakan dari log perubahan |
"delays_data" |
event.idm.ready_only_udm.additional.fields |
Dipetakan dari log perubahan |
"delay_data" |
event.idm.ready_only_udm.additional.fields |
Dipetakan dari log perubahan |
and "dns_data" |
event.idm.ready_only_udm.additional.fields |
Dipetakan dari log perubahan |
bytes_sent |
event.idm.ready_only_udm.network.sent_bytes |
Dipetakan dari log perubahan |
bytes_received |
event.idm.ready_only_udm.network.received_bytes |
Dipetakan dari log perubahan |
response_code |
event.idm.ready_only_udm.network.http.response_code |
Dipetakan dari log perubahan |
principal_user_name |
principal.user.userid |
Dipetakan dari log perubahan |
remote |
principal.ip |
Dipetakan dari log perubahan |
method |
network.http.method |
Dipetakan dari log perubahan |
path |
principal.file.full_path |
Dipetakan dari log perubahan |
code |
additional.fields |
Dipetakan dari log perubahan |
size |
principal.file.size |
Dipetakan dari log perubahan |
agent |
network.http.user_agent |
Dipetakan dari log perubahan |
az |
principal.location.name |
Dipetakan dari log perubahan |
ec2_instance_id |
principal.asset.product_object_id |
Dipetakan dari log perubahan |
private_ip |
principal.ip |
Dipetakan dari log perubahan |
ProviderName |
additional.fields |
Dipetakan dari log perubahan |
Version |
additional.fields |
Dipetakan dari log perubahan |
Task |
additional.fields |
Dipetakan dari log perubahan |
EventRecordID |
additional.fields |
Dipetakan dari log perubahan |
ThreadID |
additional.fields |
Dipetakan dari log perubahan |
messageType |
target.resource.attribute.labels |
Dipetakan dari log perubahan |
owner |
principal.user.userid |
Dipetakan dari log perubahan |
logevent.id |
metadata.product_log_id |
Dipetakan dari log perubahan |
logGroup |
secu_result.about.resource.name |
Dipetakan dari log perubahan |
logStream |
secu_result.about.resource.attribute.labels |
Dipetakan dari log perubahan |
ip_addr |
principal.ip |
Dipetakan dari log perubahan |
gd |
secu_result.description |
Dipetakan dari log perubahan |
process |
target.application |
Dipetakan dari log perubahan |
pid |
target.process.pid |
Dipetakan dari log perubahan |
status_code |
network.http.response_code |
Dipetakan dari log perubahan |
url |
network.http.referral_url |
Dipetakan dari log perubahan |
useragent |
network.http.user_agent |
Dipetakan dari log perubahan |
request |
additional.fields |
Dipetakan dari log perubahan |
tls_version |
network.tls.version |
Dipetakan dari log perubahan |
hostname_is |
principal.hostname |
Dipetakan dari log perubahan |
referrer |
network.http.referral_url |
Dipetakan dari log perubahan |
metadata.event_type |
USER_LOGIN |
Dipetakan dari log perubahan |
metadata.event_type |
PROCESS_UNCATEGORIZED |
Dipetakan dari log perubahan |
srcIP |
principal.ip |
Dipetakan dari log perubahan |
username |
principal.user.user_display_name |
Dipetakan dari log perubahan |
type_syscall_props.msg |
additional.fields |
Dipetakan dari log perubahan |
sw", "sw_type", and "subj |
security_result.detection_fields |
Dipetakan dari log perubahan |
indicator.SYSCALL |
security_result.detection_fields |
Dipetakan dari log perubahan |
exe |
principal.process.file.full_path |
Dipetakan dari log perubahan |
target.user.userid |
principal.user.userid |
Dipetakan dari log perubahan |
target_user_name |
target.user.userid |
Dipetakan dari log perubahan |
field |
field33 |
Dipetakan dari log perubahan |
fp |
network.tls.client.certificate.sha256 |
Dipetakan dari log perubahan |
pid |
principal.process.pid |
Dipetakan dari log perubahan |
syslog-tag |
security_result.detection_fields |
Dipetakan dari log perubahan |
inter_ip |
intermediary.ip |
Dipetakan dari log perubahan |
inter_hostname |
intermediary.hostname |
Dipetakan dari log perubahan |
grp |
target.group.group_display_name |
Dipetakan dari log perubahan |
id |
about.user.userid |
Dipetakan dari log perubahan |
acct |
target.user.user_display_name |
Dipetakan dari log perubahan |
uid |
principal.user.userid |
Dipetakan dari log perubahan |
auid |
about.user.userid |
Dipetakan dari log perubahan |
auid |
target.user.userid |
Dipetakan dari log perubahan |
op" and "id |
security_result.summary |
Dipetakan dari log perubahan |
op" and "acct |
security_result.summary |
Dipetakan dari log perubahan |
labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", and "Computer |
principal.hostname |
Dipetakan dari log perubahan |
HostIP |
principal.ip |
Dipetakan dari log perubahan |
ProcessID" and "jsonPayload._PID |
principal.process.pid |
Dipetakan dari log perubahan |
SyslogMessage |
metadata.description |
Dipetakan dari log perubahan |
TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", and "Facility |
additional.fields |
Dipetakan dari log perubahan |
SeverityLevel |
security_result.severity |
Dipetakan dari log perubahan |
SourceSystem |
principal.platform |
Dipetakan dari log perubahan |
jsonPayload._COMM |
principal.application |
Dipetakan dari log perubahan |
jsonPayload._EXE |
target.process.file.full_path |
Dipetakan dari log perubahan |
jsonPayload._AUDIT_FIELD_FILE |
target.file.full_path |
Dipetakan dari log perubahan |
jsonPayload._AUDIT_FIELD_HASH |
target.file.hash |
Dipetakan dari log perubahan |
jsonPayload._AUDIT_SESSION |
network.session_id |
Dipetakan dari log perubahan |
jsonPayload._PPID |
principal.process.parent_process.pid |
Dipetakan dari log perubahan |
jsonPayload._AUDIT_FIELD_A0", "jsonPayload._AUDIT_FIELD_A1", "jsonPayload._AUDIT_FIELD_A2", "jsonPayload._AUDIT_FIELD_A3", "jsonPayload._BOOT_ID", and "jsonPayload._AUDIT_FIELD_EXIT |
security_result.detection_fields |
Dipetakan dari log perubahan |
id |
target.user.userid |
Dipetakan dari log perubahan |
ID |
target.user.user_display_name |
Dipetakan dari log perubahan |
user_name |
principal.user.userid |
Dipetakan dari log perubahan |
principal_user_userid |
principal.user.userid |
Dipetakan dari log perubahan |
vendor_name |
Linux |
Dipetakan dari log perubahan |
product_name |
AuditD |
Dipetakan dari log perubahan |
ip |
target.ip |
Dipetakan dari log perubahan |
success |
security_result.summary |
Dipetakan dari log perubahan |
syscall", "exit", "tty", "a0", "a1", "a2", "a3 |
security_result.about.labels |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.