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:
- Zero config — install, login, langsung terhubung
- NAT traversal — tidak perlu membuka port di firewall untuk Tailscale itu sendiri
- Tailscale SSH — SSH tanpa perlu mengelola SSH key di server
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.
Menutup Port yang Tidak Diperlukan
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:
- Port 22 terbuka ke seluruh internet
- Ratusan bot mencoba brute-force SSH setiap hari
- Harus mengandalkan SSH key dan fail2ban
Sesudah:
- Port 22 tertutup dari internet
- SSH hanya bisa diakses melalui Tailscale
- Hanya port 80 dan 443 yang terbuka (untuk web server)
- Attack surface berkurang drastis
Tips Tambahan
-
Pastikan Tailscale auto-start — jalankan
sudo systemctl enable tailscaledagar Tailscale berjalan otomatis saat server reboot. Kalau tidak, kita bisa terkunci dari server sendiri. -
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.
-
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.