IPTABLES

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.

Iptables güvenlik duvarı , temel olarak veri paketlerini hedef kaynak IP adresi ve hedef-kaynak portlarına göre incelenir. Uygulama katmanında çalışan (L7 filter) ve veri paketlerinin içeriğini de analiz edebilen güvenlik duvarları da kullanılmaktadır. Bahsedilen bu uygulama seviyesindeki güvenlik duvarları , genelde yönlendirici olarak yapılandırılmış makinalarda kullanılır ve IDS (Saldırı Tespit Sistemi) IPS (Saldırı Engelleme Sistemi) gibi sistemlerle birlikte çalışırlar. Basit güvenlik duvarları (L3 firewall) temel olarak 3. Katman olan ağ katmanında çalışırlar. İhtiyaca göre güvelik duvarları yapılandırılabilir. Sistemimize bir bağlantı isteği geldiğinde bu istek analiz edilerek sistemimize bağlantı yapmasına izin verilir ya da bağlantı reddedilir.Iptables güvenlik duvarını kullanarak sadece kendi sistemimizle ilgili kurallar oluşturup sistemimizi koruyabildiğimiz gibi , ağda bulunan Linux makinamızı bir güvenlik duvarı olarak yapılandırıp ağ güvenliğinde sağlayabiliriz. Yani sunucu sistemlerde , ticari güvenlik duvarlarından çok daha iyi sonuç alınabilmektedir. İnternetten ağımıza gelen trafiğe ilk olarak güvenlik duvarı ve yönlendirici olarak yapılandırmış olduğumuz Linux makinamıza yönlendirerek oradan da iç ağa aktardığımız zaman , yapılandırdığımız kurallar çerçevesinde ağımız korunacaktı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 ..