FreeBSD uzerinde squid proxy server kurulumu

Squid internet bilgilerini cache tutmaya yarayan bir yazılımdır. Siz bir siteye baglanmak istediğiniz zaman, bağlanmak istediğiniz sitenin sunucusu sideki squid haber verir , daha sonra squid uzaktaki sunucuya bağlandiktan sonra , istenilen sayfayı indirir. Sayfanın bir kopyasınıda kendi bünyesine alır. İkinci sefer aynı siteye bağlanmak istediginiz zaman siteyi diskten size getirir. Böylece daha kısa zamanda istediğiniz bilgiye erişirsiniz. ICP(Internet Cache Protocol) protokolü sayesinde squid diger sistemlerin cache leri arasında hiyararşik bir düzen kurar (Birbirine izin veren sistemler için geçerlidir.Mesela ULAKNET in sayesinde üniversiteler arasında hızlı iletişim sağlaması ).Böylece kendisinde olmayan bilgiler iletişimde bulunduğu sistemler de varsa kendi aynı bilğiyi kendi cache ine yazmayacaktır.Bu da büyük oranda disk kullanımını azaltacaktır. Siz bir web sitesi için istekte bulunduğunuzda squid ilk önce kendi cache ine bakar, bulamazsa hiyerarşi içinde bulunduğu diğer sistemlerin cache lerini kontrol eder. Orada da bulamazsa web sitesinin bulunduğu sunucuya baglanır ve istediğiniz sayfayı indirdikten sonra bir kopyasını da kendi cache ine kopyalar. Bu sayede istenilen bilgiye daha kısa sürede ulaşabilirsiniz.

Squid HTTP, FTP, GOPHER, SSL ve WAIS protokollerini destekler. POP RealAudio gibi protokolleri desteklemez. Tabii ki squid'te hersey saklanmaz. örneğin calistirilabilen cgi programları, haber sayfaları gibi sürekli olarak yenilenen siteler, kredi kartı numaraları cache tutulmaz.

Squid AIX, Digital Unix, FreeBSD, HP-UX, Irix, Linux, NetBSD, Nextstep, SCO, Solaris gibi işletim sistemlerinde calişir. windows NT üzerinde çalışmaşı için gnu-win32 paketine ihtiyacınız vardır. http://wwww.cygnus.com/misc/gnu-win32/ adresinden alabilirsiniz.

SQUID YÜKLENMESİ

FreeBSD squid ports tan kurmak icin asagidaki komutlar verilir.

# cd /usr/ports/www/squid
# make install clean

SQUID AYARLARI

Squid'in ayarları için /usr/local/etc/squid/squid.conf dosyasında bazı değişiklikler yapmak gerekir.

/usr/local/etc/squid/squid.conf dosyasını bir editorde (vi,pico) açınız.

#http_port 3128

3128 nolu port numarası squid in http istemcilerden gelen istekleri dinlediği ön tanımlı port numarasıdır.

#cache_mem 8 MB 

Burada Squid ön tanımlı olarak 8Mb bellek kullanır. Bunu isteğinize göre değiştirebilirsiniz. cache_mem ifadesi maksimum işlem sayısını sınırlamaz. Sadece diske yazarken ne kadar hafıza kullanacağını ifade eder. Eğer 8MB'den farklı bir miktar kullanacksanız baştaki # işaretini kaldırın. Örneğin 8Mb değil de 15
MB yapmak için "#cache_mem 8 MB" ifadesini "cache_mem 15 MB" şeklinde değiştirdim.

# cache_dir ufs /usr/local/squid/cache 100 16 256

Squid bilgileri cache tutmak için ön tanımlı olarak /usr/local/squid/cache dizinini kullanır. Yukarıda bu squid'in 100MB'lık bir disk alanı kullanacağı ve bu /usr/local/squid/cache dizinin altında 16 dizin ve bu 16 dizinin her birinin altında 256 tane dizin oluşturulacağını ifade eder. Bu şekilde bir yapı olmasının sebebi Squid'in bilgilere daha çabuk ulaşmasıdır. Eğer hepsi birkaç dizinde olsaydı, bir bilgi için tüm dizini arayacaktı. Bu ise çok fazla zaman kaybına yol açar. Ön tanımlı değerleri değiştirmek için ifadenin başındaki # işaretini kaldırdıktan sonra değişiklik yapmanız gerekir.
cache_dir /usr/local/squid/cache 1000 64 256    gibi.

