Ako nastaviť ukladanie webových stránok na školský server

Jednou s ďalších služieb, ktoré je možné nainštalovať na školský server je Proxy server. Proxy server je niečo ako prostredník v komunikácii medzi klientmi a servermi. Pre klientov sa tvári ako server a pre server ako klient.

Situácia bez použitia proxy servera:

+-------------+   požiadavka                           +--------+
| klient      |--------------------------------------> | server |
| (lok. sieť) |<-------------------------------------- |        |
+-------------+                             odpoveď    +--------+

Situácia s použitím proxy servera:

+-------------+ požiadavka  +--------+ požiadavka      +--------+
| klient      |-----------> | proxy  |---------------> | server |
| (lok. sieť) |<----------- | server |<--------------- |        |
+-------------+   odpoveď   +--------+      odpoveď    +--------+

Výhodou takéhoto prístupu je niekoľko:

  1. Oddelenie sietí - bezpečnosť
  2. Ukladanie obsahu (WWW) - zrýchlenie komunikácie
  3. Filtrovanie požiadaviek

O konfigurácii proxy servera Squid priamo v konfiguračnom súbore sa dozviete vo Vixovej príručke Systémového administrátora, tu sa zameriam na popis nastavenia pomocou webového rozhrania Webmin.


Inštalácia proxy servera Squid

Najskôr musíme Proxy server nainštalovať. Otvorte preto v rozhraní Webmin vetvu Others a ťuknite na odkaz Príkazový riadok, do poľa zadajte príkaz

sudo apt-get update

aby sa zaktualizovali informácie o dostupných balíkoch a potom zadajte

sudo apt-get install -f -y --force-yes squid 

a stlačte tlačidlo Vykonaj príkaz. Potom ešte treba chvíľu počkať kým sa proxy server Squid nainštaluje. Potom ako bude inštalácia hotová, zjaví sa priebeh inštalácie.


Nastavenie proxy servera Squid

Po nainštalovaní treba prispôsobiť nastavenieproxy servera Squid podmienkam našej siete:

Načúvací port

Najprv je potrebnénastaviť číslo portu, na ktorom bude Squid očakávať pripojenia od klientov. Štandardné nastavenie je port číslo 3128 a nie je potrebné to meniť - iba ak by ste port 3128 chceli využiť na niečo iné. V rozhraní Webmin otvoríme vetvu Servery a kliknúť na odkaz Squid Proxy Server. Na stránke ktorá sa zobrazí potom klikneme na Ports and Networking. Na stránke ktorá sa otvorí uvidíte prepínač v polohe Default (usually 3128).

Po nastavení príslušného čísla portu, je samozrejme potrebné nastaviť firewall tak, aby požiadavky klientov prepúšťal nášmu proxy serveru - toto už nemusíte nastavovať ak ste sa riadili podľa predchádzajúcich častí návodu.

Nastavenie vyrovnávacej pamäte

Predvolená inštalácia Squid má nastavenú cestu aj veľkosť vyrovnávacej pamäte, ale to nemusí vyhovovať všetkým, preto pomocou webmin zmeňte nastavenia podľa svojich potrieb. Pri nastavovaní veľkosti dajte pozor na to, že čím väčšia vyrovnávacia pamäť, tým viac súborov je v nej uchovaných, čo môže urýchliť zobrazovanie stránok, ale zároveň to zvyšuje počet prístupov na disk, čo zase zobrazovanie stránok môže spomaliť.

Ak chcete zmeniť tieto nastavenia klknite na odkaz Cache Options

V nastaveniach môžete nastaviť umiestnienie vyrovnávacej pamäte jej veľkosť, a ďalšie nastavenia. Nezabudnite prepnúť prepínač do polohy Listed.. a nakoniec nastavenia uložiť kliknutím na tlačítko Save.

Webmin - Ukladanie DNS 5

Nastavenie parametrov vlastnej siete

Squid používa prepracovaný systém riadenia prístupu, ktorý umožňuje precízne nastavenie, ktroré stanice môžu jeho služby využívať, a ktorým bude prístup do vonkajšej siete zamietnutý. V predvolenej konfigurácii po inštalácii však umožňuje prístup všetkým klientom lokálnej siete, jemu však potrebné nastaviť parametre lokálnej siete, a to IP adresu a masku siete. Aj toto nastavenie je potrebné urobiť cez Riadenie prístupu (Access control), takže ťukneme teda na Access Control.

Pod zoznamom pravidiel prístupu v rozbaľovacom poli vyberieme Client Address a ťukneme na tlačidlo Create new ACL.

