IPtables, birçok farklı Linux Dağıtımında bulunan güvenlik duvarı servisidir. İlk başta  düzenlemek, ele almak zor gibi görünse de, bu yazı size kullanımının ne kadar kolay olduğunu ve güvenlik duvarınızla ne kadar çabuk dolaştığını gösterecektir.

iptables (CHAINS) ZİNCİRLER

Iptables, her biri net filtrenin spesifik fonksiyonlarıyla ilişkili ve her tablonun fonksiyonelliğini belirten her biri birkaç “zincire” ayrılan 5 tablodur.

  • INPUT – Gelen bağlantı isteklerini kontrol etmek için kullanılır.
  • FORWARD – Yerel olarak teslim edilmeyen ancak derhal gönderilen bağlantıların davranışını kontrol etmek için kullanılır.
  • OUTPUT – Giden bağlantı isteklerini kontrol etmek için kullanılır.
  • YAYINLAMA : Bu zincir, herhangi bir paket göndermeden önce ( PRE ) yönlendirme ile ilgili kararları vermek için kullanılır . Örnek olarak, 80 numaralı bağlantı noktasındaki sunucuya henüz ulaşmış herhangi bir trafiği 8080 numaralı bağlantı noktasına yönlendiriyoruz:
      iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
    
  • FORWARD : Adından da anlaşılacağı gibi, Tablo FORWARDzinciri FILTERpaketleri bir kaynaktan bir hedefe iletmek için kullanılır. Burada, 80 nolu bağlantı noktasında , ana bilgisayara yönelik olan arabirimde alınan FORWARDherhangi bir TCPtrafiğin kabul edilip iletileceği bir zincir örneği verilmiştir :eth0192.168.0.4192.168.0.4
      iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
    

    Nat’ın PREROUTING özelliğini sadece paketlerin hedef adresini değiştirmek için ve FORWARD’ın yalnızca filtreleri filtrelemek (paketleri bırakmak / kabul etmek) için kullanmanız gerekir.

    iptables İşlemleri

    • ACCEPT : Bağlantıya izin ver
    • DROP : Bağlantıyı kes (sanki hiçbir bağlantı yapılmadı; sistemin ağda görünmemek istersen kullanışlıdır)
    • Reddet : Bağlantıya izin verme, ancak bir hata geri gönder.

    iptables Varsayılan Politika

    Her linux sisteminde, zincir(chain), varsayılan politikanın ne olduğunu bilmek için, varsayılan ACTION(işlem) ile yapılandırılmıştır.

    sudo iptables -L | grep policy
    Chain INPUT (policy ACCEPT)
    Chain FORWARD (policy ACCEPT)
    Chain OUTPUT (policy ACCEPT)
    

    Varsayılan iptables İlkesi Nasıl Değiştirilir

    Sysadmins varsayılan ilke tarafından değiştirebilir iptables --policy <CHAIN> <ACTION>

    Örneğin

    iptables --policy INPUT DROP
    iptables --policy OUTPUT ACCEPT
    iptables --policy FORWARD DROP
    

    iptables ana komut seçenekleri

    iptables kuralları ile tanışın iptables -h, buradan başlamak iyi bir yer, bazı ipuçları:

    • iptables -A Sonuna kuralı ekler
    • iptables -I kuralı varsayılan olarak en üste ekler
    • iptables -D Bir kuralı silecek (bir kural numarası belirtin veya bu seçeneğin çalışması için kaldırmak istediğiniz tüm kuralı belirtin)
    • iptables -C bir kuralın varlığını kontrol edecek
    • iptables -F Zincirdeki veya tüm zincirlerdeki tüm kuralları sil

    En yaygın IPtables kuralları

      • iptables: Tüm Trafiklerin Engellenmesi
          iptables -F 
          iptables -A INPUT -j REJECT 
          iptables -A OUTPUT -j REJECT 
          iptables -A FORWARD -j REJECT
        
      • iptables Sadece gelen trafiği engelleme
          iptables -F INPUT 
          iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 
          iptables -A INPUT -j REJECT
        
      • iptables sadece giden trafiği engelle
          iptables -F OUTPUT 
          iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT 
          iptables -A OUTPUT -j REJECT
        
      • iptables: Belirli gelen bağlantı noktası veya hizmeti engellemeBu işlem http hizmeti tarafından gelen ağ trafiğini engelleyecektir.
          iptables -A INPUT -p tcp --dport 80 -j REJECT
        

        veya

          iptables -A INPUT -p tcp --dport www -j REJECT
        

        http için yalnızca yerel arabirimlere izin vermek için

          iptables -A INPUT -p tcp --dport 80 -j REJECT
        
      • iptables: Belirli bir host nasıl engellenir  
      • Bu işlem, ana bilgisayarın tüm erişimini engeller
          iptables -A INPUT -s <remote_ip> -j REJECT
        
      • iptables: Belirli ana bilgisayarlara gidenlerin engellenmesi
          iptables -A INPUT -s <remote_ip> -j REJECT
        
      • iptables: Sadece belirli mac adreslerine erişime izin verme
          iptables -A INPUT -m mac --mac-source <mac_address> -j ACCEPT
          iptables -A INPUT -j REJECT
        
      • iptables: Sadece SSH’ye nasıl izin verilir?
          iptables -A INPUT -j REJECT
          iptables -A INPUT -p tcp --dport ssh -j ACCEPT
          iptables -A INPUT -i lo -j ACCEPT
          iptables -A INPUT -j REJECT
        
      • iptables: örneğin tüm telnet bağlantısı nasıl engellenir
          iptables -A OUTPUT -p tcp --dport telnet -j REJECT
        
      • iptables: ping nasıl engellenir
          iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
        

        veya

          iptables -A INPUT -p icmp --icmp-type 8 -j DROP
        
      • iptables: Bağlantı beklemesini yapılandırma
      • IPtable’ları, 22 numaralı bağlantı noktasındaki (SSH) aynı IP’den yeni bağlantılar arasında 15 saniye bekletir:
          iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --update --seconds 15 -j DROP
        
          iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --set -j ACCEPT
        
      • iptables: Smurf saldırıları nasıl engellenir
          iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
          iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
          iptables -A INPUT -p icmp -m icmp -j DROP
        
      • iptables: Smurf saldırıları önlemek için aşırı RST paketleri nasıl düşürülür
          iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
        
      • iptables: Port Yönlendirme nasıl yapılır
      • Bu kurallar, 80 numaralı bağlantı noktasından gelen tüm istekleri 8080 numaralı bağlantı noktasına iletir.
          iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
        

        Bu kurallar, 80 numaralı bağlantı noktasında gelen tüm istekleri yerel ana bilgisayardan 8080 numaralı bağlantı noktalarına iletir

          iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
        
      • iptables Kurallar Nasıl Listelenir?
          iptables -L 
          iptables -t nat --line-numbers -n -L
        
      • iptables: iptables’ta yapılan kural değişiklikleri nasıl kaydedilir
          Ubuntu: sudo /sbin/iptables-save
        
          RedHat / Centos: /sbin/service iptables save
        
          Others: /etc/init.d/iptables save
        
          Generic:  iptables-save > /etc/sysconfig/iptables
        
      • İptables kurallarını dosyadan geri yükleme
        sudo iptables-save | sudo tee /etc/iptables.conf
        sudo iptables-restore < /etc/iptables.conf
    
    • Tüm iptables kurallarını temizleme
    • Bu komut NAT kurallarını silmez
        iptables -F
      

      NAT kuralı varsa, onu temizleyin.

        iptables -t nat -F
    • iptables: PREROUTING NAT kuralını silme
    • İlk önce hangi hattın olduğunu öğrenin iptables -t nat -L --line-numbers
        iptables -t nat -L --line-numbers
        Chain PREROUTING (policy ACCEPT)
        num  target     prot opt source               destination         
        1    REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:8082 redir ports 8083
        2    REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:8084 redir ports 8083
      
        Chain INPUT (policy ACCEPT)
        num  target     prot opt source               destination         
      
        Chain OUTPUT (policy ACCEPT)
        num  target     prot opt source               destination         
        1    REDIRECT   tcp  --  anywhere             localhost            tcp dpt:8084 redir ports 8083
        2    REDIRECT   tcp  --  anywhere             localhost            tcp dpt:8082 redir ports 8083
      

      Ardından kural numarasını silin
      iptables -t nat -D PREROUTING 2

    • iptables : iptables günlüğü nasıl yapılır, sırayla günlüğe giren ve açılan yeni bir kural zinciri oluşturun:
        # Create a new chain called LOGGING
        iptables -N LOGGING 
        #All the remaining incoming packets will jump to the LOGGING chain
        iptables -A INPUT -j LOGGING 
        #Log the incoming packets to syslog (/var/log/messages)
        iptables -A LOGGING -m limit --limit 3/min -j LOG --log-prefix "iptables drop packets" --log-level 4
        #Finally, drop all the packets that came to the LOGGING chain
        iptables -A LOGGING -j DROP
      

      Tüm Bırakılan Giden Paketleri Günlüğe Kaydet

        iptables -N LOGGING
        iptables -A OUTPUT -j LOGGING
        iptables -A LOGGING -m limit --limit 3/min -j LOG --log-prefix "iptables drop packets " --log-level 4
        iptables -A LOGGING -j DROP
      
    • iptables: DDoS Kuralı iptables’ta nasıl oluşturulur?
        # Reject spoofed packets
        iptables -A INPUT -s 10.0.0.0/8 -j DROP
        iptables -A INPUT -s 169.254.0.0/16 -j DROP
        iptables -A INPUT -s 172.16.0.0/12 -j DROP
        iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP
      
        iptables -A INPUT -s 224.0.0.0/4 -j DROP
        iptables -A INPUT -d 224.0.0.0/4 -j DROP
        iptables -A INPUT -s 240.0.0.0/5 -j DROP
        iptables -A INPUT -d 240.0.0.0/5 -j DROP
        iptables -A INPUT -s 0.0.0.0/8 -j DROP
        iptables -A INPUT -d 0.0.0.0/8 -j DROP
        iptables -A INPUT -d 239.255.255.0/24 -j DROP
        iptables -A INPUT -d 255.255.255.255 -j DROP
      
        # Stop smurf attacks
        iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
        iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
        iptables -A INPUT -p icmp -m icmp -j DROP
      
        # Drop all invalid packets
        iptables -A INPUT -m state --state INVALID -j DROP
        iptables -A FORWARD -m state --state INVALID -j DROP
        iptables -A OUTPUT -m state --state INVALID -j DROP
      
        # Drop excessive RST packets to avoid smurf attacks
        iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
      
    • iptables Port taramaları nasıl engellenir
        # Anyone who tried to portscan us is locked out for an entire day.
        iptables -A INPUT   -m recent --name portscan --rcheck --seconds 86400 -j DROP
        iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP
      
        # Once the day has passed, remove them from the portscan list
        iptables -A INPUT   -m recent --name portscan --remove
        iptables -A FORWARD -m recent --name portscan --remove
      
        # These rules add scanners to the portscan list, and log the attempt.
        iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
        iptables -A INPUT   -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
      
        iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
        iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
      
      

 

 

 

Kaynak: 8gwifi.org