Jump to content

Nftables: Difference between revisions

From Wiki
Created page with "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..."
 
No edit summary
 
Line 12: Line 12:
Berikut isi file /etc/nftables.conf
Berikut isi file /etc/nftables.conf


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1">
#!/usr/sbin/nft -f
#!/usr/sbin/nft -f


Line 40: Line 40:
Penjelasan perbaris file nftables.conf
Penjelasan perbaris file nftables.conf


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="1">
#!/usr/sbin/nft -f
#!/usr/sbin/nft -f
</syntaxhighlight>
</syntaxhighlight>
Line 46: Line 46:
Baris pertama ini menunjukan kalau file ini adalah file configurasi nftables.
Baris pertama ini menunjukan kalau file ini adalah file configurasi nftables.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="3">
flush ruleset
flush ruleset
</syntaxhighlight>
</syntaxhighlight>
Line 52: Line 52:
Reset semua ruleset yang telah ada sebelumnya.
Reset semua ruleset yang telah ada sebelumnya.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="7">
table ip filter {
table ip filter {
}
}
Line 59: Line 59:
Pembuatan table filter
Pembuatan table filter


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="8">
chain INPUT {
chain INPUT {
}
}
Line 66: Line 66:
Pembuatan Chain INPUT
Pembuatan Chain INPUT


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="9">
type filter hook input priority 0; policy drop;
type filter hook input priority 0; policy drop;
</syntaxhighlight>
</syntaxhighlight>
Line 72: Line 72:
Default Drop policy, sehingga semua paket secara default di blokir
Default Drop policy, sehingga semua paket secara default di blokir


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="10">
ct state established,related accept
ct state established,related accept
</syntaxhighlight>
</syntaxhighlight>
Line 78: Line 78:
kecuali paket yang datang sebagai balasan dari paket yang berasal dari dalam (Laptop) yang mana hal ini biasa di sebut stateful firewall.
kecuali paket yang datang sebagai balasan dari paket yang berasal dari dalam (Laptop) yang mana hal ini biasa di sebut stateful firewall.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="11">
iifname $lo_if accept
iifname $lo_if accept
</syntaxhighlight>
</syntaxhighlight>
Line 84: Line 84:
Izinkan paket dari localhost
Izinkan paket dari localhost


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="12">
drop
drop
</syntaxhighlight>
</syntaxhighlight>
Line 90: Line 90:
Block semua paket yang masuk bilamana tidak sesuai kriteria penerimaan paket sebagaimana dijelaskan diatas.
Block semua paket yang masuk bilamana tidak sesuai kriteria penerimaan paket sebagaimana dijelaskan diatas.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash" line="1" start="15">
chain FORWARD {
chain FORWARD {
type filter hook forward priority 0; policy drop;
type filter hook forward priority 0; policy drop;
Line 161: Line 161:
sudo nft -f /etc/nftables.conf
sudo nft -f /etc/nftables.conf
</syntaxhighlight>
</syntaxhighlight>
== Source ==
* [https://www.muntaza.id/nftables/2019/12/15/nftables-01.html muntaza.id]

Latest revision as of 16:20, 22 January 2023

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

Output

 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

Output

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;
	}
}
  • Reload konfigurasi nftables setelah mengeedit file /etc/nftables.conf
sudo nft -f /etc/nftables.conf

Source