Episode ini membahas enkripsi komunikasi agent dengan manager. Kita memahami mTLS dengan sertifikat X.509, perbedaan enrollment otomatis dan manual, protokol UDP versus TCP, peran header dan shared key, serta alasan jangan mengekspos manager ke internet tanpa hardening.

Di episode 15, kita mengamankan API dan dashboard. Sekarang kita membahas jalur yang paling banyak menghubungkan komponen: komunikasi antara agent dan manager. Setiap host yang kita pantau berbicara dengan manager secara terus menerus, dan jalur inilah yang paling sering diremehkan.
Bayangkan jika komunikasi agent tidak terenkripsi. Siapa pun yang bisa menyadap jaringan bisa membaca event keamanan kita, memodifikasi data, atau bahkan menyamar sebagai agent. Semua kerja keras mendeteksi ancaman menjadi sia-sia.
Di episode 16 ini, kita akan membahas cara Wazuh mengamankan jalur ini: mTLS dengan sertifikat X.509, enrollment otomatis dan manual, protokol UDP versus TCP, peran header dan shared key, serta alasan jangan pernah mengekspos manager ke internet tanpa hardening.
Sebelum masuk ke detail teknis, kita pahami dulu alur komunikasinya. Agent terhubung ke manager lewat dua port:
Keduanya dilayani oleh manager. Pada Wazuh 4.x, keamanan bertumpu pada sertifikat X.509. Setiap agent punya sertifikat yang diterbitkan oleh CA manager, sehingga kedua belah pihak bisa saling memverifikasi identitas.
Komunikasi agent-manager memakai mutual TLS. Artinya bukan hanya agent yang memverifikasi manager, tapi manager juga memverifikasi agent. Ini mencegah serangan di mana penyerang menyamar sebagai manager untuk mencuri event.
Rantai sertifikatnya sederhana:
Dengan model ini, satu sertifikat yang bocor hanya memengaruhi agent terkait, bukan seluruh infrastructure.
Cara paling umum menambahkan agent adalah enrollment otomatis. Saat agent pertama kali dijalankan, ia menghubungi port 1515 dan meminta sertifikat. Manager menjawab dan langsung menerbitkan sertifikat untuk agent tersebut.
Pada instalasi all-in-one, enrollment otomatis sudah aktif secara default. Perintah install yang ditampilkan dashboard tinggal dijalankan di host target.
WAZUH_MANAGER='10.0.1.11' \
WAZUH_AGENT_NAME='web-server-01' \
curl -s https://10.0.1.11:443/wazuh-agent.sh | bashSetelah itu, daemon agent melakukan handshake dengan manager menggunakan flag -i, yang memicu auto-enrollment.
/var/ossec/bin/agent-auth -m 10.0.1.11 -A web-server-01 -i::: code-group
Enrollment otomatis nyaman, tapi ada satu syarat penting: port 1515 harus bisa diakses agent. Di lingkungan yang tertutup, pendekatan ini sering diganti dengan enrollment manual.
Enrollment manual cocok untuk lingkungan dengan kebijakan keamanan ketat. Alih-alih membuka port 1515 ke semua agent, kita menerbitkan key di sisi manager, lalu memasangnya di agent secara manual.
Di Wazuh versi lama, ini dilakukan lewat manage_agents. Di Wazuh 4.x, alur manualnya menggunakan API: kita membuat key enrollment sementara, mengirimkannya ke agent, lalu menonaktifkannya setelah terpakai.
{
"name": "web-server-01",
"ip": "any"
}Key yang dihasilkan hanya berlaku sekali. Setelah agent berhasil terdaftar, key otomatis gugur. Ini mencegah penyalahgunaan key yang sudah dipakai.
Info
Enrollment otomatis dan manual sama-sama menghasilkan sertifikat X.509 untuk agent. Perbedaannya ada di proses distribusi kepercayaan, bukan di mekanisme enkripsi yang dipakai setelah terdaftar.
Event agent dikirim lewat port 1514. Pertanyaannya, pakai UDP atau TCP? Keduanya bisa, dan pilihannya memengaruhi keandalan.
Default Wazuh memakai UDP. Untuk environment yang mengutamakan integritas, banyak yang beralih ke TCP. Konfigurasi dilakukan di sisi manager pada bagian <remote>.
<remote>
<connection>secure</connection>
<port>1514</port>
<protocol>tcp</protocol>
</remote>Perlu diingat, nilai <connection> harus konsisten antara manager dan agent. Jika manager memakai secure dengan protocol tcp, agent dikonfigurasi di file ossec.conf masing-masing.
<client>
<server>
<address>10.0.1.11</address>
<port>1514</port>
<protocol>tcp</protocol>
</server>
</client>::: code-group
Setiap event yang dikirim agent berisi header berformat tetap. Header ini membawa metadata seperti agent ID dan nama, dan menjadi bagian penting dari integritas komunikasi.
Selain sertifikat, komunikasi legacy Wazuh juga bisa memakai shared key. Shared key adalah secret simetris yang dibagi antara manager dan agent. Pada arsitektur 4.x, peran shared key sebagian besar sudah digantikan sertifikat X.509, tapi pemahaman konsepnya tetap berguna, terutama saat membaca dokumentasi lama atau menangani cluster.
Kunci terpenting yang harus diingat: shared key tidak boleh ditransmisikan lewat jaringan tanpa enkripsi. Begitu key berpindah, seluruh komunikasi bisa disandera.
Manager adalah target paling menarik di seluruh stack. Ia memegang semua event, sertifikat, dan kontrol ke agent. Mengeksposnya langsung ke internet tanpa hardening adalah undangan untuk diserang.
Prinsip yang kami pegang:
Port yang aman untuk dibuka adalah 443 untuk enrollment script, dan itu pun sebaiknya dibatasi. Untuk agent yang tersebar di lokasi berbeda, VPN lebih baik daripada membuka manager langsung.
Setelah semua konfigurasi, kita perlu memastikan komunikasi benar-benar berjalan dengan mTLS. Cara paling cepat adalah melihat detail koneksi di sisi manager.
ss -tn | grep 1514Output akan menunjukkan koneksi TCP aktif dari agent ke manager. Untuk memeriksa sertifikat yang dipakai, cek berkas sertifikat di direktori agent.
openssl x509 -in /var/ossec/etc/sslmanager.cert -noout -subject::: code-group
Jika subject sertifikat sesuai nama agent, komunikasi sudah memakai identitas yang benar.
Di episode 16 ini, kita membahas enkripsi dan keamanan komunikasi agent-manager. Kita memahami mTLS dengan sertifikat X.509, perbedaan enrollment otomatis dengan flag -i dan enrollment manual dengan key, protokol UDP versus TCP, peran header dan shared key, serta pentingnya tidak mengekspos manager ke internet.
Inti yang harus dibawa pulang:
-i.Komunikasi sudah aman, sekarang giliran kecerdasannya. Di episode 17, kita akan membahas custom rules dan advanced detection: membuat rule untuk use case spesifik, variabel, alert overrides, korelasi lintas agent, sampai enrichment GeoIP dan threat intel. Sampai jumpa!