Na stránke, ktorá sa zobrazí, zadajte do poľa ACL Name názov pravidla (napr. vnutorna_siet) a zadefinujte rozsah IP adries, ktoré budú mocť k proxy serveru pristupovať. Ako som už spomínal, nastavujeme povolenie pre všeky stanice v našej sieti, takže do poľa From IP zadáme IP adresu našej siete (napríklad 192.168.1.0) a do poľa Netmask zadáme hodnotu 24 (čo zodpovdá sieťovej maske 255.255.255.0).

Webmin - nastavenie prístupu k proxy 3

Teraz sa hore prepneme na záložku Proxy restriction a pod zoznamom pravidiel ťukneme na odkaz Add proxy restrictions

V ľavom stĺpci vyberieme pravidlo vnutorna_siet, ktoré sme si pred chvílou vytvorili, prepínač prepneme do polohy Allow a uložíme stlačením tlačidla Save.

Teraz pomocou šipky naše pravidlo posunieme nad pravidlo Denny All.

 

Na koniec ešte reštartujeme Squid.


Nastavenie klientov

Na začiatku sme si nastavili číslo portu, na ktorom proxy server očakáva požiadavky na webové stránky, a to port číslo 3128. Webový klienti však používajú pre komunikáciu iné (štandardné) porty:

  • http komunikácia - 80
  • https komunikácia - 443
  • ftp komunikácia - 21

Všetky tieto služby dokáže Squid obslúžiť, ale je potrebné aby boli posielané na port číslo 3128, to je nutné nastaviť individuálne na každom klientovi. Klientov však ešte nenastavujte, ak chcete používať filtrovanie obsahu stránok, ktorému sa venuje ďalšia kapitola (museli by ste ich potom nastaviť znova).

Napríklad:

Nastavenie v prehliadači Internet Explorer

V hornej ponuke vyberte Nástroje > Možnosti siete internet

Prepnite sa na kartu Pirpojenia a stlačte tlačítko Nastavenie siete LAN.

Proxy server IE 1

V časti Server proxy zaškrtnite pole a vyplnte príslušné údaje. 

Proxy server IE 2

Nastavenie v prehliadači Firefox

V hornej ponuke vyberte Nástroje > Možnosti (MS Windows) alebo Upraviť > Možnosti (Linux)

Prepnite sa na kartu Sieť a ťuknite na tlačítko Nastavenia.

Firefox nastavenie proxy1

Prepínač prepnite do polohy Ručné nastavenie parametrov a do okienok vyplnte príslušné údaje:

Firefox nastavenie proxy2

Nastavenie v prehliadači Opera

V hornej ponuke vyberte Nástroje > Nastavenia. Prepnite sa na kartu Pokročilé voľby, v ľavej časti ťuknite na Pripojenie a potom ťuknite na tlačítko Proxy servery.

Opera nastavenie Proxy

V okne, ktoré sa otvorí nastavte príslušné hodnoty:

Opera nastavenie Proxy


Nastavenie transparentného proxy servera

Nastavenie, ktoré sme si zatiaľ vytvorili funguje a je pripravené na ďalšie vylepšenia, ako riadenie prístupu, či filtrovanie prevádzky. Ale určite sa zhodneme, že je veľmi pracné nastavoavť všetky klienty samostatne. Riešenie (hoci len čiastočné) tohoto problému je využitie tzv. transparentného proxy servera.

Transparentný proxy server nie je priehľadný, ako by to mohlo navádzať slovo transparent, ale taký proxy server, o ktorom klienti ani nevedia. Naďalej posielajú svoje požiadavky na štandardný port číslo 80 a o zvyšok sa postará server. Pozornejší si určite všimli malú drobnosť, a to že protokoly HTTPS a FTP nemožno týmto spôsobom obslúžiť, preto pre nichplatia naďalej nastavenia predchádzajúcich odsekov.

Pre funkčné nastavenie tohoto riešenia proxy servera je potrebné zmeniť nastavenia na dvoch miestach:

  1. nastaviť samotný proxy server
  2. nastaviť preklad portov vo firewalle

Začneme natavením proxy - vo Webmin otvoríme vetvu Servery a kliknúť na odkaz Squid Proxy Server. Na stránke ktorá sa zobrazí potom klikneme na Ports and Networking.

Na stránke ktorá sa otvorí prepneme prepínač Proxy addresses and ports do polohy Listed below.., do poľa Port zadáme 3128 a do poľa Options for port napíšeme transparent. Nakoniec nastavenia uložte ťuknutím na tlačidlo Save.

