Tutorial Nftables

Tutorial Nftables



Tutorial ini menerangkan cara bekerja dengan tembok api Linux Nftables. Kandungan ini dioptimumkan untuk pengguna berpengalaman dan baharu Linux.

Nftables ialah komponen kernel Linux yang menyediakan fungsi tembok api. Ia adalah penggantian Iptables.







Selepas membaca tutorial ini, anda akan memahami peraturan Nftables, dan anda akan dapat mencipta tembok api anda. Anda tidak memerlukan pengetahuan terdahulu tentang Iptables.



Semua contoh dalam tutorial ini mengandungi tangkapan skrin, menjadikannya mudah untuk semua pengguna Linux, bebas daripada tahap pengetahuan mereka, untuk memahami dan melaksanakannya.



Bermula Dengan Nftables

Sebelum bermula, buat dan buka fail menggunakan editor teks seperti nano atau vi untuk mula menaip peraturan Nftables pertama anda berdasarkan contoh berikut. Jangan salin-tampal; taip semua.





nano firewall.nft

Contoh dalam tutorial ini agak mudah dan menunjukkan tembok api yang terhad di mana semua trafik IPv4 digugurkan kecuali untuk gelung balik dan port tertentu.



Dalam tangkapan skrin sebelumnya, saya menggunakan baris pertama untuk menentukan rangkaian tempatan saya (192.168.0.0/16) sebagai LinuxHintNet.

tentukan LinuxHintNet = 192.168.0.0 / 16

Dalam baris kedua, saya mentakrifkan sekumpulan port (80,443, dan 22). Saya memanggil kumpulan ini AllowPorts kerana saya bercadang untuk membenarkan lalu lintas melaluinya. AllowPorts ialah nama sewenang-wenangnya.

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

Kemudian, saya menambah jadual, yang merupakan bekas atau kumpulan rantai dan peraturan; kedua-duanya diterangkan di bawah. Jadual membantu peraturan dan rantaian disusun. Saya memanggil jadual dalam contoh 'Terhad' kerana ia mengandungi dasar menyekat dan namanya adalah sewenang-wenangnya.

IP sebelum nama jadual menunjukkan bahawa peraturan jadual que hanya akan digunakan pada trafik IPv4. Anda boleh menggunakan inet dan bukannya IP untuk menggunakan peraturan pada protokol IPv4 dan IPv6. Atau anda boleh menggantikan IP dengan ip6 untuk IPv6 sahaja.

Ingat, Restrictive ialah nama yang saya takrifkan sewenang-wenangnya. Anda boleh menamakan jadual mengikut kehendak anda.

Dalam kes saya, saya menggunakan peraturan hanya untuk IPv4, seperti yang ditunjukkan di bawah.

tambah jadual ip Terhad

Untuk kedua-dua protokol, gunakan yang berikut:

tambah jadual inet Terhad

Kemudian kami menambah rantai asas pertama, yang saya namakan sewenang-wenangnya Masuk kerana ia berkaitan dengan trafik masuk. Walau bagaimanapun, anda boleh menamakannya mengikut kehendak anda.

Rantaian asas berikut menggugurkan semua trafik masuk secara lalai:

  • tambah rantaian ip Restrictive Incoming: Bahagian ini menambahkan Restrictive Incoming chain untuk digunakan pada IPv4
  • penapis jenis: Ini mentakrifkan jenis rantai sebagai penapis kerana ia akan menapis trafik. Jenis rantaian lain yang mungkin adalah laluan atau NAT
  • input cangkuk: Merujuk kepada paket masuk
  • keutamaan 0: Keutamaan rantai asas mentakrifkan susunan rantaian asas
  • policy drop: Dasar drop, secara lalai, membuang semua paket
Tambah rantai ip Kemasukan Terhad { menaip keutamaan input cangkuk penapis 0 ; kejatuhan dasar; }

Seperti yang anda lihat dalam tangkapan skrin berikut, saya mencipta dua rantai asas lain yang serupa dengan sebelumnya, Restrictive Redirect dan Restrictive Outgoing. Perbezaannya ialah cangkuk yang ditakrifkan untuk setiap satu (cangkuk ke hadapan dan keluaran cangkuk). Menjelaskannya adalah berulang.

Selepas tiga rantai asas, kita boleh meneruskan peraturan Nftables untuk membenarkan trafik gelung balik.

