Aslında Linuxlarda kullanılan firewall netfilter yazılımıdır. Ancak genel olarak bizler iphchains yada iptables gibi netfilter arabirimlerini kullandığımız için iptables yada ipchains’i firewall olarak kabul ederiz. Aslın işi yapan netfilterdir. iptables sadece netfilter’e kurallar girmemizi sağlayan bir yazılımdır... Genel hatları ile iptables’in nasıl kullanıldığına bir göz atalım.
Çeşitli durumlar için örnek kurallar derledim. Bu kurallara anlam verebilmek için genel olarak Iptables yazılımına aşina olmanız gerekir. Eğer gerekirse
Register or
Login adresinden "Iptables’ın Basit Kullanımı" belgesine göz atabilirsiniz.
Kural listesini görmek için
# iptables -L [zincir]
Kural listesini silmek için
# iptables -F [zincir]
Yeni bir zincir eklemek için
# iptables -N ZİNCİR
Bir zinciri silmek için (INPUT, OUTPUT ve FORWARD zincirileri silinemez!)
# iptables -D CHAIN1
iptables kurallarını kaydetmek için
# iptables-save > /etc/sysconfig/iptables
iptables kural listesini yüklemek için
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward (opsiyonel)
iptables-restore < /etc/sysconfig/iptables
Tüm ağ trafiğini engelemek için
# iptables -F
# iptables -A INPUT -j REJECT
# iptables -A OUTPUT -j REJECT
# iptables -A FORWARD -j REJECT
Tüm gelen trafiği engellemek için
# iptables -F INPUT
# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -j REJECT
Tüm giden trafiği engellemek için
# iptables -F OUTPUT
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -j REJECT
Bir servise gelen istekleri engellemek
# iptables -A INPUT -p tcp --dport www -j REJECT
Sadece servise gelen yerel istekleri kabul ederek diğerlerini engellemek için.
# iptables -A INPUT -p tcp -i lo --dport www -j ACCEPT
# iptables -A INPUT -p tcp --dport www -j REJECT
Belirli bir sistemden gelen bağlantıları engellemek.
# iptables -A INPUT -s uzak_IP_adresi -j REJECT
Belirli adreslerden belirli servisle erişimlere izin vermek ve diğer servislere erişimleri
engellemek.
# iptables -A INPUT -s IP_address_1 [-p protocol --dport service] -j ACCEPT
# iptables -A INPUT -s IP_address_2 [-p protocol --dport service] -j ACCEPT
# iptables -A INPUT -s IP_address_3 [-p protocol --dport service] -j ACCEPT
# iptables -A INPUT [-p protocol --dport service] -j REJECT
Uzaktaki bir sisteme erişilmesini engellemek
#iptables -A OUTPUT -d uzak_IP_adresi -j REJECT
Uzaktaki bir sistem üzerindeki bir servise erişimin engellenmesi
# iptables -A OUTPUT -p tcp -d uzak_IP_adresi --dport www -j REJECT
Belirli bir ağ adresindeki bir servise erişimlerin engellenmesi
(Bu örnekte yahoo’nun ağındaki web servislerine erişimi engelliyoruz.)
# iptables -A OUTPUT -p tcp -d 64.58.76.0/24 --dport www -j REJECT
www, ssh, and smtp. servislerine izin vermek ve diğer servislere lo arabirmi dışında erişimi
engellemek.
# iptables -F INPUT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -m multiport -p tcp --dport www,ssh,smtp -j ACCEPT
# iptables -A INPUT -j LOG -m limit
# iptables -A INPUT -j REJECT
Belirli bir mac adresi dışında gelen istekleri reddetmek.
# iptables -F INPUT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -m mac --mac-source 12:34:56:89:90:ab -j ACCEPT
# iptables -A INPUT -j REJECT
lo arabirimi dışında diğer tüm arabirimlerde ssh dışında tüm erişimi engellemek.
# iptables -F INPUT
# iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -j REJECT
Ping (ICMP Type 8 echo request) isteklerini engellemek.
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Log tutmak
# iptables -N LOG_DROP
# iptables -A LOG_DROP -j LOG --log-level warning --log-prefix "dropped" -m limit
# iptables -A LOG_DROP -j DROP
Loglanması gereken durumu içeren kuraldan sonra LOG_DROP zinciri çağırılacak:)
# iptables ...kurallar... -j LOG_DROP
REJECT ve DROP bağlantıyı engellemek için kullanılır. Ancak REJECT istemciye bağlantının
engellendiğine dair bir mesaj gönderir. DROP ise hiç bir şey yapmaz paketi doğrudan çöpe atar. İstemci Zaman aşımına uğrayana kadar bağlanmaya çalışır. Duruma göre REJECT ve DROP kullanılabilir... Yukarıdaki kurallarda da REJECT gördüğünüz her yerde DROP kullanabilirsiniz...