ACIK KAYNAK
 
*
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun. Mayıs 17, 2008, 10:05:44 ÖÖ


Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz



Reklamlar
Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Squid de cache,transparen proxy ve access list nedir ?  (Okunma Sayısı 233 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
acikkaynak
Administrator
*
Offline Offline

Mesaj Sayısı: 234



Üyelik Bilgileri
« : Aralık 16, 2007, 12:51:17 ÖS »

Cache

Bundan evvelki yazımdada dediğim gibi cache, transparent ve access list hakkındada bilgi verecektim öncelikle cache olayına değinmek istiyorum.
İnternete girdiğimiz zaman almış olduğumuz dataları proxy serverimizde kaydettiğimiz yerel diskimizdeki alandır ki daha evvelden dediğim gibi kullanıcılar bu bilgiye tekrar ulaşabilmek için bu cache ulaşıp burdan datalara tekrar ulaşabilsin.Squid.conf dosyamız içersine herhangibir editör ile baktığımızda şu satırı görürsünüz tabiki bu satır farklı sürüm ve dağıtımlarda farklı görüle bilir ama genel de benzerdir önemli olam mantığını almaktır.
Kod:
#cache_mem 8 MB
Bu satırda cache dizinine yazarken ne kadar hafıza kullanacağını ifade eder bu ön tanımlı olarak 8 Mb bellek kullanacak şekilde gelir ama siz bunu değiştire bilirsiniz mesela
Kod:
cache_mem 20 MB
Yukarıda gördüğünüz gibi başında diyez yok yani bu satır artık aktif olmuştur ve 20 mb lık bir bellek kullanacağını gösteriyor.
Kod:
cache_dir ufs /var/spool/squid 500 16 256

Asıl satırımız işte burası, squid bilgileri cache tutmak için ön tanımlı olarak /var/spool/squid dizinini kullanır. Yukarıda bu squid'in 500MB'lık bir disk alanı kullanacağı ve bu /var/spool/squid 500 16 256 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.Sizde istediğinz şekilde değişiklik yapabilirsiniz ki eğer çok fazla kullanıcınız varsa cache artırabilirsiniz mesela 
Kod:
cache_dir /var/spool/squid 1000 16 256   
 
tabiki başlardaki diyez işaretine dikkat kaldırmayı unutmayın yoksa geçerli olmaz.Cache ilgili olarak log ayarlarıda var ama bu konuya fazla değinmeyecem ama öntanımlı ayarları çok fazla ihtiyaç olmadığı müddetçe değiştirmeye gerek yok.

Transparent proxy

Transparent(seffaf, saydam) proxy kullanıcı tarafında herhangi bir ek ayar gerektirmeden kullanıcıdan gelen istekleri bir proxy aracılığı ile yönetmektir. Kısacası kullanıcıdan habersiz kullanıcı ile orjinal sunucu arasına girmektir.
Şematik olarak şuna benzer;
Kod:
Kullanıcı----->Seffaf_proxy----->orjinal_web_sunucu

Burada kullanıcı “orjinal_web_sunucu” ile haberleştiğini düşünür ve istekleri orjinal sunucuya gönderir, araya yerleştirilen seffaf proxy kullanıcıdan gelen isteği yakalayarak kendisi bu isteği yerine getirir ve cevabını kullanıcıya sanki orjinal sunucudan geliyormuş gibi döndürür.
Squid'i seffaf proxy modunda kullanmak istedigimizde bir filtreleme aracı(IPTABLE) ile proxy makinesine gelen 80. port isteklerini squid'in çalıştığı porta yönlendirmek gerekir.Dahada anlaşılır şekli ise şudur; bilindiği gibi http sunucular port 80 üzerinde çalışan servislerdir. Günümüzde siz bir http sunucuyu iyi bir koruma olmadan internete hizmet vercek şekilde ayarlarsanız, bazı güvenlik problemleri yaşayabilirsiniz. Böyle bir problem yaşamamak için bazı güvenlik önemlemleri almaka gerekir. Bunlardan biri squid proxy kullanarak bir transparent proxy kurmaktır. Böylece kötü niyetli kişiler doğrudan HTTP server programı ile muhatab olamaz. Önünde geçmesi gereken bir squid vardır. Normalde squid proxy ayarları istemcilere göre ayarlanırsa çok güzel bir şekilde çalışır zaten, ama burdaki amaç şu kullancılar proxy ayarlarını değiştirdiği zaman direk olarak internete çıkarlar ki bu da daha başka riskler getirir yani biz istiyoruz ki kimse squidden geçmeden internete giremesin. O zaman yapacağımız şu 1) 80. porttan gelen tüm istekleri 3128. porta yönlendirmek. 2) Transparent i aktif edebilmek için yapılacak ayarlamalar.
Öncelikle squid.conf dosyamızı açalımve şu satırları ekleyelim.
Kod:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off
"EXTRA
httpd_acces_host: Buraya yansilanacak sunucunun hostname'ini yazacagiz ama eger yansilanacak sunucu sayisi birden ise buraya virtual yazmak gerekiyor. Yalniz unutmayin, virtual hostunuzun IP tabanli olmasi gerekiyor. Ayni IP adresine sahip olan isim tabanli olmamali.
httpd_accel_port: Squid hangi porttan dinleme isini yapacaksa bu opsiyon, o degere ayarlanmalidir. Sadece tek bir porta yonlendirme yapilabilecegi unutulmamalidir. Yansilama yapacaginiz web sunucusu localhost ise eger 80. porttan istekleri alacak sekilde proxy ayarlarini yapacaksaniz, web sunucunuz dinleme portunu degistirmeyi unutmayin. Hos unutsaniz bile alacaginiz hatalar sizi uyaracaktir.
httpd_accel_with_proxy: Squid de httpd_accel_host tanimini yaptiginizda, o artik proxy istek formatini anlayamaz hale getirecektir. Eger ayni zamanda proxy ozelligini de kullanmak istiyorsaniz bu degeri on a getirmelisiniz.
httpd_accel_uses_host_header: Transparent caching kullanmak istiyorsaniz kullanmaniz gerekiyor. Bu opsiyonun on yapilmasi ile HTTP isteginin icindeki Host: basligi yardimiyla farkli web sunuculari icin yansilama yapabilir ama Host basligini kontrol etmedigi icin bir guvenlik boslugu yaratilabilir. Bu yuzden eger transparent bir cache kullanmiyorsaniz bu degeri aktif hale getirmeyiniz."
Daha sonrada iptabels ile yönlendirme yapalım
Kod:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to
3128
Burda iptables'a -t ile NAT yapması gerektiğini, -A ile PREROUTING zincirinde işlem yapılması gerektiğini, -p ile tcp bilgisi içeren dataları, --dport ile tcp port 80 e gelen dataları seçmesini ve local makinedeki 3128 portuna yönlendirmesi gerektiğini söyledik, burda 3128 de squid imiz varsa, http servere port 80 için gelecek olan bütün datalar, http server yerine firewall makinadaki 3128 portundaki squide yönlendirilecek ve squid daha sonra tekrar http servera göndercektir.
Squid başka bir makinada kurulu ise:
Kod:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 1.2.3.4:3128
Burda yukardaki komuta göre değişiklik -j bölümünde REDIRECT yerine DNAT kullanmamız. Redirect sadece local makinadaki bir porta yönlendirme yapabilir ama DNAT yani dest. network. addr. translation ile Paketin IP headırında destination bölümünü değiştirebiliriz.Yukardaki ile paralel şekilde burdada http servera gelen istekler, belirttiğimiz IP'deki bilgisayardaki squide gidecek
Ve son olarakda çekirdeğin yönlendirme görevini yapabilmesi için
Kod:
sysctl -w net.ipv4.ip_forward=1
komutunu verelim.
Avantaj- Dezavantajlari
Transparent caching kullanmanin avantajlari sunlardir:
1.Kullanci tarafinda hicbir proxy ayari falan gerektirmez.
2.Kullanicilar icin basit bir cacheleme yapmis olur.
3.Kullanicilar icin kesin bir cache kullanimini getirir.
Dezavantajlari ise:
1.Kaynak IP tamamen degistirildiginden istemci IP leri hedef sunucular tarafindan gorunemez. Bazi web sitelerinde bu tip yetkilendirmeler oldugu icin erisim hatalari alinabilir.
2.Transparent proxy kullaniminda istekler yeniden yapilandirilirlar. Bu da ilave bir islem yuku getirir. 
Böylece transparent bir proxy kurmuş olduk.

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

