Squid transparent proxy: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mmahar (talk | contribs)
Okarjane (talk | contribs)
 
(53 intermediate revisions by 2 users not shown)
Line 3: Line 3:


=Versioon=
=Versioon=
Versioon 0.01 muudetud 18.12.2009
Versioon 0.01, muudetud 18.12.2009 (Algse struktuuri paika panek)


Versioon 0.02 muudetud 10.01.2010
Versioon 0.02, muudetud 10.01.2010 (Struktuuri parendamine, sisu kirjutamine)
 
Versioon 0.03, muudetud 13.01.2010 (Logide analüüsi kohta sisu lisamine)
 
Versioon 0.04, muudetud 20.01.2010 (Täiendatud varundamise/taastamise osa ning täpsustatud paigalduse osa)


=Sissejuhatus=
=Sissejuhatus=
Siit artiklist peaks saama väikse ülevaate, mis asi see proxy on, milleks seda kasutatakse. Mis on on Squid ning kuidas seda autentimist nõudva transparent proxyna seadistada(transparent selles mõistes, et kasutajate päringud suunatakse sinna vaikimisi ja alati).
Siit artiklist peaks saama väikse ülevaate, mis asi see proxy server ehk vahemälu on, milleks seda kasutatakse. Mis on on Squid ning kuidas seda autentimist nõudva transparent proxy serverina seadistada(transparent selles mõistes, et kasutajate päringud suunatakse sinna vaikimisi ja alati).


==Mis asi on proxy==
==Mis asi on proxy==
Proxy serveri näol on tegu kliendi ja võrgus paiknevate resursside vahelise puhvirga. Proxy servereid kasutatakse mitmetel erinevatel eesmärkidel:
Proxy serveri näol on tegu kliendi ja võrgus paiknevate resursside vahelise vahemäluga. Proxy servereid kasutatakse mitmetel erinevatel eesmärkidel:
*Võrguühenduste kasutuse optimeerimiseks
*Võrguühenduste kasutuse optimeerimiseks
*Veebiserverite koormuste leevendamiseks
*Veebiserverite koormuste leevendamiseks
Line 18: Line 22:


==Mis asi see Squid on ja mida sellega teha saab==
==Mis asi see Squid on ja mida sellega teha saab==
Squidi puhul on tegu täielikult HTTP/1.0 (peaaegu ka HTTP/1.1)ühilduva proxy serveri tarkvaraga, mis toetab HTTP, FTP cachemist. Squidi on võimalik kasutada:
Squidi puhul on tegu täielikult HTTP/1.0 (peaaegu ka HTTP/1.1)ühilduva proxy serveri tarkvaraga, mis toetab HTTP-d ja FTP-d. Squidi on võimalik kasutada:
*võrguühenduste optimeerimiseks
*võrguühenduste optimeerimiseks
*kasutajate autentimiseks
*kasutajate autentimiseks
Line 24: Line 28:
*veebiserverite koormuse leevendamiseks
*veebiserverite koormuse leevendamiseks


Squidiga saab kasutajate autentimiseks on olemas palju erinevaid võimalusi:
Squidiga on kasutajate autentimiseks olemas mitmeid erinevaid meetodeid:


*ncsa (basic authentication)
*Windows Active Directory
*Windows Active Directory
*Radius
*Radius
Line 32: Line 37:
*MySQL
*MySQL
*NTLM
*NTLM
*jne


=Eeldused/nõuded=
=Eeldused/nõuded=
*1 mõne up to date linuxi distributsiooniga server
*1 mõne värske linuxi distributsiooniga server
*server mille peale Squid paigaldatakse on võrgus kasutusel ruuterina / kui on tegu võrgus eraldi seisva masinaga on vaja proxytavate teenuste võrguliiklus suunata WCCP/GRE abiga sinna. (See ei kuulu siin artiklis kaetava osa hulka)
*server mille peale Squid paigaldatakse on võrgus kasutusel ruuterina / kui on tegu võrgus eraldi seisva masinaga on vaja suunata nende teenuste, mida läbi vahemälu kasutada soovitakse võrguliiklus WCCP/GRE abiga Squid serverisse. (See ei kuulu siin artiklis kaetava osa hulka)
*kasutataval serveril peaks olema piisav vahemälu kogus (Squid tahab iga 1 GB cachetavate andmete kohta 10 MB vahemälu).
*kasutataval serveril peaks olema piisav kogus vahemälu (Squid tahab iga 1 GB squidi vahemälus hoitavate andmete kohta 10 MB vahemälu serverilt).


