Linux işletim sistemlerinde, Linux çekirdeğinde ön tanımlı olarak eski adı netfilter olan iptables güvelik duvarı (firewall) gelmektedir. Iptables ‘e netfilter arayüzüde denebilir aslında. Redhat , Fedora ve CentOS gibi bazı dağıtımlar kendi güvenlik duvarları ile gelmektedir. Firewall (güvelik duvarı) bildiğiniz gibi sisteminizi ve ağınızı dışardan gelebilecek her türlü saldırılara ve tehlikelere karşı korumak için tasarlanmış yazılımsal , donanımsal ya da her ikisinin de bir arada bulunabildiği yapılardır. Aslında donanımsal bilenen firewalların için de de sonuçta bir yazılım bulunmaktadır.
İnternetten gelen bir veri paketi ilk önce zincir (chain) denilen katmanlardan geçirilerek bu katmanlarda tanımlanmış kurallara göre bu veri paketi işlem görür. Bu işlem örneğin gelen paketi reddetme (deny) , kabul etme (accept) , silme (drop) şeklinde olabilir.Şimdi bu zincirleri inceleyelim :Input : Sisteme gelen paketler bu zincirde tanımlanan kurallara göre işlem görür.
Forward : Sistemde yönlendirilen veri paketleri bu zincir de tanımlanan kurallara göre işlem görür.
Output : Sistemden çıkan veri paketlerine bu zincirdeki kurallar uygulanır.
Iptables ‘te kurallar tanımlanırken veri paketlerine uygulanacak işlemler liste halinde belirtilir. Burada filtreleme kavramından bahsetmek gerekirse , IP paketlerinin tanımlanan kurallara göre geçişine izin verilmesine ya da verilmemesine filtreleme denilmektedir.
Terminale iptables –h komutunu yazarak iptables kullanım parametrelerini görebiliriz. Daha ayrıntılı bilgi almak için de iptables man komutu ile man klavuz sayfalarını görüntüleyebiliriz.
-L : Zincir kurallarını listeler.
-F : Zincir kurallarını siler.
-A : Zincire yeni kural ekleme
-D: Zincirde kural silme
-p : Protokol türü (TCP , UDP gibi)
-s : Kaynak makine
-d : Hedef makine
-i : Arabirin (eth0,eth1 vs .. )
-J : Uygulanacak kural.
-o : Çıkış işleminde kullanılacak arabirim
-t : Kullanılacak zincir
Input -> giriş , output -> çıkış , Ayrıca –j parametresi ile uygulanabilecek kurallar da ACCEPT , DROP ve REJECT kurallarıdır. ACCEPT kurallar çerçevesinde bağlantı isteği ya da paketin kabul edileceği , drop ve reject ise paketin engelleneceği anlamına gelir. Reject kuralı , paketin engellendiğine dair mesaj gönderir.
-t nat parametresi kullanarak NAT tablosu ile ilgili işlemleri yapabiliriz. Bu parametrelerden sonra –A ile uygulanacak kuralı belirliyoruz. Giriş işlemlerinde PREROUTING (yönlendirmeden önce) çıkış işlemlerinde ise POSTROUTING (yönlendirmeden sonra) kullanıyoruz. REDIRECT ile de paketi hedef adresini değiştirmeden başka bir adrese yönlendiriyoruz.
Iptables ‘te yapılandırmaları , düzenlemeleri , kuralları görmek için iptables –L komutunu kullanabiliriz. Yani –L parametresi ile iptables zincir kuralları listelenir.
Henüz herhangi bir düzenleme yapılmadığından dolayı görüldüğü gibi kural listesi boş durumda. Şimdi nasıl düzenleme , yapılandırma yapılabileceği ile ilgili temel örnekleri inceleyelim.
TCP ve UDP Port Açmak
> iptables –A INPUT –p tcp — dport <port no> -j ACCEPT
> iptables –A INPUT –p udp –dport <port no> -j ACCEPT
Dışardan sistemimize gelen istekleri kapatmak
> iptables –A INPUT –p tcp –dport <port no> -j REJECT
> iptables –A INPUT –p udp –dport <port no> -j REJECT
İçerden dışarıya giden istekleri kapatmak
> iptables –A OUTPUT –p tcp –dport <port no> -j REJECT
> iptables –A OUTPUT –p udp –dport <port no> -j REJECT
* Tüm kuralları listelemek için iptables –L
* Düzenlenen tüm kuralları iptal edip sıfırlamak için iptables –F komutu kullanılır.
-F parametresi kullanarak iptables zincir kuralı silinmiş olur.
Iptables kurallarını girerken iki farklı yöntem kullanabiliriz. Birinci yöntemde kurallar tek tek girilir. İkinci yöntemde ise tüm kurallar bir dosyaya yazılır ve bu dosya iptables ‘e yönlendirilerek tüm kuralların bir seferde işlenmesi sağlanır.
iyi çalışmalar ..