Container Security: Monitoring Docker Events dan Activity dengan Wazuh

Wazuh SIEM dapat digunakan untuk me-monitoring Docker container, mendeteksi aktivitas mencurigakan dan serangan web secara real-time.

Pendahuluan

Docker telah menjadi teknologi containerization yang sangat populer di kalangan developer dan DevOps engineer. Namun, dengan semakin luasnya penggunaan Docker dalam production environment, kebutuhan akan monitoring dan keamanan container juga semakin meningkat. Di sinilah Wazuh dapat digunakan untuk melakukan monitoring pada Docker.

Dalam artikel ini, kita akan membahas bagaimana menggunakan Wazuh untuk monitoring Docker events dan activities secara real-time, serta implementasinya.

Apa itu Wazuh?

Wazuh adalah platform keamanan open-source yang menyatukan kemampuan XDR (Extended Detection and Response) dan SIEM (Security Information and Event Management) yang menyediakan berbagai capabilities untuk container security, termasuk:

  • Centralized logging - Mengumpulkan log dari berbagai sumber
  • Real-time monitoring - Monitoring aktivitas secara real-time
  • Vulnerability scanning - Scan kerentanan security
  • Incident response automation - Otomasi respons terhadap insiden keamanan

Prerequisites

Sebelum memulai, pastikan sudah memiliki:

  1. Docker Server - Server yang menjalankan Docker engine
  2. Wazuh Agent - Agent Wazuh terinstall pada Docker server
  3. Wazuh Server - Wazuh agent sudah terdaftar ke Wazuh server

Langkah-langkah Konfigurasi

Step 1: Install Python Docker Library

Sebelum menginstall library, sebaiknya kita melakukan setup virtual environment terlebih dahulu supaya tidak mengganggu package global system.

1
2
3
cd /var/ossec/wodles/docker
python3 -m venv venv
source venv/bin/activate

Instal library Docker untuk Python yang diperlukan Wazuh Docker listener.

1
2
3
4
5
# Untuk Python 3.8–3.10
(venv) pip3 install docker==7.1.0 urllib3==1.26.20 requests==2.32.2

# Untuk Python 3.11–3.12
(venv) pip3 install docker==7.1.0 urllib3==1.26.20 requests==2.32.2

Info

Penggunaan virtual environment sangat direkomendasikan untuk mengisolasi dependencies dan menghindari konflik dengan package system.

Update Shebang pada Script DockerListener

Edit file /var/ossec/wodles/docker/DockerListener:

1
nano /var/ossec/wodles/docker/DockerListener

Ubah baris pertama dari:

1
#!/usr/bin/env python3

Menjadi path ke venv:

1
#!/var/ossec/wodles/docker/venv/bin/python3

Uji Coba DockerListener

Uji coba jalankan binary DockerListener, pastikan terhubung ke Docker service.

1
sudo /var/ossec/wodles/docker/DockerListener

Step 2: Konfigurasi Wazuh Agent

Tambahkan konfigurasi berikut ke file /var/ossec/etc/ossec.conf pada Docker server:

1
2
3
<wodle name="docker-listener">
  <disabled>no</disabled>
</wodle>

Restart Wazuh agent untuk menerapkan perubahan:

1
systemctl restart wazuh-agent

Step 3: Konfigurasi Advanced (Optional)

Untuk konfigurasi yang lebih advanced, Anda dapat menggunakan berbagai opsi scheduling:

1
2
3
4
5
6
<wodle name="docker-listener">
  <interval>10m</interval>
  <attempts>5</attempts>
  <run_on_start>no</run_on_start>
  <disabled>no</disabled>
</wodle>

Penjelasan konfigurasi:

  • interval: Waktu tunggu untuk rerun listener jika gagal
  • attempts: Jumlah percobaan eksekusi listener jika gagal
  • run_on_start: Jalankan listener segera saat Wazuh agent start
  • disabled: Enable/disable Docker listener

Use Case 1: Monitoring User Interaction dengan Docker Container

Mari kita test monitoring Docker events dengan melakukan berbagai operasi container.

1. Jalankan Container

Jalankan container sederhana menggunakan image httpd:

1
docker run -d --name test-container httpd

Hasil monitoring dapat kita lihat pada Wazuh dashboard di module Threat Hunting atau Docker listener dashboard.

2. Pause, Resume, Stop Container

Lakukan operasi pause, unpause, dan stop pada container:

1
2
3
docker pause test-container
docker unpause test-container
docker stop test-container

Setiap operasi ini akan tercatat di Wazuh dashboard dengan detail event yang lengkap.

3. Remove Container dan Hapus Image

Hapus container dan image yang sudah tidak digunakan:

1
2
docker rm test-container
docker rmi httpd

Event removal juga akan terekam di Wazuh.

Use Case 2: Monitoring Container Runtime untuk Deteksi Web Attacks

Use case ini menunjukkan bagaimana Wazuh dapat monitoring runtime logs container web untuk mendeteksi serangan web, seperti SQL Injection.

Konfigurasi Wazuh Agent

Tambahkan konfigurasi berikut ke /var/ossec/etc/ossec.conf pada Docker server:

1
2
3
4
<localfile>
  <log_format>syslog</log_format>
  <location>/var/lib/docker/containers/*/*-json.log</location>
</localfile>

Restart Wazuh agent:

1
systemctl restart wazuh-agent

Konfigurasi Wazuh Server

Tambahkan decoder berikut ke /var/ossec/etc/decoders/local_decoder.xml pada Wazuh server:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<decoder name="web-accesslog-docker">
  <parent>json</parent>
  <type>web-log</type>
  <use_own_name>true</use_own_name>
  <prematch offset="after_parent">^log":"\S+ \S+ \S+ \.*[\S+ \S\d+] \.*"\w+ \S+</prematch>
  <regex offset="after_parent">^log":"(\S+) \S+ \S+ \.*[\S+ \S\d+] \.*"(\w+) (\S+)</regex>
  <order>srcip,protocol,url,id</order>
</decoder>

<decoder name="json">
  <parent>json</parent>
  <use_own_name>true</use_own_name>
  <plugin_decoder>JSON_Decoder</plugin_decoder>
</decoder>

Restart Wazuh manager:

1
systemctl restart wazuh-manager

Info

Decoder berfungsi untuk mem-parsing log dari format JSON Docker menjadi field-field yang dapat dianalisis oleh Wazuh.

Testing SQL Injection Detection

Jalankan web container dengan nginx:

1
docker run --name test-container -p 80:80 -d nginx

Simulasi SQL injection attack:

1
curl -XGET "http://<WEB_IP_ADDRESS>/users/?id=SELECT+*+FROM+users"

Hasil Deteksi

Alert akan muncul pada Wazuh Dashboard dengan detail lengkap mengenai serangan SQL Injection yang terdeteksi:

Detail alert akan menampilkan informasi seperti:

  • Source IP attacker
  • URL yang diserang
  • Payload SQL Injection
  • Timestamp serangan
  • Rule ID dan severity level

Referensi