Herhangi bir kullanıcıya yada kullanıcı gruplarına ait kısıtlamaları eriş̧im kontrol
listeleri (acl) ile sağ̆layabiliriz. Bu listelere ait kuralları squid.conf ’un iç̧ine,
ilgili bolume yazabiliriz. Squid, ayar dosyasını yukarıdan aşağ̆ıya incelediğ̆inden
dolayı burada dikkat edilmesi gereken izin verilmeyecek bir bağ̆lantınin altında
ona benzer ve izin verilen bir bağ̆lantınınn bulunmaması gerektiğ̆idir.

Erişim Kontrol Listeleri Seçenekleri

Kod:
src ip−adresi | ağ-maskesi Istemcinin ip adresi

Kod:
src adr1−adr2 | ağ-maskesi Adres aralığı

Kod:
dst ip−adresi | ağ-maskesi Hedef ip adresi

Kod:
myip ip-adresi | ağ-maskesi Yerel soket ip adresi

Kod:
srcdomain etki alanı Ters arama, istemci ip’si

Kod:
srcdom regex [-i] deyim istemci adıyla eşleşen regular expression

Kod:
dstdom regex [-i] deyim Hedefle eşlesen regular expression

Kod:
url regex [-i] deyim URL’nin tamamıyla eşleşen regular expression

