Kullanım

Desteğin kontrol edilmesi

Modül olarak derlenmişse, modülü yükleyin:

# modprobe ip6_tables

Yeteneklerini kontrol edin:

# [ ! -f /proc/net/ip6_tables_names ] && echo "Kullandığınız çekirdeğin 'ip6tables' güvenlik duvarı (IPv6) desteği yok!"

ip6tables nasıl kullanılır öğrenin

Tüm IPv6 netfilter girdilerini listele
  • Kısa

    # ip6tables -L

  • Genişletilmiş

    # ip6tables -n -v --line-numbers -L

Belli bir kural kümesini listele
# ip6tables -n -v --line-numbers -L INPUT

Gelen kural kümesine bir kayıt kuralı ekle
# ip6tables --table filter --append INPUT -j LOG --log-prefix "INPUT:" --log-level 7

Gelen kural kümesine bir durdurma kuralı ekle
# ip6tables --table filter --append INPUT -j DROP

Bir kuralı numarasıyla sil
# ip6tables --table filter --delete INPUT 1

ICMPv6'ya izin ver
Eski çekirdekleri kullanarak (yamanmamış 2.4.5 çekirdek ve iptables-1.2.2) tür belirtmek mümkün değildir.

  • Tünelden gelen ICMPv6'yı kabul et:

    # ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT
    

  • Tünele giden ICMPv6'ya izin ver:

    # ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT
    

    Yeni çekirdekler ICMPv6 türlerini belirtmeye izin verirler.

    # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
    

Hız sınırlama
ICMPv6 fırtınası olabileceğinden (yazar bunu iki kez görmüştür) en azından ICMPv6 kural seti için hız kısıtlamasını kullanmanız gerekebilir. Buna ek olarak DoS ataklarından korunmak için de kısıtlamalar kullanmanız gerekebilir. Kısıtlanmış ICMPv6 örneği aşağıdakine benzer:

# ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request -j ACCEPT --match limit --limit 30/minute

SSH isteklerine izin verin
Aşağıdaki örnekte belirlenen bir IPv6 adresinden gelen SSH isteklerine izin verilmektedir.

2001:0db8:100::1/128 adresinden gelen SSH isteklerine izin ver:

# ip6tables -A INPUT -i sit+ -p tcp -s 2001:0db8:100::1/128 --sport 512:65535 --dport 22 -j ACCEPT

Yanıt paketlerine izin ver (şimdilik IPv6 bağlantısının izini sürmek netfilter6 tarafından gerçekleştirilememektedir)

# ip6tables -A OUTPUT -o sit+ -p tcp -d 2001:0db8:100::1/128 --dport 512:65535 --sport 22 ! --syn j ACCEPT

IPv4 içinde IPv6 tünelini etkinleştir
IPv4 içinde IPv6 tünellenmiş paketleri kabul etmek için, IPv4 güvenlik duvarı yapılandırmanıza bu paketlerle ilgili kurallar eklemeniz gerekir, örneğin;

Örnek 4.7. ppp0 arabiriminde IPv4 içinde IPv6 tünelinden gelen paketlere izin ver

# iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT

Örnek 4.8. ppp0 arabiriminde IPv4 içinde IPv6 tünelinden giden paketlere izin ver

# iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT

Eğer sadece bir statik tüneliniz varsa IPv4 adresini de belirleyebilirsiniz, örneğin;

Örnek 4.9. ppp0 arabiriminde tünel son noktası 1.2.3.4 olan IPv4 içinde IPv6 tünelinden gelen paketlere izin ver

# iptables -A INPUT -i ppp0 -p ipv6 -s 1.2.3.4 -j ACCEPT

Örnek 4.10. ppp0 arabiriminde tünel son noktası 1.2.3.4 olan IPv4 içinde IPv6 tünelinden giden paketlere izin ver

# iptables -A OUTPUT -o ppp0 -p ipv6 -d 1.2.3.4 -j ACCEPT

