Nftables Eğitimi

Nftables Egitimi



Bu eğitim, Nftables Linux güvenlik duvarı ile nasıl çalışılacağını açıklar. Bu içerik hem Linux deneyimli hem de yeni kullanıcılar için optimize edilmiştir.

Nftables, güvenlik duvarı işlevleri sağlayan Linux çekirdeğinin bir bileşenidir. Iptables'ın yerine geçer.







Bu öğreticiyi okuduktan sonra, Nftables'ın kurallarını anlayacaksınız ve güvenlik duvarınızı oluşturabileceksiniz. Iptables hakkında önceden bilgi sahibi olmanıza gerek yok.



Bu eğitimdeki tüm örnekler, bilgi düzeylerinden bağımsız olarak tüm Linux kullanıcılarının bunları anlamasını ve uygulamasını kolaylaştıran ekran görüntüleri içerir.



Nftables'a Başlarken

Başlamadan önce, aşağıdaki örneğe göre ilk Nftables kurallarınızı yazmaya başlamak için nano veya vi gibi bir metin düzenleyici kullanarak bir dosya oluşturun ve açın. Kopyala yapıştır yapmayın; her şeyi yazın.





nano güvenlik duvarı.nft

Bu öğreticideki örnek oldukça basittir ve geri döngü ve belirli bağlantı noktaları dışında tüm IPv4 trafiğinin bırakıldığı kısıtlayıcı bir güvenlik duvarı gösterir.



Önceki ekran görüntüsünde, yerel ağımı (192.168.0.0/16) LinuxHintNet olarak tanımlamak için ilk satırı kullandım.

LinuxHintNet'i tanımla = 192.168.0.0 / 16

İkinci satırda bir grup bağlantı noktası tanımlıyorum (80.443 ve 22). Bu grubu AllowPorts olarak adlandırıyorum çünkü bunlar üzerinden trafiğe izin vermeyi planlıyorum. AllowPorts isteğe bağlı bir addır.

AllowPorts'u tanımla   = { 80 , 443 , 53 , 22 }

Ardından, bir kapsayıcı veya zincirler ve kurallar grubu olan bir tablo ekliyorum; her ikisi de aşağıda açıklanmıştır. Tablolar, kuralların ve zincirlerin düzenlenmesine yardımcı olur. Örnekteki tabloyu kısıtlayıcı bir politika içerdiği ve adı keyfi olduğu için “Kısıtlayıcı” olarak adlandırdım.

Tablo adından önceki IP, que tablosu kurallarının yalnızca IPv4 trafiğine uygulanacağını belirtir. IPv4 ve IPv6 protokollerine kurallar uygulamak için IP yerine inet kullanabilirsiniz. Veya IP'yi yalnızca IPv6 için ip6 ile değiştirebilirsiniz.

Unutmayın, Kısıtlayıcı, keyfi olarak tanımladığım bir isimdir. Tabloya istediğiniz gibi isim verebilirsiniz.

Benim durumumda, aşağıda gösterildiği gibi kuralları yalnızca IPv4'e uygularım.

tablo ekle ip kısıtlayıcı

Her iki protokol için aşağıdakileri kullanın:

tablo girişi Kısıtlayıcı ekle

Ardından, gelen trafikle ilgili olduğu için keyfi olarak Gelen adını verdiğim ilk temel zinciri ekliyoruz. Ancak istediğiniz gibi adlandırabilirsiniz.

Aşağıdaki temel zincir, varsayılan olarak tüm gelen trafiği bırakır:

  • add chain ip Kısıtlayıcı Gelen: Bu bölüm, IPv4'e uygulanacak Kısıtlayıcı Gelen zincirini ekler
  • type filter: Bu, trafiği filtreleyeceği için zincir türünü filtre olarak tanımlar. Diğer olası zincir türleri rota veya NAT'tır.
  • kanca girişi: Gelen paketleri ifade eder
  • öncelik 0: Temel zincir önceliği, temel zincirlerin sırasını tanımlar
  • ilke düşüşü: Bırakma ilkesi varsayılan olarak tüm paketleri atar
Zincir ekle ip Kısıtlayıcı Gelen { tip filtre kancası giriş önceliği 0 ; politika düşüşü; }

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, bir öncekine benzer iki temel zincir daha oluşturdum, Kısıtlayıcı Yönlendirme ve Kısıtlayıcı Giden. Fark, her biri için tanımlanmış kancadır (ileri kanca ve kanca çıkışı). Bunları açıklamak tekrarlayıcıdır.

Üç temel zincirden sonra geri döngü trafiğine izin vermek için Nftables kurallarıyla devam edebiliriz.