Webmin - nastavenie transparentného proxy 2

Pokračovať budeme nastavením firewallu - v ľavej časti otvoríme vetvu Sieť a ťukneme na odkaz Linux Firewall. V rozbaľovacom poli vyberieme Network address translation (nat) a ťukneme na tlačidlo Show IPtable. Na stránke, ktorá sa zobrazí v časti PREROUTING ťuknite na modrú šipku v stĺpci Add aby sa nové pravidlo pridalo pred prvé pravidlo.

Teraz zadefinujeme pravidlo, ktoré požiadavky presmeruje:

  1. prepneme prepinač Action to take do polohy Redirect,
  2. do poľa Source address or network nastavíme Equals 192.168.1.0/24,
  3. Incoming interface nastavíme na Equals eth1,
  4. Network protocol na Equals TCP a
  5. Destination TCP or UDP na Equals Port(s) 80.
  6. do poľa Additional parameters zadáme --to-port 3128

a nakoniec nastavenie uložíme ťuknutím na tlačidlo Uložiť.

Teraz je ešte potrebné na stánke firewallu Aplikovať nastavenia

a spustiť script webmin-ipt, aby sa nové pravidlo pre firewall načítalo. Otvoríme položku Systém a klikneme na Štart a vypnutie. Zaškrtneme políčko webmin-ipt a ťukneme na tlačítko Start Selected.


Riadenie prístupu klientov a filtrovanie prevádzky

O tejto možnosti sa dozviete viac v podkapitole

Ako blokovať určité webové stránky v jednotlivých učebniach počas vyučovania

Ako blokovať určité webové stránky v jednotlivých učebniach počas vyučovania

Proxy server okrem toho, že ukladá webové stránky do medzipamäte a urýchľuje komunikáciu, dokáže pomocou kombinácie určitých druhov zoznamov tzv. ACL (access control list) riadiť prístup k internetu. Okrem iného umožňuje pomocou troch pravidiel blokovať niektoré stránky na základe ich adries alebo IP adries a to na konkrétnych počítačoch (s určitými doménovými menami alebo IP adresami) počas trvania vyučovania.

Ak chcete stránky filtrovať podľa obsahu, slúži na to iný nástroj, ktorému sa budeme venovať v kapitole Ako nastaviť na školskom serveri filtrovanie webových stránok podľa obsahu.

Táto časť predpokladá nainštalovaný proxy server Squid na vašom serveri. Návod nájdete na stránke Ako nastaviť ukladanie webových stránok na školský server.

V rozhraní Webmin rozbalíme ponuku Servery a klikneme na odkaz Squid Proxy Server.  Na stránke, ktorá sa otvorí, vyberieme Acces Control.

Ak si spomínate, v predchádzajúcej časti sme tu definovali parametre našej siete. Pod zoznamom pravidiel prístupu v rozbaľovacom poli sme vybrali Client Address a ťukli na tlačidlo Create new ACL. Vysvetlenie ďalších ACL pravidiel, ktoré môžeme použiť, je možné nájsť na konci tohto článku. Teraz si na konkrétnych príkladoch ukážeme ich použitie.

Definovanie zoznamov pre jednotlivé učebne


Za predpokladu, že máme na počítačoch nastavené IP adresy - buď ručne alebo pomocou DHCP servera (Ako nastaviť školský server, aby prideloval IP adresy na základe MAC adries)- môžeme zadefinovať pravidlá pre jednotlivé učebne.

Urobíme to presne tak isto ako keď sme definovali pravidlo pre celú vnútornú sieť, no teraz zadáme len rozsah adries počítačov z učebne.

V našom návode sme si zadefinovali učebňu informatiky v rozsahu 192.168.1.10-192.168.1.20, čo predstavuje 11 počítačov - jeden učiteľský (192.168.1.10) a 10 žiackych.

Pod zoznamom pravidiel prístupu teda v rozbaľovacom poli vyberieme Client Address a ťukneme na tlačidlo Create new ACL a zadáme:

ACL name : ucebna_studenti
From IP : 192.168.1.11
To IP : 192.168.1.20
Netmask :24

A potom zoznam uložíme stlačením tlačidla Save.

Takýmto spôsobom môžme vytvoriť zoznamy pre všetky učebne, kabinety, zborovňu alebo knižnicu - fantázii sa medze nekladú.

Definovanie zoznamov pre časové obdobia