# cache_access_log /usr/local/squid/logs/access.log


Squid'i kullananların dosyalarının tutuldugu dosya adını ifade eder. Değişiklik yapmanıza gerek yoktur.

# cache_log /usr/local/squid/logs/cache.log

Squid'de yapılan değişikliklerin ve kaydının tutulduğu dosyadır. Burada da değişiklik yapmanıza gerek yoktur.

# cache_effective_user nobody
# cache_effective_group nobody

squid in hangi kullanici ve grup ile calisacagini belirler.
bu kullanici adi ve grubun cache_dir dizini /usr/local/squid ve cache_log dizini /usr/local/squid/logs  dizinlerinde okuma yazma yapabiliyor olmasi
lazim bunun isin asagidaki komut verilir.
#chown -R  nobody:nobody /usr/local/squid

#cache_mgr

sistemden sorumlu kişinin mail adresini belirler.

cache_mgr  ismail@EnderUNIX.ORG                                               

Yukaridaki degiskenlerin on tanimli degerlerini degistirmek icin satir baslarinda # lari kaldirmak lazim.

SQUID İZİNLERİ

ACL (Acces kontrol lists)=Erişim konrol listesi

Başkalarının sizin sistemi kullanmasını engellemek için bazı kısıtlamalar getirmelisiniz.

acl localhost src 127.0.0.1/255.255.255.255
acl kendi_alanim src 192.168.1.0/255.255.255.0
acl all src 0.0.0.0/0.0.0.0

http_access allow localhost
http_access allow kendi_alanim
http_access deny all

Yukarıda basitçe 192.168.1.0 ağ numarasına sahip bir sistem için izinler yapılmıştır. http_access kısmında, acl kısmında tanımladığımız kısımdaki değerlerin erişim hakları verilir. "http_access allow localhost" kısmında acl listesinde localhost olarak tanımladığım adrese izin (allow) verilmiştir.

Aynı şekilde "http_access allow kendi_alanim" kısmında 192.168.1.0 ağında bulunan tüm bilgisayarlara squid kulllanma izni verilmiştir. Son kısımda "http_access deny all" all (tüm) ifadesiyle tanımladığım tüm internet alanına engel (deny) konulmuştur.Bu sayede benim ağım dışında hiç kimse benim sistemimi kullanamaz. Normalde ön tanımlı olarak /etc/squid/squid.conf dosyasında sadece sizin kendi makinanıza izin verilmştir.

squid.conf dosyası içerisinde öntanımlı olan

http_access allow localhost 
http_access deny all

kısmı bulun ve burayı

http_access allow localhost 
http_access allow kendi_alanim
http_access deny all

şeklinde değiştirin.

Yukarıdakileri yazmak basit bir sistem için yeterlidir. Eğer bunlar şimdilik bana yeter diyorsanız. SQUID ÇALIŞTIRMA kısmına atlayabilirsiniz.

İlk önce bazı acl (access lists) parametrelerini verelim

acl sizin_değişkeniniz src ip-adresi/ag maskesi
acl sizin_değişkeniniz dst ip-adresi/ag maskesi
acl sizin_değişkeniniz src ip-adresi1-ip-adresi2/ag maskesi
acl sizin_değişkeniniz dstdomain alan adı
acl sizin_değişkeniniz url_regex kelime
 

acl yasak1 url_regex sex acl yasak2 url_regex chat

http_access deny yasak1 http_access deny yasak2

url_regex'in manası yasak1 ve yasak2 olarak tanımladığımız sex ve chat kelimelerinin bulunduğu web sayfalarına kullanıcıların girmesi (http_access deny ifadesi ile) engellenir. Ama büyük harf küçük harf duyarlılığı olmadığı için CHat yazılı bir siteye girmeyi engellemez.

İzin hakları için belirli bir alan adı da kullanılabilir.

acl inadına dstdomain   fenerbahce.com.tr  
http_access deny inadına

