IPTables ile Çalışma

Linux sunucuları Netfilter adında bir bilgisayar tabanlı güvenlik duvarını içerir. Bu güvenlik duvarı, IPTables adında bir program tarafından kontrol edilir.

Netfilter tarafından sağlanan filtreleme program network paketinden veri almaya başlamadan önce, çekirdek düzeyinde gerçekleşir.

IPTables Yapılandırma Dosyasına nasıl erişirim?

Link: /etc/sysconfig/iptables-config

IPTables’in kuralları /etc/sysconfig/iptables dosyasında paylaşılmıştır.

Kurallarda herhangi bir değişiklik yapmadan önce bu güvenlik duvarı kurallarını kaydetmenizi tavsiye ederiz. İlerlemek için aşağıdaki komutu çalıştırın

iptables-save > /root/rule_1.fw

Güvenlik duvarı kural dosyasını geri yüklemek için isterseniz, aşağıdaki komutu çalıştırın:

iptables-restore < /root/rule_1.fw

—-

Güvenlik Durdurma, Başlatma ve Yeniden Başlatma İşlemi nasıl gerçekleştirilir?

Sadece aşağıdaki komutu çalıştırmanız yeterlidir:

—-

service iptables stop

service iptables start

service iptables restart

—-

Not:

İşlemi Durdurma veya yeniden başlatma sırasında otomatik kuralları kaydetmek için, /etc/sysconfig/iptables-config dosyasını açın ve aşağıdaki parametreleri YES olarak seçin.

—-

IPTABLES_SAVE_ON_RESTART=”yes”

IPTABLES_SAVE_ON_STOP=”yes”

—-

/etc/sysconfig/iptables dosyasına iptable kuralları nasıl kaydedilir?

Komutu çalıştırın: /etc/init.d/iptables save

/etc/sysconfig/iptables dosyasından kurallar nasıl geri yüklenir?

Komutu çalıştırın: /etc/init.d/iptables start

IPTables’ın Temel Kavramları

  1. Tables: IPTables’in 4 adet temel tablosu vardır

1.1. Filter: Bu varsayılan tablodur. INPUT, FORWARD ve OUTPUT chain’lerini içerir.

1.2. NAT: Bu ağ adresi çevirisi için kullanılır (port yönlendirme vb.). PREROUTING, OUTPUT ve POSTROUTING chain’lerini içerir.

1.3. Mangle: Bu özel paket değişiklikleri için kullanılır. Kernel 2.4.18 sürümünden itibaren INPUT, FORWARD ve POSTROUTING’i destekler.

1.4. Raw: Bu tablo NOTRACK ile birlikte çalışma hedefi ile ağırlıklı olarak birlikte bağlantı izlemeden muafiyet yapılandırmada kullanılır. PREROUTING ve OUTPUT chain’lerini içerir.

  1. IPTables chain’leri:

2.1. INPUT: Dışarıdan sistem üzerine gelecek paketler için kullanılır. Gelen bağlantı noktalarını ve ip adreslerini ve alt ağları açıp/kapama için kullanılır.

2.2. OUTPUT: Sistem üzerinde dışarıya çıkacak paketler için kullanılır. Giden bağlantı noktalarını ve ip adreslerini ve alt ağları açıp/kapama için kullanılır.

2.3. FORWARD: Başka bir sistemden, diğer bir sisteme gidecek ve bizim sistemimiz üzerinden geçecek paketler için kullanılır. Genellikle Linux router olarak ayarladığında kullanılır.

2.4. PREROUTING: Paketleri, yönlendirme gerçekleşmeden önce manupule eder.

2.5. POSTROUTING: Paketleri, yönlendirme gerçekleştikten sonra manupule eder.

  1. Hedef Değerleri:

3.1. ACCEPT: Paket kabulunu gerçekleştirir.

3.2. DROP: Paketi bırakır ve ana bilgisayara hata mesajı göndermez.

3.3. REJECT: Paketi bırakır ve ana bilgisayara hata mesajı gönderir.

 

  1. Paket Eşleştirme Kuralları:

4.1. Tüm paketler chain içindeki ilk kuralla başlar.

4.2. Paket, bir kuralla eşleşene kadar ilerler.

4.3. Eğer eşleşme olursa, kontrol belirtilen hedefe atlayacaktır (REJECT, ACCEPT, DROP vb).

 

Temel Kullanım Komutları :

–append -A chain // Zincire ekleme

–delete -D chain // Zincirinden eşleşen kuralı silme

–delete -D chain rulenum // Zincirden rulenum (1 = first) kuralını silme

–insert -I chain [rulenum] // Zincire kural olrak rulenum (default 1=first)’a ekleme

–replace -R chain rulenum // Zincirde rulenum (1 = first) kuralını değiştirme

–list -L [chain] // Bir veya tüm zincirler içerisindeki kuralları listeler.

–flush -F [chain] // Bir veya tüm zincirler içerisindeki kuralları siler.

–zero-Z [chain] // Bir veya tüm zincirler içerisindeki sıfır sayaçlarıdır.

–new-N chain // Yeni kullanıcı tanımlı zinciri oluşturur.