Gelen TCP bağlantı isteklerine karşı koruma
MUTLAKA ÖNERİLİR! Güvenlik gerekçeleriyle gelen TCP bağlantı isteklerini durduran bir kural eklemelisiniz. Eğer başka bir arabirim kullanıyorsanız -i seçeneğiyle bunu ayarlayın.

Bu konak'a gelen TCP bağlantı isteklerini durdur:

# ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP

Bu yönlendiricinin arkasındaki konaklara gelen TCP bağlantı isteklerini durdur:

# ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP

Belkide bu kurallar aşağıda başkalarıyla değiştirilecektir, ama bunun üzerinde düşünmeniz gerekir. En iyi yöntem bir betik hazırlayıp kuralları belirlenen sıra ile çalıştırmaktır.

Gelen UDP bağlantı isteklerine karşı koruma
MUTLAKA ÖNERİLİR! Güvenlik duvarı bilgisinde söylediğim gibi giden UDP/TCP oturumlarında portları kontrol etmek mümkündür. Eğer tüm yerel IPv6 sistemleriniz örneğin 32768-60999 arası portları kullanıyorsa UDP bağlantılarını aşağıdaki gibi durdurmanız mümkündür:

Bu konaktan giden isteklerin yanıtı olamayacak gelen UDP paketlerini durdur:

# ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP

Bu yönlendiricinin arkasındaki konaklardan yapılan isteklerin yanıtı olamayacak gelen UDP paketlerini durdur:

# ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP

Fedora Core için basit bir örnek

Aşağıda Fedora Core 6 (2.6.20 çekirdek sürümü için) basit bir güvenlik duvarı yapılandırması gösterilmektedir. Bağlantı izlenmesini destekleyen, ICMPv6 paketlerini geri çeviren varsayılan (sistem güvenlik duvarı tarafından oluşturulan) güvenlik duvarının değiştirilmişidir. Gelen SSH (22. port) bağlantılarına izin verilmiştir.

#Dosya: /etc/sysconfig/ip6tables
          *filter :INPUT ACCEPT [0:0]
          :FORWARD ACCEPT [0:0]
          :OUTPUT ACCEPT [0:0]
          :RH-Firewall-1-INPUT - [0:0]
          -A INPUT -j RH-Firewall-1-INPUT
          -A FORWARD -j RH-Firewall-1-INPUT
          -A RH-Firewall-1-INPUT -i lo -j ACCEPT
          -A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
          -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
          -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
          -A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
          -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
          -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
          -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          -A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
          -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
          COMMIT
      

Bütünlük açısından IPv4 yapılandırması da aşağıdadır.

#Dosya: /etc/sysconfig/ip6tables
          *filter :INPUT ACCEPT [0:0]
          :FORWARD ACCEPT [0:0]
          :OUTPUT ACCEPT [0:0]
          :RH-Firewall-1-INPUT - [0:0]
          -A INPUT -j RH-Firewall-1-INPUT
          -A FORWARD -j RH-Firewall-1-INPUT
          -A RH-Firewall-1-INPUT -i lo -j ACCEPT
          -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
          -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
          -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
          -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
          -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
          -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
          -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
          -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
          COMMIT
      

Kullanım:

  • Yapılandırma dosyalarını oluşturun ve düzenleyin.

  • IPv4 & IPv6 güvenlik duvarlarını aktif hale getirin.

          

# service iptables start

# service ip6tables start

  • *

    Sistemin yeniden başlatılmasından sonra kendiliğinden başlamasını sağlayın

          

# chkconfig iptables on

# chkconfig ip6tables on

Açıklayıcı örnek

Aşağıdaki satırlar daha karmaşık bir yapılandırma örneğini göstermektedir. Mutlu netfilter6 kural setleri hazırlamalar...