Saya menambah baris berikut untuk trafik masuk dan keluar pada antara muka gelung balik.

tambah peraturan ip Terhad Masuk iifname lo kaunter terima

tambah peraturan ip Terhad Masuk oifname lo kaunter terima

Sekarang, saya menambah empat peraturan yang menerima trafik TCP dan UDP keluar dan masuk melalui semua port yang disertakan dalam pembolehubah $AllowPorts yang ditakrifkan pada permulaan fail.

tambah peraturan ip Sukan tcp masuk yang terhad $AllowPorts kaunter terima

tambah peraturan ip Mengehadkan tcp dport keluar $AllowPorts kaunter terima

tambah peraturan ip Sukan udp Masuk Terhad $AllowPorts kaunter terima

tambah peraturan ip udp dport Keluar Terhad $AllowPorts kaunter terima

Anda boleh lihat skrip penuh di bawah.

Sebaik sahaja anda selesai menaip jadual, rantai dan peraturan anda, tutup dokumen dan simpan perubahan.

# Dalam dua baris pertama, saya mentakrifkan rangkaian tempatan saya (LinuxHintNet) dan satu set port (80,
#443,22)untuk membolehkan trafik melaluinya dalam peraturan di bawah.
tentukan LinuxHintNet = 192.168.0.0 / 16
tentukan AllowPorts   = { 80 , 443 , 53 , 22 }
#Saya mengisytiharkan jadual baharu yang akan mengandungi rantai dan peraturan. Saya panggil jadual ini 'Terhad'.
#'ip' menggunakan peraturan untuk IPv4 sahaja. Untuk IPv6, hanya gunakan 'ip6' dan gunakan 'inet' untuk kedua-dua protokol.
tambah jadual ip Terhad
# Selepas mencipta jadual, saya mencipta tiga rantai, Masuk, Ubah Hala dan Keluar,
#Nama mereka sewenang-wenangnya. Kesemuanya menggugurkan trafik masuk, keluar dan pemajuan secara lalai.
tambah rantai ip Kemasukan Terhad { menaip keutamaan input cangkuk penapis 0 ; kejatuhan dasar; }
tambah rantai ip Ubah hala Terhad { menaip keutamaan cangkuk penapis ke hadapan 0 ; kejatuhan dasar; }
tambah rantai ip Mengehadkan Keluar { menaip keutamaan keluaran cangkuk penapis 0 ; kejatuhan dasar; }
# Saya melaksanakan dua peraturan untuk membenarkan trafik gelung balik.
tambah peraturan ip Terhad Masuk iifname lo kaunter terima
tambah peraturan ip Terhad Masuk oifname lo kaunter terima
# Saya melaksanakan peraturan untuk membenarkan trafik melalui port yang ditakrifkan dalam pembolehubah AllowPorts.
tambah peraturan ip Sukan tcp masuk yang terhad $AllowPorts kaunter terima
tambah peraturan ip Mengehadkan tcp dport keluar $AllowPorts kaunter terima
tambah peraturan ip Sukan udp Masuk Terhad $AllowPorts kaunter terima

tambah peraturan ip udp dport Keluar Terhad $AllowPorts kaunter terima

Untuk mengaktifkan firewall, jalankan arahan berikut:

sudo nft -f firewall.nft

Anda boleh menyemak peraturan anda dengan menjalankan arahan berikut:

sudo set peraturan senarai nft

Itulah tembok api pengehad asas.

Kesimpulan:

Seperti yang anda lihat, Nftables jauh lebih mesra daripada Iptables, dan pengguna boleh mempelajari Nftables lebih cepat daripada Iptables. Memandangkan Iptables sedang dihentikan, dan banyak pengedaran menggunakan Nftables sebagai tembok api lalai, termasuk Debian. Pengguna berpengalaman Iptables mungkin ingin melihat alat Iptables-nftables-compat, yang menterjemahkan Iptables kepada Nftables. Ini boleh membantu mereka memahami perbezaan.

Pengguna profesional seperti pentadbir sistem cenderung untuk terus bekerja dengan Iptables; elakkan mengabaikan Nftables untuk menjimatkan masa sambil menambah baik penapisan. Saya harap artikel ini cukup mudah untuk meyakinkan anda untuk mencuba Nftables.