29.4. Konfigurační soubor /etc/squid/squid.conf

Všechna nastavení Squid proxy serveru jsou zapsána v souboru /etc/squid/squid.conf. Pro první spuštění Squida není třeba v tomto souboru provádět žádné změny, ale externím klientům bude zamítnut přístup. Proxy bude dostupná pouze pro localhost. Výchozí port je 3128. Předinstalovaný soubor /etc/squid/squid.conf obsahuje podrobné komentáře s popisy voleb a mnoho příkladů. Téměř všechny položky začínají znakem # (komentář) a obsahují podrobné informace. Zadané hodnoty jsou téměř vždy shodné s výchozími, takže odstranění komentáře bez změny hodnoty má pětšinou minimální vliv. Lepší je ale příklady nechat beze změny a zadat volby se změněnými parametry na nový řádek pod příklad. Tak budete mít přehled o výchozích hodnotách a vámi provedených změnách.

[Tip]Přizpůsobení konfiguračního souboru po aktualizaci

Pokud jste aktualizovali Squid ze starší verze, doporučuje se upravit nový /etc/squid/squid.conf a jen do něj zadat změny provedené ve starším souboru. Pokud byste použili starší konfigurační soubor přímo, riskujete, že nebude správně fungovat, protože některé volby se mezi verzemi mění.

29.4.1. Základní nastavení

http_port 3128

Toto je port, na kterém poslouchá Squid požadavky klientů. Přednastaven je na 3128, ale běžný je také port 8080. Další porty můžete přidat (oddělujte je mezerou).

cache_peer hostname type proxy-port icp-port

Zde uveďte nadřazenou proxy, např. když chcete využívat proxy poskytovatele. Jako hostname uveďte jméno a IP adresu používané proxy. Jako type zadejte parent. Jako číslo portu poskytovatele (proxy-port) se nejčastěji používá 8080. icp-port můžete nastavit na 7 nebo 0, pokud neznáte ICP port nadřazené proxy a její používání není dohodnuto s poskytovatelem. Navíc byste za čísla portů měli zapsat volby default a no-query, čímž zamezíte používání ICP protokolu. Squid se pak vůči proxy poskytovatele chová jako obyčejný webový prohlížeč.

cache_mem 8 MB

Tato položka stanoví, kolik operační paměti bude Squid pro cache používat. Přednastaveno je 8 MB.

cache_dir ufs /var/cache/squid 100 16 256

Položka cache_dir určuje adresář, do kterého budou na disku ukládány jednotlivé objekty. Čísla za cestou k adresáři znamenají: maximální velikost cache v MB; počet podadresářů; a počet podadresářů podadresářů. Parametr ufs by měl zůstat beze změny. Přednastavenými hodnotami pro velikost cache jsou 100 MB diskového prostoru v adresáři /var/cache/squid, kde bude vytvořeno 16 adresářů, každý z nich se 256 podadresáři. Při vyčleňování místa na disku byste si měli nechat dostatek rezerv, rozumné je vytvářet cache o velikosti 50 až 80 procent volného místa. Kromě toho byste měli poslední dvě čísla (počty adresářů) zvětšovat velice opatrně, protože režie adresářových struktur může snížit výkon systému. Pokud máte pro cache více disků, můžete vytvořit odpovídající množství řádků s definicí cache_dir.

cache_access_log /var/log/squid/access.log

Cesta k protokolovému souboru.

cache_log /var/log/squid/cache.log

Cesta k protokolovému souboru.

cache_store_log /var/log/squid/store.log

Cesta k protokolovému souboru.

Tyto tři volby definují cesty k protokolovým souborům a není třeba je měnit. Pouze v případě, že je cache velice často dotazována, se může hodit přesunout protokolové soubory na jiný disk.

emulate_httpd_log off

Změnou na on získáte čitelné protokolové soubory, se kterými si ale neporadí některé programy, které mají na starosti vyhodnocování.

client_netmask 255.255.255.255

Touto položkou můžete maskovat IP adresy zapisované do logů a skrýt tak identitu klientů. Pokud zde napíšete např. 255.255.255.0, tak bude poslední pozice IP adresy vynulována.

ftp_user Squid@

Zde nastavte heslo, které bude Squid používat pro anonymní FTP login. Může mít smysl uvést zde platnou e-mailovou adresu, protože některé FTP servery její platnost kontrolují.

cache_mgr webmaster

Tato volba slouží pro uvedení e-mailové adresy, na kterou se pošle zpráva v případě neočekávaného pádu. Přednastaveno je webmaster.

logfile_rotate 0

Squid umí také rotovat uložené protokolové soubory, pokud ho spustíte s volbou squid -k rotate. Soubory jsou číslovány, jakmile se dojde k nastavené hodnotě, přepíše se nejstarší soubor. Výchozí nastavení je 0, protože pro archivaci a mazání protokolových souborů používá SUSE Linux cron úlohu nastavenou v /etc/logrotate/squid.

append_domain domain

Volbou append_domain můžete určit, která doména bude automaticky připojena v případě, že není žádná uvedena. Nejčastěji se zde uvádí vlastní doména, takže stačí v prohlížeči uvést www a dostanete se na vlastní webserver.

forwarded_for on

Když nastavíte na off, odstraní Squid IP adresu a jméno počítače klienta z HTTP dotazu.

