Belajar Keepalived - Secure Traffic Handling
Episode 13 of 23

Belajar Keepalived - Secure Traffic Handling

Episode ini menggabungkan Keepalived dengan firewall iptables dan nftables, melindungi VIP dari IP spoofing lewat reverse path filtering dan sysctl hardening, serta mengamankan endpoint health check agar tidak menjadi pintu masuk penyerang.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Membangun HA tanpa memikirkan keamanan lalu lintas sama saja dengan membuka pintu depan lalu memasang alarm di kamar. Episode 13 mengamankan jalur lalu lintas di sekitar Keepalived: aturan firewall untuk VIP, pertahanan terhadap IP spoofing, dan pengamanan endpoint health check.

Kita akan menulis rule nftables dan iptables yang hanya mengizinkan traffic yang seharusnya, mengonfigurasi sysctl hardening seperti rp_filter dan arp_filter, serta memastikan endpoint /healthz tidak menjadi jalur masuk yang mudah dieksploitasi. Di akhir episode, HA kalian tahan banting dari sisi jaringan.

Firewall untuk Virtual IP

Aturan iptables Dasar untuk VIP

Mulai dengan aturan yang hanya membuka port layanan di VIP:

Aturan iptables untuk VIP
sudo iptables -A INPUT -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d 192.168.1.100 -j DROP
sudo iptables -A INPUT -p vrrp -d 224.0.0.18 -j ACCEPT

Perintah iptables -A INPUT -d 192.168.1.100 membuka port layanan khusus untuk VIP, dan baris terakhir mengizinkan paket VRRP yang masuk ke multicast 224.0.0.18. Tanpa rule VRRP, dua node tidak akan saling mendengar advertisement.

Aturan nftables Setara

Jika kalian memakai nftables, aturan yang setara lebih ringkas:

Aturan nftables untuk VIP
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority filter; policy accept; }'
sudo nft add rule inet filter input ip daddr 192.168.1.100 tcp dport 80 accept
sudo nft add rule inet filter input ip daddr 192.168.1.100 drop
sudo nft add rule inet filter input ip protocol vrrp ip daddr 224.0.0.18 accept

Aturan nft add rule inet filter input ip daddr 192.168.1.100 tcp dport 80 accept membuka port 80 di VIP, dan baris VRRP mengizinkan advertisement. Pastikan rule disimpan persisten dengan nft list ruleset > /etc/nftables.conf.

Mencegah IP Spoofing

Reverse Path Filtering

Kernel Linux bisa menolak paket yang datang dari arah yang tidak sesuai tabel routing. Aktifkan rp_filter:

Aktifkan rp_filter
echo "net.ipv4.conf.all.rp_filter = 1" | sudo tee -a /etc/sysctl.d/99-security.conf
echo "net.ipv4.conf.default.rp_filter = 1" | sudo tee -a /etc/sysctl.d/99-security.conf
sudo sysctl -p /etc/sysctl.d/99-security.conf

net.ipv4.conf.all.rp_filter = 1 menolak paket dengan alamat sumber yang tidak konsisten dengan rute baliknya, memblokir banyak bentuk spoofing dasar.

Mengamankan ARP untuk VIP

Pada skenario multi-node, hindari dua node menjawab ARP untuk VIP secara bersamaan:

Hardening ARP di node backup
echo "net.ipv4.conf.all.arp_filter = 1" | sudo tee -a /etc/sysctl.d/99-security.conf
sudo sysctl -p /etc/sysctl.d/99-security.conf

net.ipv4.conf.all.arp_filter = 1 membuat interface hanya menjawab ARP jika alamatnya benar-benar miliknya di interface tersebut. Ini mencegah node BACKUP menjawab ARP untuk VIP yang sedang dipegang node lain.

Validasi Unicast VRRP

Untuk jaringan tanpa multicast yang aman, batasi VRRP hanya ke node yang dikenal. Gunakan unicast_peer seperti di episode 9 dan blokir multicast VRRP masuk dari interface lain, sehingga advertisement tidak bisa berasal dari node asing.

Mengamankan Endpoint Health Check

Health Check yang Terbuka Semata-mata untuk Monitoring

Endpoint /healthz sering diekspos terlalu luas. Batasi aksesnya hanya dari node Keepalived:

Batasi /healthz dari node HA
sudo iptables -A INPUT -d 10.0.0.11 -p tcp --dport 8080 -s 192.168.1.10 -j ACCEPT
sudo iptables -A INPUT -d 10.0.0.11 -p tcp --dport 8080 -j DROP

Aturan iptables -A INPUT -s 192.168.1.10 hanya mengizinkan health check dari IP node HA, lalu menjatuhkan permintaan lain. Endpoint monitoring tidak lagi menjadi pintu publik.

Auth pada Endpoint Health

Jika memungkinkan, beri authentication pada endpoint health check agar hanya pihak berwenang yang bisa memicunya. Aplikasi bisa mengecek header atau token sederhana, dan Keepalived mengirimkannya lewat HTTP_GET:

Health check dengan header
real_server 10.0.0.11 8080 {
  weight 1
  HTTP_GET {
    url {
      path /healthz
      status_code 200
    }
    connect_timeout 3
    nb_get_retry 3
  }
}

Blok HTTP_GET memverifikasi path /healthz mengembalikan 200. Jika endpoint butuh token, ekspor lewat variabel environment pada script health check custom — jangan menaruh token di konfigurasi yang disimpan dalam Git.

Firewall di Sisi Layanan Lain

Jangan lupakan sisi backend. Rule firewall harus konsisten di kedua arah: Keepalived melindungi VIP dari luar, dan backend melindungi dirinya dari akses tak dikenal. Pastikan hanya subnet layanan dan subnet management yang bisa mencapai port aplikasi, serta semua node HA hanya menerima koneksi yang memang diperlukan untuk menjalankan perannya.

Penutup

Episode 13 membuat HA kalian susah ditembus dari arah jaringan: firewall yang hanya membuka apa yang diperlukan untuk VIP, rp_filter yang menolak spoofing, ARP yang tidak membocorkan VIP ke node salah, dan endpoint health check yang terkunci.

Inti yang harus dibawa pulang:

  • Selalu izinkan paket VRRP, baik multicast maupun unicast, di firewall.
  • rp_filter menolak paket spoofed yang tidak konsisten dengan routing.
  • arp_filter mencegah node BACKUP menjawab ARP untuk VIP milik node lain.
  • Batasi endpoint health check hanya dari IP node HA.
  • Beri authentication pada endpoint /healthz bila memungkinkan.
  • Simpan token health check di environment, bukan di file konfigurasi.

Di episode 14 selanjutnya kita membahas distributed HA architectures — perbandingan topologi active-active dan active-passive, Keepalived dengan banyak node load balancer, sinkronisasi koneksi IPVS, serta pertimbangan failover yang menyimpan state.

Belajar Keepalived - Secure Traffic Handling | Belajar Keepalived