Mengamankan VPS dengan Tailscale

Saya menggunakan Oracle Cloud untuk menjalankan beberapa layanan. Secara default, VPS yang baru dibuat memiliki port SSH (22) yang terbuka ke publik. Ini artinya siapapun di internet bisa mencoba login ke server kita. Walaupun sudah menggunakan SSH key, tetap saja ini menjadi attack surface yang tidak perlu.

Di tulisan ini saya akan berbagi cara mengamankan VPS menggunakan Tailscale, sehingga hanya port yang benar-benar diperlukan saja yang terbuka ke internet.

Apa itu Tailscale?

Tailscale adalah VPN berbasis WireGuard yang membuat jaringan privat (tailnet) antar device. Setiap device yang terhubung ke tailnet mendapat IP privat dan bisa saling berkomunikasi, tanpa perlu konfigurasi port forwarding atau firewall yang rumit.

Yang menarik dari Tailscale:

Setup Tailscale di VPS

Install Tailscale di Oracle VPS:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh

Flag --ssh mengaktifkan Tailscale SSH, yang artinya kita bisa SSH ke server melalui jaringan Tailscale tanpa membuka port 22 ke publik.

Setelah install, VPS akan mendapat hostname di tailnet. Dari laptop yang juga terhubung ke Tailscale, kita bisa langsung:

ssh ubuntu@oracle

Di mana oracle adalah nama device di tailnet. Tidak perlu IP publik, tidak perlu port 22 terbuka.

Setelah Tailscale berjalan dan SSH bisa diakses melalui tailnet, saatnya menutup port di firewall. Di Oracle Cloud, ini dilakukan melalui Security List di VCN (Virtual Cloud Network).

Port yang saya buka hanya:

Port Protocol Keperluan
80 TCP HTTP — redirect ke HTTPS
443 TCP HTTPS — Traefik ingress

Itu saja. Port 22 (SSH) ditutup karena akses SSH sudah melalui Tailscale.

Kenapa Tidak Perlu Membuka Port untuk Tailscale?

Tailscale menggunakan koneksi outbound untuk terhubung ke coordination server dan peer. Karena koneksi dimulai dari dalam server ke luar, tidak ada port inbound yang perlu dibuka. Ini berbeda dengan VPN tradisional seperti OpenVPN atau WireGuard yang membutuhkan port UDP terbuka.

Hasilnya

Sebelum:

Sesudah:

Tips Tambahan

  1. Pastikan Tailscale auto-start — jalankan sudo systemctl enable tailscaled agar Tailscale berjalan otomatis saat server reboot. Kalau tidak, kita bisa terkunci dari server sendiri.

  2. Jangan langsung tutup port 22 — pastikan SSH via Tailscale sudah berfungsi dengan baik sebelum menutup port 22. Test dari device lain yang terhubung ke tailnet.

  3. Gunakan ACL — Tailscale mendukung Access Control List untuk membatasi siapa yang bisa mengakses device tertentu di tailnet.

Penutup

Dengan kombinasi Oracle Cloud (free tier) + Tailscale (free untuk personal), kita bisa menjalankan server yang aman tanpa biaya tambahan. Prinsipnya sederhana: jangan buka port yang tidak perlu, dan gunakan jaringan privat untuk akses administratif.