NASIL: Squid ile Web Erisim Kontrolu
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • 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
Belge Hakkında
Bu belgenin bircok kisminin cevrilmis oldugu orjinal metine buraya tiklayarak erisebilirsiniz
Orcun Yucel

