EnderUnix Software Development Team

Linux uzerinde IPCHAINS Firewall Kurulumu ve Konfigurasyonu. 

Giris

9 $ubat 2001

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
Genel Notlar
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
   [email protected]
   9 $ubat, 2001

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
 
  • Kaynak(source) IP adresi
  • Hedef (Destination) IP adresi
  • TCP/IP Kaynak Portu
  • TCP/IP Hedef Portu
  • ICMP Mesaj T�r�
  • Protokol T�r�

�ki t�rl� Firewall dizayn vard�

     1-   Kapat�nlan  trafik d���ndaki t�m trafige izin vermek.
     2-  �zin verilen trafik d���ndaki t�m trafi�i engellemek

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:Firewalling (CONFIG_IP_FIREWALL) [N] Y
IP:TCP syncookie support (CONFIG_SYN_COOKIES) [N] Y

IP:Masquerading (CONFIG_IP_MASQUERADE) [N] Y
IP:ICMP Masquerading (CONFIG_IP_MASQUERADE_ICMP) [N] Y

yukar�daki destekleri vererek kernel i tekrar derleyiniz. kernel derlemek i�in
/usr/src/linux dizin alt�nda  s�ra ile
# make dep  && make clean && make bzImage && make modules && make modules_install
komutunu veriniz ve
#cp /usr/src/linux/arch/i386/boot/bzImage /boot  komutu ile kopyalay�n ve

/etc/lilo.conf dosyas�na
image=/boot/bzImage
        label=linux
        root=/dev/xxx
        read-only

xxx Linux un bulundu�u root dizini ifade etmektedir.
yazd�ktan sonra
# lilo komutunu verdikten sonra linux reboot edin.

 

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 1.3.9  17-Mar-1999
 
 

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.
-A     : (Append) Yeni bir kural  ekleme
-D     : (Delete) Tan�mlanm�� bir kural� silme
-R     : (Replace) B�r kural� de�i�tirmek i�in kullan�l�r.
-I      :(Insert)  Araya kural eklemk  i�in kullan�l�r
-F     :(Flush)   Bir  kurallar tablosunun tamamen silinmesini sa�lar(tablonun i�eri�i s�f�rlan�r).
-X    : i�eri�i s�f�r olan kural grublar�n� (input , output, forward, kullan�c�n�n tan�mlad�klar�)siler.
-N    : (New) Yeni bir kural grubu olu�turur.
-L    : (List) Tan�ml� kural grublar�ndaki  kurallar� listeler
-P     : (Policy) ipchains in �n tan�ml� kural grublar�n�n kurallar�n� ayarlar.
 
 
 

-i         interface(aray�z)          :Hangi aray�z�n kullan�laca��n� belirtir.
-s         kaynak  (source)         :Paketin geldi�i kayna��n IP adresi veya a� grubunu belirtilir.
-d         hedef (destination)       :Paketin gidece�i adres veya adres grubu
-p         protokol(protocol)      :Paketin kulland��� protokol ad�n� belirtir(tcp udp icmp gibi).
-j         (jump)                         :Paket ile ilgili hangi karar�n verilece�ini belirtir.
-l         log(kay�t)                     :Paket ile ilgili bilgilerin log dosyas�na yaz�lmas�n� sa�lar
-v       (verbose)                     :Paket ile ilgili detayl� bilgi verir.
  !                                           :Bu parametre kural�n de�ilin�i (tersini) belirtilir.

Firewall makinam�zda Paket i�in a�ag�daki Karar mekanizmalar�(Policy) i�ler.

