Wazuh di Docker: Amankan Dasbor Anda dengan Let's Encrypt dan Deploy Agent dengan Kubernetes Daemonset

· 6 min read
Wazuh di Docker: Amankan Dasbor Anda dengan Let's Encrypt dan Deploy Agent dengan Kubernetes Daemonset
Photo by Jacob Miller / Unsplash

Wazuh adalah platform keamanan sumber terbuka yang bangga menghadirkan keamanan titik akhir yang tangguh, intelijen ancaman tingkat lanjut, operasi keamanan yang efisien, dan keamanan cloud yang komprehensif. Platform ini menyediakan uraian terperinci tentang masalah keamanan untuk sumber daya lokal dan cloud Anda. Baca selengkapnya di sini .

Artikel ini bertujuan untuk memberikan panduan langsung untuk menyiapkan Wazuh menggunakan Docker , mengamankan domain Wazuh Dashboard dengan Let's Encrypt, dan menyebarkan agen yang diperlukan pada mesin virtual (VM).

Prasyarat:

  • Docker dan Docker Compose terinstal di server Anda .
  • Nama domain terdaftar untuk Wazuh Dashboard.
  • Sebuah Klaster Kubernetes.

Wazuh terdiri dari tiga layanan: Wazuh Manager, Wazuh Indexer, dan Wazuh Dashboard. Ketiga komponen ini akan diinstal menggunakan berkas Docker Compose. Sebelum proses instalasi, pastikan port-port berikut terbuka di VM;

  • 443 untuk koneksi HTTPS
  • 5601 Wazuh Dashboard port
  • 1514 , 1515 , 514 /udp, 55000 digunakan oleh Manajer Wazuh untuk komunikasi
  • 9200 Wazuh Indexer port

Disarankan untuk meningkatkan `max_map_count` pada VM, karena banyaknya area yang dipetakan memori yang dibuat oleh Wazuh Indexer.

Untuk menambah jumlah ini, jalankan perintah ini pada VM:

sysctl -w vm.max_map_count=262144

Jika Anda tidak menetapkan max_map_count pada host Anda, pengindeks Wazuh TIDAK akan berfungsi dengan baik.

Untuk memulai, klon repositori resmi Wazuh dengan perintah ini:

git clone https://github.com/wazuh/wazuh-docker.git

Berikut versi instruksi yang lebih lengkap:

Dalam folder single-node/ , perbarui tag versi untuk gambar wazuh/wazuh-manager , wazuh/wazuh-indexer, dan wazuh/wazuh-dashboard ke 4.8.1 dalam file docker-compose.yml .

Saat saya menulis panduan ini, versi docker yang tersedia untuk citra Wazuh adalah 4.8.1 .

Tahap selanjutnya adalah membuat sertifikat yang dibutuhkan oleh sumber daya Wazuh untuk komunikasi yang tepat.

Dalam folder single-node/ , terdapat generate-indexer-certs.yml yang merupakan file docker compose yang digunakan untuk membuat sertifikat.

Untuk membuat sertifikat Wazuh, jalankan perintah di bawah ini dari folder single-node/ :

docker-compose -f generate-indexer-certs.yml run --rm generator

Sertifikat yang dihasilkan disimpan dalam folder wazuh_indexer_ssl_certs/ yang digunakan oleh sumber daya Wazuh di bagian volume file docker-compose.yml .

Untuk memulai penerapan Wazuh, jalankan perintah ini dari folder single-node/ :

docker-compose up

Proses startup memakan waktu sekitar satu menit. Anda dapat mengakses dasbor Wazuh di: https://virtual-machine-ip

Pada titik ini, saat Anda mengunjungi https://virtual-machine-ip Anda akan disambut dengan:

gambar

Ini berarti dasbor kami tidak aman. Untuk mengamankannya, kami akan menggunakan Let's Encrypt untuk membuat sertifikat dan mengaktifkan HTTPS.

Sebelum kita masuk ke pengamanan URL, kita perlu menghubungkan IP VM tempat Wazuh dihosting ke domain terdaftar.

Menghubungkan IP ke domain berada di luar cakupan artikel ini, tetapi jika Anda menggunakan domain dengan Namecheap, Anda dapat mempelajari caranya di sini . Setelah selesai, kembali ke artikel ini untuk membuat Sertifikat Let's Encrypt.

Artikel yang bagus oleh tim Wazuh tentang cara membuat sertifikat Let's Encrypt untuk dasbor Wazuh akan memandu Anda membuat sertifikat untuk Wazuh yang diterapkan langsung di VM.

Lanjutkan membaca setelah sertifikat dibuat.

Karena Wazuh di-deploy dengan Docker, langkah-langkah yang dijelaskan di bagian artikel ini tidak berlaku. Untuk mengonfigurasi sertifikat yang dibuat dengan dasbor Wazuh, volume Docker digunakan untuk memetakan sertifikat yang dihasilkan ke lokasi yang dibutuhkan oleh kontainer dasbor Wazuh.

Ikuti langkah-langkah berikut untuk memetakan sertifikat yang dihasilkan ke wadah dasbor Wazuh:

Ubah pengguna dan izin file arsip:

# change owner to UID used in running the docker compose command
sudo chown -R 1000:1000 /etc/letsencrypt/archive/<YOUR_DOMAIN_NAME>/

# change permission of the files
sudo chmod -R 500 /etc/letsencrypt/archive/<YOUR_DOMAIN_NAME>/fullchain1.pem
sudo chmod 440 /etc/letsencrypt/archive/<YOUR_DOMAIN_NAME>/privkey1.pem