=Paigaldamine=
=Paigaldamine=
Squidi ja vajalike komponentide paigaldamiseks Ubuntu serveri korral piisab terminali sisestatud käsust:
Squidi ja vajalike komponentide paigaldamiseks Ubuntu serveri korral piisab terminali sisestatud käsust:
  sudo apt-get install squid squid-common apache2-utils
  sudo apt-get install squid squid-common
Kui on soovi järgida autentimise näidet tuleks paigaldada ka apache2-utils. Selle tegemiseks, kas lisada eelneva käsu lõppu "apache2-utils" või tagant järgi eraldi paigaldades:
sudo apt-get install apache2-utils


=Seadistamine=
=Seadistamine=
Enne seadistamise alustamist tasuks teha originaal konfiguratsioonidest backupid.
Enne seadistamise alustamist tasuks teha originaal konfiguratsioonidest varukoopiad.
===iptables seadistamine===
===iptables seadistamine===
iptables'is on vaja kõik http (port 80) päringud suunata ümber squidi pordile, mis on vaikimisi 3128. Seda saab teha sisestades järgmised käsud:
Vahemälu serveris on kasutades iptablesit suunata kõik http (port 80) päringud ümber squidi pordile, mis on vaikimisi 3128. Seda saab teha sisestades järgmised käsud:
  iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
  iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
===Squidi seadistamine===
===Squidi seadistamine===
Squidi seadistamiseks tuleb muuta squidi konfiguratsiooni failis (/etc/squid/squid.conf) järgneivaid asju:
Squidi seadistamiseks tuleb muuta squidi konfiguratsiooni failis (/etc/squid/squid.conf) järgneivaid asju:
  httpd_accel_host virtual  //määrab, et squid töötab http kiirendina
  httpd_accel_host virtual  //määrab, et squid töötab http kiirendina
  httpd_accel_port 80        //pordi number, mille liiklust proxytakse
  httpd_accel_port 80        //pordi number, mille liiklust läbi vahemälu suunatakse
  httpd_accel_with_proxy on  //lülitab squidi tööle, kui kohaliku httpd kiirendi ja proxyna
  httpd_accel_with_proxy on  //lülitab squidi tööle, kui kohaliku httpd kiirendi ja proxy
  httpd_accel_uses_host_header on
  httpd_accel_uses_host_header on
  acl lan src 192.168.1.1 192.168.2.0/24  //juurdepääsu piirangud, mis lubavad vaid lokaalses võrgus paiknevatel arvutitel squidi kasutada
  acl lan src 192.168.1.1 192.168.2.0/24  //juurdepääsu piirangud, mis lubavad vaid kohalikus võrgus paiknevatel arvutitel squidi kasutada
  http_access allow localhost //
  http_access allow localhost //
  http_access allow lan    //
  http_access allow lan    //


Autentimisega seotud parameetrid:
Peale konfiguratsiooni failis muudatuste sisse viimist tuleb nende aktiveerimiseks Squidile taaskäivitus teha:
/etc/init.d/squid restart
 
====Näidis NCSA autentimise seadistamisest====
Konfiguratsiooni faili on vaja sisestada järgmised read:
  auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd
  auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd
  auth_param basic children 5
  auth_param basic children 5
Line 70: Line 81:
  http_access allow users
  http_access allow users


Kasutajate loomiseks sisesta terminali käsk:
sudo htpasswd -c /etc/squid.passwd esimese_kasutajanimi
Teiste autentimise meetodite seadistamise kohta leiab infot http://wiki.squid-cache.org/ConfigExamples/
Mõningad veebilehed/teenused ei pruugi toimida läbi autentimist nõudva proxy ning sellepärast tuleb teha nendest eraldi nimistu, et nad ilma autentimiseta ka töötaks. Seda saab teha järgnevalt:
Tuleb tekitada fail unauth_sites.acl näiteks /etc/squid kausta ning sinna sisse luua nimistu domeenidest, mille korral autentimist ei nõuta kujul(1 domeen rea kohta):
.domeen1.com
.domeen2.com
Samuti on vaja lisada squid.conf faili sisse järgmised:
acl unauth_sites dstdomain "/etc/squid/unauth_sites.acl"
http_access allow unauth_sites lan
====blacklist====
Teatud domeenidele ligipääsu tõkestamiseks tuleks need koondada ühtsesse nimekirja. Näiteks luua fail /etc/squid/bad_domains ja muuta see loetavaks kasutajale, millena Squid käivitatud on.
Teatud domeenidele ligipääsu tõkestamiseks tuleks need koondada ühtsesse nimekirja. Näiteks luua fail /etc/squid/bad_domains ja muuta see loetavaks kasutajale, millena Squid käivitatud on.
Blokeeritud saitide listi sisu peaks olema enam vähem selline:  
Blokeeritud saitide listi sisu peaks olema enam vähem selline:  
  porr
  pahaleht
  .porr1.com
  .pahaleht1.com
  .porr2.com
  .pahaleht2.com