ACCEPT:         Paketin kabul  edildi�ini belirtir.
DENY :            Paketin kabul edilmedi�ini belirtir. Paket blok edilir ve  paketi g�nderen tarafa  hi� bir �ey g�nderilmez.
REJECT:          Paket reddedilir ve paketi g�nderen tarafa paketin reddedildi�ine dair bilgi g�nderilir.
MASQ :           Paketin maskelendigini belirtir. (MASQUARING de kullan�l�r)
REDIRECT:     Bir porta (gelen , giden, y�nlendirilen) paketin ba�ka bir yerel porta  y�nlendirilmesi i�ini                         yapar.(Genelde Web                 isteklerini yerel makinadaki proxy portuna y�nlendirmek i�in kullan�l�r.),
Portlarla il�ili olarakta.
 1:1000 ifadesi 1 ile 1000 aras�ndaki portlar� tan�mlayabilirsiniz.
1500: ifadesi ise 1500 ile 65535 (En sonuncu port) demektir.

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
 Bu komut ise eth0 aray�z�n� kullanan 212.65.128.100 IP li makinan�n 25 portundan gelen ve herhangi bir yere (0/0) giden  tcp protokolu kullananan  paketlerin ��k���na (-A output) izin ver (-j ACCEPT) demektir.

 #ipchains -A forward -s 0/0 -i eth1  -d 200.1.2.3 -p icmp -j ACCEPT
 Bu ifade ise  herhangi bir yerden eth1 aray�z�ne gelen ve 200.1.2.3 IP li makinaya giden t�m icmp protokolu paketlerini kabul et demektir.

 #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
# ipchains  -P output DENY
# ipchains  -P forward 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
    Bu komut ile  yerel a�dan gelen ve d��ar� giden ( nereye olursa olsun internet veya di�er a�a ) t�m paketlere MASQUARING  uygula demektir.
#ipchains -F
    Bu komut ile daha �nce belirlenen t�m grublara ait  kurallar silinir

#ipchains -F  input
    ile sadece input grubuna ait komutlar silinir.

#ipchains -L
ifadesi ile t�m grublarda tan�mlanan kurallar listelenir.
 


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.

        INTERNET
                |
                |
            ppp0 veya eth2
         ------------------
         |160.75.5.5          |             Sunucu Network
         |                              |  eth0
         |                              |----------------------------------------------
         |   LINUX                |
         |    IPCHAINS        |  212.2.2.1   |           |              |
         |  FIREWALL         |                        |            |              |
         |192.168.1.1        |                       |          |              |
         ----------------- -        --------        -------       -------
                | eth1                    | WWW |     |SMTP |     |DNS |
                |192.168.1.1          --------      -------       -------
                |                             212.2.2.2      212.2.2.3    212.2.2.4
        YEREL A�


Yukar�daki �emay� a��klamadan �nce Linux de aray�z(interface) isimlerinden k�saca bahsedeyim.
 Linuxte birinci ethernet kart�n�n ismi eth0 d�r
               ikinci ethernet kart�nn ismi eth1 dir
               ���nc� ethernet kart�n�n ismi eth2 dir. ve bu �ekilde devam eder,ve
               hangi ethernet kart�n�n hangi isimde olaca�� size kalm��.
                K�sacas� ,3 ethernet kart� varsa istedi�inizi eth0  eth1 veya  eth2  olarak belirleyebilirsiniz.
                Birinci Modem ba�lant�s�n�n ismi ise ppp0
                Linuxun kendisinden olu�an ve yine kendisine giden paketler lo0 (loopback) aray�z�n� kullan�r. Bu sayede paket d��ar� ��kmadan kendisine iletilir.
       �eklimizi a��klamaya ba�layal�m:

         �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
SMTP sunucusunda �al��an SMTP(25), POP3 (110) , TELNET(23), FTP(20 ,21) servislerine eri�im.
DNS sunucunda �al��an  DOMAIN(53), TELNET (23),  FTP(20 ,21) servislerine eri�im hakk� verilecektir.

3-Internet ten Yerel A� eri�im.
 - Sadece Yerel A��n internet e g�nderdi�i paketlere gelen cevap paketler kabul edilecektir.

