Web Vekili (Squid)
Önceki Internet'e Bağlanırken Gerekenler: Firewall ve Proxy Sonraki
Web Vekili (Squid)
Eğer bir vekil kullanmayacak olsak, güvenlik duvarımız kullanmaya hazır idi. Fakat vekil sunucular, özellikle http için performans kazandırıcı bir unsurdur.
Özellikle Web (Internet'te sörf) kullanımında, her bir sayfa, her bir tarayıcı istemi için tekrar tekrar ana sunucudan getirilmektedir.
Şekil 13.4. Vekilsiz Internet kullanımı
Ağ üzerinde yüz istemcinin Hürriyet gazetesini okumak istemesi, aynı sayfanın tam 100 defa ağa getirilmesi demektir. Araya vekil konduğu zaman ise, ilgili sayfa yalnızca bir defa getirilir ve daha sonra isteyen bütün istemcilere vekilin kendi deposundan sunulur. Dolayısıyla Internet trafiği azaltıldığı gibi, ilk istemden sonraki bütün istemcilere yerel ağdan sunum yapıldığı için kullanıcılar sayfaya çok daha hızlı (yerel ağ hızlarında) erişirler. Ülkemizde Internet bağlantılarının pahalılığı ve yavaşlığı göze alınırsa, şirketlerin hiç bir izin mekanizması uygulamak niyetleri olmasa dahi, salt performans arttırmak için vekil uygulamaları tavsiye edilir.
Şekil 13.5. Vekille Internet kullanımı - Performans
Vekilde izin mekanizması uygulamak ve dolayısı ile çeşitli hizmetleri herkese yasaklamak, çeşitli kullanıcılara bazı hizmetleri yasaklamak gibi izinlendirme politikaları uygulamak mümkündür.
Şekil 13.6. Vekille Internet kullanımı - İzinlendirme
Burada Linux üzerinde squid ve squidGuard vasıtası ile:
  • Performans kazandırıcı [depolama (caching)]
  • Şeffaf (transparent) -- kullanmak için kullanıcı tarafında bir ayar gerektirmeyen
  • Web sitesi bazında izin mekanizmalı
bir web vekil uygulaması konu alınmıştır.
Squid Kurulumu
Redhat 7.2 güncelleme paketi squid-2.4.STABLE1-6.i386.rpm indirilmiş ve
# rpm -Uvh squid-2.4.STABLE1-6.i386.rpm
komutu ile kurulmuştur. Sistem açılışında squid servisinin başlatılması için
# mv /etc/rc.d/rc3.d/K25squid /etc/rc.d/rc3.d/S25squid
komutu uygulanmıştır.
Ayarlar
  • Squid'in Internet web deposu (cache) için 1 GB yer ayrılmıştır.
  • İzinlendirme squidGuard paketi ile yapılmaktadır.
  • Yasaklanan siteler: Kimi sitelere erişim engellenmektedir. Bu siteler squidGuard'un yayınladığı Internet karalistesi kullanılarak belirlenmektedir.
Ayar dosyası
/etc/squid/squid.conf dosyası bir hayli uzun olduğundan yalnızca değiştirilen ayarlar buraya alınmıştır. Dosyanın tamamını proxy-fw-files.tar.bz2 paketinde bulabilirsiniz.
#VEKIL
#Öntanımlı portun yanısıra 8080 üzerinden de proxy servisi veriyoruz
http_port 3128 8080

#VEKIL
#Başka squid'lerle bilgi paylaşmıyoruz
icp_port 0

#VEKIL
#Yerel ağımızı burada tanımlıyoruz
acl intranet src 10.0.0.0/255.0.0.0

#VEKIL
#erişim engellemesi squidGuard tarafından yapılacağı için
#burada yer almıyor
http_access allow intranet

#VEKIL
#Eger proxy yolu ile ftp yaparsak, anonymous isteklerde bu adresi
#verecek
ftp_user [email protected]

#VEKIL
#1 Gig'lik (1000) büyüklüğünde bir cache dizini kullanıyoruz.
#Ayrıca diske bloksuz yazma yöntemini kullanıyoruz
cache_dir aufs /var/spool/squid 1000 16 256

#VEKIL
#squidGuard kullanıyoruz
redirect_program /usr/local/squidGuard/bin/squidGuard

#VEKIL
#20 adet squidGuard başlatıyoruz. Çok fazla sayıda olursa kaynak israfı
#çok az sayıda olursa beklemeye yol açabilir.
redirect_children 20


#VEKIL
#ICP sorgularına izin vermiyoruz
icp_access deny all


#VEKIL
#Hata iletilerimizi Türkçe verelim
error_directory /usr/lib/squid/errors/Turkish

#VEKIL
#Squid'i şeffaf (yani kullanıcıların herhangi bir ayar yapmasına gerek
#kalmaksızın şeffaf olarak kullanmak için bu ayarlara ihtiyacımız var.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off
Squid Kurulumunda ikinci adım: SquidGuard
Neden SquidGuard?
SquidGuard, squid ile birlikte çalışan ve erişim izinlerini belirleyen bir yazılımdır. squid'in kendisi de erişim izinlerini belirleyebildiğine göre SquidGuard'a ihtiyaç olmadığı düşünülebilir. Fakat, SquidGuard kullanımının bazı avantajları vardır:
  • Erişim izinlerini squid.conf'un içine yazmak yerine, diskte ayrı dosyalar halinde tutabilirsiniz. Dolayısıyla bir ek izin/kısıtlama ilave ederken yanlışlıkla squid ayarlarını bozma ihtimaliniz ortadan kalkar.
  • SquidGuard, Internet'te bir arama yazılımı yardımı ile çeşitli kriterlerde karalisteler hazırlamakta ve bunları düzenli olarak güncellemektedir. SquidGuard kullanmazsanız, buna alternatifiniz trafiğinizi kontrol etmek ve kullanıcıların gittiği siteleri gözden geçirip kendi karalistenizi oluşturmaktır. Bunun yerine SquidGuard'un karalistesini kullanabilirsiniz.
SquidGuard Kurulumu
SquidGuard web sitesinden squidguard-1.2.0.tar.gz ve blacklists.tar.gz paketleri indirildi ve /usr/local/src dizinine kaydedildi.
# tar -xzvf squidguard-1.2.0.tar.gz
#
komutu ile paket açıldı.
# cd /usr/local/src/squidGuard-1.2.0
#
Paketin ayarları için configure.squidGuard betiği:
./configure --prefix=/usr/local/squidGuard \
            --with-db-lib=/usr/lib \
            --with-db-inc=/usr/include/db2 \
            --with-sg-config=/usr/local/squidGuard/configs/filter.conf \
            --with-sg-logdir=/usr/local/squidGuard/logs \
            --with-sg-dbhome=/usr/local/squidGuard/db
aynı dizine kaydedildi:
# cp configure.squidGuard /usr/local/src/squidGuard-1.2.0
# cd /usr/local/src/squidGuard-1.2.0
# chmod 755 configure.squidGuard
# ./configure.squidGuard
# make
# make install
#
komutları ile paket sisteme kuruldu.
Karalistenin Oluşturulması
İndirilmiş olan blacklists.tar.gz paketi /usr/local/squidGuard/db/blacklists altına açıldı. /usr/local/squidGuard/configs/filter.conf dosyasında erişim izinleri belirlendi. Esas olarak kara listedeki tüm adresler engellendi. Karaliste SquidGuard tarafından haftada 3 kez güncelleniyor. Biz de, zaman zaman bu güncellemeyi yapacağız.
Hata İletisi
SquidGuard'ın bir kötü tarafı kendi içerisinde bir hata iletisi oluşturmayıp, bir web sunucusuna gereksinim duyması. Sırf bu sebeple güvenlik duvarı üzerinde bir apache web sunucusu kurmak zorunda kaldık. Aslında bunun için içeride herhangi bir web sunucusu da kullanılabilir, fakat mümkün olduğunca güvenlik duvarını kendi başına çalışabilecek halde kurmak istedik.
SquidGuard paketinin içinden çıkan squidGuard.cgi betiğine Türkçe dilini ilave ettik ve dışarıdan bir siteye verdiği gif bağını kaldırıp yerel bir bağ haline getirdik. Betik öntanımlı olarak tarayıcıdaki dil seçeneğine göre dil seçimini yapmakta idi, fakat biz salt Türkçe olmasını istedik. Değiştirilmiş squidGuard.cgi buradan temin edilebilir. Bu betiği cgi-bin dizinine kaydettik:
# cp squidGuard.cgi /var/www/cgi-bin
#
Erişim izinlerinin doğru olduğundan emin olduk:
# cd /var/www/cgi-bin
# chown nobody.nobody squidGuard.cgi
# chmod 755 squidGuard.cgi
#
Yasak işareti veren forbidden.gif dosyasını ilgili dizine kaydettik:
# cp forbidden.gif /var/www/html
#
En sonunda web sunucusunun sistem açıldığı zaman açılmasını sağladık:
# mv /etc/rc.d/rc3.d/*httpd /etc/rc.d/rc3.d/S15httpd
#
Önceki Üst Ana Başlık Sonraki
Güvenlik Duvarı - Satın Almak, Kendiniz Yapmak? Başlangıç DNS Sunucusu
Bir Linux Kitaplığı Sayfası