| |||||||
![]() |
| | LinkBack | Thread Tools | Display Modes |
|
#1
| ||||
| ||||
| IPTables ve Netfilter nedir?
Gercekten baslangic seviyesi icin uygun ve anlasilmasi kolay bir makale. Kesinlikle paylasmak istedim.Kaynagini hatirliyamiyorum özür dilerim. Yukarida gecen yaziyi Enver Altin tarafindan 14 Kasim 2004 tarihinde The truth about my life adresinde yayinlanmistir. Hic olmazsa yazinin sonuna kaynak belirtilmesi gerekmez miydi? Yazinin sonuna degil ama basina yazmistik enveraltina bi kez daha tesekkürler.Netfilter nedir? Netfilter, en basit ifade bicimi ile 2.3 ve daha yeni Linux cekirdegi sürümleri icerisinde bulunan yetenekli ve yüksek performansli NAT, filtering ve packet mangling sistemi olarak biliniyor. Peki, IPTables nedir? iptables, cekirdek icerisinde yer alan Netfilter sistemini userspace icerisinden denetlemek amaciyla kullandigimiz arac ve yazilimin adi. Bu ikisi sürekli birlikte aniliyor, farklari nedir? Netfilter, Linux cekirdegi icerisinde sürekli olarak calisir ve Linux sistem cagrilari (syscall) yoluyla yönetilir. IPTables ise, cekirdek icerisinde calisan netfilter yapisini yönetmek amaciyla kullandigimiz arac. Her ikisi de Netfilter projesi kapsaminda, ayni kisiler ve gruplar tarafindan gelistiriliyor. Buna karsin netfilter kodu resmi Linux cekirdegi ile birlikte gelirken, iptables adindaki arac ayri bir yazilim ve kullanilan dagitim tarafindan saglaniyor. Temel kavramlar: IP paketinin yapisi IP paketlerini mektup zarflarina kadar basitlestirecek olursak, temel anlamda bir IP paketi: ![]() sekil 1: Basit bir IP paketi bu kadar basit algilanabilir (tabii gercekte böyle degil, IP paketleri cok daha fazla bilgi iceriyor fakat simdilik bu bölümlerle ilgilenmeyecegiz). Bir IP paketini simdilik yalnizca nereden geldigini, nereye gitmek üzere gönderildigini ve veriyi iceren bir mantiksal bir birim olarak düsünelim.Nelerden bahsedecegiz? Bu belge icerisinde, yalnizca Netfilter’in cok sik kullanilan NAT ve Filtering özelliklerinden bahsedecegim; packet mangling ve bandwidth shaping gibi daha ileri düzey konulara simdilik girmeyecegim. Ayrica kullanici tanimli kural zincirlerinin yönetimi, REJECT ve LOG target konularindan ve paketlerin baglanti durumlarina göre incelenmeleri gibi konulardan da detayli olarak bahsetmeyecegim. Bu konulardan bahsetmeme nedenim, belgeyi olabildigince basit ve giris düzeyinde tutmak. Bahsetmedigim konular geliskin bir güvenlik duvari yapilandirmasi icin degerli ve gerekli konular. Bu konularda vakit buldugumda ayrica genis bir belge hazirlayacagim. Netfilter nasil calisiyor? ![]() sekil 2: Netfilter, tablolar ve zincirler Yalnizca NAT ve IP Filtering konularindan bahsedecek olmanin verdigi rahatlikla yukaridaki sekli cizdim.Netfilter temel anlamda iki farkli türden ve mantiksal olarak birbirine benzerlik gösteren islemler gerceklestiriyor. Bunlar:
Bence ideal bir dünyada NAT olmamaliydi. Eger herkese yetecek kadar cok IP adresimiz olsaydi ve her IP adresi icin ek bedel ödemek gibi anlamsiz kosullar olmasaydi, NAT gibi bir isleme gerek kalmazdi NAT gibi sürecler, bir tek IP adresine sahip oldugunuz fakat bu IP adresini cesitli hizmetler icin ortak kullanmaniz gerektigi durumlarda, belirli sinirlar cercevesinde faydali oluyor. En popüler senaryolardan bir tanesini aciklamak gerekirse, dial-up bir modem ile edindiginiz bir IP adresiniz var ve ayni zamanda bu bilgisayara bagli bir ethernet üzerinden yerel aginizdaki diger bilgisayarlarla iletisim kurabiliyorsunuz. Yerel aginiza bakan ag arayüzünün 192.168.1.1 oldugunu, modem baglantinizdan edindiginiz IP adresinin de 123.123.123.123 oldugunu varsayalim. IP dolastirma (routing) etkin olsun (nasil etkinlestirileceginden bahsedecegim). Yalnizca IP dolastirma yapilanmasinin etkin oldugu durumda yerel agdan (örnegin IP adresi 192.168.1.5 olan “Ahmet”‘in bilgisayarindan) gelen bir IP paketi; kaynak adresinde 192.168.1.5 bilgisi yer alacak bicimde Internet erisimimiz bulunan IP adresi üzerinden, degistirilmeksizin iletilecek. Eger bagli bulundugumuz ISP, IP dolastirma sirasinda özel bazi adresleri de yönlendirecek kadar dikkatsiz ise Ahmet’in Internet üzerinde baglanmaya calistigi sunucuya kaynak adresi 192.168.1.5 olan bir IP paketi ulasacak Bu durumda, Ahmet’in baglandigi sunucunun yanitlari Ahmet’e gönderebilmesini saglamak üzere, Ahmet’den gelen ve Internet yönüne dogru gidecek olan paketlerin hedef adreslerini, Internet’e bagli bulunan sistemimizin Internet üzerindeki gercek IP adresi ile degistirmeliyiz ki Ahmet’in istegine yanit olarak gönderilecek IP paketleri Internet’e bagli bulunan sistemimize kadar ulasabilsin. Ayrica, bu islemi yapan sistemimiz hangi IP paketlerini nereden geldikleri ve nereye gittikleri gibi asil bilgiler ile birlikte nasil degistirdigini hatirlamali ki yanit niteliginde gelen paketleri yerel agimizdaki asil hedeflerine (yani örnegimizde Ahmet’in bilgisayarina) tekrar, Internet üzerinden geliyormus gibi gönderebilsin (stateful NAT). Bu islem, basit bir NAT uygulamasidir ve iptables kullanilarak tek satirlik ve bircok kisinin ne olup bittigini anlamaksizin ezberledigi bir komut ile kolaylikla gerceklestirilebilir. ilk bakista görülebilecegi gibi, NAT iki durumda yani iki farkli bicimde yapilabilir:
Ayrica, MASQUERADE adiyla bilinen özel bir SNAT türü var. Masquerading, sabit bir IP adresine veya sabit/güvenilir bir baglantiya sahip olmayan sistemlerde kullanilmasi icin tasarlanmis bir NAT türü. SNAT yerine MASQUERADE kullanildiginda, paketin hedef adresine, paketin sistemden ayrilacagi ag arayüzünün IP adresi otomatik olarak yazilir (SNAT kullanildiginda paketin kaynak adresine yazilacak IP adresini belirtmek durumundasiniz). Tek dezavantaji, SNAT’a kiyasla cok kücük performans kayiplarina neden olmasi. Ayrica dogru kullanilmadiginda ve kücük birkac husus gözden kacirildiginda MASQUERADE ile sisteminize kücük güvenlik aciklari olusturmaniz isten bile degil. simdi örnegimizi tamamlayalim ve neler olup bittigini aciklayalim: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE iptables aracini kullanarak cekirdek icerisindeki Netfilter modüllerinin yapilandirmasina bir kural ekleyerek degistirmis olduk ve belirttigimiz kural, 192.168.1.0/24 agindan gelen ve ppp0 arayüzü yönüne gidecek olan (routing’den sonra NAT yaptigimiz icin bu bilgiye sahibiz) tüm IP paketlerinin kaynak adreslerine gönderilmeden önce otomatik olarak ppp0 arayüzünün IP adresinin yazilmasini sagladi. Bu sayede hedef sunucudan dönen yanit paketleri bize ulasacak ve Netfilter yanit niteligindeki paketleri tersi yönde otomatik olarak DNAT yapacak ve routing isleminden önce bu paketlerin hedef adreslerini degistirerek yerel agimizdaki kullanicilara ulasmasini saglayacak (bu islem icin ayrica bir kural eklememize gerek yok). Ayni senaryoya bir özellik daha ekleyelim; Internet’e modem ile bagli olan sistemimiz, Internet yönünden kendisine ulasan HTTP (TCP port 80) isteklerini Ahmet’in 192.168.1.5 adresindeki bilgisayarina iletsin. Kuralimiz: iptables -t nat -A PREROUTING -i ppp0 -p tcp –dport http -j DNAT –to 192.168.1.5 Bu parametreler ne anlama geliyor? Nasil kullaniliyor? Netfilter, IP paketleri üzerinde yapilacak cesitli islem türlerini ve asamalarini tablolar icerisinde gruplar. Bu belgede yalnizca nat ve filter tablolarindan bahsedecegiz. Bu tablolar icerisinde kural zincirleri bulunur (kural zincirleri sistem tarafindan veya kullanicilar tarafindan gereksinimlere göre tanimlanir). Ayrica her tablo, öntanimli adi degistirilemeyen ve silinemeyen belirli sayida kural zinciri icerir, bunlar:
Ad Kullanim bicimi Aciklama Örnek Tablo secimi -t iptables komutunun devamindaki parametrelerin hangi tablo üzerinde gerceklestirilecegini belirtmek amaciyla kullanilir. -t nat -t filter Kurallari listele -L [] Bir tablodaki istenen veya tüm zincirlerde yer alan kurallari listeler. -L -L POSTROUTING Kurallari temizle -F [] Bir tablodaki istenen veya tüm zincirlerde yer alan kurallari temizler. -F -F POSTROUTING Öntanimli davranis belirle -P Bir tablodaki belirtilen zincirin öntanimli davranis kuralini belirler. Zincirdeki diger kurallarden herhangi biri tarafindan islenmeyen bir paket, öntanimli davranis kuralinda belirtilen isleme tabi tutulur. -P INPUT DROP -P INPUT LOG Kural ekle -A Bir tablodaki belirtilen zincir icerisine belirtilen parametrelere göre bir kural ekler. -A POSTROUTING -A FORWARD Kural sil -D Bir tablodaki belirtilen zincirde yer alan ve belirtilen parametrelerle bire bir ayni olan kurali siler. -D POSTROUTING -D FORWARD Kullanici tanimli zincir sil -X [] Bir tablodaki belirtilen veya tüm kullanici tanimli zincirleri siler. -X benim_zincirim -X Paket secimi icin kullanilan parametreler: Ad Kullanim bicimi Aciklama Örnek Kaynak adresi -s [!] incelenen paketin kaynak adresi, belirtilen adres ile örtüsüyor ise paket üzerinde belirtilen islem gerceklestirilir. -s 192.168.1.5 -s 192.168.1.0/24 Hedef adresi -d [!] incelenen paketin hedef adresi, belirtilen adres ile örtüsüyor ise paket üzerinde belirtilen islem gerceklestirilir. -d 192.168.1.10 -d 192.168.2.0/24 Protokol -p [!] incelenen paket belirtilen tasiyici protokol ile örtüsüyor ise paket üzerinde belirtilen islem gerceklestirilir. Öntanimli degeri (belirtilmediginde): “all” -p tcp -p udp -p icmp -p all Hedef port –dport [!] incelenen paketin hedef port adresi belirtilen port ile örtüsüyor ise paket üzerinde belirtilen islem gerceklestirilir. –dport 80 –dport ftp Kaynak port –sport [!] incelenen paketin kaynak port adresi belirtilen port ile örtüsüyor ise paket üzerinde belirtilen islem gerceklestirilir. –sport ftp-data –sport 53 Gelis arayüzü -i [!] incelenen paketin geldigi ag arayüzü belirtilen ag arayüzü ile örtüsüyorsa paket üzerinde belirtilen islem gerceklestirilir. Bu bilgiye yalnizca routing isleminden önce veya routing islemi sirasinda yapilan denetimlerde erisilebilir. -i eth1 -i ppp0 Gidis arayüzü -o [!] incelenen paketin gitmek üzere oldugu ag arayüzü belirtilen ag arayüzü ile örtüsüyorsa paket üzerinde belirtilen islem gerceklestirilir. Bu bilgiye yalnizca routing isleminden sonra erisilebilir. -o ppp0 -o eth1 Ayrica bu parametrelerin tümünde, belirtilecek degerden önce kullanilabilecek ünlem isareti (!), olumsuzluk belirtmek anlaminda kullanilir. Örnegin, –dport ! 80 bicimindeki bir tanimin bulundugu kural, hedef port adresi 80 olmayan tüm paketlere uygulanacaktir. cesitli ifadelere göre secilen paketlere nasil bir islem uygulanacagi -j parametresi ile belirtilir ve bahsi gecen kuralin bulundugu tabloya göre degisiklik gösterir: NAT tablosu icin: Ad Kullanim bicimi Aciklama Örnek SNAT -j SNAT –to Sistemden ayrilmak üzere olan paketin kaynak adresini (ve belirtilmisse kaynak port numarasini) belirtilen adres (ve belirtilmisse port numarasi) bilgisi ile degistirir. Bu islem yalnizca routing isleminden sonra gerceklestirilebilir. -j SNAT –to 212.156.4.1 -j SNAT –to 212.156.4.20:53 -j SNAT –to 192.168.1.35:http DNAT -j DNAT –to Sisteme henüz gelmis bir paketin hedef adresini (ve belirtilmisse hedef port numarasini) belirtilen adres (ve belirtilmisse port numarasi) bilgisi ile degistirir. Bu islem yalnizca routing isleminden önce gerceklestirilebilir. -j DNAT –to 192.168.1.5 -j DNAT –to 212.156.123.123:10000 MASQUERADE -j MASQUERADE Sistemden ayrilmak üzere olan paketin kaynak adresini, paketin sistemden ayrilacagi ag arayüzünün adresi ile degistirir. Bu islem yalnizca routing isleminden sonra gerceklestirilebilir. -j MASQUERADE REDIRECT -j REDIRECT –to Sisteme henüz gelmis bir paketin, iptables kurallarinin calistigi sistem üzerindeki belirtilen port adresine yönlendirilmesini saglar. -j REDIRECT –to 3128 Filter tablosu icin: Ad Kullanim bicimi Aciklama Örnek ACCEPT -j ACCEPT Belirtilen paket secimi parametrelerine uyan paketin gecisine izin verilir. -j ACCEPT DROP -j DROP Belirtilen paket secimi parametrelerine uyan paket gözardi edilir, hic alinmamis gibi davranilir. -j DROP REJECT -j REJECT Belirtilen paket secimi parametrelerine uyan paket uygun bir ICMP hata paketi ile yanitlanarak, reddedilir. Bu konuda daha detayli bilgi icin man iptables komutu verin. -j REJECT LOG -j LOG Belirtilen paket secimi parametrelerine uyan paket sistem kayitlari icerisine kaydedilir. Bu konuda daha detayli bilgi icin man iptables komutu verin. -j LOG Filtreleyelim! Kisa bir senaryo, sistemimize SSH (tcp port 22) ile gelebilecek tüm baglantilari kapatmak istiyoruz: iptables -t filter -A INPUT -p tcp –dport ssh -j DROP komutunu verdigimizde, sistemimize herhangi bir ag üzerinden SSH ile erismek mümkün olmayacak, cünkü Netfilter paketlerin isletim sisteminin IP yigiti icerisinde degerlendirmeye alinmasini engelleyecek ve gözardi edecektir. Yeri gelmisken, daha önce bahsettigim bir ipucunu kullanmak istiyorum. Son örnegimizde -t filter ile filter tablosunu ayrica belirtmistik, fakat -t parametresi belirtilmediginde öntanimli olarak zaten filter tablosu kullanilir, dolayisiyla bu ifade cok da gerekli degil. Örnegimizi biraz gelistirelim; 192.168.1.5 disinda hicbir yerden ssh kabul etmeyelim: iptables -A INPUT -s ! 192.168.1.5 -p tcp –dport ssh -j DROP Bir baska örnek, yerel agdan gelmeyen tüm SSH isteklerini bosverelim: iptables -A INPUT -i ! eth0 -p tcp –dport ssh -j DROP Sanirim artik FORWARD zinciri ile de oynayabiliriz, yerel agdan internet yönüne giden tüm SMTP iletisimini bosverelim örnegin (IP Forwarding’in acik oldugunu varsayiyorum): iptables -A FORWARD -i eth0 -p tcp –dport smtp -j DROP IP Forwarding nedir, nasil calistirilir? IP Forwarding, daha önce de belirttigim gibi IP paketlerinin bir ag arayüzünden bir digerine aktarilmasi; yani IP paketlerinin bir fiziksel agdan bir digerine aktarilmasi islemidir. Linux cekirdegi, bu islemi gerceklestirmek icin gerekli tüm yapiyi barindirir ve aktif hale getirmek kolaydir: echo 1 > /proc/sys/net/ipv4/ip_forward IP Forwarding isleminin düzgün calisabilmesi icin, en az bir ag arayüzüne (Linux cekirdegi sanal arayüzler arasinda da IP Forwarding yapabilir) ve en az iki IP subnet’in routing tablosunda tanimli olmasina gereksinim duyulur: server:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.199.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 192.168.199.3 0.0.0.0 UG 0 0 0 eth1 Örnekteki routing tablosuna göre, 192.168.1.0/24 ve 192.168.199.0/24 aglari arasinda IP Forwarding islemi gerceklestirilebilir. Ayrica bir default gateway (0.0.0.0: bilinmeyen aglara 192.168.199.3 yoluyla eth1 üzerinden ulasilacagi anlamina gelir) tanimli oldugundan, diger tüm aglara erisim buradan saglanir. IP paketlerinin hangi aglara yönlendirilecegi, routing tablosu icerisindeki kayitlara göre belirlenir. Öntanimli zincir kurallari IPTables, tüm zincirler icin öntanimli bir davranis kurali tanimlanmasina izin verir. Eger bir IP paketi, ilgili zincir icerisindeki kurallardan herhangi biri tarafindan ACCEPT yada DROP/REJECT biciminde isaretlenmemisse, zincirin öntanimli kurali tarafindan yakalanir. Örnegin, filter tablosundaki FORWARD zincirinin öntanimli kuralini DROP olarak degistirecek olursak: iptables -P FORWARD DROP IP forwarding/routing sirasinda, FORWARD zinciri icerisindeki kurallardan herhangi biri tarafindan ACCEPT edilmeyen paketler, gözardi edilir. Özetle öntanimli olarak tüm paketlerin forward edilmesini kapatmis oluruz, daha sonra FORWARD zincirine ekleyecegimiz kurallarla da istisnalar tanimlayabiliriz: iptables -P FORWARD DROP iptables -A FORWARD -s 192.168.1.0/24 -o ppp0 -p tcp –dport ssh -j ACCEPT Bu tanim sayesinde 192.168.1.0/24 agi, ppp0 (Internet) yönüne yalnizca SSH protokolünü kullanarak erisebilir. Tabii NAT yapmazsak erisemeyecekler Öneriler Bu bölüme, iptables’i ögrenmeye basladigim günden bu yana edindigim nacizane tecrübelerimi ve önerilerimi eklemek istedim.
Önce örnek agimizin neye benzedigine bir bakalim: ![]() sekil 3: Örnek ag semasi ve gereksinimlerimizi belirleyelim:
![]()
__________________ 1.)Lütfen destek talebinde bulunmak icin özel mesaj ile iletisime gecmeyiniz. 2.)Ücretsiz destek almak icin forum sayfalarimizi kullanmaniz ayni sorunu yasayan diger üyelerin cevaplara en kisa sürede ulasabilmesi ve sizlere yardimci olmak isteyen bizlerin ve diger üyelerimizin zaman kazanmalari acisindan cok önemlidir. 3.)Forumlarimizda sorunlarinizi anlatirken mümkün oldugunca cok detay vermeniz en kisa sürede sorununuza cözüm bulmaniz acisindan mühimdir. Daha cok ögrenmek ve ögretmek dilegiyle.. Sevgiler.. The Platform. |
|
#2
| |||
| |||
|
corba gibi olmus ![]() pek bisey anliyamadim galiba:confused: |
|
#3
| |||
| |||
|
bende anlamadim
|
|
#4
| ||||
| ||||
|
bende anlamadim
__________________ ----------------------------------------------------------------------------------------- >> LÜTFEN ÜCRETSiZ DESTEK TALEP ETMEK iciN MSN ADRESLERiMiZi EKLEMEYiNiZ. HER TÜRLÜ ÜCRETSiZ DESTEK iciN FORUMLARIMIZI KULLANINIZ. TEsEKKÜRLER << |
|
#5
| ||||
| ||||
|
Bende anlamadim desem hasan abi kalpten gider ama cidden anlamadim |
|
#6
| |||
| |||
|
bi kac kere okumak sart |
|
#7
| ||||
| ||||
|
Hasan ben anladim [ Gönlü olsun üzmeyin admini ]
|
|
#8
| ||||
| ||||
|
anlamadiniz da zaten döküman anonim.yani icinde 3-4 parca var. büyük bir bölümü enver tarafindan yazilmistir. dökümani basitlestirmek icin epey ugrastigimi belirtmeden gecmeyecegim. bundan daha basiti yok. anlayin üzmeyin beni.
__________________ 1.)Lütfen destek talebinde bulunmak icin özel mesaj ile iletisime gecmeyiniz. 2.)Ücretsiz destek almak icin forum sayfalarimizi kullanmaniz ayni sorunu yasayan diger üyelerin cevaplara en kisa sürede ulasabilmesi ve sizlere yardimci olmak isteyen bizlerin ve diger üyelerimizin zaman kazanmalari acisindan cok önemlidir. 3.)Forumlarimizda sorunlarinizi anlatirken mümkün oldugunca cok detay vermeniz en kisa sürede sorununuza cözüm bulmaniz acisindan mühimdir. Daha cok ögrenmek ve ögretmek dilegiyle.. Sevgiler.. The Platform. |
|
#9
| ||||
| ||||
|
Tmm tmm bisi demedik Alaska'dan bana hediye alsana Hasan.
__________________ ----------------------------------------------------------------------------------------- >> LÜTFEN ÜCRETSiZ DESTEK TALEP ETMEK iciN MSN ADRESLERiMiZi EKLEMEYiNiZ. HER TÜRLÜ ÜCRETSiZ DESTEK iciN FORUMLARIMIZI KULLANINIZ. TEsEKKÜRLER << |
|
#10
| ||||
| ||||
|
Tesekkürler hoca
__________________ cok kaygi cekme, mukadder olan olur, takdir olunan rizkin da sana gelir.[Hz Muhammed (S.A.V)] siir vardir ki, hikmettir. Beyân vardir ki, büyüdür.[Hz Muhammed (S.A.V)] Kim, bir zümreye benzemeye calisirsa, o, onlardandir.[Hz Muhammed (S.A.V)] Hikmetin basi, Allah korkusudur.[Hz Muhammed (S.A.V)] Elif Lam Mim. insanlar "inandik" deyip kurutlacaklarinimi sanirlar [Ankebut ,1] |
![]() |
| Thread Tools | |
| Display Modes | |
| |