negative_ttl 5 minutes; negative_dns_ttl 5 minutes

Ve standardním případě není třeba toto nastavení upravovat. Pokud ale máte vytáčenou linku, pak se může stát, že Internet nebude po nějakou dobu přístupný. To je tím, že si Squid poznamenává neúspěšné dotazy a brání se znovu dotazovat, i když je již spojení s Internetem obnoveno. V tom případě změňte minutes na seconds a nechte znovu načíst stránku v prohlížeči.

never_direct allow acl_name

Pokud chcete zabránit tomu, aby Squid vyřizoval požadavky přímo z Internetu, pak použijte tuto volbu. V tom případě je ale potřeba, aby existovala ještě další proxy, které bude Squid své požadavky zasílat. Tu je třeba nastavit ve volbě cache_peer. Pokud zadáte jako acl_name all, pak zajistíte, že všechny požadavky budou předávány nadřazené proxy. To je třeba např. tehdy, když poskytovatel striktně trvá na využívání jeho proxy, nebo když je firewall nastaven tak, že nepovoluje přímý přístup k Internetu.

29.4.2. Volby pro kontrolu přístupu

Squid obsahuje velice sofistikovaný systém pro řízení přístupu k proxy. Pomocí ACL je velice dobře a jednoduše konfigurovatelný. V zásadě se jedná o seznam pravidel, která jsou jedno po druhém zpracovávány. ACL je třeba definovat předtím, než budou použita. Některá jsou již definována, jako je all a localhost. Ale pouhým vytvořením ACL ještě nic neprovedete. Teprve, když ho použijete např. spolu s http_access, tak se změny projeví.

acl acl_name type data

ACL potřebuje pro svou definici minimálně tři parametry. Název acl_name může být libovolný. U type můžete zvolit z celé řady různých možností, které jsou uvedeny v části ACCESS CONTROLS souboru /etc/squid/squid.conf. Jaká data uvést, záleží na typu ACL. Lze je také načíst ze souboru, například, přes jméno počítače, IP adresu nebo URL. Následují krátké příklady:

acl mujnet srcdomain .ma-domena.cz
acl ucitele src 192.168.1.0/255.255.255.0
acl studenti src 192.168.7.0-192.168.9.0/255.255.255.0
acl obed time MTWHF 12:00-15:00
http_access allow acl_name

Volbou http_access určíte, kdo může proxy používat a k čemu může na Internetu přistupovat. Zde využijete výše definovaná ACL nebo použijete ta přednastavená, tj. localhost a all. Přístup může být povolen nebo zakázán pomocí hodnot deny či allow. Můžete vytvořit celý seznam položek http_access, které budou zpracovávány odshora dolů a podle toho, co se načte jako první bude přístup povolen nebo zakázán. Jako poslední položka by měl být vždy http_access deny all. V následujícím příkladu povolíme přístup všem lokálním uživatelům, zatímco všem ostatním ho zakážeme.

http_access allow localhost
http_access deny all

V dalším příkladu (s využitím vlastních ACL) mají učitelé povolen stálý přístup k Internetu, zatímco studenti k němu mají přístup pouze od pondělí do pátku v čase oběda.

http_access deny localhost
http_access allow ucitele
http_access allow studenti obed time
http_access deny all

Volby http_access byste, kvůli přehlednosti, měli psát pouze na jedno, předem určené, místo v souboru /etc/squid/squid.conf. A to mezi řádky:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
# CLIENTS

a uzavírající text:

http_access deny all
redirect_program /usr/bin/squidGuard

Tato volba slouží pro tzv. přesměrování, kdy jsou dotazy předávány externímu programu, v našem případě squidGuard, který dokáže zakázat přístup k určeným URL. Spolu s proxy autentizací a vhodnými ACL tak můžete velice precizně řídit přístup k Internetu pro různé skupiny. squidGuard je v separátním balíku a musí se tedy nainstalovat zvlášť.

authenticate_program /usr/sbin/pam_auth

Pokud je třeba autentizovat uživatele při přístupu k proxy, můžete použít program pam_auth. Při prvním přihlášení uživatele se spustí přihlašovací dialog, kde musí uživatel vložit uživatelské jméno a heslo. Navíc se stále vyžaduje ACL, připojit se mohou pouze klienti s platným loginem:

acl password proxy_auth REQUIRED

http_access allow password
http_access deny all

Klíčové slovo REQUIRED za proxy_auth můžete nahradit seznamem povolených jmen uživatelů nebo cestou k takovému seznamu.

ident_lookup_access allow acl_name

Tato volba zajistí, že za všechny klienty definované v ACL je proveden identifikační dotaz, který prověří identitu uživatele. Když nastavíte acl_name na all, bude se provádět dotazování pro všechny klienty. Na klientech však musí běžet identifikační démon. V Linuxu můžete nainstalovat program pidentd, pro Windows existuje volně dostupný software, který si můžete stáhnout z Internetu. Aby byli připuštěni pouze klienti s úspěšným identifikačním dotazem ident lookup, je potřeba opět definovat vhodný ACL.

acl identhosts ident REQUIRED

http_access allow identhosts
http_access deny all

Také zde je možné nahradit REQUIRED seznamem povolených jmen uživatelů. Používání ident může přístup výrazně zpomalit, protože kontrola se provádí při každém dotazu.