Proxy server samotný slúži vačšinou ako relatívne bezpečné spojenie sietí, ktoré medzi nimi umožňuje len presne definovanú komunikáciu. Je možné povoliť napr. HTTP prístup len pre určitú skupinu používateľov alebo počítačov k definovanej skupine zdrojov.
Klienti sa nepripájajú priamo k požadovanému zdroju (napr. www stránke) ale spoja sa s proxy serverom a ten získa požadovanú informáciu z originálneho zdroja. Proxy server je možné použiť ak chceme pripojiť k Internetu sieť v ktorej sa používajú privátne adresy.
S proxy-cache serverom je naviac možné znížiť čas odozvy ako aj premávku, ktorá medzi sieťami vzniká pri opakovanom prístupe na rovnaký zdroj.
Činnosť proxy-cache servera možno opísať v niekoľkých bodoch:
Problém pri cachovaní www je možná strata aktuálnosti dát. Proxy server môže mať uloženú staršiu verziu dokumentu ako má pôvodný server. Je teda potrebné nájsť kompromis medzi aktuálnosťou dát a úsporou dátovej premávky.
HTTP hlavičky poskytujú určité možnosti ako ovplyvniť chovanie proxy-cache serveru k HTTP objektom. Niesú vidieť v HTML a zvyčajne sú automaticky generovné webovým serverom.
Príklad HTTP hlavičky:
HTTP/1.1 200 OK Date: Sun, 20 Nov 2005 12:28:39 GMT Server: Apache/1.3.26 (Unix) Content-Length: 2238 Expires: Sun, 20 Nov 2005 12:28:39 GMT Cache-Control: max-age=3600, must-revalidate Pargma: no-cache Last-Modified: Thu, 03 Nov 2005 13:22:55 GMT ETag: "3ef73-bb6-436a0f2f"-2 Content-Type: text/html
SQUID je veľmi vykonný Web proxy cache server. Typicky sa využíva k pripojeniu vlastnej siete k Internetu. Squid umožňuje klientom pracovať napr. s protokolmi HTTP, HTTPS, FTP. Domovská stránka projektu sa nachádza na adrese http://www.squid-cache.org odkiaľ je možné stiahnuť binárne balíčky či zdrojové kódy v stabilnej verzii 2.5.
Hlavný konfiguračný súbor, squid.conf, je väčšinou umiestnený v adresari /etc/squid/. Súbor je veľmi dobre komentovaný a všetko je pre názornosť nastavené na viacmenej rozumné implicitné hodnoty. Ak nezmeníte implicitné hodnoty, ponechajte daný riadok zakomentovaný.
Popis niektorých volieb v squid.conf:
NETWORK OPTIONS --------------- # http_port 3128 #port na ktorom server ocakava poziadavky # icp_port 3130 #port prostrednictvom ktoreho komunikuje so susednými proxy serverami. OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM ----------------------------------------------------- cache_peer parent.foo.net parent 3128 3130 cache_peer sib1.foo.net sibling 3128 3130 OPTIONS WHICH AFFECT THE CACHE SIZE ----------------------------------- # cache_mem 8 MB # maximum_object_size 4096 KB # minimum_object_size 0 KB # maximum_object_size_in_memory 8 KB LOGFILE PATHNAMES AND CACHE DIRECTORIES --------------------------------------- # cache_dir ufs /var/cache/squid 100 16 256 # cache_access_log /var/log/squid/access.log # cache_log /var/log/squid/cache.log # cache_store_log /var/log/squid/store.log OPTIONS FOR EXTERNAL SUPPORT PROGRAMS ------------------------------------- redirect_program <cesta_k_programu> OPTIONS FOR TUNING THE CACHE ---------------------------- refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 TIMEOUTS -------- ACCESS CONTROLS --------------- vid. nižšie ADMINISTRATIVE PARAMETERS ------------------------- # cache_mgr root # cache_effective_user squid #musi mat dostatocne prava k adresari vedenom v cache_dir # cache_effective_group squid
ACL (Access Control List) slúži na obmedzenie prítupu k proxy (Internetu). ACL triedy sa definujú riadkom začínajúcim acl a je možné použiť atribúty ako IP, port, čas, cieľová IP, URL, autentizácia atď. ACL operátor potom určí na základe tried ako sa následne požiadavka spracuje.
Všeobecný popis ACL triedy:
acl meno_triedy acl_typ string1 ...
acl meno_triedy acl_typ "súbor" (s jednou položkou na riadku)
acl_typ môže byť napr.: src (ip/maska), dst, proto, arp (xx:xx:xx...), time [deň] [h1:m1-h2:m2] a veľa ďaľších, ktoré sú popísané v konfiguračnom súbore.
Príklady konkrétnych tried:
acl all src 0.0.0.0/0.0.0.0 acl ms dstdomain .microsoft.com acl nasa_siet src 10.0.0.0/255.255.255.0
Fragment súboru squid.conf s definovanými triedami:
#Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT
Implicitne je v konfiguračnom súbore nastavený prístup iba z localhostu. Ak chceme umožniť prístup z "našej siete" je potrebné pridať odpovedajúcu triedu (vid. nasa_siet) a pridať pravidlo:
http_access allow nasa_siet
#Recommended minimum configuration: # # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Only allow purge requests from localhost http_access allow purge localhost http_access deny purge # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # Example rule allowing access from your local networks. Adapt # to list your (internal) IP networks from where browsing should # be allowed #acl our_networks src 192.168.1.0/24 192.168.2.0/24 #http_access allow our_networks # Allow the localhost to have access by default http_access allow localhost # And finally deny all other access to this proxy http_access deny all
Pre účely autentizácie sa používa typ ACL tiedy proxy_auth.
Browser posiela používateľove autentizačná údaje v autorizačnej hlavičke. Ak SQUID dostane požiadavku a v pravidle http_access je uvedená trieda typu proxy_auth, hľadá autorizačnú hlavičku. Ak ju nájde, dekóduje ju a zistí username a password. Ak hlavička chýba, generuje sa chyba 407 (Proxy Authentication required) a browser požiada používateľa o zadanie username a password, ktoré sa prekóduje (base64) a pošle v autorizačnej hlavičke proxy serveru.
Autentizačné schémy: LDAP, NCSA, MSNT, PAM, SMB...
Pre použitie určitého typu autentizácie je potrebné zkompilovať a nainštalovať požadovaný modul z /helpers/basic_auth/
Voľbou auth_param určíme program, ktorý na autentizáciu použijeme prípadne voľby programu.
Príklad:
auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd
/usr/sbin/squid -z /usr/sbin/squid
Je výhodné, ak je proces nastavenia klienta pre prácu s proxy serverom pokiaľ možno jednoduchý (v praxi sa nastavuje typ proxy servera, jeho adresa a port, na ktorom pracuje). Existuje dokonca riešenie, pri ktorom sa na strane klienta nenastavuje vôbec nič a všetky požiadavky idú automaticky cez proxy server. Takéto riešenie sa volá "transparentný proxy server". Na smerovači je potrebné nastaviť presmerovanie premávky prebiehajúcej na porte 80 na port, na ktorom očakáva spojenie náš proxy server.
Nastavenie v squid.conf:
HTTPD-ACCELERATOR OPTIONS ------------------------- httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
Calamaris je perlový skript určený k parsovaniu logov rôznych proxy serverov (Squid, NetCache, Inktomi Traffic Server, Oops! proxy server...). Generuje rôzne štatistiky (domain-report, peak-report, performance-report...), ktoré može zaslať na e-mail alebo vystaviť na web.
Odosielanie e-mailu so štatistikami rootovi:
cat /var/log/squid/access.log | nice -39 calamaris -amH 'daily worf' | mail root
Ukážka denného reportu.