12 Aralık 2024 06:37

Anasayfa

undefined...

Iptables'ı yapılandırmak-filtrelendirmek için kurallar(rules) oluşturulur. Oluşturacağımız kuralı nerede işlemesini istiyorsak belirtmemiz gerekir.Örneğin; nat table'da yer alan prerouting chain'de şu işlemi yap gibi. Buradaki işlem target'dır. Kuralın içeriği için ise parametreler ile belirlenir. Iptables'daki chain'de ne olacağı durumunun ne olacağı ise komutlarla(command) belirlenir.

Kurallar, konusunda bilmemiz gereken durumlar şöyledir:

  • Kurallar bir kriter ve hedef(target) içerir.
  • Kriterler eşleşirse hedef için belirtilen kural çalışır.
  • Kriterler eşleşmezse bir sonraki kurala geçer.

Standart TARGET değerleri:

  • ACCEPT: Paketin iptables'tan geçmesine izin vermek için kullanılır.
  • DROP: Paketin iptables'tan geçmesini engellemek ,çöpe atmak anlamında kullanılır. Sisteminize bağlanmaya çalışan herhangi bir kişi, DROP sayesinde sistemin varlığını göremez.Çünkü paketi gönderen sisteme yanıt vermeden paketi düşürür.
  • QUEUE: Iptables , paketi kullanıcı alanına iletir.
  • RETURN: Paket , iptables tarafından reddedilir.Iptables , TCP'den "connection reset" ya da UDP veya ICMP'den "destination host unreachable" paketlerini gönderir.

**Red Hat Enterprise Linux'ta varsayılan  olarak bulunan en popüler Target'lar aşağıdaki gibidir.

  • LOG: LOG target'ı verilerek oluşturulan kuralla eşleşen tüm paketleri günlüğe kaydeder. 
  • REJECT: Paketi gönderen sisteme error paketini gönderir ve paketi düşürür.

 

Chain komutları:

-A , --append  :Belirtilen chain'deki kuralların sonuna kural eklemek için kullanılır.
-I , --insert   :Belirtilen chain'de belirtilen id'ye göre kural eklenir. Örneğin; 5 kuralımız var. 2.sıraya kuralımızı eklemek için bu komutu kullanırız.
-D , --delete   :Berirtilen chain'deki kuralı silmek için kullanılır.
-L , --list   :Belirtilen chain'deki kuralları listelemek için kullanılır.
-F , --flush   :Belirtilen chain içindeki kuralların tamamını siler.
-N , --new-chain  :Yeni bir chain oluşturmak için kullanılır.
-X , --delete-chain   :Belirtilen chain'i silmek için kullanılır.

Yukarıda en çok kullandığım komutları paylaştım. Daha fazlası için komut satırına aşağıdaki komutları yazarak ulaşabilirsiniz.

man iptables

ya da

iptables  -h

 

Parametreler: 

-p , --protocol   : Protokol. TCP, UDP gibi.
-s , --source     : Kaynak. Hostname, ip adresi , network  adı vb verilmeli
-d , --destination : Hedef. Hostname ,ip adresi, network adı  vb verilmeli
-j , --jump         : Kuralın target'ını belirtirken kullanılır.
-g , --goto chain : İşlemin kullanıcı tarafından belirtilen bir chain'de devam edeceğini belirtir.
-i , --in-interface : Paketlerin alındığı arayüz ismi verilir. Örneğin:eth0
-o , --out-interface : Bir paketin gönderildiği arayüzün ismi verilir. Örneğin; ens160

Daha fazlası için yine aynı şekilde man iptables 'tan bakabilirsiniz. 

Kullanımı:

iptables --table [table] [chain_komut] [chain] [kural]

 

Basit bir kural oluşturalım.

iptables -A INPUT -j DROP

 

Yukarıdaki kurala göre ;
Kuralın , INPUT chain'de yazılması ve işlemesi gerekiyor. Gelen bir trafik için bir işlem yapılacağını belirtiyor.
-A diyerek INPUT chain'de yer alan kuralların sonuna bu kuralı eklemiş oluyoruz.
-j DROP diyerek gelen paketi çöpe at, engelle ve mesaj gönderme diyoruz.
Tam anlamı ise gelen trafiği engelleyen bir kural oluşturmuş oluyoruz.

**Yukarıdaki kuralda dikkat etmeniz gereken nokta ,table'ın belirtilmemiş olması. Eğer kuralda yazmıyorsa default olarak Filter Table için geçerlidir.

**Yukarıdaki gibi trafik engelleyen bir kural girildiğinde , aynı kuralın izin veren halini yazsanız bile öncelik olarak engellenen komutu dikkate alacaktır. Bu sebeple en son engelleme kuralını yazmanızı tavsiye ederim.

**Son olarak yazığınız kurallardan sonra aşağıdaki komutu çalıştırmayı unutmayın.

service iptables save 

 

Makdos Bilişim Teknolojileri 2015 - 2024