Gunakan tautan lunak untuk menautkan sertifikat yang dihasilkan ke lokasi yang dipetakan ke lokasi sertifikat kontainer:

# change into the single-node/config folder
cd single-node/config

# create letsencrypt/ folder
mkdir letsencrypt

# change into the letsencrypt
cd letsencrypt

# link the certificate
ln -s /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/privkey.pem privkey.pem
ln -s /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/fullchain.pem fullchain.pem

Hentikan kontainer docker agar tidak berjalan:

docker compose down

Tambahkan file fullchain.pem dan privkey.pem di volume kontainer dasbor Wazuh:

# create a backup for your docker compose file (wazuh/single-node)
cp docker-compose.yml docker-compose-bk.yml

# edit dicker-compose file
- ./config/letsencrypt/privkey.pem:/usr/share/wazuh-dashboard/lets-encrypt/privkey.pem # New certificate added
- ./config/letsencrypt/fullchain.pem:/usr/share/wazuh-dashboard/lets-encrypt/fullchain.pem # New certificate added
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard.pem
- ./config/wazuh_indexer_ssl_certs/wazuh.dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard-key.pem
- ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem
- ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml
- ./config/wazuh_dashboard/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
- wazuh-dashboard-config:/usr/share/wazuh-dashboard/data/wazuh/config
- wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom

Edit file opensearch_dashboards.yml  untuk merujuk sertifikat yang dibuat:

server.host: 0.0.0.0
server.port: 5601
opensearch.hosts: https://wazuh.indexer:9200
opensearch.ssl.verificationMode: certificate
opensearch.requestHeadersWhitelist: ["securitytenant","Authorization"]
opensearch_security.multitenancy.enabled: false
opensearch_security.readonly_mode.roles: ["kibana_read_only"]
server.ssl.enabled: true
server.ssl.key: "/usr/share/wazuh-dashboard/lets-encrypt/privkey.pem" # Newly referenced certificate
server.ssl.certificate: "/usr/share/wazuh-dashboard/lets-encrypt/fullchain.pem" # Newly referenced certificate
opensearch.ssl.certificateAuthorities: ["/usr/share/wazuh-dashboard/certs/root-ca.pem"]
uiSettings.overrides.defaultRoute: /app/wz-home

Siapkan Perpanjangan Sertifikat Otomatis:

# Edit the /etc/letsencrypt/renewal/<YOUR_DOMAIN_NAME>.conf file

# renew_before_expiry = 30 days
version = 2.11.0
archive_dir = /etc/letsencrypt/archive/<YOUR_DOMAIN_NAME>
cert = /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/cert.pem
privkey = /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/privkey.pem
chain = /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>chain.pem
fullchain = /etc/letsencrypt/live/<YOUR_DOMAIN_NAME>/fullchain.pem

# Options used in the renewal process
[renewalparams]
account = 4a622a9****************c
authenticator = standalone
server = https://acme-v02.api.letsencrypt.org/directory
key_type = ecdsa
renew_hook = docker restart wazuh_dashboard

Uji kait pembaruan dengan menjalankan perintah di bawah ini:

certbot renew --dry-run

Mulai ulang penerapan Wazuh:

# wazuh/single-node/

docker-compose up

Dasbor harus diamankan setelah penerapan dimulai ulang. Nama pengguna dan kata sandi default untuk dasbor masing-masing adalah admin dan SecretPassword .

gambar

Menyebarkan Agen Wazuh

Menerapkan Wazuh Manager, Indexer, dan Dashboard, serta mengamankan domainnya, hanyalah salah satu aspek dari pengaturan. Untuk memantau mesin virtual secara efektif, agen Wazuh harus diinstal di setiap mesin. Untuk informasi lebih lanjut tentang agen Wazuh, Anda dapat membaca artikel ini .

Untuk menerapkan agen ini di klaster Kubernetes, sebuah daemonset digunakan, yang memastikan agen berjalan di semua node klaster. Untuk memulai proses penerapan, sebuah daemonset.yml dibuat, yang nilainya dapat diperoleh dari gist ini . Sebelum membuat daemonset, beberapa variabel lingkungan harus diberi nilai:

  • JOIN_MANAGER_MASTER_HOST : Ini adalah domain/IP tempat penerapan Wazuh berjalan.
  • JOIN_MANAGER_WORKER_HOST : Ini memiliki nilai yang sama dengan variabel JOIN_MANAGER_MASTER_HOST .
  • JOIN_MANAGER_PASSWORD : Ini adalah kata sandi API. Nilai defaultnya adalah MyS3cr37P450r.*-Jika ingin mengubah kata sandi ini, Anda dapat memeriksa artikel ini .
  • JOIN_MANAGER_USER : Ini adalah Nama Pengguna API. Nilai defaultnya adalah wazuh-wui

Setelah variabel di atas diberi nilainya, Anda dapat menjalankan perintah ini di kluster Kubernetes Anda:

kubectl apply -f daemonset.yml

Dari dasbor Wazuh Anda, Anda akan mendapatkan sesuatu yang mirip dengan gambar di bawah ini.

gambar

Jika Anda mengikuti langkah-langkah di atas, Anda seharusnya dapat berhasil menyebarkan aplikasi Wazuh menggunakan docker, mengamankan domainnya, dan juga menyebarkan agen pada VM yang akan dipantau di Kubernetes.

Referensi

Sekian dan Terimakasih