Menerapkan UFW ke dua workload paling umum di produksi: web server dengan aturan 80/443 plus rate limit dan proteksi origin port, serta mail server dengan port 25, 587, 993, dan 465, dilengkapi hardening terhadap port scan dan blokir IP mencurigakan

Semua materi sebelumnya sekarang diuji: episode 15 memakai UFW untuk melindungi dua workload paling umum di produksi — web server dan mail server. Ini bukan sekadar daftar port; ini tentang mengapa port-port itu dibuka, apa saja yang harus dibatasi, dan bagaimana merespons ancaman khas masing-masing layanan.
Mengapa ini penting? Karena web dan email adalah dua layanan yang harus terpapar publik — tidak bisa disembunyikan. Firewall bukan lagi soal "buka atau tutup", melainkan soal membuka secara terkendali: melindungi port layanan, mencegah penyalahgunaan origin, dan menutup jalur yang tidak seharusnya terbuka.
Web server butuh port 80 (HTTP) dan 443 (HTTPS):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpBisa juga memakai profil atau nama layanan:
sudo ufw allow http
sudo ufw allow httpsEndpoint yang rawan diserang (login, API) bisa dilindungi rate limit (episode 10):
sudo ufw limit 443/tcpPerlu diingat trade-off-nya: rate limit membatasi koneksi baru per IP — cocok untuk SSH, kurang pas untuk web yang memang punya trafik koneksi baru tinggi dari banyak user. Untuk aplikasi web, pertimbangkan WAF/CDN (misalnya Cloudflare) sebagai lapisan tambahan.
Praktik umum yang berbahaya: menjalankan aplikasi di port tinggi (misalnya 8080) dan mengarahkan nginx/Node secara langsung. Masalahnya: port 8080 ikut terbuka ke publik, menjadi pintu samping yang mem-bypass keamanan web server.
Solusi: hanya buka 80/443, biarkan port aplikasi hanya bisa diakses dari loopback:
sudo ufw allow in on lo
sudo ufw allow out on lo
sudo ufw deny 8080/tcpDengan konfigurasi ini, nginx (port 80/443) bisa meng-proxy ke aplikasi di 8080 lewat loopback, tetapi dunia luar tidak bisa mengakses 8080 langsung — mereka harus lewat nginx yang sudah dikonfigurasi.
Warning
Deny 8080/tcp di sini berlaku untuk interface publik; koneksi loopback tetap diizinkan karena allow in on lo dievaluasi lebih awal (di before.rules). Hasil bersihnya: aplikasi hanya bisa diakses melalui proxy, bukan langsung — persis yang kita inginkan. Jangan lupa proxy config (mis. proxy_pass di nginx) tetap dibutuhkan.
sudo ufw status
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
8080/tcp DENY Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
8080/tcp (v6) DENY Anywhere (v6)Uji dari luar:
curl -I http://203.0.113.5
curl -kI https://203.0.113.5| Port | Protokol | Fungsi |
|---|---|---|
| 25/tcp | SMTP | Menerima email dari mail server lain (inbound) |
| 587/tcp | SMTP Submission | Client kirim email (dengan autentikasi) |
| 993/tcp | IMAPS | Client baca email terenkripsi |
| 465/tcp | SMTPS | SMTP terenkripsi (alternatif 587, kadang dipakai) |
| 110/143 | POP3/IMAP | Non-encrypted — sebaiknya tidak dibuka |
Aturan lengkap:
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
sudo ufw allow 465/tcpTip
Jangan buka port 110 (POP3) dan 143 (IMAP) plaintext di era sekarang — keduanya mengirim kredensial tanpa enkripsi. Redireksi client ke port 993 (IMAPS). Kebijakan "jangan buka yang tidak perlu" ini sejalan dengan least privilege episode 17.
Port 25 sering dijadikan target brute force atau relay spam. Proteksi:
sudo ufw limit 25/tcpMail server menarik perhatian scanner. Strategi berlapis:
1. Pantau scan (dari episode 12):
sudo grep "UFW BLOCK" /var/log/ufw.log | awk '{print $12}' | cut -d= -f2 | sort | uniq -c | sort -rn | head -152. Blokir IP mencurigakan:
sudo ufw deny from 203.0.113.2003. Otomasi dengan fail2ban (episode 10) untuk postfix:
[postfix]
enabled = true
logpath = /var/log/mail.log
maxretry = 5
bantime = 3600
action = ufw4. Batasi akses port admin (misal port manajemen panel) ke subnet kantor saja:
sudo ufw allow from 203.0.113.0/24 to any port 8443 proto tcpsudo ufw status
To Action From
-- ------ ----
25/tcp LIMIT Anywhere
587/tcp ALLOW Anywhere
465/tcp ALLOW Anywhere
993/tcp ALLOW Anywhere
25/tcp (v6) LIMIT Anywhere (v6)
587/tcp (v6) ALLOW Anywhere (v6)
465/tcp (v6) ALLOW Anywhere (v6)
993/tcp (v6) ALLOW Anywhere (v6)Uji dari mesin lain:
nc -zv 203.0.113.5 25
nc -zv 203.0.113.5 993Pada episode 15 ini, kalian telah menerapkan UFW ke web dan mail server.
Inti yang harus dibawa pulang:
Di episode 16 selanjutnya, kita menempatkan semuanya dalam konteks paling nyata: UFW di Server Produksi & VPS — menyusun baseline rules SSH + port layanan saja, memahami hubungan dengan firewall cloud provider, praktik di Ubuntu 24.04/26.04 LTS, dan verifikasi aman sebelum enable. Sampai jumpa di episode 16!