Redhat Türevi İsletim Sisteminde Firewall (IPTables) Yapilandirilmasi

IP tables; Linux işletim sistemlerinde entegre olarak kullanılan güvenlik duvarı uygulamasıdır. IP tables Linux’un 4. nesil  paketleme yönetim aracıdır. İlk olarak 1994 yılında Alan COX tarafından geliştiriliştir. IP Tables birçok linux dağıtımında kurulu olarak gelmektedir. IP Tables’in kurulu olmadığı durumlarda, Redhat türevi işletim sistemlerinde aşağıdaki komut ile kurulum işleminin gerçekleştirebilirsiniz.

IPv4 sistemler için; yum install iptables

IPv sistemler için; yum install iptables-ipv6

IP Tables temel olarak kullanımı aşağıdaki gibidir.

# iptables <zincir> <prosedür> <protokol> <hedef> <kaynak> <denetim>

IP Tables kural seçenekleri

!Kuralı tersine çevirir.
s [!]Kaynak adresini belirtir.
-p [!]UDP, TCP, ICMP, ALL protokollerinden biri kullanılır. ALL hepsi içindir.
–sport [!]Kaynak portu belirtir.etc/services da listelenen port isimleri olabilir ya da numarasıyla yazılabilir. –source-port –sport ile aynı
-d [!]Varış adresidir.
–dport [!]Varış portudur.
–icmp-typeICMP (Internet Control Message Protocol) tipini belirtir.
-i [!]Ağ arabirim eth0, eth1, ppp0 vb..
-jKural için belirtilen zincirde hedef belirtir. -j ACCEPT gibi..
–to-sourceYeni kaynak ip’si yazar SNAT ile kullanılır.
-o [!]Çıkan ve yönlendirilen zincirlerde kullanılır.(-o ppp1 gibi)
-tTabloyu belirtir.Nat tablosu için -t nat şeklinde yazılır.
-mKullanılacak modülü belirtir.-m limit gibi
–stateState (durum) modülü için kullanılır. NEW, INVALID, RELATED ve ESTABLISHED seçenekleri içindir.
–tcp-flagsTCP flag’laridir. ACK, FIN, RST, URG, SYN, PS veya ALL.
–synSYN paketlerini kontrol etmek içindir.
–limitSaniye başina eşleşme hızını kontrol etmek için kullanılır.
-VIptables’ın versiyonunu öğrenmek için kullanılır.
–mac-source[!]Belirtilen fiziksel adres için işleme alınır yada alınmaz.

Zincirler

  • A : zincire kural ekler. ( Add)
  • E : zinciri yeniden adlandırır.
  • D : zincirden kural siler. (Delete)
  • D : zincirden belirtilen numaradaki kuralı siler. (Delete)
  • L : belirtilen zincirdeki kuralı listeler. (List)
  • I : zincirde belirtilen numaralı alana kural ekler. (Insert)
  • R : zincirdeki kuralın değiştirilmesi için kullanılır. (Replace)
  • N : yeni bir zincir oluşturur. (New)
  • X : kullanıcı tarafından eklenen bir zinciri siler. (Eks)
  • F : zincirdeki kuralların tümünü siler. (Fluhs)
  • P : zincire genel politika ekler.

Prosedür

Sistemimiz üzerinden geçecek tüm trafikler ya giriş, ya çıkış yada yönlendirilmesidir.

  • Input : Dışarıdan sistemimize gelecek paketler,
  • Output : Sistemimizden dışarıya çıkacak paketler,
  • Forward : Başka bir sistemden, diğer bir sisteme gidecek ve bizim üzerimizden geçecek paketler için.

Denetim

  • ACCEPT : paket geçişlerinin izni için kullanılır.
  • DROP : paketlerin geçişlerini engellemek için kullanılır.
  • REJECT : paketlerin erişimi engellenir ve paketi gönderen sistem bilgilendirilir.
  • RETURN : zincirin sonuna gönderilir.
  • QUEUE : paketler kullanıcı alanına gönderilir.

IP Tables’da Sık Kullanılan Komutlar

IP Tables servisinin çalışıp/çalışmadığın kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

/etc/init.d/iptables status ya da services iptables status

IP Tables kurulumu tamamlandıktan sonra servisin kapalı olması durumunda aşağıdaki komut ile ip tables servisini başlatabilirsiniz.

# service iptables start

IP Tables servisinin işletim sisteminin yeniden başlatılması ile servisin otomatik olarak başlatılması için aşağıdaki komutu kullanabilirsiniz.

