Filtrování webu pomocí proxy serveru Squid, včetně statistiky (Sarg) – 1.část

Home / Uncategorized / Filtrování webu pomocí proxy serveru Squid, včetně statistiky (Sarg) – 1.část

Ukážeme si jak filtrovat provoz na proxy serveru Squid. Celé to je odzkoušeno na Debianu 3.1 stable a Squidu 2.5.9.

Co budeme potřebovat: 

  1. nainstalovaný a funkční proxy server Squid
  2. předpokládáme že uživatelé přistupují na internet přes proxy server, lze přesměrovat na serveru pomocí iptables

Konfigurace:

Jelikož je konfigurační soubor squida poměrně rozsáhlý, budeme postupovat po menších kouscích. Samozřejmě nemusím připomínat si nejdříve zazálohovat funkční konfigurák Squida. Pravidla budeme definovat pomocí tzv. ACL (access control list). Forma zápisu ACL pravidel je následující (je to pěkně popsáno přímo v konfig. souboru):

acl aclname acltype string1 …
acl aclname acltype "file" …

Otevřeme si "/etc/squid/squid.conf" v editoru a začneme s konfigurací. Najdeme si sekci "ACCESS CONTROLS", v ní podsekci "TAG: acl" zde řetezec "acl local_servers dst" a pod tento řeteze přidáme:

———-

acl admin src 10.2.147.113/255.255.255.255
acl zakazane url_regex -i "/etc/squid/zakazane"
acl pracovni_doba time M T W H F 8:00-15:00

———- 

Vysvětlení: 

  1. pravidlo "admin" nám říká na jaké adresy se nebudou vztahovat žádná omezení, můžeme zadat více jednotlivých ip adres, nebo rozsah adres
  2. pravidlo "zakazane" nám definuje výrazy které budeme filtrovat v souboru "/etc/squid/zakazane", který si vytvoříme později
  3. pravidlo "pracovni doba" nám definuje pracovní dobu, tzn. Po – Pá od 8:00 – 15:00, toto pravidlo můžeme při aplikování pravidel vynechat

Dále v sekci "ACCESS CONTROLS" si najdeme "TAG: http_access", což je hned následující. Zde najdeme řetezec "always_direct allow" a před něj přidáme:

———-

http_access allow admin
http_access deny zakazane pracovni_doba

———-

Povolíme všem co jsou definováni pravidlem "admin" přístup přes proxy bez omezení. Dále všem ostatním zákážeme přístup na stránky obsahujíci námi zakázané výrazy (definujeme si jej za chvíli) v námi určenou pracovní dobu.

Vytvoření seznamu zakázaných výrazu (může vypadat např. takto):

———- 

amateurs
lesbian
porno
\.avi$
\.mpg$
\.mpeg$
\.asx$
\.asf$
\.ogg$
\.mp3$
\.wma$
\.wmv$
netshow4.play.cz

———-

Seznam zakázaných výrazů je myslím více než jasný. První 3 výrazy nám zakazují jaký řetezec nesmí být v URL, dále zakážeme stahování uvedených přípon a nakonec zakážeme celou doménu. Soubor si uložíme do adresáře "/etc/squid".

Poslední sekce co by nás mohla ještě zajímat je "MISCELLANEOUS", zde najdeme "TAG: deny_info", kde si můžeme nadefinovat jakou má vrátit squid chybovou stránku uživateli, který neprošel pravidlem "http_access". Standardně squid vrací stránku "ERR_ACCESS_DENIED" v jazykové mutaci dle volby v "TAG: error_directory". Pokud nám toto nevyhovuje můžeme si ji zde změnit na námi definovanou stránku. Všechny chybové stránky najdeme v "/usr/share/squid/errors/" rozdělené dle jazyka.

 

Příklad: 

———-

deny_info ERR_VLASTNI zakazane

———- 

Nadefinovali jsme si vlastni html stránku "ERR_VLASTNI", která samozřejmě musí existovat v příslušném adresáři a platí pro ACL "zakazane" (viz výše). Tato stránka se zobrazí uživatelům místo té defaultní.

 

Reloadujeme Squida ("/etc/init.d/squid reload") a koukneme do logů jestli je vše v pořádku. Odzkoušíme na nějaké non-admin stanici stažením nějakého "zakázaného" obsahu.

Pokračování příště … 

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *