NASIL: Squid ile Web Erisim Kontrolu

From Lapis Wiki

Jump to: navigation, search
Fedora Core Linux
Fedora Core Linux
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım Dağıtımlar
Tarayıcılar Programlama Linux ve Oyunlar

Konu başlıkları

Giris

Bircok kucuk isletme icin en onemli iki amac sunlardir:

* Internet kullanim kotasi basina dusen ucreti kismak
* Kisilerin erisebilecegi internet kaynaklarina sinirlama getirmek. 

Squid proxy sunucusu bu iki amaci cok basarili bir sekilde yerine getirebilmektedir.

Kullanicilar, internete erisebilmek icin tarayicilarini Squid proxy sunucusuna gore ayarlayip internete erisebilirler. Squid, kullanicinin erismek istedigi internet kaynagini once kendi deposunda arar. Eger bulursa kullaniciya deposundan gonderir, bulamazsa internete cikar ve kullaniciya istekte bulundugu kaynagi gonderir. Ayrica kullaniciya gondermeden once daha baska isteklerde bulunabilecegi icin depolar.

Gorulecegi uzere, bu islem internete cikislari bir nebze azaltarak, trafigi dusurmektedir. Diger bi avantaj ise firewall uygulamanizi, HTTP trafigini sadece proxy sunucusundan alacak sekilde ayarlarsaniz guvenligi de artirmis olursunuz.

Squid Paketinin Indirilip Kurulmasi

Fedora, rpm tabanli bir dagitim oldugundan Squid paketini rahatca indirip kurabilirsiniz veya yum'u kullanarak cok kolay bir sekilde kurulumu gerceklestirebilirsiniz.

Squid'i Baslatmak

chkconfig'i kullanarak Squid'i sistemin baslangicinda calismasini saglayabilirsiniz:

 [root@host tmp]# chkconfig squid on

Sistem acildiktan sonra service komutunu kullanarak Squid'i baslatabilir, durdurabilir veya yeniden baslatabilirsiniz:

 [root@host tmp]# service squid start
 [root@host tmp]# service squid stop
 [root@host tmp]# service squid restart

pgrep komutuyla da Squid'in calisip calismadigini kontrol edebilirsiniz:

 [root@host tmp]# pgrep squid

/etc/squid/squid.conf Dosyasi

Squid proxy sunucusunun temel ayar dosyasi squid.conf'tur ve bircok Linux uygulamasi gibi bu dosyada herhangi bir degisiklik yapildigi zaman Squid servisinin yeniden baslatilmasi gerekir.

Visible Host Name

Sunucunuza bir isim vermezseniz Squid calismayi reddecektir. Sunucunuza bir isim vermek icin visible_hostname parametresini kullanmalisiniz. Burada, host adi sunucunun gercek adi olan host olarak ayarlanmistir.

 visible_hostname host

Erisim Kontrol Listeleri ( Access Control Lists - ACLs )

Herhangi bir kullanicinin internette sorf yapmasini erisim kontrol listeleriyle(ACLs) sinirlayabilirsiniz. Her ACL satiri belli bir olayi irdeler ve baglantiya izin verilip verilmeyecegini belirler.

Squid, aldigi her erisim karsilik http erisim listesini asagidan yukariya inceleyer. Eger tanimli bir deger bulursa, listeyi incelemeyi durdurur ve baglantiya izin verilip verilmeyecegini belirler. Burada dikkat edilmesi gereken izin verilmeyecek bir baglantinin altinda ona benzer ve izin verilen bir baglantinin bulunmamasidir. Yani Squid erisim listesi asagidan yukari incelendigi icin izin verilmeyecek baglantilarin listenin altinda bulunasi gereklidir.

squid.conf dosyasinin ACCESS_CONTROL bolumundeki ACL tanimlar, Squid'in ihtiyac duydugu minimum tanimlardir.

Zamana Gore Internet Erisimi Yasaklama

Squid'i kullanarak zaman parametresine gore erisim kontrol listesi yaratabilirsiniz. Ornegin, client agindan sadece is saatleri icerisinde internet erisimine izin verebilirsiniz.

 #
 # bu kismi squid.conf dosyasinin ACL bolumunun alt kismina giriniz
 #
 acl client_network src 192.168.1.0/24
 acl is_saatleri time M T W H F 9:00-17:00
 #
 # bu satiri squid.conf dosyasinda http_access bolumunun ustune giriniz
 #
 http_access allow client_network is_saatleri

veya sadece sabah erisim yetkisi vermek istiyorsaniz:

 #
 # bu kismi squid.conf dosyasinin ACL bolumunun alt kismina giriniz
 #
 acl sabah time 08:00-12:00
 #
 # bu satiri squid.conf dosyasinda http_access bolumunun ustune giriniz
 #
 http_access allow sabah

