|
|
Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano ChineseGB Deutsch Francais Nederlands Russian Turkce |
taraf�ndan Vincent Renardias <vincent(at)renardias.com> Yazar hakk�nda: 1993'den beri GNU/Linux kullan�c�s� olan Vincent Renardias, 1996'da kendi geli�tirmelerine ba�lad�:Debian geli�tiricisi, GIMP ve GNOME'un Frans�zca �evirmeni, Marseille (PLUG)'daki Linux Kullan�c� Grubu'nun kurucusu...�u an EFB' �irketinde ARGE y�neticisi.GNU/Linux hakk�nda yazmaya devam ediyor. T�rk�e'ye �eviri: �zcan G�ng�r <ozcangungor(at)netscape.net> ��erik: |
Linux ile Paket Filtreleme�zet:
Bu makale ilk defa Linux Magazine France'�n g�venlik �zerine olan b�l�m�nde yay�nlanm��t�r.Edit�r, yazarlar ve terc�manlar, bu konu hakk�ndaki her makalenin LinuxFocus'ta yay�nlanmas�na izin vermi�lerdir.LinuxFocus, bunlar� �ngilizce'ye �evirir �evirmez size sunar.Bu i�le ilgili b�t�n ki�ilere te�ekk�r ederim.Bu tan�t�m, bu k�kene ait b�t�n makalelerde yer alacakt�r.
|
Filtreleme mekanizmas�, ba� istenmeyen paketleri yakalayan bir a� olarak d���n�lebilir.�nemli olan, uygun b�y�kl�kte bir ay bulmak ve onu uygun bir yere yerle�tirmektir.
Paketli iyi bir �ekilde filtrelemek i�in filtreleme mekanizmas�, korunacak a� ile "d�nyan�n geri kalan k�sm�" aras�na konmal�d�r.Bu genelde, biri i� a�a, di�eri d��ar�yla ba�lat� kuran router'a ba�l� iki a� aray�zleri(genellikle ethernet) ile yap�l�r.B�ylece veriler, i�eri�ine g�re veri ge�i�ine izin veren ya da vermeyen firewall i�inden ge�mek zorunda kal�r.
Filterleme mekanizmas�na sahip makina �� farkl� �ekilde ayarlanabilir:
- Basit" a�ge�idi: Bu en �ok kullan�lan ayarlamad�r.Makina, iki a� aras�na veya alta�lar aras�nda a�ge�idi olarak kullan�l�r.Yerel a�daki bilgisayarlar, varsay�lan route olarak router yerine bu a�ge�idini kullan�rlar.
- Proxy-Arp" a�ge�idi: Bir �nceki ayralama, a�� alta�lara b�ler.Bu da IP adreslerinin yar�s�n� yok eder ve biraz can s�k�c�d�r.A� ve broadcast adresleri kullanl�rken, 16 adresli(a�maskesi 28 bit olan) bir alta� �rne�inde sadece 14 adres kullan�labilir.Alta�a bir bit eklersek, 14 adresi 6'ya d���r�r�z(8 IP eksi a� ve broadcast adresleri).Bu IP kay�plar�n� istemeyece�iz i�in bu makalenin ileri b�l�mlerinde a��klanacak bir y�ntemi kullanabilirsiniz.Dahas�, bu y�ntemle, ne var olan makinalar�n a� ayarlar�nda ne de router'da bir de�i�iklik gerekmez.
- Ethernet K�pr�s�: bir ethernet a�ge�idi(IP a� ge�idi de�il) kurmak, filtereleme mekanizmas�n�n di�er makinalar taraf�ndan g�r�nmesini engeller.Bu t�r bir ayar, Ethernet aray�zlerine herhangi bir IP adresi vermeden yap�labilir.Bu makina, ping, traceroute gibi ara�larla bulunamaz.Bu y�ntemi ancak 2.2.x kernel ile yapabilirsiz.��nk� 2.4.x kernellerde bu �zellik hen�z tamamlanmad�.
�imdi, filremizi nereye kuraca��m�z� biliyoruz ve neyi engelleyece�ini neyi kabul edece�ini tan�mlamal�y�z.
B�yle bir filtreyi ayarlama iki �ekilde yap�labilir:
- �yi olan�: Sadece kural�n kabul eti�i paketler ge�er di�erleri ge�emez.
- K�t� olan:(maalesef en s�k kullan�lan�) sadece istenmeyen paketler durdurulur ve di�erleri kabul edilir.
A��klamas� kolay:�lk durumda, bir kural�n unutulmas� servisin do�ru �al�mamas�na veya hi� �al��mamas�na sebep olur.Genellikle hemen farkedilir ve gerekli kural�n eklenmesi yeterlidir.
�kinci durumda, bir kural�n unutulmas�, bulunmas� zor olan bir a���a neden olabilir.
Linux 2.4 ile en �ok kullan�lan filtreleme yaz�l�m� Netfilter'dir.Linux kernel 2.2'deki 'ipchains'i de�i�tirir.Netfilter iki b�l�mden olu�ur:kernel ile derlenmesi gereken kernel deste�i ve sisteminizde kullan�labilir olan 'iptables' komutu.
��inde a��lamas� olan bir �rnek, uzun bir konu�madan daha iyidir.Sonra filtreleme mekanizmas�n�n nas�l y�klenece�ini ve nas�l ayarlanaca��n� a��klayaca��z.�nce makina, Proxy-Arp kullan�larak bir a�ge�idi olarak �al��acak ve IP adreslerinin say�s�n� s�n�rlayacak.Sonra filtreleme mekanizmas�n� ayarlayaca��z.
Yazar, Debian da��t�m� i�in bir �nceli�e sahiptir ancak di�er da��t�mlarla da yap�l�r.
�nce, kernelinizde Netfilter deste�i olup olmad���n� kontrol edin.E�er varsa a��l�� iletilerinde �unu g�rmelisiniz:
ip_conntrack (4095 buckets, 32760 max)
ip_tables: (c)2000 Netfilter core team
Yoksa, Netfilter deste�ini se�tikten sonra kerneli tekrar derlemelisiniz.Aranan se�enekler, "Networking Options" alt�ndaki "Network Packet Filtering" altme�s�ndedir."Netfilter Configuration" b�l�m�nden, gerekli se�enekleri i�retleyin.��phe duydu�unuz se�eneklerde, hepsini se�ebilirsiniz.Dahas�, Netfilter'i kernel eklemek, mod�l olarak kullanmaktan daha iyidir.E�er herhngi bir sebeple Netfilter mod�llerinde bir �al��mazsa, filtreleme �al��maz.En iyisi olabilecel risklerden bahsetmeyelim.
Ayr�ca 'iproute2' paketini de y�klemelisiniz(Bu sonuncusu, zorunlu de�il ancak �rne�imizde kullanca��z ��nk� ayarlama scriptlerinin kolayla�mas�n� sa�layacakt�r).Debian ile, 'apt-get install iproute' komutunu vermeniz yeterlidir.
Di�er da��t�mlarda, kar�� gelen paketi bulun.Y�kleyin veya a�a��da kaynak kodu verilmi�tir.�ndirin ve derleyin:
ftp://ftp.inr.ac.ru/ip-routing/
�imdi iki Ethernet kart� ayarlanmal�d�r.Linux kernelinin, bir ethernet kart�n� bulduktan sonra di�erini aramay� b�rakt���n� belirtelim.Yani sadece ilk kart bulunacakt�r.
��z�m i�in �unu lilo.conf dosyas�na ekleyin:
append="ether=0,0,eth1"
�imdi Ethernet aray�zlerini ayarlayal�m.Kullanaca��m�z y�ntem, bir IP adresinden tasarruf edebilmemiz i�in her iki karta da ayn� adresi vermemize izin vermektedir.
�rne�in: 10.1.2.96/28 alta��na sahip olal�m.IP adreslerimiz 10.1.2.96 - 10.1.2.111 aral���ndad�r.Router, 10.1.2.97 adresine ve filtreleme makinas� 10.1.2.98 adresine sahiptir.eth0 aray�z�, e�er bir hub ya da switch kullan�lm�yorsa, router'a bir RJ45 cross ba�lant� ile ba�l�d�r. eth1 aray�z�, bir hub/switch'e ba�lan�p ordan yerel a�a ba�lan�r.
Her iki aray�z i�in de a�a��daki parametreler ge�erlidir:
address : 10.1.2.98 netmask : 255.255.255.240 network : 10.1.2.96 broadcast: 10.1.2.111 gateway : 10.1.2.97
Sonra, ayarlamalar� bitirmek i�in, a� kartlar�n�n ilk ayarlar�n�n yap�lmas�ndan sonra a�a��daki script kullan�l�r:
net.vars: ayarlama de�i�kenleri PREFIX=10.1.2 DMZ_ADDR=$PREFIX.96/28 # Aray�z tan�mlamalar� BAD_IFACE=eth0 DMZ_IFACE=eth1 ROUTER=$PREFIX.97 net-config.sh: a� ayarlar� scripti #!/bin/sh # Script �al���rken komutla�r g�rebilmek i�in a�a��daki sat�r�n ba��ndaki diyezi silin # set -x # etc/init.d/net.vars dosyas�ndaki �nceden tan�mlanm�� de�i�kenleri okuruz # Yerel a�dan �u anki rotalr� sileriz. ip route del $PREFIX.96/28 dev $BAD_IFACE ip route del $PREFIX.96/28 dev $DMZ_IFACE # Yerel a�a eth1'den router'a eth0'da ulabilecek # �ekilde ayarlar�z. ip route add $ROUTER dev $BAD_IFACE ip route add $PREFIX.96/28 dev $DMZ_IFACE # Her iki aray�z�de de Proxy-Arp'� a�ar�z. echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp # Bir karta gelen verileri di�er karta iletebilmek # i�in IP y�nlendirmesini a�ar�z. echo 1 > /proc/sys/net/ipv4/ip_forward
Bizim ayarlamalar i�in gerekli olan Proxy-Arp mekanizmas�na geri d�nelim.
Ayn� a� i�erisindeki bir makina di�eriyle konu�urken, kendi IP adresine kar�� gelen Ethernet adresini(MAC adresini, donan�m adresini) bilmesi gerekmektedir.Sonra kaynak makina �u soruyu yay�nlar: 1.2.3.4 IP ardesine sahip aray�z�n MAC adresi nedir? ve kar�� makina cevap vermek zorundad�r.
Bu "konu�ma"n�n tcpdump ile al�nm�� bir �rne�i:
- istek: 172.16.6.72 IP'li makina, 172.16.6.10 IP'li makinan�n MAC adresini sormaktad�r:
19:46:15.702516 arp who-has 172.16.6.10 tell
172.16.6.72
- cevap: 172.16.6.10 IP'li makina kart adresini g�nderir:
19:46:15.702747 arp reply 172.16.6.10 is-at
0:a0:4b:7:43:71
Bu, bizi �u k�sa e��klmamaya g�t�r�r: ARP istekleri, yay�nlamalarla(broadcast) ile yap�l�r. B�ylece sadece bir fiziksel a� ile s�n�rl�d�r.router'�n MAC adresini ��renmeye �al��an korunan bir makinan�n iste�i, filtreleme makinas� ile kesilmelidir. Proxy-ARP �zelli�ini a�arak, sorunu ��zmemiye yar�m eder. ��nk� ARP istekleri sorar ve yay�lmak i�in bir karta gelenleri di�er karta g�nderir veya tam tersi.
Bu durumda, yerel a� ile d��ar�s� aras�ndaki tefi�i kontrol eden bir makina ile �al��an bir a��n�z olmal�.
Netfilter, dorudan paketler �zerinde oynamaz� sa�lar.Temel ayralamada, paketler 3 kural zinciri taraf�ndan y�netilir:
- INPUT: bir aray�ze gelen paketler i�in,
- FORWARD: bir aray�zden di�erine y�nlendirilen b�t�n paketler i�in,
- OUTPUT: bir aray�zden ��kan b�t�n paketler i�in.
'iptables' komutu ile herhangi bir zincire, filtreleme davran���n� etkileyen kurallar ekleyebiliriz, kurallar� silebiliriz veya de�i�tirebiliriz.
Dahas�, her zincir kendi varsay�lan poklitikas�na sahiptir. Yani herhangi bir kurala uyman paket geldi�inde ne yapaca��n� bilir.
�ok kullan�lan se�enekler �unlard�r:
- ACCEPT: paket ge�ebilir
- REJECT: paket reddedilir ve gerekli hata g�nderilir (ICMP port ula��lamaz, TCP S�f�rlama, duruma g�re)
- LOG: syslog'a paketle ilgili not yazar,
- DROP: paket reddedilir ve bir hata g�nderilmez.
Burada, iptables'�n b�t�n zincirleri de�i�tirebilecek se�enekleri bulunmaktad�r.Ayr�nt�lar�na daha sonra girece�iz:
-N: yani bir zincir olu�turur.
-X: bo� bir zinciri siler.
-P: bir zincirin varsay�lan ploitikas�n� de�i�tirir.
-L: bir zincirdeli kurallar� listeler.
-F: bir zincirdeki b�t�n kurallar� siler.
-Z: bir zincir i�inde ge�mi� b�t�n paket saya�lar�n� ve byte'lar�n� s�f�rlar.
Bir zinciri de�i�timek i�in a�a��daki komular kullan�labilir:
-A: bir zincirin sonuna bir kural ekler.
-I: zincirin belirtilen yerine bir kural ekler
-R: belirtilen kural�n zincir i�indeki yerini de�i�tirir.
-D: bir zincirde, tan�t�lm�� veya numaras� verilmi� bir kural� siler.
Pratik bir �rnek g�relim: Verilen bir makinadan gelen PING cevaplar�n� (yani 'echo-reply' tipindeki ICMP paketleri) engelleyelim.
�nce, verilen makinay� ping'leyebildi�imizi deneyelim:
# ping -c 1 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes 64 bytes from 172.16.6.74: icmp_seq=0 ttl=255 time=0.6 ms --- 172.16.6.74 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.6/0.6/0.6 ms�imdi, 172.16.6.74 IP'li makinadan gelen ICMP-Reply ('-p icmp --icmp-type echo reply') paketlerini engelleyecek kural� INPUT zincirine ekleyelim. Bu paketler, g�zard� edileceklerdir ('-j DROP').
# iptables -A INPUT -s 172.16.6.74 -p icmp --icmp-type echo-reply -j DROP
�imdi, bu makinay� ping'leyelelim:
# ping -c 3 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes --- 172.16.6.74 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
Bekledi�imiz gibi, cevaplar ge�emiyor. 3 cevab�n(252 byte'l�k 3 paket) ge�emedi�ini kontrol edebiliriz:
# iptables -L INPUT -v Chain INPUT (policy ACCEPT 604K packets, 482M bytes) pkts bytes target prot opt in out source destination 3 252 DROP icmp -- any any 172.16.6.74 anywhere
�lk duruma geri d�nmek i�in, INPUT zincirindeki ilk kural� silmeliyiz:
# iptables -D INPUT 1
�imdi, PING tekrar �el���yor:
# ping -c 1 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes 64 bytes from 172.16.6.74: icmp_seq=0 ttl=255 time=0.6 ms --- 172.16.6.74 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.6/0.6/0.6 ms #
��e yar�yor !
Var olan 3 zincire (bunlar hi�bir zaman silinemez) yenilerini ekleyebilrsiniz ve bunlar �zerinde de bir ak�� tan�mlayabilirsiniz.Bu, �rne�in, �e�itli zincirlerde ayn� kural� tekrarlaman�n�z� engeller.
�imdi, bir firewall i�in minimum kurallar� ayarlayal�m. SSH'e, DNS'e, http ve smtp'ye izin verir ve si�erlerini engeller.
Basitle�tirmek i�in, komutlar bir kabuk scriptinde yaz�lm��t�r. Script, yeni kurallar eklemeden �nce var olanlar� siler. Bu numara, kurallar�n ikinci kez yaz�lmas�n� engeller.
rc.firewall #!/bin/sh # Kurallar�n silinmesi iptables -F iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD # Zincir, do�rultuya g�re olu�turulur. # bad = eth0 (d��ar�) # dmz = eth1 (i�eri) iptables -X bad-dmz iptables -N bad-dmz iptables -X dmz-bad iptables -N dmz-bad iptables -X icmp-acc iptables -N icmp-acc iptables -X log-and-drop iptables -N log-and-drop # Belirli zincir, paketleri engellemeden �nce onlar� kaydeder iptables -A log-and-drop -j LOG --log-prefix "drop " iptables -A log-and-drop -j DROP # TCP bayraklar� kullan�lan paketler # ve hi� kullan�lmam�� paketler engellenir. iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j log-and-drop iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j log-and-drop # Bilinen IP adreslerinden gelen paketler engellenir. iptables -A FORWARD -i eth+ -s 224.0.0.0/4 -j log-and-drop iptables -A FORWARD -i eth+ -s 192.168.0.0/16 -j log-and-drop iptables -A FORWARD -i eth+ -s 172.16.0.0/12 -j log-and-drop iptables -A FORWARD -i eth+ -s 10.0.0.0/8 -j log-and-drop # Kurulmu� ba�lant�lara ait paketler ge�irilir. iptables -A FORWARD -m state --state INVALID -j log-and-drop iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Paketin k�k�na ba�l� olarak, kar�� gelen zincir g�nderlir. iptables -A FORWARD -s $DMZ_ADDR -i $DMZ_IFACE -o $BAD_IFACE -j dmz-bad iptables -A FORWARD -o $DMZ_IFACE -j bad-dmz # kalanlar engellenir. iptables -A FORWARD -j log-and-drop # Ge�irilen ICMPler iptables -A icmp-acc -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type source-quench -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type echo-request -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type echo-reply -j ACCEPT iptables -A icmp-acc -j log-and-drop # D��ar�s� -> ��erisi # posta, DNS, http(s) ve SSH ge�irilir iptables -A bad-dmz -p tcp --dport smtp -j ACCEPT iptables -A bad-dmz -p udp --dport domain -j ACCEPT iptables -A bad-dmz -p tcp --dport domain -j ACCEPT iptables -A bad-dmz -p tcp --dport www -j ACCEPT iptables -A bad-dmz -p tcp --dport https -j ACCEPT iptables -A bad-dmz -p tcp --dport ssh -j ACCEPT iptables -A bad-dmz -p icmp -j icmp-acc iptables -A bad-dmz -j log-and-drop # ��erisi -> D��ar�s� # posta, DNS, http(s) ve telnet ge�irilir iptables -A dmz-bad -p tcp --dport smtp -j ACCEPT iptables -A dmz-bad -p tcp --sport smtp -j ACCEPT iptables -A dmz-bad -p udp --dport domain -j ACCEPT iptables -A dmz-bad -p tcp --dport domain -j ACCEPT iptables -A dmz-bad -p tcp --dport www -j ACCEPT iptables -A dmz-bad -p tcp --dport https -j ACCEPT iptables -A dmz-bad -p tcp --dport telnet -j ACCEPT iptables -A dmz-bad -p icmp -j icmp-acc iptables -A dmz-bad -j log-and-drop # Makinan�n kendisi i�in zincir iptables -N bad-if iptables -N dmz-if iptables -A INPUT -i $BAD_IFACE -j bad-if iptables -A INPUT -i $DMZ_IFACE -j dmz-if # D�� aray�z # Sadece SSH, bu makinaya ge�irilir iptables -A bad-if -p icmp -j icmp-acc iptables -A bad-if -p tcp --dport ssh -j ACCEPT iptables -A bad-if -p tcp --sport ssh -j ACCEPT ipchains -A bad-if -j log-and-drop # �� aray�z iptables -A dmz-if -p icmp -j icmp-acc iptables -A dmz-if -j ACCEPT
Servis kalitesi hakk�nda birka� s�z. Linux, ToS(Type of service-servis tipi) alan�n� de�i�tirebilir ve pakete farkl� �ncelikler verebilir. �rne�in, a�a��daki komut, d��ar� giden SSH paketlerini, ba�lant� cevab�n� art�racak �ekilde de�i�tirir.
iptables -A OUTPUT -t mangle -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
Ayn� �ekilde, '--set-tos Maximize-Throughput' ile FTP ba�lant�lar�n�n, oturumun interaktifli�inin zarar�na, veri aktar�m oran�n� art�rabilirsiniz.
Hepsi bu. Art�k etkili bir filtreleme sistemini ayarlamas�n�n temellerini biliyorsunuz. Yine de, g�venlik s�z konusunu oldu�unda firewall'un her derde deva olmad���n� ak�l�n�zdan ��karmay�n.Bu sadece bir �nlemdir. Firewall kurulumu, g��l� �ifreler kullanman�z�, son g�venlik yamalar�n� yapman�z�, sald�r� alg�lama sistemleri kullanman�z�, vs. engellemez.
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Vincent Renardias, FDL LinuxFocus.org |
�eviri bilgisi:
|
2003-04-23, generated by lfparser version 2.35