Bismillah,

Setelah tulisan saya tentang IPTables maka saya menuliskan kembali penerus dari IPTables ini, yaitu nftables.

Pada bagian pertama ini, adalah pengelanan syntax nftables, dengan firewall sederhana yang ditujukan untuk melindungi Laptop/PC dari akses dari luar.

Rincian definisi ruleset:

  • Blokir semua akses dari luar Laptop.
  • Izinkan akses dari localhost.
  • Izinkan akses keluar menuju Internet dari Laptop.
  • Izinkan paket balasan dari luar (stateful firewall).

Berikut isi file /etc/nftables.conf

#!/usr/sbin/nft -f

flush ruleset

define lo_if  = "lo"

table ip filter {
	chain INPUT {
		type filter hook input priority 0; policy drop;
		ct state established,related accept
		iifname $lo_if accept
		drop
	}

	chain FORWARD {
		type filter hook forward priority 0; policy drop;
		drop
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
	}
}

Penjelasan perbaris file nftables.conf

#!/usr/sbin/nft -f

Baris pertama ini menunjukan kalau file ini adalah file configurasi nftables.

flush ruleset

Reset semua ruleset yang telah ada sebelumnya.

table ip filter {
}

Pembuatan table filter

	chain INPUT {
	}

Pembuatan Chain INPUT

		type filter hook input priority 0; policy drop;

Default Drop policy, sehingga semua paket secara default di blokir

		ct state established,related accept

kecuali paket yang datang sebagai balasan dari paket yang berasal dari dalam (Laptop) yang mana hal ini biasa di sebut stateful firewall.

		iifname $lo_if accept

Izinkan paket dari localhost

		drop

Block semua paket yang masuk bilamana tidak sesuai kriteria penerimaan paket sebagaimana dijelaskan diatas.

	chain FORWARD {
		type filter hook forward priority 0; policy drop;
		drop
	}

Blokir perpindahan paket dari satu interface ke interface lainnya.

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
	}

Izinkan paket keluar menuju internet.

Kemudian, pastikan bahwa nftables berjalan di sistem kita. kita mengeceknya dengan systemctl.

$ sudo systemctl status nftables
● nftables.service - nftables
   Loaded: loaded (/lib/systemd/system/nftables.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2019-12-25 08:50:56 WITA; 49min ago
     Docs: man:nft(8)
           http://wiki.nftables.org
  Process: 416 ExecStart=/usr/sbin/nft -f /etc/nftables.conf (code=exited, status=0/SUCCESS)
 Main PID: 416 (code=exited, status=0/SUCCESS)

Dec 25 08:50:56 E202SA systemd[1]: Started nftables.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

Terlihat kalau nftables telah berjalan dan aktif saat setiap booting.

Terakhir, untuk mengecek ruleset yang sedang berjalan, kita menggunakan perintah nft:

$ sudo nft list ruleset
table ip filter {
	chain INPUT {
		type filter hook input priority 0; policy drop;
		ct state established,related accept
		iifname "lo" accept
		drop
	}

	chain FORWARD {
		type filter hook forward priority 0; policy drop;
		drop
	}

	chain OUTPUT {
		type filter hook output priority 0; policy accept;
	}
}

Demikian penjelasan sederhana tentang nftables ini, semoga bermanfaat.

Tanya Jawab

  1. Apa sih pentingnya firewall?

    Jawab:

    Firewall seperti satpam di sebuah gedung perkantoran. Setiap pengunjung masuk, di tanya apakah termasuk karyawan di gedung tersebut? kalau karyawan, perlihatkan ID Card anda, kalau bukan karyawan, di tanya apa keperluannya, surat tugas nya, dan lain sebagainya.

    Tanpa satpam, siapa saja bisa masuk dan keluar gedung tanpa pengawasan, sehingga rawan terjadi pencurian, dan kejahatan lainnya.

    Demikian pula firewall, setiap paket datang, di cek IP Address sumber, IP Address tujuan, port tujuan. Apabila sesuai dengan setting firewall, diizinkan masuk, bila tidak, maka paket tersebut di tolak.

  2. Bagaimana cara reload konfigurasi nftables setelah saya mengedit file /etc/nftables.conf?

    Jawab:

    $ sudo nft -f /etc/nftables.conf
    

Alhamdulillah

Daftar Pustaka