Tutorial Nftables

Tutorial Nftables



Tutorial ini menjelaskan cara bekerja dengan firewall Nftables Linux. Konten ini dioptimalkan baik untuk Linux berpengalaman dan pengguna baru.

Nftables adalah komponen kernel Linux yang menyediakan fungsionalitas firewall. Ini adalah pengganti Iptables.







Setelah membaca tutorial ini, Anda akan memahami aturan Nftables, dan Anda akan dapat membuat firewall Anda. Anda tidak perlu pengetahuan sebelumnya tentang Iptables.



Semua contoh dalam tutorial ini berisi tangkapan layar, sehingga memudahkan semua pengguna Linux, terlepas dari tingkat pengetahuan mereka, untuk memahami dan mengimplementasikannya.



Memulai Dengan Nftables

Sebelum memulai, buat dan buka file menggunakan editor teks seperti nano atau vi untuk mulai mengetik aturan Nftables pertama Anda berdasarkan contoh berikut. Jangan copy-paste; ketik semuanya.





nano firewall.nft

Contoh dalam tutorial ini cukup sederhana dan menunjukkan firewall restriktif di mana semua lalu lintas IPv4 dihentikan kecuali untuk loopback dan port tertentu.



Pada tangkapan layar sebelumnya, saya menggunakan baris pertama untuk mendefinisikan jaringan lokal saya (192.168.0.0/16) sebagai LinuxHintNet.

mendefinisikan LinuxHintNet = 192.168.0.0 / 16

Di baris kedua, saya mendefinisikan sekelompok port (80.443, dan 22). Saya menyebut grup ini AllowPorts karena saya berencana untuk mengizinkan lalu lintas melalui mereka. AllowPorts adalah nama arbitrer.

tentukan AllowPorts   = { 80 , 443 , 53 , 22 }

Kemudian, saya menambahkan tabel, yang merupakan wadah atau kelompok rantai dan aturan; keduanya dijelaskan di bawah ini. Tabel membantu aturan dan rantai untuk diatur. Saya menyebut tabel dalam contoh 'Pembatasan' karena berisi kebijakan pembatasan, dan namanya arbitrer.

IP sebelum nama tabel menunjukkan bahwa aturan tabel que hanya akan diterapkan ke lalu lintas IPv4. Anda dapat menggunakan inet alih-alih IP untuk menerapkan aturan ke protokol IPv4 dan IPv6. Atau Anda dapat mengganti IP dengan ip6 hanya untuk IPv6.

Ingat, Pembatasan adalah nama yang saya definisikan secara sewenang-wenang. Anda dapat memberi nama tabel sesuai keinginan.

Dalam kasus saya, saya hanya menerapkan aturan untuk IPv4, seperti yang ditunjukkan di bawah ini.

tambahkan tabel aku p Bersifat membatasi

Untuk kedua protokol, gunakan yang berikut ini:

tambahkan tabel inet Restriktif

Kemudian kita tambahkan rantai dasar pertama, yang saya namai sembarangan Incoming karena terkait dengan lalu lintas masuk. Namun, Anda dapat menamainya sesuai keinginan.

Rantai dasar berikut menjatuhkan semua lalu lintas masuk secara default:

  • add chain ip Restrictive Incoming: Bagian ini menambahkan rantai Restrictive Incoming untuk diterapkan ke IPv4
  • type filter: Ini mendefinisikan jenis rantai sebagai filter karena akan menyaring lalu lintas. Jenis rantai lain yang mungkin adalah rute atau NAT
  • input kait: Mengacu pada paket yang masuk
  • prioritas 0: Prioritas rantai dasar mendefinisikan urutan rantai dasar
  • kebijakan drop: Kebijakan drop, secara default, membuang semua paket
Tambahkan rantai aku p Pembatasan Masuk { Tipe prioritas input kait filter 0 ; penurunan kebijakan; }

Seperti yang Anda lihat di tangkapan layar berikut, saya membuat dua rantai dasar lain yang serupa dengan sebelumnya, Redirect Redirect dan Restrictive Outgoing. Perbedaannya adalah kait yang ditentukan untuk masing-masing (pengait ke depan dan keluaran kait). Menjelaskannya berulang-ulang.

Setelah tiga rantai dasar, kita dapat melanjutkan dengan aturan Nftables untuk mengizinkan lalu lintas loopback.