4-Internet ten  Sunucu B�lgesine, Sunucudan �nternete:

 - WWW sunucusudaki HTTP(80) ve HTTPS(433) servislere giri� ve  ��l�� eri�imi
SMTP sunucusundaki SMTP(25) servisine  giri� ve ��k�� eri�imi
- DNS  Sunucusundaki  DOMAIN(53) servisine giri� ��k��a izin verilecektir.

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
 E�er Redhat 6.1  Kullan�yorsan�z
 /etc/syconfig/network dosyas�ndaki
FORWARD_IPV4="false"
FORWARD_IPV4="yes"
yap�n ve
#/etc/rc.d/init.d/network restart   komutu  ile de�i�iklikleri aktif  yap�n�z.

Redhat 6.2 kullan�yorsan�z

 /etc/syscl.conf
net.ipv4.ip_forward = 1
ekleyin  ve
#/etc/rc.d/init.d/network restart   komutu  ile de�i�iklikleri aktif  yap�n�z.

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
Mandrake ve Slackware de /etc/rc.d/rc.local dosyas�n�n i�ine yaz�n�z.

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.
# ile ba�layan ifadeler sadece a��klamad�r ,  firewall�n kurallar�n� de�i�tirmez.
#------------------------------------------------- FIREWALL dosyasi------------------------
#--------------------- Buradan itibaren dosyaya yazin...............
#De�i�kenlerimizi tan�mlay�m.

www=212.2.2.2    # web sunucusu IP
smtp=212.2.2.3 # mail sunucusu IP
dns=212.2.2.4 # dns sunucusu IP
localnet=192.168.1.0/24 #T�m Yerel A�
fwhost=192.168.1.1/32  #  firewall makinas�n�n kendisi
EXTERNAL_INT=ppp0 # internete ba�lant� aray�z�
SERVER_INT  =eth0  # firewall makinas�n�ndaki  sunucular�n oldu�u taraf�n aray�z�
LOCAL_INT=eth1 #  firewall makinas�n�ndaki yerel a� ba�lant� aray�z �
LOOPBACK=127.0.0.1 # linuxun kendisinin loopback adresi

# �nce ,daha �nceki t�m kurallar� silelim
ipchains -F
ipchains -X

# t�m i�lemleri yasaklayal�m

ipchains -P input DENY
ipchains -P output DENY
ipchains -P forward DENY

# firewall sunucusun kendisinden gelip kendisinden paketlere izin vereelim
ipchains -A input -i lo0 -j ACCEPT
ipchains -A output -i lo0 -j ACCEPT

# 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
ipchains -A output -i $EXTERNAL_INT -s $LOOPBACK   -j DENY -l
 
 

# Yerel a��n internet ba�lant�s� i�in MASQUARING i aktif edelim
# MASQUARING RULES
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
 

# simdi web sunucusuna gelen ve sunucudan gelen pakerler  i�in kuralllar (rules) yazal�m.
# WEB SUNUCUSU

#Internetten(ppp0) Web sunucununa(eth0) HTTPD (80) eri�imi
# internet ten sunucu ya gelen paketleri kabul edelim
ipchains -A input -i $EXTERNAL_INT -p tcp -d $www 80 -j ACCEPT

# internet aray�z�nden(ppp0 ) gelen paketin ,sunucular taraf�na giden aray�z�ne (eth1) y�nlendirilmesi  ( forward) kabul ediliyor
ipchains -A forward -i $SERVER_INT -p tcp -d $www 80 -j ACCEPT

# 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.).
ipchains -A output  -i $SERVER_INT -p tcp -d $www 80 -j ACCEPT
 

#�imdide Web sunucusuna yukar�daki gibi gelen paket lerin ��k���na izin verelim.

#Web sunucusundan (eth0) Internete (ppp0) HTTPD (80) Cevab� (Reply)
# firewall un sunucu aray�z�ne web sunucusu taraf�ndan gelen paketi kabul et.
ipchains -A input -i $SERVER_INT -p tcp -s $www 80  ! -y -j ACCEPT

