Linux uzerinde IPCHAINS Firewall
Kurulumu ve Konfigurasyonu. |
||
|
||
Firewall tek bilgisayar�n�za veya yerel
a��n�za internet ten veya di�er a�lardan eri�imi i k�s�tlay�p bilgisayar�n�z�n
veya yerel a��n�z�n internet ten veya di�er a�lardan gelecek sald�r�lara kar��
koruyan bir sistemdir. Firewall �nternet ile Yerel a��n�z�n aras�nda
bulunur(A�ag�daki �ekilde oldugu gibi). Bu sayede �nternetten gelen ve internete giden paketleri mutlaka firewall kurulu bilgisayardan ge�mek zorundad�r. Bu sayede gelen ve giden paketleri kontrol edebilir. �stedigine izin verip , istediginizi engelleyebilirsiniz. Bu k�s�tlama paket filtreleme y�ntemi ile yap�l�r |
||
|
||
Bu dokumanin en guncel hali; http://www.enderunix.org/docs/ipchains.html
adresindedir. Aksi belirtilmedigi takdirde bu kabil dokumanlarin haklari kendilerini yazan yazarlarda saklidir. Bu dokuman da, parca parca ya da tamamen herhangi bir sekilde, yazarinin izni dahilinde dagitilabilir. Yazar, bu dokumani okuyanlarin ugrayacaklari herhangi bir zarardan oturu sorumluluk kabul etmez. Use at your own risk! Bu makalede, yeni kullanicilara ipchains paketinin tanitimi, ve guzel firewall dizayni hakkinda bir kac bilgi verebilmek amaciyla yazilmistir. Kullanicinin temel network kavramlari, temel isletim sistemi kavramlari, paket filtreleme, tcp/ip hakkinda genel bilgisi oldugu kabul edilmektedir. Vasatin uzeri seviyede Linux bilgisi gerekmektiedir!!!. Egerki, BSD uzerinde bir firewall uygulamasi ( ipfilter'la ) Murat hoca'nin OpenBSD / FreeBSD + IpFilter dokumanini okuyabilirsiniz. Adresi: http://www.enderunix.org/docs/ipfilter.html Burada, temel ( www/smtp/ssh/pop/imap gibi ) birkac servisin firewall kontrolu altinda alinmasi, ve organizasyonun internet cikisinin firewall'imizdan yapilmasi icin gerekli konfigurasyonu, ipfilter'i genel olarak anlatarak yapacagiz. --Ismail Yenigul |
||
Paket Filtreleme | ||
Paket filtreleme Linux kernel(�ekirdek) i�erisine g�m�lm�� durumdad�r ve TCP/IP
protokolunun Network Layer(A� Katman�) da �al���r.Bu sayede sadece firewall
kurallar�n�n izin verdi�i paketlerin ge�isine izin verilir. Paketler tipine ,kaynak
adresine(source address), hedef adresine (destination address) ve portlara g�re
filtrelenir. Paket Ayn� zamanda Router g�revi yapan firewall makinas�na geldigi
zaman paketin ba�l�k(header) k�sm� a��l�r ve paket ba�l�g�ndaki bilgilere g�re
paket e izin verilir veya engellenir. Paketin ba�l�k k�sm�nda a�a��daki bilgiler
bulunur
�ki t�rl� Firewall dizayn vard� 1- Kapat�nlan trafik
d���ndaki t�m trafige izin vermek. 1. Burada g�venlik a���� olabilecek uygulamalar� tek tek kapatmak zorundas�n�z ve di�erlerine izin vermelisiniz. Bu durumda baz� g�zden ka��rd���n�z durumlar olabilir. Bu y�zden g�venlik a��s�ndan �ok iyi bir y�ntem de�ildir. Biz burada 2. y�ntemi uygulayaca��z. 2. Durum en iyi firewall dizaynd�r. Burada nelere izin verilip verilmedigi bellidir. ve dahiliniz d���nda hehangi bir pakete izin verilmez.
|
||
Ipchains Firewall | ||
Ipchains, Linux 2.1.102 kernel dan itibaren kullan�lmaya ba�layan t�m linux
�e�itlerinde bulunan �cretsiz bir firewall �e�itidir. ve binlerde $ verilip
al�nan di�er firewallar�n yapt��� (IP baz�nda ,A� baz�nda ,protokol
baz�nda, port baz�nda filtreleme , port y�nlendirme, gelen paketi reddetme ) gibi
t�m i�leri yapmaktad�r.Ama ne yaz�kki ipchainsi bilmeyenler i�in
,ipchains sadece �cretsiz basit bir firewall program�ndan ibaret
g�r�lmektedir. G�nde onlarca sitenin HACK edildi�i g�n�m�zde
,�nternette g�venli�in ne kadar �nemli oldu�una anlatmaya gerek yok. Bu
belgede ipchains ile neler yap�laca�� anlat�lacakt�r ve �rnek bir a� yap�s� ele
al�narak ipchains firewall dizayn� yap�lackt�r. Bu d�k�man�n binlerce $
vermek istemeyen veya veremeyen firmalar veya ki�iler i�in sistemlerini
korumakta yard�mc� olaca��n� �mit ederim. Linux 2.1.102 kernel dan �nce ipfwadm isimli firewall vard�. Linux kernel liniz 2.0 ise ipchains kullanmak i�in yama(patch) yapman�z gerekiyor. Ama tavsiyem, �u an en son kararl� kernel 2.2.17 yi ftp://ftp.kernel.org adresinden indirip derlemeniz olacak . Burada ba�tan Kernel derleme anlat�lmayacakt�r. sadece kernel a ipchains destegi(Yoksa !) nas�l verilece�i anlat�lacakt�r.E�er 2.1.102 kernel dan yukar�s�n� kullan�yorsan�z. ve /proc/net/ip_fwchains dosyas� var ise ipchains kurulu demektir.Kernel derlemenize gerek yoktur. E�er Kernel de ipchains destegi yoksa ve ipchains y�kl� de�ilse http://netfilter.filewatcher.org/ipchains adresinden ipchains indirip kurun ve kernelinize Network firewalls (CONFIG_FIREFALL) [N] Y IP:Masquerading (CONFIG_IP_MASQUERADE) [N] Y yukar�daki destekleri vererek kernel i tekrar derleyiniz. kernel
derlemek i�in
xxx Linux un bulundu�u root dizini ifade etmektedir.
|
||
Ipchains komutlari | ||
�lk olarak # kullan�ld���n� da bunun Linux konsolu oldugunu ve Linux e root
kullan�c�s� ile girildigi kabul edilecektir. Kulland���n�z ipchains versiyonunu �grenmek i�in # ipchains
--version komutu
verildiginde Ipchains te paketler i�in �n tan�ml� olarak 3 grup vard�r. input: (Giri�) Makinan�zan�n aray�z�ne gelen paketller. output: (��k��) Makinan�z�n ara y�z�nden ��kan paketler. forward: (Y�nlendirme) Makinan�z�n bir aray�z�nden gelip , di�er aray�z�ne ge�en paketler (MASQUARING gibi) bunlar�n d���nda kullan�c�lar�n kendilerine grup tan�mlayabilirler. Kendi grubunuzu tan�mlamak i�in # ipchains -N grubad� komutu ile belirtilen grub ad�nda bir grub olu�ur. Ipchains le kullan�lan parametler �u �ekildedir. -i
interface(aray�z) :Hangi aray�z�n
kullan�laca��n� belirtir. Firewall makinam�zda Paket i�in a�ag�daki Karar mekanizmalar�(Policy) i�ler. ACCEPT:
Paketin kabul edildi�ini belirtir. Yukar�daki t�m ifadeleri �rneklerle a��klayal�m. # ipchains -A input -i eth0 -p tcp -s 193.12.3.100 -d 212.65.128.100 80 -j ACCEPT Bu komut eth0 aray�z�ne(-i eth0), 193.12.3.100 IP adresinden (-s 193.12.3.100) gelen (-A input) , tcp (-p tcp) protokolunu kullanan ve 212.65.128.100 IP li (-d 212.65.128.100 )bilgisayar�n 80 portuna gelen paketleri kabul et(-j ACCEPT) manas�na gelmektedir. # ipchains -A output -s 212.65.128.100 25 -d 0/0 -p tcp
-i eth0 -j ACCEPT #ipchains -A forward -s 0/0 -i eth1 -d 200.1.2.3 -p
icmp -j ACCEPT #ipchains -D forward -s 0/0 -i eth1 -d 200.1.2.3 -p icmp -j ACCEPT �fadesi ile bir �stte olu�turdu�umuz kural� kurallar tablosundan sil demektir. # ipchains -P input DENY Bu komutlar ile �n tan�ml� �� kural grubu i�in gelen paketleri yasakla (DENY) demektir. Bu durumda hi� bir paket giri� ��k��� olmaz # ipchains -A forward -i eth0 -p tcp -s
192.168.1.0/24 -d 0/0 -j MASQ #ipchains -F input #ipchains -L
|
||
Firewall Dizayni | ||
Bu d�k�manda A�a��daki gibi bir sisteme sahip bir firmam�z oldu�u varsay�lacak ve buna g�re firewall dizayn yap�lacakt�r.
�ekilde 3 tane aray�ze(interface)sahip bir Linux (Ipchains Kurulu) bilgisayar g�z�kmektedir. Linux umuz eth0 (Birinci ethernet kart�) isimli aray�z ile firmam�z�n Sunucular�n�n oldu�u a�a ba�lanm�t�r. Sunuclar�n oldu�u a�da Firmam�za ait WWW(Web sunucusu IP: 212.2.2.2 ), SMTP(Mail ve POP3 sunucusu IP:212.2.2.3) , DNS(dns sunucusu IP: 212.2.2.4) bulunmaktad�r. ve eth1 aray�z� ile �irkette �al��anlar�n bilgisayarlar�n�n oldu�u Yerel A�a ba�l�. Son olarakta ppp0 (Modem) aray�z� ile internet ��k���m�z� sa�lanmaktad�r. �o�u firman�n Kiral�k Hat kuland��� g�ze al�narak Modem ba�lant�s�n�n Kiral�k hat ile yap�ld��� ve sabit bir IP(160.75.5.5) ye sahip oldu�u kabul edilmi�tir. (Not: hangi servisin hangi numaraya sahip oldu�unu /etc/services dosyas�ndan ��renebilirsiniz.) Dikkat ederseniz Yerel a� 192.168.1 ile ba�layan kay�ts�z (unregistered) IP lere sahip bir �zel(private) a�d�r. Bu t�r IP lere sahip bilgisayarlar�n internete ba�lanmas� ve i�in Linuxumuzda MASQUARING (Maskeleme) yap�lmas� laz�md�r. MASQUARING de yerel a�dan ��kan paketler sanki Firewall makinas�ndan ��k�yormu� gibi g�sterilir. ve paketinize gelen cevap ilk �nce Linux firewall makinam�za gelir ve sizin bilgisara ula�t�r�l�r. Bir �rnekle a��klayal�m . Diyelim ki siz 192.168.1.49 IP li yerel a�daki bilgisaray�z�n web taray�c�s�ndan http://skywalker.mis.boun.edu.tr web sayfas�na ba�lanmak istediniz. 1-Bu paket sizin bilgisayar�n�z�n 1500 portundan http://skywalker.mis.boun.edu.tr sunucusunun 80(HTTP) portuna gitmek i�in olu�turulur ve Gateway e iletilir. 2-Gateway olan Linux umuze gelen paket MASQUERADING sayesinde biraz de�i�tirilir . Ayn� paket Linux umuzun kendi yerel 65155 portundan geliyormu� gibi tekrar olu�turulur ve http://skywalker.mis.boun.edu.tr sunucusunun 80 portuna g�nderilir. 3- http://skywalker.mis.boun.edu.tr sunucusuna gelen paketimiz bu sunucu taraf�ndan Linux (firewall.pcworld.com.tr diyelim)umuzun 65155 portundan gelmi� gibi g�z�k�r ve gelen pakete cevab� Linux makinam�za g�nderir. 4-Linux u muze gelen bu paketi ,Linux 192.168.1.49 bilgisayar�na g�nderilmesi gerekti�ini anlar(Linux kimlerin hangi paketi g�nderdi�ini hat�rlamaktad�r ve internet ten paket gelince paket kim g�ndermisse cevab� ona iletir. ) ve paketi tekrar olu�turarak 192.168.1.49 bilgisayar�na iletir. Anla��laca�� �zre MASQUERADING
olmasa idi ger�ek IP ye sahip olmayan bilgisayarlar�n internet e ba�lanmas�
m�mk�n de�ildi. IPchains komutlar�n� vermeden �nce bir firewall yapt�r�mlar�n� belirleyerek nelere izin verilip nelere izin verilmeyece�ini belirleyelim. 1- Yerel A�dan Internete: - �nternete s�n�rs�z eri�ime izin verilecek. 2- Yerel A�dan Sunucu B�lgesine (Server zone): - WWW sunucusunda �al��an HTTP(80 .port) ve
HTTPS (443. port) TELNET(23) FTP (20 , 21) servislerine eri�imi 3-Internet ten Yerel A� eri�im. 4-Internet ten Sunucu B�lgesine, Sunucudan �nternete: - WWW sunucusudaki HTTP(80) ve HTTPS(433)
servislere giri� ve ��l�� eri�imi 5-Sunucu B�lgesinen Yerel A�a - Sadece Yerel A��n sunucu b�lgesine g�nderdi�i paketlere
gelen cevap paketler kabul edilecektir. Evet bu �ekilde bir firewall uygulamas� yap�lacakt�r.
(Evet biliyorum biraz kar���k galiba :)) ) �imdi Firewall kurmaya
ba�layabiliriz.. |
||
Firewall Kurulumu | ||
�lk olarak linux e forward ozelli�i verilmesi
laz�m bunun i�in Redhat 6.2 kullan�yorsan�z /etc/syscl.conf ya da, RedHat 7.0 kullaniyorsaniz: #sysctl -w net.ipv4.ip_forward = 1 Di�er Linux �e�itlerinde # echo 1 > /proc/sys/net/ipv4/ip_forward
komutu verin bu komutun a��l��ta aktif olmas� i�in Buradan sonraki t�m yaz�nlanlar� bir dosyaya
yazal�m ��nk� Linux reboot edildi�inde t�m firewall kurallar� silinecektir. Bu
y�zden reboot edildikten sonra kurallar�m�z� dosyadan tekrar �al��t�rabiliriz.
www=212.2.2.2 # web sunucusu IP # �nce ,daha �nceki t�m kurallar� silelim # t�m i�lemleri yasaklayal�m ipchains -P input DENY # firewall sunucusun kendisinden gelip kendisinden paketlere izin
vereelim # internet te ba�l� aray�zden sanki bizim loopback ip sinden gelmi� gibi g�r�nen paketleri engelleyelim ve -l parametresi ile b�yle bir paket geldiginde log dosyas�na yazmas�na belirtelim. ipchains -A input -i $EXTERNAL_INT -s $LOOPBACK -j DENY -l # Yerel a��n internet ba�lant�s� i�in MASQUARING i aktif
edelim # simdi web sunucusuna gelen ve sunucudan gelen pakerler
i�in kuralllar (rules) yazal�m. #Internetten(ppp0) Web sunucununa(eth0) HTTPD (80) eri�imi # internet aray�z�nden(ppp0 ) gelen paketin ,sunucular
taraf�na giden aray�z�ne (eth1) y�nlendirilmesi ( forward) kabul ediliyor # yuakar�da firewall�n sunucu aray�z�ne gelen paket ,art�k
sunucu aray�z�nden ��k�p web sunucusuna gidecektir. Bu durumda bu paket firewall un
internet aray�z� i�in (ppp0) bir input ,Sunucu aray�z� i�in (eth0) bir output
kural�d�r(��k� paket eth0 dan �IKIYOR bu y�zden output dur.). #�imdide Web sunucusuna yukar�daki gibi gelen paket lerin ��k���na izin verelim. #Web sunucusundan (eth0) Internete (ppp0) HTTPD (80) Cevab�
(Reply) # paketin internet aray�z�ne y�nlendirilmesini kabul
et.! # paketin internet aray�z�nden ��k�p ,internet gitmesine
izin ver. # Durup dururken hi� bir web sunucusu kendisine paket gelmeden
hi� bir yere cevap vermez. �nce bir istek gelmesi laz�m ve sunucunun da bu iste�e
cevap vermesi ## laz�m , Sadece iki y�nl� paket ge�isine izin vermek i�in ! -y
parametresi verilir. Bu parametre sadece TCP paketleri i�in ge�erlidir. # Yukar�daki ayn� mant�k HTPPSD (SSL ) i�inde
ge�erlidir. ipchains -A input -i $EXTERNAL_INT -p tcp -d $www 443 -j
ACCEPT #Web sunucusundan (eth0) Internete (ppp0) HTTPSD (443) Cevab� (Reply) ipchains -A input -i $SERVER_INT -p tcp -s $www 443 ! -y
-j ACCEPT #SMTP SUNUCU # yine ayn� kurallar MAIL sunucusu i�inde ge�erlidir.
burada -y parametresi s�z konusu de�il ��nk� mail sunucusunun kendisi d��ar�dan
istek gelmeden paket g�nderir. (Eh yoksa mailler nas�l gider :) ) ipchains -A input -i $EXTERNAL_INT -p tcp -d $smtp 25 -j ACCEPT
#SMTP sunucusundan (eth0) Internete (eth2) SMTP (25) Cevab� (Reply) ipchains -A input -i $SERVER_INT -p tcp -s $smtp
25 -j ACCEPT # sunucu k�sm�nda en son olarak dns sunucusunu alal�m.
Yukar�dakilerden pek fark� ama domain(dns) UDP paketini kullan�r. ipchains -A input -i $EXTERNAL_INT -p udp -d $dns 53 -j
ACCEPT #DNS sunucusundan (eth0) Internete (ppp0) DOMAIN (53) Cevab� (Reply) TCP UDP ipchains -A input -i $SERVER_INT -p udp -s $dns 53 -j
ACCEPT $ICMP PAKETLER�NE �Z�N VEREL�M # icmp Paketlerinin ��k���na izin veriyoruz # traceroute genellikle Kaynak(source) olarak
32769:65535 hedef (destination) olarak 33434:33523 - # D��ar�ya Traceroute izin verelim. #�imdi de yerel a�� internete ��karal�m # Local (eth1) to INTERNET (eth2 ) # Yerel a�dan gelen t�m tcp paketlerini kabul et. # ve firewallun 61000 ile 65096 aras�ndaki t�m portlardan
��kan paketleri kabul et.! # Evet bu portlarda neyin nesi diyenler olabilir :) .
A��klayay�m MASQUARING yap�lan t�m paketler (yani yerel a�dan gelen paketler).
internet te ��kmadan �nce firewall sunucusunda yukar�daki port
aral���nda herhangi bir porttan tekrar olu�turulur. ve bu portlar aral���ndan giden
paketler yine bu port aral���ndan firewalla gelir. # INTERNET ( eth2) to Local (eth1) # �nternetten Firewall�n MASQ arin port
aral���na gelen paketleri kabul et. # ve Firewall�n internet aray�z�nden gelip yerel a�
aray�z�den ��kan paketleri kabul et. # YEREL A�DAN SUNUCU B�LGES�NE GE���. ## WWW sunucusuna firewall �n MASQUARING portlar�ndan gelen
paketlerin, # httpd izni # https izni # telnet izni # ftp izinleri # Yerel a��n Mail sunucusuna eri�im izinleri (mail , pop3
telnet ftp) # yerel a�dan dns sunucusuna eri�im (domain , telnet, ftp izinleri) ipchains -A output -i $SERVER_INT -s $fwhost
61000:65096 -d $dns 53 -j ACCEPT --------------- DOSYAMIZ BURADA SONA ERD�------------------------------------------------ evet bunlar� firewall.sh dosyas�na yazd���m�z kabul edelim.
ve bu kurallar� istedi�imiz zaman �al��t�r�p durdurmak i�in bir script (betik)
yazal�m. ----------------DOSYA BA�LANGI�-------------- #!/bin/sh case "$1" in start) exit 0 --------DOSYA B�T��-------------------------------- bu komutlar�n a��l��ta aktif olmas� i�in ilk �nce Art�k Firewall�m�z haz�rd�r. Kolay gels�n.! E�er bu komutlar� yazmak bayag� zor geliyor ise sizin i�in firewall kurallar� �reten baz� yard�mc� programlar var
|
||
Kaynaklar | ||
|
||
(c) 2001 Enderunix Software Development Team |