Mengumpulkan log Apache
Dokumen ini menjelaskan cara menyerap log Apache ke Google Security Operations menggunakan Bindplane. Kode parser pertama-tama mencoba menguraikan pesan log mentah sebagai JSON. Jika gagal, fungsi ini akan menggunakan ekspresi reguler (pola grok
) untuk mengekstrak kolom dari pesan berdasarkan format log Apache umum.
Sebelum memulai
- Pastikan Anda memiliki instance Google SecOps.
- Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
. - Jika berjalan di belakang proxy, pastikan port firewall terbuka.
- Pastikan Anda memiliki akses istimewa ke instance Apache.
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
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 ini.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
Edit file
config.yaml
sebagai 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: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'APACHE' raw_log_field: body 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
<customer_id>
dengan ID pelanggan yang sebenarnya.Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi Syslog di Apache
- Login ke server Ubuntu menggunakan SSH.
Buat file di
/etc/rsyslog.d/
bernama02-apache2.conf
:vim /etc/rsyslog.d/02-apache2.conf
Tambahkan kode berikut ke file:
module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog") input(type="imfile" File="/var/log/apache2/access.log" Tag="http_access" Severity="info" Facility="local6") Local6.info @<bindplane-agnet-ip>:<vindplane-agent-port> module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog") input(type="imfile" File="/var/log/apache2/error.log" Tag="http_error"
- Ganti
bindplane-agent-ip>
danbindplane-agent-port
dengan alamat IP dan port yang dikonfigurasi untuk Bindplane Agent - Jika Anda menggunakan protokol TCP, tambahkan
@
lain ke baris host sehingga akan terlihat seperti ini:@@<bindplane-agnet-ip>:<vindplane-agent-port>
.
- Ganti
Mulai ulang layanan RSyslog:
sudo service rsyslog restart
Tabel Pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
byte | network.received_bytes | Byte yang diterima dari klien. |
byte | network.sent_bytes | Byte yang dikirim ke klien. |
bytes_out | network.sent_bytes | Byte yang dikirim ke klien. |
bytes_received | network.received_bytes | Byte yang diterima dari klien. |
Konten | network.http.method | Metode HTTP yang diekstrak dari kolom "Content". |
Konten | target.url | URL target diekstrak dari kolom "Konten". |
kue | additional.fields.value.string_value | Nilai kolom "cookie". |
dest_ip | target.ip | Alamat IP target. |
dest_name | target.hostname | Nama host target. |
dest_port | target.port | Port target. |
deskripsi | metadata.description | Deskripsi peristiwa. |
duration_microseconds | additional.fields.value.string_value | Nilai kolom "duration_microseconds". |
file_full_path | target.file.full_path | Jalur lengkap file target. |
hostname | target.hostname | Nama host target. |
http_content_type | additional.fields.value.string_value | Nilai kolom "http_content_type". |
http_host | principal.hostname | Nama host prinsipal. |
http_method | network.http.method | Metode HTTP. |
http_referrer | network.http.referral_url | URL perujuk HTTP. |
http_user_agent | network.http.user_agent | Agen pengguna HTTP. |
ID | metadata.id | ID acara. |
insertId | metadata.product_log_id | ID log produk. |
ip | principal.ip | Alamat IP kepala sekolah. |
jsonPayload.cIP | target.ip | Alamat IP target. |
jsonPayload.cPort | target.port | Port target. |
jsonPayload.csBytes | network.sent_bytes | Byte yang dikirim ke klien. |
jsonPayload.csMethod | network.http.method | Metode HTTP. |
jsonPayload.csMimeType | target.file.mime_type | Jenis MIME file target. |
jsonPayload.csReferer | network.http.referral_url | URL perujuk HTTP. |
jsonPayload.csURL | target.url | URL target. |
jsonPayload.csUserAgent | network.http.user_agent | Agen pengguna HTTP. |
jsonPayload.sHierarchy | additional.fields.value.string_value | Nilai kolom "sHierarchy". |
jsonPayload.sHostname | principal.hostname | Nama host prinsipal. |
jsonPayload.sIP | principal.ip | Alamat IP kepala sekolah. |
jsonPayload.scBytes | network.received_bytes | Byte yang diterima dari klien. |
jsonPayload.scHTTPStatus | network.http.response_code | Kode respons HTTP. |
jsonPayload.scResultCode | additional.fields.value.string_value | Nilai kolom "scResultCode". |
LastStatus | network.http.response_code | Kode respons HTTP. |
log_level | security_result.severity | Tingkat keparahan hasil keamanan. |
logName | security_result.category_details | Detail kategori hasil keamanan. |
metode | network.http.method | Metode HTTP. |
pid | principal.process.pid | ID proses prinsipal. |
Port | target.port | Port target. |
proto | network.application_protocol | Protokol aplikasi. |
perujuk | network.http.referral_url | URL perujuk HTTP. |
RemoteHost | principal.ip | Alamat IP kepala sekolah. |
RemoteUser | principal.user.userid | ID pengguna prinsipal. |
resource.labels.instance_id | target.resource.product_object_id | ID objek produk dari resource target. |
resource.labels.project_id | target.resource.attribute.labels.value | Nilai label "project_id". |
resource.labels.zone | target.resource.attribute.cloud.availability_zone | Zona ketersediaan resource target. |
resource.type | target.resource.resource_type | Jenis resource target. |
respons | network.http.response_code | Kode respons HTTP. |
SizeBytes | network.received_bytes | Byte yang diterima dari klien. |
src_ip | principal.ip | Alamat IP kepala sekolah. |
src_port | principal.port | Port akun utama. |
ssl_cipher | network.tls.cipher | Cipher TLS. |
ssl_version | network.tls.version_protocol | Protokol versi TLS. |
status | network.http.response_code | Kode respons HTTP. |
target | target.url | URL target. |
target_ip | target.ip | Alamat IP target. |
target_port | target.port | Port target. |
waktu | metadata.event_timestamp | Stempel waktu peristiwa. |
uri_path | target.process.file.full_path | Jalur lengkap file target. |
pengguna | principal.user.userid | ID pengguna prinsipal. |
useragent | network.http.user_agent | Agen pengguna HTTP. |
version_protocol | network.tls.version_protocol | Protokol versi TLS. |
Workername | principal.hostname | Nama host prinsipal. |
x_forwarded_for | Nilai header "X-Forwarded-For". | |
metadata.log_type | Nilai ditetapkan ke "APACHE" dalam kode parser. | |
metadata.product_name | Nilai ditetapkan ke "Apache Web Server" dalam kode parser. | |
metadata.vendor_name | Nilai ditetapkan ke "Apache" dalam kode parser. | |
metadata.event_type | Nilai ditentukan berdasarkan keberadaan informasi target dan prinsipal. Jika pokok dan target ada, jenis peristiwa ditetapkan ke "NETWORK_HTTP". Jika hanya prinsipal yang ada, jenis peristiwa disetel ke "STATUS_UPDATE". Jika tidak, nilai ini akan ditetapkan ke "GENERIC_EVENT". | |
additional.fields.key | Kunci ditetapkan ke "keep_alive", "duration_microseconds", "cookie", "http_content_type", "sHierarchy", "scResultCode" dalam kode parser berdasarkan kolom. | |
target.port | Jika kolom "proto" adalah "HTTP", port ditetapkan ke 80. Jika kolom "proto" adalah "HTTPS", port akan ditetapkan ke 443. Jika kolom "proto" adalah "FTP", port akan disetel ke 21. | |
target.resource.attribute.labels.key | Kunci ditetapkan ke "project_id" dalam kode parser. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.