Teraz zadefinujeme čas, počas ktorého prebieha vyučovanie. Pod zoznamom pravidiel prístupu, teda v rozbaľovacom poli, vyberieme Date and Time, ťukneme na tlačidlo Create new ACL a zadáme:

ACL name : vyucovanie
Days of weak : pomocou klávesy CTRL+ kliknutie myšou označíme všetky položky od monday po friday (pondelok až piatok)
Hours of the Day : zadáme začiatok a koniec vyučovania napr.: 7:00 to 15:00

Definovanie zoznamov zakázaných web serverov


Jednou z najnavštevovanejších stránok, ktorá počas vyučovania rozptyľuje žiakov od práce a navyše znižuje priepustnosť interntetu, je stránka youtube. Môžme teda vytvoriť pravidlo problemove_stranky a vypísať do neho všetky adresy problémových serverov (môže ich byť i viac).

Pod zoznamom pravidiel prístupu teda v rozbaľovacom poli vyberieme Web Server Hostname, ťukneme na tlačidlo Create new ACL a zadáme:

ACL Name : problemove_stranky
Domains : .youtube.com

ACL problemove stranky

Ak by ste potrebovali do zoznamu vložiť iba určitú časť webu, napríklad akčné hry na onlinegames na adrese http://www.onlinegames.sk/index.php?cath=2, použite pravidlo URL Regexp (viď zoznam pravidiel na konci kapitoly).

Zadefinovanie obmedzujúceho Proxy pravidla


Samotné zoznamy, ktoré sme vytvorili ešte nezabezpečia, že bude prístup na stránky (spĺňajúce kritéria zoznamu) zablokovaný alebo povolený. Je ešte potrebné vytvoriť obmedzujúce pravidlo:

Prepneme sa teda hore na záložku Proxy restriction a pod zoznamom pravidiel ťukneme na odkaz Add proxy restrictions

Uvidíme dva stĺpce. V ľavom stĺpci Match ACLs vyberieme ACL zoznamy, ktoré sa majú zhodovať s požiadavkou klienta a vpravom stlpci Don't Match ACLs vyberieme ACL zoznamy, ktoré sa nesmú zhodovať s požiadavkou klienta. Vybrať môžeme i viacero ACL zoznamov naraz.

Ak teda chceme zablokovať problemove_stranky počas vyucovanie na počítačoch ucebna_studenti, v ľavom stĺpci vyberieme pomocou CTRL+klik práve tieto ACL zoznamy, prepínač prepneme do polohy Deny a uložíme stlačením tlačidla Save.

Typy zoznamov ACL na riadenie prístupu


Browser Regexp

Regulárny výraz, ktorý sa zhoduje s typom prehliadača klienta v hlavičke. To umožňuje vytvárať ACL na základe používaného prehliadača. Pomocou tohto typu ACL môžete napríklad vytvoriť iné pravidlá pre používateľov Firefoxu a iné pravidlá pre používateľov Internet Explorera. Toto môže byť využité napríklad na presmerovanie používateľov Firefoxu na stránky určené pre Firefox a používateľov IE na stránky určené pre Explorer. Príklad nie je síce rozumné riešenie,  ale dokumentuje flexibilitu Squidu.

Client IP Address

IP adresa vyžiadaného klienta alebo IP adresa klienta. Táto možnosť odkazuje na zdrojové ACL v konfiguračnom súbore Squidu. Je potrebné zadať IP adresu a sieťovú masku, ale je tiež možné zadať rozsah adries.

Client Hostname

Zhoda na základe doménového mena klienta. Táto možnosť korešponduje so srcdomain ACL a môžete zadať jedno meno domény, zoznam doménových mien alebo súbor, ktorý obsahuje zoznam doménových mien. Tento typ ACL môže zvýšiť oneskorenie a významne znížiť priestupnosť nahranej vyrovnávacej pamäte, pretože Squid musí preložiť adresu na meno pre každý záznam, preto sa miesto tohoto pravidla uprednostňuje pravidlo typu Client IP Address.

Client Hostname Regexp

Zhoda na základe doménového mena klienta (s použitím regulárnych výrazov). Táto voľba korešponduje so srcdom_regex ACL a môžete zadať jedno meno domény, zoznam doménových mien alebo súbor, ktorý obsahuje zoznam doménových mien.

Date and Time

