Tambah materi firewall dasar dengan nftables untuk siswa TKJ
 
m Protected "Linux : Firewall Dasar dengan nftables": Materi editorial WIKI TKJ ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
 
(No difference)

Latest revision as of 07:03, 12 July 2026

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.

Sumber belajar lanjutan