Peale selle listi loomist tuleb sellele viidata ka Squidi konfiguratsiooni failis:
Peale selle listi loomist tuleb sellele viidata ka Squidi konfiguratsiooni failis:
  acl BAD_DOMAINS dstdom_regex -i "/etc/squid/bad_domains"
  acl BAD_DOMAINS dstdom_regex -i "/etc/squid/bad_domains"
  http_access deny BAD_DOMAINS
  http_access deny BAD_DOMAINS lan
Esimese kasutaja loomiseks sisesta terminali:
 
  sudo htpasswd -c /etc/squid.passwd esimese_kasutajanimi
===Kuidas kontrollida, et päringud Squidini jõuavad===
Järgnevate kasutajate loomiseks:
Selleks, et näha kas päringud proxy serverist läbi tuleb jälgida Squidi access logis toimuvat. Seda saab teha käsuga:
sudo htpasswd /etc/squid.passwd järgmine_kasutaja
  tail -f /var/log/squid/access.log
Peale konfiguratsiooni failis muudatuste sisse viimist tuleb nende aktiveerimiseks Squidile taaskäivitus teha:
Peale selle käsu sisestamist proovida veebis mingit lehekülge avada mõne arvutiga, mis antud proxy kaudu veebi pääsema peaks.
/etc/init.d/squid restart
 
=Varundamine ja taastamine=
=Varundamine ja taastamine=
Varundamiseks tuleks järgnevad failid kopeerida mõnele alternatiivsele meediale:
Varundamiseks tuleks järgnevad failid kopeerida mõnele alternatiivsele meediale:
Line 89: Line 115:
  /etc/squid/bad_domains  //blacklist
  /etc/squid/bad_domains  //blacklist
  /etc/squid.passwd    //kasutajad
  /etc/squid.passwd    //kasutajad
/etc/squid/unauth_sites.acl //autentimist mitte nõudvate saitide list
Näiteks võib kasutada secure copy käsku antud failide teise masinasse tõstmiseks:
scp /etc/squid/squid.conf kasutajanimi@mingiip:/kaust/kuhu/kopeerida


Teenuse taastamiseks tuleb eelnevalt loetletud failid taastada varukoopiast ning teenusele taaskäivitus teha
Teenuse taastamiseks tuleb eelnevalt loetletud failid taastada varukoopiast samasse kausta, kust need varundamiseks kopeeritud sai ning muuta failid Squidile loetavateks. Näiteks kopeerime secure copy käsuga tagasi teisest serverist:
sudo -i
scp kasutajanimi@mingi_ip:/kaust_kus_fail_on/faili_nimi /etc/squid/faili_nimi
chown squidi_kasutaja:kasutaja_grupp /etc/squid/failinimi
Kui konfiguratsiooni failid on taastatud, tuleb teenus taaskäivitada:
  /etc/init.d/squid restart
  /etc/init.d/squid restart