Tento typ plne zodpovedá názvu- dátum a čas, čo znamená že umožňuje vytvoriť ACL, ktoré sú aktívne počas zadaného času v príslušných dňoch týždňa. Táto funkcia je často používaná na blokovanie niektorých typov obsahov alebo niektorých častí internetu počas pracovnej doby alebo vyučovania. Veľa spoločností blokuje pornografiu, Many companies block pornography, zábavu, šport a iné mimopracovné stránky počas pracovnej doby, ale po jej skončení sa odblokujú. To môže v niektorých prípadoch zvýšiť efektivitu práce (alebo môže často uraziť a znechutiť žiakov a zamestnancov). Tento typ ACL umožňuje zadať dni v týždni a časové obdobie alebo vybrať všetky hodiny vo vybraných dňoch.

Dest AS Number

Číslo autonómneho systému cieľa je číslo AS servera, na ktorý sa bude odosielať požiadavka. ACL typ Číslo autonómneho systému sa zvyčajne používa pri Cache Peer, alebo ICP obmedzeniach prístupu. Číslo autonómneho systému sa používa v organizáciách, ktoré majú viacero internetových pripojení a routerov pracujúcich pod jednoduchou administračnou autoritou, ktorá používa rovnaký protokol brány. Ak nerozumiete autonómnym systémom, je najlepšie nepoužívať tento druh ACL.

Source AS Number

Číslo autonómneho systému zdroja  je iný typ ACL závislý na AS čísle zdroja odosielajúceho požiadavku.

Ethernet Address

Ethernetová alebo MAC adresa žiadajúceho klienta. Táto možnosť funguje iba pre klientov v rovnakej lokálnej podsieti a iba na určitých platformách. Tento typ ACL je podporovaný v operačných systémoch Linux, Solaris a niektorých variantách BSD. Tento ACL môže poskytnúť o trochu viac bezpečnú metódu na kontrolu prístupu, pretože MAC adresy sú ťažšie podvrhnuteľné ako IP adresy a môžete tým zabezpečiť, že klient bude z lokálnej siete (otherwise no ARP resolution can take place).

External Auth

Tento typ ACL zavolá externý autentifikačný proces, aby určil, či má byť požiadavka povolená. Pre Squid je dostupných mnoho pomocných autentifikačných programov, vrátane PAM, NCSA, Unix passwd, SMB, NTLM (iba pre Squid 2.4), atď. Autentifikačné programy však nemôžu pracovať ak je zapnuté transparentné proxy (tak ako sme to urobili v našom návode) alebo HTTP akcelerátor.

External Auth Regex

Podobne ako predchádzajúce, aj toto ACL volá externý autentifikačný proces, ale umožňuje použiť vzory regulárnych výrazov alebo nerozlišuje malé a veľké písmená.

Proxy IP Address

Lokálna IP adresa, ku ktorej existuje pripojenie od klienta. Toto ACL umožňuje iba jednu fyzickú sieť, ak sú dostupné viaceré proxy rozhrania.

RFC931 User

Meno používateľa je dané démonom ident, ktorý beží na počítači klienta. To  si vyžaduje, aby bol ident spustený na všetkých klientských počítačoch, ktoré sa chcú touto cestou autentifikovať. Ident nemusí byť bezpečný, okrem prípadov privátnych sietí, keď na jeho bezpečnosti veľmi nezáleží. Väčšina Linuxových a BSD distribúcií obsahuje Ident server a pre Windows sa dajú najsť ident servery zadarmo.

Request Method

Tento typ ACL pracuje s HTTP metódami vo vyžiadaných hlavičkách. To zahŕňa i metódy GET, PUT, atď.

URL Path Regex

Toto ACL pracuje s URL cestami bez protokolu, portu a adresy počítača. Napríklad pri zadaní "http://www.swelltech.com/pokus" bude objektom ACL iba /pokus.

URL Port

Toto ACL platí pre cieľový port požiadavky.

URL Protocol

Toto ACL platí pre protokol požiadavky ako napríklad ftp, HTTP, ICP, atď.

URL Regexp

Toto ACL používa regulárne výrazy nad URL adresami. Môže byť použité na poskytnutie prístupu  na základe častí URL alebo porovnávanie bez rozlišovania veľkosti písmen, atď. Regulárne výrazy, ktoré Squid používa, sú z knižnice GNU Regex library.

Web Server Address

Toto ACL pracuje na základe cieľovej IP adresy Web servera. Môže to  byť jedna IP adresa Squidu, sieťová IP adresa s maskou ale tiež rozsah adries.

Web Server Hostname

Toto ACL platí pre meno cieľového webového servera.

Web Server Regexp

Rovnaké ako predchádzajúce len je možné použit regulárne výrazy.

Poznámka: Viac o regulárnych výrazoch sa môžete dozvedieť na stránke http://www.regularnivyrazy.info/