Geridöngü arayüzüne gelen ve giden trafik için aşağıdaki satırları ekliyorum.

kural ekle ip Kısıtlayıcı Gelen iifname lo sayacı kabul

kural ekle ip Kısıtlayıcı Gelen oifname lo sayacı kabul

Şimdi, dosyanın başında tanımlanan $AllowPorts değişkeninde bulunan tüm portlar üzerinden giden ve gelen TCP ve UDP trafiğini kabul eden dört kural ekliyorum.

kural ekle ip Kısıtlayıcı Gelen tcp sporu $AllowPortlar karşı kabul

kural ekle ip Kısıtlayıcı Giden tcp dport $AllowPortlar karşı kabul

kural ekle ip Kısıtlayıcı Gelen udp sporu $AllowPortlar karşı kabul

kural ekle ip Kısıtlayıcı Giden udp dport $AllowPortlar karşı kabul

Aşağıda tam komut dosyasını görebilirsiniz.

Tablolarınızı, zincirlerinizi ve kurallarınızı yazmayı bitirdikten sonra belgeyi kapatın ve değişiklikleri kaydedin.

# İlk iki satırda yerel ağımı (LinuxHintNet) ve bir dizi port (80,
#443,22) aşağıdaki kurallarda bunlar üzerinden trafiği etkinleştirmek için.
LinuxHintNet'i tanımla = 192.168.0.0 / 16
AllowPorts'u tanımla   = { 80 , 443 , 53 , 22 }
#Zincirleri ve kuralları içerecek yeni bir tablo ilan ediyorum. Bu tabloya 'Kısıtlayıcı' diyorum.
#'IP', kuralları yalnızca IPv4'e uygular. IPv6 için yalnızca 'ip6' kullanın ve her iki protokol için de 'inet' kullanın.
tablo ekle ip kısıtlayıcı
# Tabloyu oluşturduktan sonra Gelen, Yönlendirme ve Giden olmak üzere üç zincir oluşturuyorum,
#İsimleri keyfi. Hepsi varsayılan olarak gelen, giden ve yönlendirme trafiğini düşürür.
zincir ekle ip Kısıtlayıcı Gelen { tip filtre kancası giriş önceliği 0 ; politika düşüşü; }
zincir ekle ip Kısıtlayıcı Yönlendirme { tip filtre kancası ileri önceliği 0 ; politika düşüşü; }
zincir ekle ip Kısıtlayıcı Giden { tip filtre kancası çıkış önceliği 0 ; politika düşüşü; }
# Geri döngü trafiğine izin vermek için iki kural uyguluyorum.
kural ekle ip Kısıtlayıcı Gelen iifname lo sayacı kabul
kural ekle ip Kısıtlayıcı Gelen oifname lo sayacı kabul
# AllowPorts değişkeninde tanımlanan portlar üzerinden trafiğe izin vermek için kurallar uyguluyorum.
kural ekle ip Kısıtlayıcı Gelen tcp sporu $AllowPortlar karşı kabul
kural ekle ip Kısıtlayıcı Giden tcp dport $AllowPortlar karşı kabul
kural ekle ip Kısıtlayıcı Gelen udp sporu $AllowPortlar karşı kabul

kural ekle ip Kısıtlayıcı Giden udp dport $AllowPortlar karşı kabul

Güvenlik duvarını etkinleştirmek için aşağıdaki komutu çalıştırın:

sudo nft -f güvenlik duvarı.nft

Aşağıdaki komutu çalıştırarak kurallarınızı kontrol edebilirsiniz:

sudo nft listesi kural seti

Bu, temel bir kısıtlayıcı güvenlik duvarıdır.

Çözüm:

Gördüğünüz gibi Nftables, Iptables'tan çok daha kolay ve kullanıcılar Nftables'ı Iptables'tan daha hızlı öğrenebiliyor. Iptables durdurulduğundan ve birçok dağıtım, Debian dahil olmak üzere varsayılan güvenlik duvarı olarak Nftables'ı kullanıyor. Iptables deneyimli kullanıcıları, Iptables'ı Nftables'a çeviren Iptables-nftables-uyumluluk aracına bakmak isteyebilir. Bu onların farklılıkları anlamalarına yardımcı olabilir.

Sistem yöneticileri gibi profesyonel kullanıcılar, Iptables ile çalışmaya devam etme eğilimindedir; Filtrelemeyi geliştirirken zamandan tasarruf etmek için Nftables'ı göz ardı etmekten kaçının. Umarım bu makale sizi Nftables'ı denemeye ikna edecek kadar basit olmuştur.