Linux : Firewall Dasar dengan nftables
Tujuan
Setelah praktik ini, kamu diharapkan bisa:
- memahami fungsi firewall di server Linux;
- membaca aturan dasar `nftables`;
- membuat aturan firewall sederhana untuk server SSH/Web;
- mengecek apakah aturan sudah aktif tanpa asal tebak;
- tahu risiko paling umum supaya tidak mengunci diri sendiri dari server.
Konteks nyata
Di dunia kerja, server jarang dibiarkan terbuka semua port-nya. Server web biasanya cukup menerima trafik tertentu, misalnya SSH untuk admin, HTTP untuk website, dan HTTPS untuk website aman. Port lain yang tidak dipakai sebaiknya ditutup.
Di Linux modern, `nftables` adalah framework firewall yang menggantikan keluarga lama seperti `iptables`, `ip6tables`, `arptables`, dan `ebtables`. Banyak distro baru tetap menyediakan perintah `iptables`, tapi di belakang layar sering sudah memakai backend nftables. Jadi, belajar nftables itu relevan untuk admin Linux, cloud server, VPS, router Linux, sampai lab cybersecurity defensif.
Analogi sederhana
Bayangkan server seperti ruang server di sekolah.
- Alamat IP itu seperti alamat gedung.
- Port itu seperti pintu ruangan: pintu SSH, pintu web, pintu database, dan seterusnya.
- Firewall itu seperti satpam di gerbang.
- Rule firewall itu seperti daftar tamu: siapa boleh lewat, lewat pintu mana, dan kapan harus ditolak.
Kalau semua pintu dibiarkan terbuka, orang yang tidak perlu masuk bisa ikut mencoba. Kalau semua pintu ditutup, admin sendiri bisa terkunci di luar. Jadi firewall yang baik bukan asal blokir semuanya, tapi membuka jalur yang memang dibutuhkan.
Kebutuhan awal
Praktik ini cocok untuk Debian/Ubuntu server di lab.
Kamu butuh:
- akses `sudo` atau root;
- koneksi terminal ke server;
- tahu port SSH yang sedang dipakai, biasanya `22`;
- akses console VM atau snapshot kalau sedang belajar di mesin virtual;
- jangan jalankan di server produksi sebelum paham dampaknya.
Kalau server kamu memakai SSH port custom, ganti angka `22` di contoh menjadi port SSH yang benar. Kalau salah, kamu bisa terkunci dari server.
Konsep penting nftables
Struktur nftables biasanya begini:
- `table`: wadah besar untuk aturan, seperti map besar di pos satpam.
- `chain`: jalur pemeriksaan, misalnya trafik masuk ke server.
- `rule`: aturan spesifik, misalnya izinkan SSH atau tolak paket lain.
- `policy`: keputusan default kalau tidak ada rule yang cocok.
Untuk server biasa, chain yang paling sering dilihat adalah:
- `input`: trafik yang masuk ke server ini;
- `forward`: trafik yang lewat melalui server, biasanya router;
- `output`: trafik yang keluar dari server.
Langkah praktik
1. Cek service yang sedang terbuka
Sebelum bikin firewall, lihat dulu pintu mana yang sedang terbuka.
sudo ss -tulpen
Perhatikan kolom `Local Address:Port`. Misalnya ada `:22`, `:80`, dan `:443`, berarti server menerima SSH, HTTP, dan HTTPS.
2. Install nftables
Di Debian/Ubuntu:
sudo apt update
sudo apt install nftables
Cek versi dan aturan yang sedang aktif:
sudo nft --version
sudo nft list ruleset
Kalau output `list ruleset` kosong, artinya belum ada aturan nftables yang aktif.
3. Buat konfigurasi dasar
Buka file konfigurasi:
sudo nano /etc/nftables.conf
Isi contoh berikut cocok untuk server lab yang menerima SSH, HTTP, dan HTTPS:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
ct state established,related accept
ip protocol icmp accept
meta l4proto ipv6-icmp accept
tcp dport 22 accept
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Penjelasan singkat:
- `flush ruleset` membersihkan aturan lama sebelum aturan baru dipasang;
- `table inet` bisa menangani IPv4 dan IPv6 dalam satu tempat;
- `policy drop` berarti trafik masuk ditolak kecuali ada izin khusus;
- `iif "lo" accept` mengizinkan komunikasi lokal di dalam server;
- `ct state established,related accept` mengizinkan balasan dari koneksi yang sudah sah;
- `icmp` dan `ipv6-icmp` membantu ping dan fungsi jaringan dasar;
- `tcp dport 22 accept` membuka SSH;
- `tcp dport { 80, 443 } accept` membuka HTTP dan HTTPS.
4. Tes syntax dulu
Jangan langsung menyalakan firewall kalau file masih salah. Tes dulu:
sudo nft -c -f /etc/nftables.conf
Kalau tidak ada error, syntax-nya aman untuk diterapkan.
5. Terapkan aturan
Aktifkan aturan dari file:
sudo nft -f /etc/nftables.conf
Lalu aktifkan service agar aturan dimuat saat boot:
sudo systemctl enable --now nftables
Kalau kamu sedang remote SSH, jangan tutup terminal lama dulu. Buka terminal baru, lalu coba login SSH lagi. Kalau terminal baru berhasil masuk, berarti rule SSH tidak memutus akses admin.
Verifikasi
Cek status service:
systemctl status nftables --no-pager
Cek ruleset yang sedang aktif:
sudo nft list ruleset
Dari komputer lain di jaringan lab, kamu bisa cek port yang memang boleh terbuka:
nmap -Pn -p 22,80,443 IP_SERVER
Hasil yang sehat untuk contoh ini:
- port SSH terbuka jika memang dipakai admin;
- port 80/443 terbuka jika server menjalankan web;
- port lain tidak ikut terbuka tanpa alasan.
Troubleshooting
SSH tiba-tiba tidak bisa masuk
Kemungkinan port SSH di rule salah. Kalau punya console VM, login dari console lalu cek:
sudo ss -tulpen | grep ssh
sudo nft list ruleset
Jika SSH ternyata berjalan di port custom, ubah rule `tcp dport 22 accept` menjadi port yang benar.
Website tidak bisa diakses
Pastikan web server benar-benar listen di port 80/443:
sudo ss -tulpen | grep -E ':80|:443'
Kalau service web aktif tapi tetap tidak bisa diakses, cek apakah rule HTTP/HTTPS ada di `nft list ruleset`.
Error saat menjalankan nft -f
Biasanya karena typo, kurung kurawal kurang, atau nama interface salah. Jalankan:
sudo nft -c -f /etc/nftables.conf
Perbaiki error sesuai baris yang ditunjukkan.
Rule terasa bentrok dengan UFW atau firewalld
Sebaiknya jangan mengelola firewall dari dua alat sekaligus tanpa paham betul. Pilih salah satu pendekatan. Kalau memakai UFW, kelola dari UFW. Kalau memakai firewalld, kelola dari firewalld. Kalau ingin belajar nftables langsung, pastikan layanan firewall lain tidak sedang menimpa aturanmu.
Catatan keamanan
- Praktikkan dulu di VM lab, bukan langsung di server penting.
- Simpan akses console atau snapshot sebelum mengubah firewall.
- Buka hanya port yang memang dibutuhkan.
- Jangan menutup ICMP secara asal, karena ICMP membantu diagnosa jaringan dan IPv6 butuh ICMPv6 untuk fungsi penting.
- Jangan campur banyak firewall manager kalau belum paham urutan dan dampaknya.
- Firewall bukan pengganti update sistem, konfigurasi SSH aman, password kuat, dan monitoring log.
Kesimpulan
`nftables` adalah firewall modern di Linux. Cara berpikirnya sederhana: tentukan pintu mana yang boleh dibuka, tulis rule dengan rapi, tes syntax, aktifkan, lalu verifikasi dari sisi server dan sisi klien.
Untuk siswa TKJ, nftables bagus dipelajari karena menghubungkan konsep jaringan, server, keamanan, dan troubleshooting. Di industri, skill seperti ini sering dipakai saat mengamankan VPS, server sekolah, router Linux, lab cloud, dan layanan web internal.