–delete-chain -X [chain] // Yeni kullanıcı tanımlı zinciri siler.

–policy -P chain target // Hedef zincirin kuralını değiştirir.

–rename-chain -E old-chain new-chain // Kullanıcının belirttiği zinciri kullanıcının belirttiği isimle değiştirir.

–numeric-n // IP adresleri ve port numaraları nümerik formatta basılacaktır. Varsayılan olarak, onları program ana bilgisayar adları , ağ adları ve hizmet olarak görüntüleyecektir.

–verbose -v // Ayrıntılı çıkış

 

Iptables kullanılarak yapılan Temel işlemler :

  1. Bir zincirin varsayılan hedefini değiştirme

IPTables kuralı ACCEPT veya DROP’u t varsayılan olarak kabul edecektir. Hedef değer ACCEPT ise, varsayılan güvenlik duvarı tarafından tüm trafiği sağlanacaktır. Eğer bu DROP ise sunucunun tüm trafiği engellenecektir.

Örneğin;

—-

*filter

:INPUT ACCEPT [531:91893]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [617:118476]

—-

Yukarıda varsayılan kuralı ACCEPT olarak kabul edilir. Bu kuralı değiştirmek için “/etc/sysconfig/iptables dosyasını açın ve kuralı INPUT ve FORWARD zincirleri için DROP olarak değiştirin.

—-

*filter

:INPUT DROP [531:91893]

:FORWARD DROP [0:0]

—-

  1. IPTables Kural Listesi:

iptables -nL -v

—–

Chain INPUT (policy ACCEPT 964 packets, 158K bytes)

pkts bytes target prot opt in out source destination

1574 232K cP-Firewall-1-INPUT all — * * 0.0.0.0/0 0.0.0.0/0

1293 214K acctboth all — * * 0.0.0.0/0 0.0.0.0/0

—–

  1. Hat numarası ile varsayılan kuralların listesi:

iptables -nL –line-number

—-

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1cP-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0

2acctboth all — 0.0.0.0/0 0.0.0.0/0

—-

  1. Belirli bir zincirin varsayılan kurallarını listeleme

iptables -nL [chain name]

—-

iptables -nL INPUT

Chain INPUT (policy ACCEPT)

target prot opt source destination

cP-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0

acctboth all — 0.0.0.0/0 0.0.0.0/0

—-

  1. Güvenlik Duvarı Kuralını Silme:

5.1. Hat numarası ile kuralların listesi:

iptables -L INPUT -n –line-numbers

5.2. IP’lerin listesi görüntülenecektir. Soldaki numaralara bakın ve numaraları silme için kullanın.

Örneğin, 4 numaralı satırı silmek için: komutu girin.

iptables -D INPUT 4

5.3. Kaynak IP 1.1.1.1 bulun ve kurallardan silin:

iptables -D INPUT -s 1.1.1.1 -j DROP

 

  1. IP adresin beyaz listesiye alınması

iptables -A [CHAIN] -s [SOURCE IP ADDRESS]  -j ACCEPT

—–

iptables -A INPUT -s 1.1.1.1  -j ACCEPT

—–

  1. IP adresin bloklanması:

iptables -A [CHAIN] -s [SOURCE IP ADDRESS]  -j DROP

iptables -A INPUT -s 1.1.1.1 -j DROP

  1. Server üzerinde port açma:

iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport [PORT NUMBER] -j ACCEPT

—-

iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 993 -j ACCEPT

—-

NOT: Bağlantıları engellemek için ACCEPT komutunu DROP ile değiştirin.

9.1. Bir porttaki tüm istekleri engellemek için:

iptables -A INPUT -p tcp –dport [PORT NUMBER] -j DROP

Örneğin: Port 80’e gelen tüm istekleri engelleyin.

—–

iptables -A INPUT -p tcp –dport 80 -j DROP

—–

9.2. Bir IP adresinden gelen isteği engelle:

Örneğin: Port 80’e belirli bir IP adresinden gelen isteği engelleyin.

—-

iptables -A INPUT -p tcp -s 1.1.1.1 –dport 80 -j DROP

—-

9.3. Bir IP adresinden giden isteği engelle:

iptables -A OUTPUT -d [DESTINATION IP ADDRESS] -j DROP

—–

iptables -A OUTPUT -d 1.1.1.1 -j DROP

—–

  1. IP adresi aralığını açma

iptables -A INPUT -p tcp -m iprange –src-range [RANGE OF ip ADDRESS] -j ACCEPT

—-

iptables -A INPUT -p tcp -m iprange –src-range 192.168.11.100-192.168.11.200 -j ACCEPT

—-

10.1. Bir dizi IP Adresi için Port açma

iptables -A INPUT -p tcp –destination-port [PORT NUMBER] -m iprange –src-range [RANGE OF ip ADDRESS] -j ACCEPT

—-

iptables -A INPUT -p tcp –destination-port 80 -m iprange –src-range 192.168.11.100-192.168.11.200 -j ACCEPT

—-

NOT: Bağlantıları engellemek için ACCEPT komutunu DROP ile değiştirin.