# paketin internet  aray�z�ne y�nlendirilmesini kabul et.!
ipchains -A forward -i  $EXTERNAL_INT -p tcp -s $www 80 ! -y  -j ACCEPT

# paketin internet aray�z�nden ��k�p ,internet gitmesine izin ver.
ipchains -A output  -i  $EXTERNAL_INT -p tcp -s $www 80  ! -y -j ACCEPT

# 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.
#Internetten(ppp0) Web sunucununa(eth0) HTTPSD (443) eri�imi

ipchains -A input -i  $EXTERNAL_INT -p tcp -d $www 443 -j ACCEPT
ipchains -A forward -i $SERVER_INT -p tcp -d $www  443 -j ACCEPT
ipchains -A output  -i $SERVER_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
ipchains -A forward -i  $EXTERNAL_INT -p tcp -s $www 443 ! -y  -j ACCEPT
ipchains -A output  -i  $EXTERNAL_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 :) )
#Internetten(eth2) SMTP sunucununa(eth0) SMTP (25) eri�imi

ipchains -A input -i $EXTERNAL_INT -p tcp -d $smtp 25 -j ACCEPT
ipchains -A forward -i $SERVER_INT -p tcp -d $smtp 25 -j ACCEPT
ipchains -A output  -i $SERVER_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
ipchains -A forward -i  $EXTERNAL_INT -p tcp -s $smtp  25  -j ACCEPT
ipchains -A output  -i  $EXTERNAL_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.
# DNS SUNUCUSU
#Internetten(ppp0) DNS sunucununa(eth0) DOMAIN (53) eri�imi UDP

ipchains -A input -i  $EXTERNAL_INT -p udp -d $dns 53 -j ACCEPT
ipchains -A forward -i $SERVER_INT -p udp -d $dns  53 -j ACCEPT
ipchains -A output  -i $SERVER_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
ipchains -A forward -i $EXTERNAL_INT -p udp -s $dns  53   -j ACCEPT
ipchains -A output  -i $EXTERNAL_INT -p udp -s $snd 53   -j ACCEPT
 

$ICMP PAKETLER�NE �Z�N VEREL�M
# ICMP paketlerinin giri�ine izin veriyoruz
ipchains -A input -i  $EXTERNAL_INT -p icmp  -j ACCEPT
ipchains -A forward -i $SERVER_INT -p icmp --j ACCEPT
ipchains -A output  -i $SERVER_INT -p icmp   -j ACCEPT
 

# icmp Paketlerinin ��k���na izin veriyoruz
ipchains -A input -i $SERVER_INT -p icmp  -j ACCEPT
ipchains -A forward -i $EXTERNAL_INT -p icmp   -j ACCEPT
ipchains -A output  -i $EXTERNAL_INT -p icmp   -j ACCEPT
 

# traceroute genellikle  Kaynak(source) olarak 32769:65535  hedef (destination) olarak 33434:33523
#portlar�n� kullan�r.
 

-
# traceroute genellikle  Kaynak(source) olarak 32769:65535  hedef (destination) olarak 33434:33523
#portlar�n� kullan�r.

  # D��ar�ya Traceroute izin verelim.
ipchains -A input  -i $SERVER_INT -p udp  -s 0/0 32769:65535  -d any 33434:33523  -j ACCEPT
ipchains -A forward -i $EXTERNAL_INT -p udp  -s 0/0 32769:65535  -d any 33434:33523  -j ACCEPT
ipchains -A output  -i $EXTERNAL_INT -p udp  -s 0/0 32769:65535  -d any 33434:33523  -j ACCEPT
 
 
 

#�imdi de yerel a�� internete ��karal�m
 

# Local (eth1) to INTERNET (eth2 )