Saya menambahkan baris berikut untuk lalu lintas masuk dan keluar pada antarmuka loopback.

tambahkan aturan aku p iifname masuk terbatas lo counter menerima

tambahkan aturan aku p oifname masuk terbatas lo counter menerima

Sekarang, saya menambahkan empat aturan yang menerima lalu lintas TCP dan UDP keluar dan masuk melalui semua port yang termasuk dalam variabel $AllowPorts yang ditentukan di awal file.

tambahkan aturan aku p Olahraga tcp masuk yang terbatas $AllowPorts konter menerima

tambahkan aturan aku p tcp dport Keluar Terbatas $AllowPorts konter menerima

tambahkan aturan aku p Olahraga udp masuk yang terbatas $AllowPorts konter menerima

tambahkan aturan aku p Pembatasan udp dport keluar $AllowPorts konter menerima

Anda dapat melihat skrip lengkap di bawah ini.

Setelah Anda selesai mengetik tabel, rantai, dan aturan, tutup dokumen dan simpan perubahannya.

# Dalam dua baris pertama, saya mendefinisikan jaringan lokal saya (LinuxHintNet) dan satu set port (80,
#443,22)untuk mengaktifkan lalu lintas melaluinya dalam aturan di bawah.
mendefinisikan LinuxHintNet = 192.168.0.0 / 16
tentukan AllowPorts   = { 80 , 443 , 53 , 22 }
#Saya mendeklarasikan tabel baru yang akan berisi rantai dan aturan. Saya menyebut tabel ini 'Pembatasan'.
#The 'ip' hanya berlaku aturan untuk IPv4. Untuk IPv6, hanya gunakan 'ip6' dan gunakan 'inet' untuk kedua protokol.
tambahkan tabel aku p Bersifat membatasi
# Setelah membuat tabel, saya membuat tiga rantai, Incoming, Redirect dan Outgoing,
#Nama mereka sewenang-wenang. Semuanya menjatuhkan lalu lintas masuk, keluar, dan meneruskan secara default.
tambahkan rantai aku p Pembatasan Masuk { Tipe prioritas input kait filter 0 ; penurunan kebijakan; }
tambahkan rantai aku p Pengalihan Terbatas { Tipe prioritas maju kait filter 0 ; penurunan kebijakan; }
tambahkan rantai aku p Pengeluaran Terbatas { Tipe prioritas keluaran kait filter 0 ; penurunan kebijakan; }
# Saya menerapkan dua aturan untuk mengizinkan lalu lintas loopback.
tambahkan aturan aku p iifname masuk terbatas lo counter menerima
tambahkan aturan aku p oifname masuk terbatas lo counter menerima
# Saya menerapkan aturan untuk mengizinkan lalu lintas melalui port yang ditentukan dalam variabel AllowPorts.
tambahkan aturan aku p Olahraga tcp masuk yang terbatas $AllowPorts konter menerima
tambahkan aturan aku p tcp dport Keluar Terbatas $AllowPorts konter menerima
tambahkan aturan aku p Olahraga udp masuk yang terbatas $AllowPorts konter menerima

tambahkan aturan aku p Pembatasan udp dport keluar $AllowPorts konter menerima

Untuk mengaktifkan firewall, jalankan perintah berikut:

sudo nft -f firewall.nft

Anda dapat memeriksa aturan Anda dengan menjalankan perintah berikut:

sudo aturan daftar nft

Itu firewall restriktif dasar.

Kesimpulan:

Seperti yang Anda lihat, Nftables jauh lebih ramah daripada Iptables, dan pengguna dapat mempelajari Nftables lebih cepat daripada Iptables. Karena Iptables sedang dihentikan, dan banyak distribusi menggunakan Nftables sebagai firewall default, termasuk Debian. Pengguna berpengalaman Iptables mungkin ingin melihat alat Iptables-nftables-compat, yang menerjemahkan Iptables ke Nftables. Ini dapat membantu mereka memahami perbedaan.

Pengguna profesional seperti administrator sistem cenderung tetap bekerja dengan Iptables; hindari mengabaikan Nftables untuk menghemat waktu sambil meningkatkan pemfilteran. Saya harap artikel ini cukup sederhana untuk meyakinkan Anda untuk mencoba Nftables.