# ip6tables -n -v -L
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 extIN      all      sit+   *       ::/0                 ::/0
    4   384 intIN      all      eth0   *       ::/0                 ::/0
    0     0 ACCEPT     all      *      *       ::1/128              ::1/128
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0
    0     0 LOG        all      *      *       ::/0                 ::/0          LOG flags 0 level 7 prefix `INPUT-default:'
    0     0 DROP       all      *      *       ::/0                 ::/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 int2ext    all      eth0   sit+    ::/0                 ::/0
    0     0 ext2int    all      sit+   eth0    ::/0                 ::/0
    0     0 LOG        all      *      *       ::/0                 ::/0         LOG flags 0 level 7 prefix `FORWARD-default:'
    0     0 DROP       all      *      *       ::/0                 ::/0

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 extOUT     all      *      sit+    ::/0                 ::/0
    4   384 intOUT     all      *      eth0    ::/0                 ::/0
    0     0 ACCEPT     all      *      *       ::1/128              ::1/128
    0     0 ACCEPT     all      *      lo      ::/0                 ::/0
    0     0 LOG        all      *      *       ::/0                 ::/0         LOG flags 0 level 7 prefix `OUTPUT-default:'
    0     0 DROP       all      *      *       ::/0                 ::/0

Chain ext2int (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0
    0     0 ACCEPT     tcp       *      *       ::/0                 ::/0        tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02
    0     0 LOG        all       *      *       ::/0                 ::/0        LOG flags 0 level 7 prefix `ext2int-default:'
    0     0 DROP       tcp       *      *       ::/0                 ::/0
    0     0 DROP       udp       *      *       ::/0                 ::/0
    0     0 DROP       all       *      *       ::/0                 ::/0

Chain extIN (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp       *      *       3ffe:400:100::1/128  ::/0        tcp spts:512:65535 dpt:22
    0     0 ACCEPT     tcp       *      *       3ffe:400:100::2/128  ::/0        tcp spts:512:65535 dpt:22
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0
    0     0 ACCEPT     tcp       *      *       ::/0                 ::/0        tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02
    0     0 ACCEPT     udp       *      *       ::/0                 ::/0        udp spts:1:65535 dpts:1024:65535
    0     0 LOG        all       *      *       ::/0                 ::/0        limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:'
    0     0 DROP       all       *      *       ::/0                 ::/0

Chain extOUT (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp       *      *       ::/0                3ffe:ffff:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02
    0     0 ACCEPT     tcp       *      *       ::/0                3ffe:ffff:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0
    0     0 ACCEPT     tcp       *      *       ::/0                 ::/0        tcp spts:1024:65535 dpts:1:65535
    0     0 ACCEPT     udp       *      *       ::/0                 ::/0        udp spts:1024:65535 dpts:1:65535
    0     0 LOG        all       *      *       ::/0                 ::/0        LOG flags 0 level 7 prefix `extOUT-default:'
    0     0 DROP       all       *      *       ::/0                 ::/0

Chain int2ext (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0
    0     0 ACCEPT     tcp       *      *       ::/0                 ::/0        tcp spts:1024:65535 dpts:1:65535
    0     0 LOG        all       *      *       ::/0                 ::/0        LOG flags 0 level 7 prefix `int2ext:'
    0     0 DROP       all       *      *       ::/0                 ::/0
    0     0 LOG        all       *      *       ::/0                 ::/0        LOG flags 0 level 7 prefix `int2ext-default:'
    0     0 DROP       tcp       *      *       ::/0                 ::/0
    0     0 DROP       udp       *      *       ::/0                 ::/0
    0     0 DROP       all       *      *       ::/0                 ::/0

Chain intIN (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all       *       *       ::/0                fe80::/ffc0::
    4   384 ACCEPT     all       *       *       ::/0                ff02::/16

Chain intOUT (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all       *      *       ::/0                 fe80::/ffc0::
    4   384 ACCEPT     all       *      *       ::/0                 ff02::/16
    0     0 LOG        all       *      *       ::/0                 ::/0        LOG flags 0 level 7 prefix `intOUT-default:'
    0     0 DROP       all       *      *       ::/0                 ::/0