Proxy server je server, který je umístěn mezi klientem a serverem a dělá prostředníka v jejich komunikaci. Proxy se tváří vůči klientovi jako server a přebírá jeho požadavek. Ten pak sám odešle serveru a také přebírá odpověď, kterou nakonec doručí klientovi. Proxy server se tady chová jako server při komunikaci s klientem a jako klient při komunikaci se serverem. Proxy server navíc může komunikaci, kterou obsluhuje měnit a zpracovávat (filtrování, cachování, statistika...). Proxy serverem je možné zabezpečovat síť (kontroluje přístup ven, lze použít místo NAT; povoluje pouze služby, které podporuje; klient nekomunikuje přímo s vnější sítí), urychlovat odezvu z vnější sítě pomocí cache, řídit přístup ke službám.
Aby klient využíval ke komunikaci proxy server je většinou potřeba jej nějak nastavit, případně upravit. Pokud všechny požadavky směřují automaticky na proxy, mluvíme o transparentním proxy serveru
Dva druhy proxy serverů:
Rozšířené použití proxy serveru je jako HTTP proxy cache. Tento typ proxy serverů disponuje pamětí (cache) pro uchování odpovědí serverů, které jsou zde k dispozici při dalším požadavku.
Pamatování objektu v cache paměti se řídí údaji v HTTP hlavičce Expires: a Pragma: no-cache odpovědi serveru. (Hlavička Expires: udává čas, kdy vyprší platnost dokumentu, případně může obsahovat "0", nebo "now".) Pokud je čas v hlavičce Expires: nižší než v hlavičce Date:, nesmí být obsah uložen v cache paměti.
Při požadavku klienta se používají hlavičky If modified since: a Pragma: no-cache. Hlavička If modified since: způsobí znavunačtení dokumenty pouze pokud byl změněn. To dělá "Reload" ve většině browserů. Samotné Pragma: no-cache vynutí získání nové kopie se serveru.
HTTP proxy cache lze většinou nastavit i pro řízení přístupu. Autentizace vůči proxy probíhá takto: Proxy obdrží HTTP požadavek, hledá hlavičku Autorization:. Pokud není, vrátí kód 407 (Proxy Authentication Required). Většina klientů (prohlížečů) reaguje výzvou k zadání jména a hesla. Jmého a heslo je zakódováno metodou Base64 a odesláno v hlavičce Autorization:. Proxy obsah hlavičky porovná s uloženými údaji.
Zpět na obsahSquid je proxy cache server, který umí obsluhovat protokoly HTTP, FTP, gopher a další využívajíci url. Squid umožňuje řízení přístupu a autentizaci vůči proxy.
http://www.squid-cache.org/
Po instalaci je nutné inicializovat adresářovou strukturu cache příkazem /usr/sbin/squid -z. Některé distribuce provedou tuto inicializacii automaticky po nainstalovaní balíku, nebo při prvním spuštění.
Konfigurace je uložena v souboru squid.conf, který najdeme v /etc/ nebo v /etc/squid/. Konfigurační soubor je kvalitně okomentvaný a obsahuje základní nastavení.
Skládá se z několika sekcí:
Na řízení přístupů slouží ACL (access control list). Každý ACL záznam se skládá nejmémě ze 4 částí
acl jméno typ hodnota [hodnota1 hodnota2 ... ]nebo
acl jméno typ "soubor"Na položku jméno se odvoláváme v samotných pravidlech pro řízení přístupu. Za jménem následuje typ a hodnota nebo více hodnot, případně cesta k souboru uzavřená v uvozovkách. Tento soubor pak musí obsahovat hodnoty po jedné na naždém řádku.
Popis všech typů je zakomentován v souboru squid.conf. Ty nejužitečnější:
src -- zdrojová adresa, více adres nebo rozsah adres, příp. doménové jménoSamotné řízení přístupu se provádí direktivou
dst -- cílová adresa, rozsah adres, doména
srcdom_regex [-i]-- zdrojová adresa vyhovující regulárnímu výrazu. (-i znamená, že se ignoruje rozdíl ve velikosti písmen)
dstdom_regex [-i]-- dtto pro cílovou adresu.
port -- cílový port, porty nebo rozsah portů
proto -- protokol (HTTP, FTP)
method -- metoda pro HTTP (POST, GET)
browser [-i] -- regulární výraz odpovídající označení prohlížeče.
time [day] [h1:m1-h2:m2] -- čas udaný dnem v týdnu nebo časem (nebo obojím); označení dnů - MTWHFA
proxy_auth -- autentizace uživatele vůči proxy
http_access allow|deny [!]jméno ...parametr allow (deny) povoluje (zakazuje) přístup pro (v acl záznamu) definované jméno. Pokud je před jménem uveden "!", platí negace. Pokud je za sebou uvedeno více jmen platí mezi nimi vztah AND. (Pozor pokud chceme např. uvést více časů!)
Direktivy http_access se vyhodnocují postupně a uplatňuje se první shoda. Proto je vhodné na konec umístit direktivu s defaultní politikou (nejlépe http_access deny all)
Obecný postup autentizace vůči proxy, který byl popsán výše má jednu zásadní nevýhodu: jméno a heslo putuje od klienta k proxy pouze zakódované Base64 a tedy v nezašifrované podobě a může být odposlechnuto.
Bezpečnější autentizace je prováděna mimo hlavní proces Squidu v relativně samostatném autentizačním procesu, který čte na standardním vstupu uživatelská jména a hesla a na standardní výstup odpovídá ERR nebo OK. Tato technika umžňuje využít různá autentizační schémata.
Squid podporuje autentizaci přes LDAP, PAM, SMB, NCSA a další.
Vybraný způsob autentizace se zapne v souboru squid.conf volbou authenticate_program. Jako hodnotu dáme cestu k autentizačnímu programu s parametry příkazového řádku.
Uživatele, které chce me autentizovat určíme v acl položce.
Pokud potřebujeme proxy server pro jiné služby s největší pravděpodobností je najdeme v balíku TIS FWTK (Fire Wall Tool Kit). Původně komerční sada programů byla uvolně na pro volné použití a obsahuje řadu specializovaných proxy serverů:
http://www.fwtk.org/Zpět na obsah
SOCKSv5 protokol je standard definovaný v rfc1928 jako prototokol pro realizaci proxy v transportní vrstvě. Idea SOCKS proxy serveru je spojit obsluhování všech služeb jedním proxy serverem místo specializovaného serveru pro každou službu v aplikační vrstvě. Protokol SOCKSv5 umožňuje autentizaci, a proxy služby jak pro protokol TCP, tak UDP.
www.socks.permeo.com/AboutSOCKS/SOCKSvF.asp -- Domovská stránka SOCKS Proxy protokoluZpět na obsah
http://dcfonline.sfu.ca/ying/linux/socks5/ -- Šikovné Mini-HowTo