=Squidi logide analüüs/statistika=
Squidi logide analüüsimiseks ning statistika tegemiseks on olemas palju erinevaid programme, millest üks populaarsem on Calamaris(http://cord.de/tools/squid/calamaris/). Näidist Calamarise raporti kohta võib näha aadressil http://cord.de/tools/squid/calamaris/calamaris-2.out
Calamarise väljundi põhjal on võimalik näiteks optimeerida Squidi vahemälu suurust.
Pikema nimekirja programmidest, mida võib kasutada Squidi logide analüüsimiseks leiab http://www.squid-cache.org/Scripts/.


=Kasutatud kirjandus=
=Kasutatud kirjandus=

Latest revision as of 14:53, 8 January 2014

Autor

Mikk Mähar AK32

Versioon

Versioon 0.01, muudetud 18.12.2009 (Algse struktuuri paika panek)

Versioon 0.02, muudetud 10.01.2010 (Struktuuri parendamine, sisu kirjutamine)

Versioon 0.03, muudetud 13.01.2010 (Logide analüüsi kohta sisu lisamine)

Versioon 0.04, muudetud 20.01.2010 (Täiendatud varundamise/taastamise osa ning täpsustatud paigalduse osa)

Sissejuhatus

Siit artiklist peaks saama väikse ülevaate, mis asi see proxy server ehk vahemälu on, milleks seda kasutatakse. Mis on on Squid ning kuidas seda autentimist nõudva transparent proxy serverina seadistada(transparent selles mõistes, et kasutajate päringud suunatakse sinna vaikimisi ja alati).

Mis asi on proxy

Proxy serveri näol on tegu kliendi ja võrgus paiknevate resursside vahelise vahemäluga. Proxy servereid kasutatakse mitmetel erinevatel eesmärkidel:

  • Võrguühenduste kasutuse optimeerimiseks
  • Veebiserverite koormuste leevendamiseks
  • Inimeste anonüümsuse kaitsmiseks veebis
  • Sisevõrgu kasutajatele võrgust kättesaadavate andmete piiramiseks

Mis asi see Squid on ja mida sellega teha saab

Squidi puhul on tegu täielikult HTTP/1.0 (peaaegu ka HTTP/1.1)ühilduva proxy serveri tarkvaraga, mis toetab HTTP-d ja FTP-d. Squidi on võimalik kasutada:

  • võrguühenduste optimeerimiseks
  • kasutajate autentimiseks
  • kasutajatele võrgust kätte saadavate resursside piiramiseks
  • veebiserverite koormuse leevendamiseks

Squidiga on kasutajate autentimiseks olemas mitmeid erinevaid meetodeid:

  • ncsa (basic authentication)
  • Windows Active Directory
  • Radius
  • LDAP
  • Kerberos
  • MySQL
  • NTLM

Eeldused/nõuded

  • 1 mõne värske linuxi distributsiooniga server
  • server mille peale Squid paigaldatakse on võrgus kasutusel ruuterina / kui on tegu võrgus eraldi seisva masinaga on vaja suunata nende teenuste, mida läbi vahemälu kasutada soovitakse võrguliiklus WCCP/GRE abiga Squid serverisse. (See ei kuulu siin artiklis kaetava osa hulka)
  • kasutataval serveril peaks olema piisav kogus vahemälu (Squid tahab iga 1 GB squidi vahemälus hoitavate andmete kohta 10 MB vahemälu serverilt).

Paigaldamine

Squidi ja vajalike komponentide paigaldamiseks Ubuntu serveri korral piisab terminali sisestatud käsust:

sudo apt-get install squid squid-common

Kui on soovi järgida autentimise näidet tuleks paigaldada ka apache2-utils. Selle tegemiseks, kas lisada eelneva käsu lõppu "apache2-utils" või tagant järgi eraldi paigaldades:

sudo apt-get install apache2-utils

Seadistamine

Enne seadistamise alustamist tasuks teha originaal konfiguratsioonidest varukoopiad.

iptables seadistamine

Vahemälu serveris on kasutades iptablesit suunata kõik http (port 80) päringud ümber squidi pordile, mis on vaikimisi 3128. Seda saab teha sisestades järgmised käsud:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Squidi seadistamine

Squidi seadistamiseks tuleb muuta squidi konfiguratsiooni failis (/etc/squid/squid.conf) järgneivaid asju:

httpd_accel_host virtual   //määrab, et squid töötab http kiirendina
httpd_accel_port 80        //pordi number, mille liiklust läbi vahemälu suunatakse
httpd_accel_with_proxy on  //lülitab squidi tööle, kui kohaliku httpd kiirendi ja proxy
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24  //juurdepääsu piirangud, mis lubavad vaid kohalikus võrgus paiknevatel arvutitel squidi kasutada
http_access allow localhost //
http_access allow lan    //

Peale konfiguratsiooni failis muudatuste sisse viimist tuleb nende aktiveerimiseks Squidile taaskäivitus teha:

/etc/init.d/squid restart

Näidis NCSA autentimise seadistamisest

Konfiguratsiooni faili on vaja sisestada järgmised read:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd
auth_param basic children 5
auth_param basic realm NFYE Squid proxy-caching web server
auth_param basic credentialsttl 3 hours
auth_param basic casesensitive off

acl users proxy_auth REQUIRED
acl sectionx proxy_auth REQUIRED
http_access allow users

Kasutajate loomiseks sisesta terminali käsk:

sudo htpasswd -c /etc/squid.passwd esimese_kasutajanimi

Teiste autentimise meetodite seadistamise kohta leiab infot http://wiki.squid-cache.org/ConfigExamples/

Mõningad veebilehed/teenused ei pruugi toimida läbi autentimist nõudva proxy ning sellepärast tuleb teha nendest eraldi nimistu, et nad ilma autentimiseta ka töötaks. Seda saab teha järgnevalt:

Tuleb tekitada fail unauth_sites.acl näiteks /etc/squid kausta ning sinna sisse luua nimistu domeenidest, mille korral autentimist ei nõuta kujul(1 domeen rea kohta):

.domeen1.com
.domeen2.com

Samuti on vaja lisada squid.conf faili sisse järgmised:

acl unauth_sites dstdomain "/etc/squid/unauth_sites.acl"
http_access allow unauth_sites lan

blacklist

Teatud domeenidele ligipääsu tõkestamiseks tuleks need koondada ühtsesse nimekirja. Näiteks luua fail /etc/squid/bad_domains ja muuta see loetavaks kasutajale, millena Squid käivitatud on. Blokeeritud saitide listi sisu peaks olema enam vähem selline:

pahaleht
.pahaleht1.com
.pahaleht2.com

Peale selle listi loomist tuleb sellele viidata ka Squidi konfiguratsiooni failis:

acl BAD_DOMAINS dstdom_regex -i "/etc/squid/bad_domains"
http_access deny BAD_DOMAINS lan

Kuidas kontrollida, et päringud Squidini jõuavad

Selleks, et näha kas päringud proxy serverist läbi tuleb jälgida Squidi access logis toimuvat. Seda saab teha käsuga:

tail -f /var/log/squid/access.log

Peale selle käsu sisestamist proovida veebis mingit lehekülge avada mõne arvutiga, mis antud proxy kaudu veebi pääsema peaks.

Varundamine ja taastamine

Varundamiseks tuleks järgnevad failid kopeerida mõnele alternatiivsele meediale:

/etc/squid/squid.conf  //squidi konfiguratsiooni fail
/etc/squid/bad_domains  //blacklist
/etc/squid.passwd     //kasutajad
/etc/squid/unauth_sites.acl //autentimist mitte nõudvate saitide list

Näiteks võib kasutada secure copy käsku antud failide teise masinasse tõstmiseks:

scp /etc/squid/squid.conf kasutajanimi@mingiip:/kaust/kuhu/kopeerida

Teenuse taastamiseks tuleb eelnevalt loetletud failid taastada varukoopiast samasse kausta, kust need varundamiseks kopeeritud sai ning muuta failid Squidile loetavateks. Näiteks kopeerime secure copy käsuga tagasi teisest serverist:

sudo -i
scp kasutajanimi@mingi_ip:/kaust_kus_fail_on/faili_nimi /etc/squid/faili_nimi
chown squidi_kasutaja:kasutaja_grupp /etc/squid/failinimi

Kui konfiguratsiooni failid on taastatud, tuleb teenus taaskäivitada:

/etc/init.d/squid restart

Squidi logide analüüs/statistika

Squidi logide analüüsimiseks ning statistika tegemiseks on olemas palju erinevaid programme, millest üks populaarsem on Calamaris(http://cord.de/tools/squid/calamaris/). Näidist Calamarise raporti kohta võib näha aadressil http://cord.de/tools/squid/calamaris/calamaris-2.out Calamarise väljundi põhjal on võimalik näiteks optimeerida Squidi vahemälu suurust.

Pikema nimekirja programmidest, mida võib kasutada Squidi logide analüüsimiseks leiab http://www.squid-cache.org/Scripts/.

Kasutatud kirjandus

http://www.squid-cache.org/

http://www.ubuntugeek.com/how-to-setup-transparent-squid-proxy-server-in-ubuntu.html

http://www.brennan.id.au/11-Squid_Web_Proxy.html