Episode ini membahas ACL lanjutan: aturan granular per node dan per user, kebijakan berbasis tag dengan prinsip least privilege, serta checklist hardening seperti key expiry, monitoring devices, pembatasan Taildrop dan SSH, dan pengamanan node server publik.

Di episode 6 kalian memakai ACL dasar, dan di episode 13 membangun lapisan identitas. Sekarang saatnya menggabungkan semuanya menjadi tailnet yang benar-benar keras terhadap serangan. Episode 14 adalah episode keamanan paling praktis di series ini.
Kita membahas ACL lanjutan: aturan granular per node dan per user, kebijakan berbasis tag dengan prinsip least privilege, serta checklist hardening yang bisa langsung kalian terapkan — key expiry, monitoring devices, pembatasan Taildrop dan SSH, dan pengamanan node server yang terpapar publik.
ACL Tailscale bisa digranular hingga satu user mengakses satu node pada port tertentu:
{
"acls": [
{ "action": "accept",
"src": ["user1@example.com"],
"dst": ["nas-rumah:22,80,443"] },
{ "action": "accept",
"src": ["group:devops"],
"dst": ["tag:server:*"] }
]
}Aturan pertama membatasi user1@example.com hanya ke tiga port di NAS. Aturan kedua memberi group:devops akses penuh ke semua node server. Detail port di rule pertama adalah contoh granularitas yang ingin kalian tiru.
Prinsip least privilege: beri akses seminimal mungkin yang dibutuhkan tugas. Kombinasi tags dan group membuatnya mudah:
{
"tagOwners": {
"tag:db": ["group:devops"],
"tag:web": ["group:devops"]
},
"acls": [
{ "action": "accept",
"src": ["tag:web"],
"dst": ["tag:db:5432"] },
{ "action": "accept",
"src": ["group:devops"],
"dst": ["tag:web:22"] }
]
}Di atas, node web hanya boleh menyentuh port 5432 node database, dan manusia hanya masuk via port 22. Tidak ada aturan *:* yang terbuka — setiap jalur dipertimbangkan secara eksplisit.
tailscale logout atau remove dari admin console untuk perangkat pensiun.tailscale status secara berkala untuk menemukan node aneh.tailscale status
tailscale status --json | grep -c '"Online"'Kombinasi tailscale status dengan filter JSON membantu menghitung node yang sedang online.
Admin console menyediakan daftar perangkat, status koneksi, dan log aktivitas. Jadikan monitoring ini rutin: perangkat tak dikenal, perubahan status, dan aktivitas mencurigakan harus cepat terlihat. Kombinasikan dengan audit log (episode 21) untuk jejak lengkap.
Dua fitur yang sering terbuka lebar padahal sebaiknya dibatasi:
{
"acls": [
{ "action": "accept",
"src": ["group:devops"],
"dst": ["tag:server:5201"] }
],
"ssh": [
{ "action": "check",
"src": ["group:devops"],
"dst": ["tag:server"],
"users": ["autogroup:nonroot"] }
]
}Taildrop dibatasi lewat port 5201, SSH dibatasi hanya untuk non-root. Dengan pola group:devops dan autogroup:nonroot, permukaan serangan berkurang drastis.
Node yang juga terpapar internet (VPS, web server) perlu perhatian ekstra:
sudo tailscale set --auto-updatetailscale ping dari node yang seharusnya ditolak.Review ACL -> Uji akses -> Audit devices -> Update kebijakan -> UlangiHardening bukan peristiwa sekali jalan, melainkan kebiasaan. Dengan ACL granular, least privilege, dan checklist yang disiplin, tailnet kalian tetap aman meskipun terus bertumbuh.
Episode 14 menutup fondasi keamanan: kalian bisa menyusun ACL granular, menerapkan least privilege dengan tags, dan menjalankan checklist hardening yang menjaga tailnet tetap aman.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan membahas Tailscale Serve dan Funnel — mengekspos service lokal hanya untuk tailnet dengan TLS otomatis via MagicDNS, serta mengeksposnya ke internet publik secara aman dengan Funnel, lengkap dengan perbedaan keduanya.