Yararlı olması temennisiyle...
iptables Kullanımı
iptables ın cok detaylı bir manuel sayfası vardır (man iptables) ve eger ozellikler hakkında
daha fazla detay istiyorsanız bu sayfaya bakabilirsiniz. ipchains'i bilenler sadece 'iptables ve
ipchains Arasındaki Farklar' a bakmak isteyebilirler; ikisi cok benzerdir.
iptables ile yapabileceginiz bircok sey vardır: bunların basında zincirleri yonetmek gelir. lk
olarak silemeyeceginiz uc gomulu zincir (built-in chains) input, output ve forward ile ise
baslayacaksınız.
1. Yeni bir zincir yarat (-N).
2. Bos bir zinciri sil (-X).
3. Gomulu bir zincir icin idareyi (policy) degistir (-P).
4. Bir zincirdeki kuralları listele (-L).
5. Bir zincirdeki kuralları temizle (-F).
6. Bir zincirdeki butun kuralların paket ve byte sayaclarını sıfırla (-Z).
Bir zincirdeki kuralları yonetmek icin bircok yol vardır.
1. Bir zincire yeni bir kural ekle (-A).
2. Bir zincirin herhangi bir pozisyonuna yeni bir kural ilave et (-I)
3. Bir zincirin herhangi bir pozisyonundaki bir kuralı degistir (-R)
4. Bir zincirin herhangi bir pozisyonundaki bir kuralı sil (-D).
5. Bir zincirdeki eslesen ilk kuralı sil (-D).
Bilgisayarınız Basladıgında Ne Goreceksiniz
Su anda (Linux 2.3.15) iptables 'iptables.o' isimli bir moduldur. iptables komutlarını
kullanmadan once bu modulu cekirdeginize ilave etmeniz gerekecek. Gelecekte, cekirdekte
gomulu olabilecektir.
Hicbir iptables komutu kosmadan once (dikkatli olun: bazı dagıtımlar iptables ı baslangıc
dosyalarında kostururlar), gomulu zincirlerin (INPUT, OUTPUT, FORWARD) hicbirinde
hicbir kural bulunmayacak, INPUT ve OUTPUT 'ACCEPT' idaresine, FORWARD zinciri ise
'DROP' idaresine sahip olacaktır (iptables modulune 'forward=1' ozelligi saglayarak bunu
iptal edebilirsiniz)
Basit Bir Kural Uzerinde slemler
Bu paket filtrelemenin temelidir; kuralları yonetmek. Genel olarak, ekle ('-A') ve sil ('-D')
komultarını kullanacaksınız. Digerleri (ilave etmek icin -I ve degistirmek icin -R) bu
kavramın basit uzantılarıdır.
Her kural, paketlerin uyması gereken kosullar kumesini ve uydugu zaman ne yapması
gerektigini ('hedef': target) belirtir. Ornegin: 127.0.0.1 IP adresinden gelen butun ICMP
paketlerini dusurmek (drop etmek) isteyebilirsiniz. Bu durumda kosullarımız protokolun
ICMP ve kaynak adresin 127.0.0.1 olmasıdır. Hedefimiz ise 'DROP' dur.
127.0.0.1 gercek bir ag baglantınız olmasa bile sahip olacagınız 'loopback' arayuzudur. Boyle
paketler uretmek icin 'ping' programı kullanabilirsiniz (basitce butun birlikte calısan
bilgisayarların zorunlu olarak bir ICMP type 0 (echo reply=yankı cevabı) ile cevap verecegi
ICMP type8 (echo request=yankı istegi) paketi yollar). 'ping' baglantıyı test etmek icin
oldukca yararlı bir programcıktır.
#ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
---127.0.0.1 ping statistics---
1 packets transmitted ,1 packets received ,0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
#iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
#ping -c 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
---127.0.0.1 ping statistics---
1 packets transmitted , 0 packets received ,100% packet loss
Burada ilk ping in basarılı oldugunu gorebilirsiniz ('-c 1' ping e sadece bir paket gondermesini
soyler).
Daha sonra, 127.0.0.1 ('-s 127.0.0.1') den ICMP ('-p icmp') ile gelen butun paketler icin
DROP a atlamamız ('-j DROP') gerektigini belirten bir kuralı 'INPUT' zincirine ekledik ('-A').
Sonra, ikinci ping i kullanarak kuralımızı test ettik. Program hic gelmeyecek bir cevabı
beklemeyi bırakana kadar bir ara olacaktır.
Kuralı iki yoldan biriyle silebileriz. lki, bunun input zincirindeki tek kural oldugunu
bildigimizden INPUT zinicirdeki 1 numaralı kuralı silmek icin asagıdaki gibi bir
numaralandırılmıs silme kullanabiliriz:
#iptables -D INPUT 1
#
kinci yol, -A komutunu tekrarlamak ama -A yı -D ile degistirerek. Bu yol, karmasık zincir
kurallarınız oldugunda ve temizlemek istediginiz kural 37 yi hesaplamak icin saymak zorunda
kalmak istemediginizde yararlıdır. Bu durumda asagıdaki komutu kullabiliriz:
#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
#
-D in sozdizimi -A (veya '-I' veya '-R') komutu ile tamamen aynı ozelliklere sahiptir. Eger
aynı zincirde coklu tanımlı kurallar varsa sadece ilki silinir.
Filtreleme Belirtmeleri
Protokolu belirtmek icin '-p' ve kaynak adresi belirtmek icin '-s' kullanımını daha onceden
gormustuk ama paket karakteristiklerini belirtmek icin daha baska ozellikler vardır. Asagıda
bu ozelliklerin ayrıntılı bir acıklamasını bulacaksınız.
Kaynak (source) ve Hedef (target) IP Adreslerini Belirtme
Kaynak ('-s', '--source' veya '--src') ve hedef ('-d', '--destination' veya '--dst') IP adreslerini
belirtmenin dort yolu vardır. En ortak yol 'localhost' veya 'w w w .linuxhq. c o m' gibi butun isim
kullanımıdır. kinici yol '127.0.0.1' gibi IP adresleri belirtmedir.
Ucuncu ve dorduncu yollar '199 .95 .207 .0/24' veya '199.95.207.0/255.255.255 .0' gibi IP
adresleri grubunu belirtmeyi mumkun kılar. Her ikisi de 199.95.207.0 dan 199.95.207.255 e
herhangi bir IP adresi belirtirler; '/' den sonraki dijitler IP adresin anlamlı bolumunu soylerler
(yani IP adresin ag gosteren dijitlerinin sayısını). '/32' veya '/255.255.255.255' default'tur
(butun IP adreslerini eslestirme). Hicbir IP adresi belirtmemek icin '/0' asagıdaki gibi
kullanılabilir:
#iptables -A INPUT -s 0/0 -j DROP
#
Etkisi '-s' ozelligini hic belirtmemekle aynı oldugu icin bu cok az kullanılır.
Ters Cevirme
'-s' ve '-d' bayrakları da dahil olmak uzere bircok bayrak verilen adrese esit OLMAYAN
adresleri eslestirmek icin '!' ('not' telaffuz edilir) ile baslayan argumanlara sahiptirler. Ornegin,
'-s ! localhost' localhost tan gelmeyen her paketi eslestirir.
Protokol Belirtme
Protokol '-p' bayragı ile belirtilebilir. Protokol bir rakam (eger IP icin sayısal protokol
degerlerini biliyorsanız) veya 'TCP', 'UDP' veya 'ICMP' gibi ozel durumlar icin bir isim
olabilir. Harflerin buyuk veya kucuk olması onemli degildir, yani 'tcp', 'TCP' ile aynıdır.
Protokol adı '-p ! TCP' gibi ters cevirmek icin '!' onekini alabilir.
Arayuz Belirtme
'-i' (veya '--in-interface') ve '-o' (veya '--out-interface') ozellikleri eslesecek bir arayuz adını
belirtir. Arayuz paketin ('-i') uzerinden geldigi ve ('-o') uzerinden cıktıgı bir fiziksel
donanımdır. 'up' olan (su an calısan) arayuzleri listelemek icin ifconfig komutunu
kullabilirsiniz.
INPUT zincirinden gecen paketler bir output arayuzune sahip degillerdir, yani bu zincirde '-o'
kullanan herhangi bir kural hicbir zaman eslesmeyecektir. Benzer olarak, OUTPUT
zincirinden gecen paketler bir input arayuzune sahip degillerdir, yani bu zincirde '-i' kullanan
herhangi bir kural eslesmeyecektir.
Sadece FORWARD zincirinden gecen paketler hem input hem de output arayuzune
sahiptirler.
Su anda var olmayan bir arayuzu belirtmek tamamen serbesttir; arayuz calısıncaya kadar kural
hicbir sey ile eslesmeyecektir. Bu PPP baglantıları (genellikle arayuz ppp0) ve benzerleri icin
oldukca yararlıdır.
Ozel olarak, '+' ile biten bir arayuz bu karakter diziyle baslayan butun arayuzler (var olsalar da
olmasalar da) ile eslesecektir. Ornegin, butun PPP arayuzleri ile eslesen bir kural belirtmek
icin -i ppp+ ozelligi kullanılmalıdır.
Belirtilen arayuz(ler) ile eslesmeyen bir paket ile eslesmek icin arayuz adı '!' ile baslayabilir.
Segmentleri Belirtme
Bazen paketler bir defada iletilmek icin cok genistir. Boyle bir durumda, paket segmentlere
ayrılır ve coklu paket olarak yollanır. Diger taraf, butun paketi yeniden kurmak icin bu
segmentleri birlestirir.
Segmentler ile problem, internal paketin bir parcası olan IP baslıgından sonra ortaya cıkar:
protokol baslıkları (ornegin TCP, UDP ve ICMP uzantıları tarafından olusturulanlar) sadece
ilk segmentte bulundugundan protocol baslıkları icin paketin icine bakmak mumkun degildir.
Eger baglantı izleme veya NAT yapıyorsanız, o zaman segmentler paket filtreleme koduna
erismeden once tekrar birlestirilirler, yani segmentler hakkında endiselenmenize gerek yoktur.
Aksi takdirde, aynı islevi goren 'ip_defrag.o' modulunu ilave edebilirsiniz (not: buna ancak iki
ag arasında tek baglantı iseniz izin verilir).
Aksi takdirde, segmentlere filtreleme kuralları tarafından nasıl davranıldıgını anlamanız
onemlidir. Bilmedigimiz bir bigiyi soran herhangi bir filtreleme kuralı eslesmeyecektir. lk
segmente diger paketlere davranıldıgı gibi davranılır, ikinci ve sonraki segmentlere oyle degil.
Bu sebeple -p TCP --sport w w w ('w w w' nin bir kaynak portunu belirtme) kuralı bir segment
(ilk segment dısındaki) ile hic eslesmeyecektir. Ters kuralı -p TCP --sport ! w w w de oyle.
Bunula birlikte, '-f' ( veya '--fragment') bayragını kullanarak ikinci ve sonraki segmentleri
belirten bir kuralı belirtebilirsiniz. kinci ve sonraki segmentlere uygulanmayan bir kuralı '-f !'
ile baslatarak belirtmek serbesttir.
Genellikle, filtreleme ilk segmenti etkileyeceginden ve bu sebeple karsı tarafta segmentlerin
birlesmesini onleyeceginden ikinci ve sonraki segmentlerin gecisine izin vermek guvenli
gorulur, oysa sadece segmentler yollayarak makinelerin cokmesine imkan veren bug'ların
oldugu bilinmektedir. Siz arastırınız.
Ag-basları icin not: 'malformed' paketler (firewall kodunun, portları ya da ICMP kodu ve
tipini okuyabilmesi icin cok kısa olan TCP, UDP ve ICMP paketleri) boyle incelemeler
yapıldıgında drop edilir. Pozisyon 8 de baslayan TCP segmentleri de dahil.
Ornek olarak, asagıdaki kural 192.168.1.1. e giden butun segmentleri drop edecektir:
#iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
#
iptables'a Uzantılar: Yeni Testler
iptables uzatılabilir, yani yeni ozellikler saglamak icin hem cekirdek hem de iptables aracları
uzatılabilirler.
Bu uzantıların bazıları standarttır, digerleri daha egzotiktir. Uzantılar baska insanlar
tarafından yapılıp kullanıcılara ayrı olarak dagıtılabilir.
Cekirdek uzantıları normalde /lib/modules/2.3.15/net gibi cekirdek modulu altdizinlerinde
bulunurlar. Su anda (Linux 2.3.15) istek uzerine yuklenme ozellikleri yoktur. Yani istediginizi
elinizle ilave etmeniz gerekecektir. Gelecekte istek uzerine yuklenebilir olabilirler.
Bazı dagıtımlar iptables program uzantılarını /lib/iptables veya /usr/lib/iptables a yerlestirse
de genelde /usr/local/lib/iptables/ de bulunan kutuphaneleri paylasırlar.
Uzantıların iki cesidi vardır: yeni hedefler ve yeni testler; asagıda yeni hedeflerden soz
edecegiz. Bazı protokoller otomatik olarak yeni testleri saglar: su anda bunlar asagıda
gosterildigi gibi TCP, UDP, ICMP dir
Bunlar icin, uzantıları yukleyecek '-p' ozelliginden sonra komut satırında yeni testleri
belirtebilirsiniz. Acık (explicit) yeni testler icin, sonrasında uzatılmıs ozelliklerin gecerli
olacagı, uzantı yuklemeye yarayan '-m' ozelligi kullanılabilir.
Bir uzantı hakkında yardım almak icin, onu yuklemek icin kulanılan parametre olan '-p' veya
'-m' nin yaninda '-h' veya '--help' i kullanın.
TCP Uzantıları
Eger '--protocol tcp' belirtilmisse ve baska eslesme belirtilmemisse TCP uzantıları otomatik
olarak yuklenir. Asagıdaki ozellikleri (hicbiri segmentlerle eslesmemistir) saglar.
--tcp-flags
'!' ile kullanılabilir. Daha sonra bayrakların iki karakter dizisi belirtilen TCP bayraklarını
filtreleyi mumkun kılar. Bayrakların ilk dizisi maskedir: incelemek istediginiz bayrakları
listeler. Bayrakların ikinci dizisi hangisinin(lerinin) 'set' olacagını soyler. ncelenen diger
bayraklar 'unset' olmalıdır. Ornegin:
#iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
Bu komut butun bayrakların incelenecegini ('ALL' 'SYN,ACK,FIN,RST,URG,PSH' ile
esanlamlıdır), ama sadece SYN ve ACK bayraklarının 'set' gosterir. Ayrıca bayrak yok (no
flags) anlamına gelen 'NONE' argumanı da bulunmaktadır.
--syn
'!' ile kullanılablir. '--tcp-flags SYN, RST,ACK SYN' nin kısayoludur.
--source-port
'!' ile kullanılabilir. Daha sonra tek bir TCP potu yada bir TCP port aralıgı yazılabilir. Bu
portlar /etc/services da listelenen port isimleri olabilir ya da direk numaralarıyla yazılabilir.
Port aralıgı verilirken arada '-' kullanılmalıdır (or: 21-80). Eger '-' nin herhangi bir tarafı bossa
o porttan oncesi (o port dahil) (or: -80) ya da o porttan sonrası (o port dahil) (or: 80-)
anlamına gelir.
--sport
'--source-port' ile aynı.
--destination-port
ve
--dport
yukarıdaki durumla aynı, ancak kaynak yerine hedef portu belirtiyorlar.
--tcp-option
'!' ile kullanılabilir, ardından paketi TCP option'ına gore eslestirmek uzere bir sayı gelmelidir.
Eger TCP baslıgı tam olmayan bir paket bu sekilde incelenmek istenirse otomatik olarak
DROP edilir.
TCP Bayraklarının Acıklaması
Bazen TCP baglantılarının bir yonde kurulması fakat diger yonde kurulamaması istenir.
Ornegin dısardaki bir W W W sunucusuna baglanmak isteyebilir ancak bu sunucudan gelecek
baglantıları reddetmek isteyebilirsiniz.
Cozum sadece baglantı kurmak isteyen paketlerin reddedilmesidir. Bu paketlere SYN
paketleri denir. Bu paketlerin SYN bayrakları 'set', FIN ve ACK bayrakları 'unset'tir. Yalnızca
bu paketleri engellersek o sunucudan gelen tum TCP baglantılarını engellemis oluruz.
ste '--syn' bunun icin kullanılır ve sadece TCP protokolunden gelen paketler icin gecerlidir.
192.168.1.1 den gelen TCP baglantı isteklerini eslestirmek icin:
-p TCP -s 192.168.1.1 --syn kullanılabilir.
'!' ile kullanılırsa baglantı kurmak isteyen paketler dısındaki tum paketler anlamına gelir.
UDP Uzantıları
Bu uzantılar '--protocol udp' kullanıldıgı zaman otomatik olarak yuklenir. '--source-port' ya da
'-sport' ve '--destination-port' ya da 'dport' olmak uzere 2 tane opsiyonu bulunur. Bunlar TCP
icin olanlarla aynı sekilde kullanılırlar.
ICMP Uzantıları
Bu uzantılar '--protocol icmp' kullanıldıgı zaman otomatik olarak yuklenir. Sadece bir
opsiyonu bulunur:
--icmp-type
'!' ile kullanılabilir, daha sonra icmp tur ismi (or. 'host-unreachable') ya da numerik tur (or. '3')
ya da '/' ile ayrılmıs numerik tur ve kod (or. '3/3') gelmelidir. Dilerseniz icmp tur isimlerini '-p
icmp --help' parametrelerini kullanarak gorebilirsiniz.
Diger Eslestirme Uzantıları
Netfilter paketindeki diger 2 uzantı (extension) eger kurulmuslarsa '-m' parametresi ile
kullanılabilirler.
mac
mac modulu '-m mac' ya da '--match mac' parametreliyle kullanılmalı. Gelen paketleri kaynak
MAC adreslerine bakarak eslestirmek icin kullanılır. Dolayısıyla sadece INPUT ve
FORWARD zincirlerinde kullanılabilir. Sadece 1 opsiyonu vardır:
--mac-source
'!' ile kullanılabilir, daha sonra iki nokta ustustelerle ayrılmıs "hexadecimal" lerden olusan
Ethernet (MAC) adresi gelmelidir, or. '--mac-source 00:60:08:91:CC:B7'.
limit
Bu modul '-m limit' ya da '--match limit' parametreleriyle kullanılmalı. Paketlerin koyulan
kuralla eslesme oranını sınırlar. Ozellikle kutuklerin cok fazla uzamaması icin kullanılır. 2
tane opsiyonu bulunur:
--limit
ardından '1/second' gibi bir eslestirme oranı gelmelidir. '/second', '/minute', '/hour', '/day' ya da
kısaca '/s', '/m', '/d', '/h' kullanılabilir. Eger bu opsiyon kullanılmazsa default olarak '3/hour'
kullanılır.
--limit-burst
ardından limit devreye girmeden once kac kere eslestirme yapılacagını gosteren bir sayı
gelmelidir. Bu opsiyon kullanılmadıgı takdirde default u 5'tir.
Default limit parametreleriyle log tutan su kuralı inceleyelim:
#iptables -A FORWARD -m limit -j LOG
Default burst 5 oldugundan, eslesmeye uyan ilk 5 paket log edilecek. Daha sonra her 20
dakikada 1 paketin log u tutulacak. Eger 20 dakika boyunca eslesen bir paket bulunmazsa
sıfırlanmıs olan burst 1 artacak ve dolayısıyla daha sonra gelen ilk paketin log u tutulacak.
Eger 100 (5*20) dakika boyunca hicbir paket eslesmezse burst yine maximum olan 5 e
erisecek ve kuralın ilk koyuldugu ana geri donulmus olacak.
Biraz onceki ornegimizde burst'un tekrar maksimuma ulasması icin gereken sure 100
dakikaydı. Eger bu surenin 60 saati gectigi bir kural koyarsak iptables tarafından kabul
edilmeyecektir.
unclean
Bu modul '-m unclean' ya da '--match unclean' parametreleriyle kullanılmalı. Bozuk ya da
'garip' (malformed or unusual) paketleri eslestirmek icin kullanılır. Henuz deneme asamasında
oldugu icin kullanılması tavsiye edilmiyor. Herhangi bir opsiyonu yok.
Hedef (target) Belirtme
Paketleri kurallarla eslestirmeyi ogrendik, simdi eslesen paketlere neler yapabilecegimizi
gorecegiz. Buna kuralın hedefi (rule's target) diyoruz. ki tane cok basit gomulu hedefimiz
var: DROP ve ACCEPT. Eger paket hedefi bu ikisinden biri olan bir kuralla eslesirse artık
akıbeti belli olmustur: ya yapı onune konur ya da iceri alınır. Hedef olarak bu iki gomulu
hedefin yanında kendi kurdugumuz zincirleri de kullanabiliriz.
Kullanıcı tanımlı zincirler (user-defined chains)
iptables'ın en guclu ozelliklerinden biri gomulu gelen zincirlerin yanında kullanıcılara da
zincir kurma olanagı vermesidir. Karısıklık olmaması icin bu zincirlerin isimleri kucuk
harflerden olusmalıdır.
Eger bir paket hedefi kullanıcı tanımlı bir zincir olan bir kuralla eslesirse yolculuguna o
zincirden devam eder. Eger paket bu zincirde bir kuralla eslesemezse, kendisini oraya
gonderen zincire geri doner ve az once eslestigi kuralın altındaki kuraldan yolculuguna devam
eder.
INPUT test
Kural 1 : -p ICMP -j
DROP
Kural 1 : -s
192.168.1.1
Kural 2 : -p TCP -j test
Kural 2 : -d
192.168.1.1
Kural 3 : -p UDP -j
DROP
Simdi 192.168.1.1 den bir TCP paketinin geldigini dusunelim. lk once INPUT zincirine
girecek ve Kural 1 ile karsılasıcak: eslesme yok. Daha sonra Kural 2 ile karsılasıcak ve
eslesecek: 'test' zincirine gonderilecek. Kural 1 ile eslesecek ancak bir hedef belirtilmedigi
icin paket uzerinde bir islem yapılmayacak. Kural 2 ile eslesme yok: paket INPUT zincirine
geri donecek ve Kural 3 ile karsılasacak: eslesme yok. Burdan sonra paketin akıbetine
INPUT zincirinin 'policy'si karar verir. Paketleri zincirler arasında dolastırırken loop
olmamasına dikkat edin. Eger paketin sonsuz bir donguye girdigi anlasılırsa otomatik olarak
DROP edilir.
iptables'a Uzantılar: Yeni Hedefler
Diger hedef turu ise uzantıdır. Hedef uzantısı bir cekirdek modulu ve opsiyonel olarak
iptables'a yeni komut satırı secenekleri kazandıran uzantılardan olusur. Default netfilter
surumunde cesitli uzantılar bulunur:
LOG
Bu modul eslesen paketlere kernel logging sunar. 2 tane opsiyonu bulunur.
--log-level
Seviye numarası ya da ismiyle kullanılır. Gecerli isimler 'debug', 'info', 'notice', warning', 'err',
'crit', 'alert' ve 'emerg' 7'den 0'a kadar olan seviye numaralına karsılık gelirler. Bu seviyelerle
ilgili acıklamaları syslog.conf un manuelinde bulabilirsiniz.
--log-prefix
Maksimum 14 karakter uzunlugunda bir string ile kullanılır. Bu string log mesajının basına
eklenir.
REJECT
Bu modul DROP ile aynı etkiye sahiptir, tek farkı gondericiye bir de ICMP 'port unreachable'
mesajı gondermesidir. Ancak asagıdakilerden biriyle karsılasılması durumnda ICMP hata
mesajı gonderilmez:
• Filtrelenen paket zaten bir ICMP hata mesajıysa ya da bilinmeyen bir ICMP
turundeyse.
• Filtrelenen paket baslıgı olmayan bir segment ise.
• Aynı gondericiye zaten cok sayıda ICMP hata mesajı gonderilmis ise.
Ozel Gomulu Hedefler
2 tane ozel gomulu hedef bulunur: RETURN ve QUEUE.
RETURN paketi zincirin sonuna gonderir. Dolayısıyla ya zincirin policy'si paketin akıbetini
belirler ya da paket kendisini oraya gonderen zincire geri doner ve yolculuguna oradan devam
eder.
QUEUE paketi 'userspace processing' icin kuyruga sokar. Paketi bekleyen bir process yoksa
paket DROP edilir.
Zincir slemleri
Kuralları zincirler icerisinde guruplamak iptables'ın oldukca kullanıslı olan bir ozelligidir.
Zincire istediginiz ismi verebilirsiniz, fakat daha once de belirtildigi gibi karısıklıkları
onlemek amacıyla kucuk harfleri kullanmanız tavsiye edilir. Zincir isimleri maksimum 16
karakter uzunlugunda olabilir.
Yeni Bir Zincir Eklemek
'test' isminde bir zinciri '-N' ya da '--new-chain' parametresiyle yaratabiliriz, or: iptables -N
test
Bir Zinciri Silmek
Zinciri silmek icin ise '-X' ya da '--delete-chain' kullanılabilir, or: iptables -X test
Zinciri silerken dikkat etmemiz gereken birkac nokta var: oncelikle zincir kullanıcı tarafından
tanımlanmıs zincirlerden biri olmalı ve zincirin icinde hicbir kural olmamalı. Ayrıca
zincirimiz herhangi bir kuralın hedefi olmamalı. Yani INPUT zincirindeki bir kural 'test'
zincirini hedefliyorsa, o kuralı silmeden 'test' zincirini silemezsiniz. Son olarak eger zincir
silerken isim belirtilmezse silinebilen tum zincirler silinir.
Zinciri Bosaltmak
Bir zincirin icindeki tum kuralları silmek istiyorsak '-F' (ya da '--flush') parametresi
yardımımıza kosuyor, or: iptables -F FORWARD
Eger bir zincir ismi belirtilmezse tablodaki tum zincirler bosaltılır.
Bir Zinciri Listelemek
Bir zincirin icindeki tum kuralları listelemek icin '-L' kullanılır, or: iptables -L OUTPUT
Kullanıcı tarafından tanımlanmıs zincirlerdeki 'refcnt' hedefi o zincir olan kural sayısını
gosterir. Az once belirtildigi gibi o zincirin silinebilmesi icin bu sayının 0 olması gerek.
Eger zincir ismi belirtilmezse tablodaki tum zincirler listelenir.
'-L' ile birlikte kullanılabilen 3 tane daha parametre vardır. Bunlardan '-n' (numeric) iptables'ın
IP addreslerini cozumlememesini saglar. Eger bu parametreyi kullanmazsanız listeleme
oldukca uzun surebilir. '-n' ayrıca TCP ve UDP portlarının da isim yerine numaralarla
listelenmesini saglar.
'-v' parametresi listeleme isleminin daha ayrıntılı yapılmasını saglar. Bunlar paket ve byte
sayacları, TOS (Type Of Service) karsılastırmaları ve arayuzlerdir.
Paket ve byte sayacları 'K', 'M', 'G' gibi soneklerle listelenirler. '-x' (expand numbers) ile bu
soneklerin kullanılmamasını ve sayıların tam olarak yazılmalarını saglayabiliriz.
Sayacları Sıfırlamak
Sayacları sıfırlamak icin '-Z' (ya da '--zero') kullanılabilir. Eger sayacları nerede sıfırladıgınızı
tam olarak bilmek istiyorsanız '-L' ve '-Z' parametrelerini beraber kullanabilirsiniz.
Policy'leri(idare) Ayarlamak
POLICY, paketin gomulu zincirin sonuna ulastıgında ne olacagıdır. Yalnızca gomulu
zincirlerin 'policy' leri olabilir ve bunlar da ACCEPT ya da DROP'tan ibarettir.
Ipchains ve Ipfwadm kullanmak
__________________
iptables kullanımı
Linux0 Mesaj
●39 Görüntüleme
- ReadBull.net
- Donanım Forumları
- işletim Sistemleri
- Linux
- iptables kullanımı