Zincir Uygulamaları
Önceki Iptables'ın Basit Kullanımı Sonraki
Zincir Uygulamaları
Bu bölümde uygulamalarla iptables'da zincirlerin ve kuralların nasıl kullanıldığına değineceğim. Benim bir konuyu en iyi anlama yöntemim örnek üzerinde çalışmaktır o yüzden bende örnekler üzerinde anlatacağım.
INPUT uygulaması
iptables -t INPUT -p ! tcp --sport ! 21 -s ! 192.168.1.1/255.255.255.0 -d ! 192.168.0.1/255.255.255.0 -i ! ppp0 -j DROP
Bu örnekte ilk olarak -t INPUT parametresini kullandık bu bize kuralın INPUT yani girişler üzerinde geçerli olacağını gösteriyor. Makinamıza bir paket geldiğinde çekirdek INPUT zincirine bakıyor. Eğer tanımladığımız bir kural bulursa uyguluyor yoksa devam ediyor.
Daha sonra ise -p ! tcp parametresi kullanılmış. Bu ise uygulanacak kuralda tcp protokolü haricindeki protokolleri kullanacağımızı belirtiyor. Burada tcp yerine udp, icmp yada all kullanabilirdik. all kuralın tüm protokoller üzerinde etkili olacağını gösterir.
--sport 21 kuralda incelenecek hedef port'un 21 olmaması gerekmektedir.
-s ! 192.168.1.1/255.255.255.0 parametresi ise kuralımızın uygulanması için kaynak adresin 192.168.1.1 haricinde olması gerektiğini gösteriyor. Yani bir paket geldiğinde ip adresi 192.168.1.1 değilse bu kural uygulanacaktır. Burada ip yerine direkt dns adreside kullanabiliriz.
-d ! 192.168.0.1/255.255.255.0 parametresi kuralımızın hedef ip'sinin 192.168.0.1 hariç tüm adresler olduğunu gösteriyor. Kural, paketimiz 192.168.0.1'e gitmiyorsa uygulanacak. Burada da yine ip yerine dns adresini kullanabiliyoruz.
-i ! ppp0 kuralın uygulanması için paketin geldiği arabirimin ppp0 olmaması gerektiğini gösteriyor. Burada ppp0 yerine ppp+ da kullanabiliyoruz bu bize ppp ile başlayan tüm arabirimlerde kuralların uygulanmasını sağlar.
Ve son olarak -j DROP kullanmışız bu ise kuralın uygulanması sonucunda paketin engellenmesini sağlar. Burada kullanabileceğimiz bazı parametreler ALLOW, REJECT'dir. Burada ALLOW paketi kabul eder. REJECT paketi kabul etmez fakat geri sinyal gönderir. DROP ile REJECT arasındaki fark DROP paketi geçirmez fakat geri sinyal göndermez, REJECT ise --reject-with ile verilen sinyali gönderir.
OUTPUT uygulaması
iptables -t OUTPUT -p ! tcp --dport ! 21 -s ! 192.168.1.1/255.255.255.0 -d ! 192.168.0.1/255.255.255.0 -o ! ppp0 -j DROP
Bu örnekte farklı olarak:
-t OUTPUT, -o ! ppp0 ve --dport ! 21 parametreleri kullanılmıştır.
Bu kural bize giden paketlerin:
tcp protokolünde olmayan, hedef portu 21 olmayan, kaynak adresi 192.168.1.1 ve ağmaskesi (netmask) 255.255.255.0 olmayan, hedef adresi 192.168.0.1 ve ağmaskesi (netmask) 255.255.255.0 olmayan ve çıkış arabirimi ppp0 olmayan paketlerin geçişinde DROP kuralının uygulanmasını yani geçememesini sağlamaktadır.
NAT uygulamaları
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.1
Kaynak adresi 192.168.1.1 yaparak paketi yollar.
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.1-192.168.1.3
Kaynak adresi 192.168.1.1 ile 192.168.1.3 arasında bir değer yaparak yollar.
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 192.168.1.1:1-1023
Kaynak adresi 192.168.1.1, hedef portu ise 1 ile 1023 arasında bir değere çevirip paketi yollar.
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Çıkış arabirimi ppp0 olan paketlerde maskeleme yapar. Burada ppp+ kullanmamız halinde tüm ppp'lerde işlem yapacaktır.
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.1.1
Hedef adresi 192.168.1.1 yaparak paketi yollar.
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.1.1-192.168.1.3
Hedef adresi 192.168.1.1 ile 192.168.1.3 arasında bir değer yaparak yollar.
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.1.1:8080
eth0 arabiriminden 80 portuna giden istekleri hedef adresini 192.168.1.1 ve hedef portu 8080 yaparak yollar.
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
eth1 arabiriminden 80 portuna gelen tüm istekleri 3128 portuna yönlendirir.
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0/24
eth1 arabirimi ve 192.168.1.x ağından gelen tüm istekleri kaynak ağı 1.2.3.x olarak değiştirip yollar.
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254
eth1 arabirimi ve 192.168.1.x ağından gelen tüm istekleri kaynak ağı 1.2.3.x ağında 1.2.3.5 hariç olmak üzere değiştirir ve yollar.
Önceki Üst Ana Başlık Sonraki
Iptables ile NAT (Network Address Translation) İşlemleri Başlangıç Faydalanılan kaynaklar
Bir Linux Kitaplığı Sayfası