Squid
Fra Wikipedia, den frie encyklopedi.
Squid er en mellomtjener (engelsk: «proxy server») for HTTP og FTP. Med den kan du ha en tjener som mellomlagrer data som lastes ned fra nettet, slik at du sparer båndbredde og gir brukerne en raskere «surfeopplevelse». Hvis du for eksempel har 100 klienter, som ikke bruker noen mellomtjener, i nettverket og alle skal inn på www.linuxguiden.no, må alle 100 klientene laste ned siden hver for seg. Hvis du bruker en mellomtjener, lastes siden ned kun den første gangen, og de 99 resterende klientene får siden lynraskt fra mellomtjeneren.
| Innholdsfortegnelse |
Installasjon
Mange distribusjoner har pakker av squid. Bruk pakkesystemet til å installere squid.
Konfigurasjon
Konfigurasjonsfila til squid utgjør faktisk en stor del av dokumentasjonen – hver konfigurasjonvariabel er dokumentert og fila inneholder mange eksempler. Den er som regel plassert i /etc/squid.conf eller i /etc/squid/squid.conf.
De fleste konfigurasjonsvariabler har brukbare standardverdier, men du må tilpasse «ACL»-listene – tilgangskontrollister.
Med et standardoppsett, vil squid lytte til port 3128, og kun tillatte tilkoblinger fra localhost.
Tilgangskontroll
| En feilkonfigurert mellomtjener kan misbrukes av ondsinnede utenforstående, så det er viktig at du passer på å konfigurere tilgangslistene korrekt. |
Det er som oftest hensiktsmessig å gi flere enn localhost tilgang til å bruke mellomtjenerne. For å gjøre dette, spesifiserer du hvordan squid skal gjenkjenne en klient – med kommandoen acl – og hva klienten skal ha lov til – med kommandoen http_access.
Det er svært mange måter å identifisere en klient med acl, for eksempel:
- Hvilken IP-adresse eller hvilket nettverk klienten kommer fra eller skal til.
- Hvilken port klienten kommer fra eller skal til.
- Hvilken protokoll som brukes.
- Ukedag og tid.
- Kilde- og mottakerdomene.
- Ident – brukernavnet til klienten.
- Regulært uttrykk i URL-en.
- Nettleser, m.m.
De to førstnevnte er mest relevante, men vi gir også noen eksempler på mer avansert bruk.
Hvis du har et lokalnett 10.0.0.0/24, vil følgende acl-kommando identifisere alle klienter i nettverket:
acl lokalnett src 10.0.0.0/24
Du kan så bruke http_access-kommandoen for å gi den tilgang til å bruke tjeneren:
http_access allow lokalnett
| Rekkefølgen til de ulike http_access-linjene er viktig. Først gir du tilgang til de som skal ha tilgang, og så sperrer du alt annet. |
squid.conf vil sannsynligvis ha en rekke standard http_access-linjer og så følgende:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow lokalnett
# And finally deny all other access to this proxy
http_access deny all
Siste linje er svært viktig å få med – uten denne, risikerer du at boksen din blir en åpen proxy.
Forskjellige scenarioer
Gjennomsiktig mellomtjener
En gjennomsiktig mellomtjener (engelsk: transparent proxy) er en mellomtjener, som alle klientene går gjennom uten at klienten må konfigureres til å bruke mellomtjeneren. Et slikt oppsett er kjekt når du ikke har mulighet til – eller det er veldig tungvint – å konfigurere klientene til å bruke mellomtjeneren, eller når du vil tvinge klientene til å bruke den.
Teknikken går ut på å skrive om all trafikk til port 80 og sende den til mellomtjeneren din.
Først må du konfigurere mellomtjeneren så den kan brukes «gjennomsiktig». Finn og sett følgende verdier:
httpd_accel_host virtual httpd_accel_with_proxy on httpd_accel_uses_host_header on
Så til slutt, må du bruke følgende regel i brannmuren:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Den røde verdien må tilpasses. Les «Netfilter»-artikkelen for mer informasjon.
Blokker Internet Explorer
Internet Explorer har en ganske omdiskutert sikkerhetshistorie. Hvis du vil tvinge brukerne dine til å benytte seg av alternativer, kan du sette opp en gjennomsiktig mellomtjener som kun lar de benytte Internet Explorer til Windows Update.
Tilpass følgende eksempelkonfigurasjon:
useragent_log /var/log/squid/useragent.log # log browser id referer_log /var/log/squid/referer.log acl lokalnett src 10.0.0.0/24 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 CONNECT method CONNECT acl ie_browser browser ^Mozilla/4\.0 .compatible; MSIE #Nei takk. acl bad_browser browser ^Gator # Spyware acl windowsupdate dstdomain .windowsupdate.com # Må man, så må man... acl windowsupdate dstdomain .windowsupdate.microsoft.com #Legg til slike for hver side som krever iexplore: acl ie_exceptions dstdomain .nettbank.no # For dårlige sider acl ie_exceptions2 dst 172.16.0.0/255.255.0.0 #Ditto http_access deny bad_browser http_access allow windowsupdate http_access allow ie_exceptions http_access allow ie_exceptions2 http_access deny ie_browser http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny to_localhost http_access allow localhost http_access allow lokalnett http_access deny all #Gjennomsiktig httpd_accel_host virtual httpd_accel_with_proxy on httpd_accel_uses_host_header on deny_info ERR_IEBROWSER ie_browser #Informer hvorfor vi sperrer ie_refresh on
Lag ei nettside som informerer brukeren om hvorfor Internet Explorer ikke kan brukes, med informasjon om hvor vedkommende kan få tak i en alternativ nettleser, og legg den i mappa der Squid oppbevarer informasjonssidene sine, stort sett /usr/share/squid/errors/English
Eksterne ressurser
- Squids hjemmeside (http://www.squid-cache.org)
- Transparent Proxy with Linux and Squid mini-HOWTO (http://en.tldp.org/HOWTO/TransparentProxy.html)
- Squid Documentation Project (http://squid-docs.sourceforge.net/)
- Squid som pornofilter (http://bulle.bitforbit.no/ftp/linux/squid/pornfilter/)
- Squid med båndbreddestyring, mm. (http://bulle.bitforbit.no/ftp/linux/squid/etc/squid.conf)



