Episode sebelumnya kita bicara phishing — serangan yang menyasar manusia. Kali ini kita mundur satu tingkat ke bawah: ke jaringan. Selama ini saya pakai internet tanpa benar-benar tahu apa yang terjadi di balik curl atau browser. Ternyata paham jaringan dasar itu wajib untuk security, karena hampir semua serangan — dari port scan sampai man-in-the-middle — beroperasi di lapisan ini.
TCP/IP: pos surat dan alamat rumah
Yang saya perlu hafalkan hanya dua hal dulu. IP address = alamat rumah (di mana komputer itu berada di jaringan). Port = nomor pintu di rumah itu (layanan mana yang melayani). Alamat tanpa port itu seperti rumah tanpa tahu pintu depannya di mana — kita tahu hostnya, tapi tidak tahu sedang menjalankan apa.
Contoh yang sering saya temui: 203.0.113.10:443 berarti host 203.0.113.10, pintu 443 (HTTPS). Port well-known yang wajib saya tandai:
| Port | Layanan | Catatan keamanan |
|---|---|---|
| 22 | SSH | Wajib key-only, jangan password |
| 80 | HTTP | Telanjang — redirect ke HTTPS |
| 443 | HTTPS | TLS, standar modern |
| 3306 | MySQL | Tidak boleh terbuka ke publik |
| 6379 | Redis | Sering jadi target (default tanpa auth) |
Port scanner: cara saya “melihat” pintu mana yang terbuka
Port scanner adalah alat paling dasar untuk memetakan attack surface. Untuk server milik sendiri (ini penting — hanya untuk infrastruktur yang kita punya izinnya; UU ITE mengatur akses ilegal ke sistem elektronik orang lain), saya bisa cek dengan perintah bawaan Linux:
# Lihat pintu mana yang terbuka di server kita sendiri
ss -tulpen
# Contoh output:
# tcp LISTEN 0 511 0.0.0.0:22 users:(("sshd",pid=812))
# tcp LISTEN 0 511 0.0.0.0:443 users:(("nginx",pid=903))Hasilnya saya baca seperti checklist: layanan apa saja yang benar-benar saya butuhkan berjalan? Kalau ada port yang tidak saya kenal — itu pertanyaan keamanan pertama yang harus dijawab. Port 3306 yang terbuka ke publik, misalnya, hampir selalu berita buruk.
Firewall: gerbang yang punya daftar tamu
Analogi yang melekat di kepala saya: firewall adalah gerbang pos dengan daftar tamu. Aturannya sederhana — default deny, allow sesedikit mungkin. Di Linux, tool bawaannya ufw:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp # SSH saja dari IP kantor/rumah kalau memungkinkan sudo ufw allow 443/tcp sudo ufw enable sudo ufw status verbose
Prinsip least privilege berlaku di sini juga: bukan “buka semua lalu blokir yang jahat”, tapi “tutup semua, buka yang terbukti perlu”. Deteksi serangan jauh lebih mudah ketika pintu yang terbuka sedikit dan semuanya kita kenal.
DMZ & VPN: pemisahan zona kepercayaan
Dua konsep lagi yang akhirnya paham setelah gagal paham berkali-kali:
- DMZ (Demilitarized Zone) — jaringan tengah antara internet dan jaringan internal. Layanan yang harus terekspos ke publik (web server) ditaruh di sini, supaya kalau server itu jebol, penyerang tidak langsung berada di jaringan yang berisi database dan file internal. Pemisahan kepercayaan, bukan sekadar “tambalan”.
- VPN — terowongan terenkripsi lewat jaringan yang tidak tepercaya. Untuk developer, gunanya jelas: akses SSH ke server produksi tidak perlu diekspos ke internet publik sama sekali — cukup dari jaringan VPN. Port 22 tidak perlu terbuka untuk dunia.
Apa yang saya praktikkan minggu ini
Langkah konkret yang saya lakukan di VPS sendiri: jalankan ss -tulpen, cocokkan setiap port dengan layanan yang memang saya butuhkan, matikan sisanya, aktifkan ufw, dan pindahkan akses SSH ke kunci saja (akan kita bedah mendalam di episode Linux hardening). Yang saya catat: setengah dari “serangan” yang muncul di log sebenarnya hanya memindai port yang seharusnya tidak terbuka sejak awal. Menutup pintu yang tidak perlu terbuka itu setengah pekerjaan pertahanan.
Di episode phishing (#5) kita bicara soal menjebak manusia; di sini kita lihat sisi mesinnya. Episode berikutnya kita masuk ke web security fundamentals — OWASP Top 10 — karena di situlah sebagian besar aplikasi yang saya tulis paling rentan.
Komentar Terbaru