# Yerel a�dan gelen t�m tcp paketlerini kabul et.
ipchains -A  input  -i  $LOCAL_INT   -s $localnet  -j ACCEPT
 

# ve firewallun 61000 ile 65096 aras�ndaki t�m portlardan ��kan paketleri kabul et.!
ipchains -A output -i $EXTERNAL_INT   -s $fwhost 61000:65096 -j ACCEPT

# 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.
ipchains -A input -i $EXTERNAL_INT  -d $fwhost  61000:65096 -j ACCEPT
 

# ve Firewall�n internet aray�z�nden gelip yerel a� aray�z�den ��kan paketleri kabul et.
ipchains -A output -i $LOCAL_INT  -d $localnet ! -y -j ACCEPT
 

# YEREL A�DAN SUNUCU B�LGES�NE GE���.

## WWW sunucusuna firewall �n MASQUARING portlar�ndan gelen paketlerin,
 # sunucu b�lgesine ge�mesi i�in  firewall�n sunucu aray�z�nden ��kmas�n� kabul et.

# httpd izni
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $www 80 -j ACCEPT

# https izni
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $www 443  -j ACCEPT

# telnet izni
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $www 23  -j ACCEPT

# ftp izinleri
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $www 21  -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $www 20  -j ACCEPT

# Yerel a��n  Mail sunucusuna eri�im izinleri (mail , pop3 telnet ftp)
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp 25 -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp  110 -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp  23  -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp 21  -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp 20  -j ACCEPT
 

# 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
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp  23  -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp 21  -j ACCEPT
ipchains -A output -i  $SERVER_INT -s $fwhost  61000:65096 -d $smtp 20  -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.
A�ag�daki ifadeleri bir dosyaya yazal�m (firewall )olsun

----------------DOSYA BA�LANGI�--------------

#!/bin/sh
# Firewall istendi�ii zaman �al��t�ran ve durduran scriptdir.
#

case "$1" in

        start)
        echo "Firewall Aktif Hale Getiriliyor..."
        /etc/rc.d/firewall.sh
                ;;
        stop)
        echo "Firewall durduruluyor..."
          /sbin/ipchains -F
          /sbin/ipchains -X
         /sbin/ipchains -P forward ACCEPT
        /sbin/ipchains -P output ACCEPT
                ;;
                * )
        echo "Kullanim : $firewall {start|stop}"
        exit 1
        ;;
esac

exit 0

--------DOSYA B�T��--------------------------------

bu komutlar�n a��l��ta aktif olmas� i�in

ilk �nce
# chmod 700 firewall  firewall.sh
komutu ile yukar�daki dosyalar� �al��t�r�labilir hale getirelim ve daha sonra
/etc/rc.d/rc.local dosyas�n�n sonuna
/etc/rc.d/firewall start
ifadesini yazal�m.

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

  1. �smi:PHP Chains 2.0
    Adresi : http://www.tuial.com/projects.php3:
    �zelli�i :PHP de yaz�lm�� , web �zerinden kullanabiliyorsunuz.
  1. �smi: PHP Firewall Generator
    Adresi :   http://phpfwgen.sourceforge.net
    �zelli�i :PHP de yaz�lm�� , web �zerinden kullanabiliyorsunuz.
  2. �smi:PMFirewall
    Adresi: http://www.pmfirewall.com/PMFirewall/
    �zelli�i: Ipchains ve MASQUAREDING Kurallar� yazma.
Kaynaklar
 
  1. Securing And Optimazing Redhat Linux  v 1.3 (PDF olarak indirelebiliyor.) http://www.openna.com/books/book.htm
  2. IPchains HOWTO: http://netfilter.filewatcher.org/ipchains
  3. Building Internet Firewall  (http://www.oreilly.com)
  4. Ipchains T�rk�e �eviri D�k�man�  http://www.linux.org.tr/documents/kullanici_belgeleri/ipchains/
  5. man ipchains ;)

 

(c) 2001 Enderunix Software Development Team