IP Adresine Gore Internet Erisimi Yasaklama

192.168.1.0/24 agindaki kullanicilara web erisimini acmak icin:

 #
 # bu kismi squid.conf dosyasinin ACL bolumunun alt kismina giriniz
 #
 acl client_network src 192.168.1.0/255.255.255.0
 #
 # bu satiri squid.conf dosyasinda http_access bolumunun ustune giriniz
 #
 http_access allow client_network

MSN Erisimi Yasaklama

Bircok sirket, personelinin MSN kullanimindan yakinmaktadir. Asagidaki kurallar, painkiller97 kullanici adli arkadasin MSN yasaklamasi icin postaladigi bir mesajdan alintidir.

 #
 # bu kismi squid.conf dosyasinin ACL bolumunun alt kismina giriniz
 #
 acl yari_engel src "/home/emrah/squid/yari_engel"
 acl msnmessenger url_regex -i gateway.dll
 #
 # bu satiri squid.conf dosyasinda http_access bolumunun ustune giriniz
 #
 http_access deny yari_engel msnmessenger

Video/Audio Dosyalarinin Indirilmesini Yasaklama

Asagidaki kurallar, erkaN kaplaN kullanici adli arkadasin Video/Audio dosyalarinin indirilmesinin yasaklanmasi icin postaladigi bir mesajdan alintidir.

 #
 # bu kismi squid.conf dosyasinin ACL bolumunun alt kismina giriniz
 #
 acl BlockExt url_regex -i \.mp3$ \.asx$ \.wma$ \.wmv$ \.avi$ \.mpeg$ \.mpg$ \.qt$ \.ram$ \.rm$ \.iso$ \.wav$ \.exe$
 #
 # bu satiri squid.conf dosyasinda http_access bolumunun ustune giriniz
 #
 http_access deny BlockExt all

NCSA Kullanarak Sifre Yetkilendirmesi

Squid'i kullanicilara baglanti yapacaklarinda kullanici adi ve sifre soracak sekilde ayarlayabilirsiniz. Squid, NCSA uyumlu sifrelenmis sifre dosyasini okuyabilen ncsa_auth uygulamasiyla beraber gelmektedir. Sifreleri olusturabilmek icin Apache ile birlikte gelen htpasswd uygulamasini kullanabilirsiniz. Asagida ornek verilmistir: 1) Sifre dosyasini, adi /etc/squid/squid_passwd sekilde yaratalim ve dosyanin yetkilerini herkesin okuyabilecegi sekilde degistirelim.

 [root@host tmp]# touch /etc/squid/squid_passwd
 [root@host tmp]# chmod o+r /etc/squid/squid_passwd

2) htpasswd uygulamasini kullanarak kullanici ekleyelim. NOT: Squid'i yeniden baslatmadan ekledigimiz her kullanici sisteme dahil edilecektir.

 [root@host tmp]# htpasswd /etc/squid/squid_passwd orchun
 New password:
 Re-type new password:
 Adding password for user orchun
 [root@host tmp]#

3) rpm komutunu kullanarak ncsa_auth dosyasinin yerini belirleyelim.

 [root@host tmp]# rpm -ql squid | grep ncsa
 /usr/lib/squid/ncsa_auth
 [root@host tmp]#

4) squid.conf dosyasina ncsa_auth uygulamasini tanimlayalim.

 #
 # Burayi auth_param kismina ekleyin
 #
 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
  
 #
 # Burayi ACL bolumunun sonuna ekleyin
 #
 acl ncsa_users proxy_auth REQUIRED
  
 #
 # Burayi http_access kisminin ustune ekleyin
 #
 http_access allow ncsa_users

5) Asagidaki tanimlar, sifre yetkilendirmesi ister ve sadece is saatleri icerisinde internete erisime izin verir. Tanimlarin sirasi cok onemlidir.

 #
 # Burayi auth_param kismina ekleyin
 #
 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
  
 #
 # Burayi ACL bolumunun sonuna ekleyin
 #
 acl ncsa_users proxy_auth REQUIRED
 acl is_saatleri time M T W H F 9:00-17:00
 
 #
 # Burayi http_access kisminin ustune ekleyin
 #
 http_access allow ncsa_users is_saatleri

Degisiklerden sonra Squid servisini yeniden baslatin.

Kullanicilari Proxy Sunucunu Kullanmaya Zorlamak