# chkconfig –level 345 iptables on

IP Tables servisi durdurmak için;

/etc/init.d/iptables stop

IP Tables servisi başlatmak için;

/etc/init.d/iptables start

IP Tables konfigini görüntülemek için;

iptables-save

IP tables’da kuralların system üzerinde kayıtlı kalması için;

# service iptables save

IP Tables’da bütün kuralları silmek ve boş konfig ile ayarları saklamak için sırasıyla aşağıdaki komutları çalıştırmanız gerekecektir.

# iptales -F 

# iptales -X

# iptales –t nat -F

# iptales –t nat -X

# iptales –t mangle -F

# iptales –t mangle -X

# iptales –P INPUT ACCEPT

# iptales –P FORWARD ACCEPT

# iptales –P OUTPUT ACCEPT

# service iptables save

IP Tables’da varsayılan ayarları yeniden yüklemek için aşağıdaki komut kullanılır. Bu işlem ile bütün ağ trafiği engellenir.

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

# iptables -P FORWARD DROP

IP Tables’da loopback ağ kartının izinleri için aşağıdaki komutları kullanabilirsiniz.

# iptables -A INPUT -i lo -j ACCEPT

# iptables -A OUTPUT -o lo -j ACCEPT

FTP sunucu için;

# iptables -A INPUT -i eth0 -p tcp -m tcp –sport 21 -m state –state ESTABLISHED -j ACCEPT

# iptables -A INPUT -i eth0 -p tcp -m tcp –sport 20 -m state –state ESTABLISHED,RELATED -j ACCEPT

# iptables -A INPUT -i eth0 -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -o eth0 -p tcp -m tcp –dport 21 -m state –state NEW,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -o eth0 -p tcp -m tcp –dport 20 -m state –state ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -o eth0 -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED,RELATED -j ACCEPT

Web servisi (tcp 80) izinleri için;

# iptables -A INPUT -i eth0 -p tcp -m tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -o eth0 -p tcp -m tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT

DNS servisi ( tcp/udp 53) izinleri için;

# iptables -A INPUT -i eth0 -p udp -m udp –sport 53 -j ACCEPT

# iptables -A OUTPUT -o eth0 -p udp -m udp –dport 53 -j ACCEPT

# iptables -A INPUT -i eth0 -p tcp -m tcp –sport 53 -j ACCEPT

# iptables -A OUTPUT -o eth0 -p tcp -m tcp –dport 53 -j ACCEPT

Kaynak IP adresi 192.168.100.10 olan sistem üzerinden gelen tüm paketleri kabul etmek için;

iptables -t filter -l INPUT -s 192.168.100.10 –j ACCEPT

Hedef IP adresi 195.175.39.40 olan tüm paketlerin reddedilmesi için;

# iptables -t filter -I OUTPUT -d 195.175.39.40 -j REJECT

Kaynak IP adresi 192.168.100.10 olan sistem üzerinden gelen tüm paketleri engellemek için;

# iptables -A INPUT -s 192.168.100.10 -j DROP

TCP ABC portunu açmak için;

# iptables -A TRUSTED -i eth0 -p tcp -m tcp –dport ABC -j ACCEPT

UDP ABC portunu açmak için;

# iptables -A TRUSTED -i eth0 -p udp -m udp –dport ABC -j ACCEPT

80 nolu porta gelen bütün isteklerin kabul edilmesi için;

# iptables -t filter -I INPUT -p tcp -dport 80 -j ACCEPT

Kaynak IP adresi 192.168.100.10’dan TCP 22 portdan gelen isteklerin kabul edilmesi için;

iptables -t filter -I INPUT -s 192.168.100.10 -p tcp -dport 22 -j ACCEPT

IP Tabled’da NAT Kuralları

iptables -t nat PREROUTING -d “Real IP” -j DNAT -to-destination 192.168.100.20

iptables -t nat POSTROUTING -s 192.168.100.20 -j SNAT “Real IP”

Dışarıdan gelen tcp 80 olan paketin hedef portunun 8080 olarak değiştirilmesi için aşağıdaki komutu kullanabilirsiniz.

iptables –t nat –I OUTPUT –o eth0 –p tcp 80 –J REDIRECT –to ports 8080

Dışarı doğru çıkan tüm trafiğin eth0 interface IP adresi ile NAT lamak.

# iptables –t nat –I POSTROUTING –o eth0 –J MASQUERADE