Kod:
port portlar Bir port yada port aralığını belirler

Kod:
proto protokol HTTP veya FTP gibi bir protokol belirler

Kod:
method metot GET ve POST gibi metotları belirler.




Birkaç örnekle şöyle gösterebiliriz.

Mesala kullanıcılarınızın
Register or Login
www.google.com
  adresine erişimlerine izin vermek istemiyorsanız;

Kod:
acl engellisayfa dstdomain .google.com
  hedefi gösterdik ama yapılması gerekenide gösterelim;

Kod:
http-access deny engellisayfa
  erişimine yasak koyduk.

Başka bir örnek

msn kelimesine engel koymak istersek;

Kod:
acl engellikelime url_regex -i msn
(-i parametresi büyük/küçük harf duyarlılığı için)

http-access deny engellikelime 

Başka bir örnek

Kod:
acl engelliipler dst 192.16.1.0/24

Kod:
http-acces deny engelliipler

Squid içerisinden acces listler yazmak buşekilde yapılıyor fakat bundan daha esnek ve etkili bir yol ise
DANSGUARDİAN ile birlikte SQUID kullanmak bu konu ile ilgili yazılar yayınlayacam. 



« Son Düzenleme: Mayıs 10, 2008, 01:48:49 ÖÖ Gönderen: acikkaynak » Logged
saian
Newbie
*
Offline Offline

Mesaj Sayısı: 6


Üyelik Bilgileri
« Yanıtla #1 : Aralık 18, 2007, 02:19:01 ÖÖ »



Eline saglık Hocam.


Logged
acikkaynak
Administrator
*
Offline Offline

Mesaj Sayısı: 234



Üyelik Bilgileri
« Yanıtla #2 : Aralık 18, 2007, 10:47:05 ÖÖ »

ilginizden dolayı teşekkür ederim "ACL (Acces kontrol lists)=Erişim konrol listesi" birkaç gün içinde hazır olur. bizden ayrılmayın Gülümseme
Logged
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer:  


[Basit Gorunum]

MySQL ile Güçlendirildi PHP ile Güçlendirildi Powered by SMF 1.1.5 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks


acikkaynak
XHTML 1.0 Geçerli! CSS Geçerli! Dilber MC Theme by HarzeM