Squid'i ACL'ler ile birlikte kullaniyorsaniz, kullanicilarinizi sadece Squid uzerinden internete erisimini saglamak icin firewall ayarlarinizda degisiklik yapmaniz gereklidir. Bu islem kullanicilarin Squid uzerinden internette dolasabilmelerini zorlar.

Squid'i Transparan Olarak Ayarlama

Kullanicilarin tarayicilarinda herhangi bir degisiklik yapmadan internet erisimini Squid uzerinden gerceklestirebilirsiniz. Squid'i transparan olarak ayarlamak icin firewall ayarlarinizda 80.(tcp) porta giden tum istekleri 3128.(tcp) port uzerinde calisan Squid proxy sunucusuna yonlendirmeniz yeterlidir.

Asagida verilen ornekler, firewall eth0 bacagindan internete baglanmakta, eth1 bacagi ise ic aga baglanmaktadir. Ayrica sistem, NAT ve gateway olarak ta kullanilmaktadir.

Eger firewall ve Squid ayni sunucu uzerinde calisiyorsa:

 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
 iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i eth1 -p tcp        --dport 3128
 iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o eth0 -p tcp --dport 80
 iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp        --sport 80
 iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o eth1 -p tcp --sport 80

Firewall ve Squid farkli sunucular uzerinde calisiyorsa ve internete Squid firewall sunucusundan once cikiyorsa:

 iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.1.100 -p tcp --dport 80 -j DNAT --to 192.168.1.100:3128
 iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -d 192.168.1.100 -j SNAT --to 192.168.1.1
 iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.1.100 -i eth1 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 3128 -j ACCEPT
 iptables -A FORWARD -d 192.168.1.0/24 -s 192.168.1.100 -i eth1 -o eth1 -m state --state ESTABLISHED,RELATED -p tcp --sport 3128 -j ACCEPT

Yukaridaki ilk kuralda, Squid(192.168.1.100) disinda kalan tum internet trafigi 3128. portta islem yapan Squid uzerine NAT yapilarak yonlendirilmektedir. Ikinci kural, Squid'e gidecek olan tum isteklerin firewall'dan geliyormus gibi gorunmesi icin firewall'un ip adresine NAT yapilmasini saglar. FORWARD tanimlari, NAT isleminden sonra tum trafigin Squid uzerinden akmasi icindir. Dikkat edilmesi gereken nokta, tum NAT islemlerinin yerel ag bacaginda(eth1) gerceklestirilmesidir.

Bunlara ek olarak Squid sunucusunun 80. port uzerinden istek kabul etmesini ayarlayabilirsiniz.

Yapilan transparan proxy ayarlarini squid.conf dosyasina girmaniz gerekmektedir.

 httpd_accel_host virtual
 httpd_accel_port 80
 httpd_accel_with_proxy on
 httpd_accel_uses_host_header on

Squid Sunucusunu Manuel Olarak Tarayicilara Eklemek

Eger firewall'unuzun ayarlari ile oynamak istemiyorsaniz, firewall'unuzu sadece internet trafiginizi sadece Squid uzerinden kabul edecek sekilde ayarlamalisiniz ve kullandiginiz internet tarayicisinin proxy ayarlarini elle yapmalisiniz.If you don't have a firewall that supports redirection, then you need to configure your firewall to only accept HTTP Internet access from the Squid server, as well as configure your PC browser's proxy server settings manually to use the Squid server.

Firefox icin ayarlar:

  1. Tarayicinizin menusunden "Edit" i secin.
  2. "Preferences"
  3. "General"
  4. "Connection Settings" butonuna tilkayin
  5. "Manual Proxy Configuration" secenegini aktif hale getirip HTTP Proxy icin Squid'in IP adresini ve Port icin de kullanilan portu belirtmeniz gereklidir.

Squid Disk Kullanimi

Squid, trafik kullanimini dusurmek icin bellekte tutulan dosyalari /var/spool/squid klasoru altinda saklar. Eger, sunucunuza cok fazla yuk binecegini dusunuyorsaniz ve yuksek performans istiyorsaniz /var klasorunu ayri bir partition olarak ayirabilirsiniz.

Erisilen her internet sayfasi ve resimler /var/log/squid/access.log dosyasinda kayit altinda tutulur. Cok fazla islem yapan sunucularda bu dosya sismektedir. Bu yuzden arada bir kontrol edip sikistirip saklayarak veya silip yeniden yaratarak sisteminizde yer acmaniz gerekebilir.

Bağlantılar

Dahili Bağlantılar

Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı

Harici Bağlantılar

Snort ana web sayfası


Belge Hakkında

Bu belgenin bircok kisminin cevrilmis oldugu orjinal metine buraya tiklayarak erisebilirsiniz

Orcun Yucel