Yukarıda eğer Galatasaraylı bir sistem sorumlusu iseniz , fenerbahçeyi sevmiyorsanız ve kullanıcıların fenerbahce.com.tr isimli web alana girmesini istemiyorsanız :-)) yukarıdaki ifade ile www.fenerbahce.com.tr'ye girişi engelleyebilirsiniz! Yukarıya birden fazla alan adı da ekleyebilirsiniz. Fakat fenerbahçe.com.tr'yi yazdıktan sonra fanatik.fenerbahce.com.tr yi bir daha yazmaya gerek yoktur ve yanlıştır. Aksi takdirde hata mesajı alırsınız.

Bazı portların açık olması sisteminiz için tehlikeli olabilir. bazı portlara yasak koymakta yarar vardır.

acl Safe_ports port 80 21 443 563 210 
http_access deny !Safe_ports

Safe_ports ile tanımladığımız portlar dışındaki portları yasakladık not "!" ifadesi tersini ifade etmektedir. Burada !Safe_ports demek Safe_ports kısmında tanımladığımız portlar demektir

Hatta bazı kullanıcılara yasak koyabilir veya sadece bu kullanıcılara izin verebilirsiniz bunun için "ident_lookup on" parametresine ihtiyacımız var

ident_lookup on
acl arkadas user ismail ozgur yasar fehmi
http_access allow arkadas
http_access deny all

Bu şekilde ismail ozgur yasar fehmi dışındaki tüm kullanıcıların squid kullanımı yasaklanmıştır.

GENEL HATALAR

acl       alfa     src  162.52.1.3
acl beta src 152.52.2.21
http_access allow alfa beta

şeklinde yazmak yanlıştır. Çünkü http_access'de bir IP karşılaştırılır. Aşağıdaki gibi yazmak gerekir.

acl       alfa     src  162.52.1.3
acl beta src 152.52.2.21
http_access allow alfa
http_access allow beta

veya

acl       alfa     src  162.52.1.3   152.52.2.21
http_access allow alfa

yazmak daha doğrudur.

SQUID ÇALIŞTIRMA

Tüm bu ayarları yaptıktan sonra squid çalıştırmak için komut satırında


# squid -z

daha sonra

# /usr/local/etc/rc.d/squid.sh start

komutunu vermeniz yeterlidir. Her açılışta squidin çalısması için sisteme root olarak girin. Konsolde "setup " komutunu girin. "system services " kısmına girin oradan listeden squid i bosluk tuşuna basarak seçin bundan sonra her açılışta squid otomatik olarak çalışacaktır. veya /etc/rc.d/rc.sysinit dosyasına /usr/sbin/squid ifadesini ekleyin.

Ayarlarda değişiklik yaptıktan sonra değişiklikleri aktif etmek için

 
squid -k reconfigure
squid kapatmak için
squid -k shutdown

NETSCAPE AYARLARI

Netscape'i açın. Edit->Preferences'dan en alttaki Advances->proxy şeçeneğine tıklayın. "Manual Proxies" kısmını aktif edin "View" e tıklayın. Boş olan kısımları

    		  Address of Proxy	  port	
HTTP 192.168.1.1 3128
FTP 192.168.1.1 3128

proxy sunucu olan makinanın IP sini ve port numarasını yazacak şekilde doldurun.

INTERNET EXPLORER  AYARLARI

Internet Explorer'da Görünüm (View)'den Internet seçeneklerini (Internet options) seçin. Bağlantı (Connections) kısmına tıklayın. "Bir yetkili sunucu kullanarak internete eriş" "Proxy use" kısmında Gelişmiş (Advanced) kısmına tıklayın.

 
Address of Proxy port
HTTP 192.168.1.1 3128
FTP 192.168.1.1 3128

yukarıdakı adres ve port kısmına sizin IP ve port numarasını yazınız.

En son olarak squid'in çalışıp çalışmadığını test için Netscape'i veya Explorer'i açın. yanlış bir internet adresi yazın. Eğer aradığınız site veya IP adresi bulunamadı diye bir uyarı alırsanız. Squid çalışıyor demektir.

ismail@EnderUNIX.org