Hvordan sette opp nettfiltreringsløsning på Squid Proxy

Denne HOWTO beskriver hvordan du kan beskytte hjemmebrukere eller små bedriftsnettverksbrukere mot anstøtende internettinnhold ved hjelp av HTTP-proxy. Målet vårt er å sette opp en gratis, Linux-basert server som kjører Squid og distribuere et webfiltreringsapplikasjon på det for å spare båndbredde, øke hastigheten på internettilgang og blokkere støtende og potensielt ulovlige eller ondsinnede webfiler.

I denne opplæringen vil jeg anta at nettverksmiljøet består av en SOHO-nivåruter som distribuerer trådløs Wi-Fi, flere stasjonære og bærbare datamaskiner, iPads og noen smarte mobiltelefoner som vist på følgende nettverksdiagram.

Sett opp CentOS Linux på proxy-server

Proxy-serveren vår blir bygget ved hjelp av gratisversjon av CentOS Linux 6.2. Det er også mulig å bruke RedHat Linux 6.2 med betalt abonnement hvis du trenger et garantert støttenivå for serverne dine.

For å installere CentOS Linux, gå til http://mirror.centos.org/centos/6/isos/i386/ og last ned CentOS-6.2-i386-minimal.iso bildefilen. Brenn den på en ekstra CD, sett inn i serverens CD-stasjon og slå den på.

Følg installasjonstrinnene for å godta standardverdiene eller tilpasse de nødvendige delene av installasjonen i henhold til dine behov. Konfigurer maskinens vertsnavn som "proxy" og root-passord som " " (uten anførselstegn). Vent til installasjonen er fullført, og start deretter systemet på nytt.

Den installerte versjonen av CentOS har vanligvis ikke nettverkstilkobling aktivert. For å aktivere nettverkstilgang, må vi utføre følgende.

  1. Tildel en statisk IP-adresse på 192.168.1.2 med nettverksmaske 255.255.255.0 til vår proxy-server ved å endre oppstartsskript / etc / sysconfig / nettverksskript / ifcfg-eth0 . Åpne den og legg til disse linjene:
     BOOTPROTO = statisk 
     Nettmasken = 255.255.255.0 
     IPaddr = 192.168.1.2 
     ONBOOT = yes 
  2. Angi standard gateway-innstillinger i / etc / sysconfig / nettverkskonfigurasjonsfil ved å legge til denne linjen:
     GATEWAY = 192.168.1.1 
  3. Juster innstillinger for DNS-løsning i /etc/resolv.conf ved å legge til IP-adressen til DNS-serveren som kjører på ruteren:
     navneserver 192.168.1.1 

Start nettverksundersystemet ditt ved å skrive /etc/init.d/network omstart i rotterminalen eller bare ved å starte serveren på nytt. Etter omstart, bekreft at nettverket fungerer riktig ved å skrive inn terminalen (det skal ikke være noen feil i utgangene på disse kommandoene):

 $ ping -c 3 192.168.1.1 
 $ nslookup google.com 

Før vi installerer ytterligere, anbefales det å oppdatere det nylig installerte systemet med de nyeste sikkerhetsoppdateringene som kan ha kommet ut etter at ISO har blitt utgitt. Så skriv inn yum-oppdatering i rotterminalen og start serveren på nytt etter at oppdateringen er fullført.

Sett opp blekksprut på proxy-server

Vi vil bruke blekksprut som hurtigbufring og filtrering av proxy som kjører på vår Proxy Server. For å installere versjonen av blekksprut som følger med 6.2 CentOS distribusjonstype yum, installer blekksprut i rotterminalen. Blekksprut og alle relaterte pakker og avhengigheter lastes ned fra Internett og installeres automatisk.

Gjør at Squid proxy-tjenesten starter automatisk på systemstart ved å skrive chkconfig blekksprut på . Start serveren din på nytt, eller bare start Squid for første gang manuelt med service blekksprutstart .

Det eneste du må gjøre er å la de eksterne brukerne fra hjemmenettverket få tilgang til blekksprut. Åpne konfigurasjonsfilen /etc/squid/squid.conf, og legg til linjen synlig_hostnavn-proxy . Sjekk også at http_access tillater localnet og acl localnet src 192.168.0.0/16 er til stede i konfigurasjonsfilen.

Start blekksprut på nytt ved å skrive inn tjenesten blekksprut omstart . Kontroller at Squid kjører riktig ved å peke brukerleseren til IP-adressen til Proxy Server (192.168.1.2) og surfe til noen av favorittnettstedene dine.

MERKNAD: Det kan hende du må justere brannmurinnstillingene i CentOS for å la proxy-brukere koble seg til port 3128 på Proxy Server. Bruk kommandoene system-config-firewall-tui eller iptables for å gjøre det. En god ide vil være å gi tilgang også til port 80, da vi vil bruke denne porten til å administrere QuintoLabs Content Security gjennom Web UI som beskrevet senere.

Sett opp QuintoLabs Content Security

Neste trinn er å installere Content Security for Squid fra QuintoLabs (jeg vil referere til det som qlproxy videre i tekst). For de som ikke vet det, er QuintoLabs Content Security en ICAP-demon / URL-omskriver som integreres med eksisterende Squid-proxy-server og gir rik innholdsfiltreringsfunksjonalitet for å desinfisere webtrafikk som går over i interne hjem / bedriftsnettverk. Det kan brukes til å blokkere ulovlige eller potensielt skadelige filnedlastinger, fjerne irriterende reklame, forhindre tilgang til forskjellige kategorier på nettstedene og blokkere ressurser med eksplisitt innhold (dvs. forby eksplisitt og voksent innhold).

MERKNAD: Det er andre verktøy foruten qlproxy som har nesten samme funksjonalitet. Noen av de velkjente er SquidGuard (SG) og DansGuardian (DG). Selv om disse verktøyene er i orden fra det teoretiske perspektivet, må du installere begge for å få samme funksjonalitet som qlproxy. SG kjører som URL Rewriter og DG er til og med som en egen proxy. Den støtter heller ikke SMP-behandling, avhengig av en ressurseffektiv prosess-per-tilkoblingsservermodell, noe som fører til eksploderte krav til for eksempel URL-blokkdatabase. Det er også et problem å knytte SG og DG sammen, da de har forskjellige konfigurasjonsdirektiver og stort sett er uavhengige av hverandre, og tvinger administratoren til å se på to forskjellige steder når han bare trenger å justere en filtreringspolicy.

Vi bruker versjon 2.0 av qlproxy, utgitt denne måneden. Det mest fremtredende trekk ved den utgivelsen er en policybasert nettfiltrering der brukere av proxy-enheten er organisert i flere grupper med forskjellige strenghetsnivåer.

Som standard kommer qlproxy med tre policyer forhåndsinstallert. Strenge retningslinjer inneholder innstillinger for nettfilter som er satt på maksimal nivå og er ment å beskytte mindreårige og K-12-elever mot upassende innhold på Internett. Avslappet retningslinje blokkerer bare overdreven annonsering og er passende å brukes av nettverksadministratorer, lærere og alle de som ikke trenger filtrert tilgang til nettet, men ønsker å unngå de fleste annonser. Den siste gruppen er standard og inneholder mindre begrensende innstillinger for webfiltrering som er egnet for normal nettlesing, men uten eksplisitt vokseninnhold vist.

Det gode med dette er at du står fritt til å utforme retningslinjene selv hvis du synes de forhåndsdefinerte retningslinjene ikke passer for nettverksmiljøet ditt.

For å installere Content Security 2.0, må vi hente CentOS / RedHat RPM-pakken manuelt fra QuintoLabs nettsted og laste opp pakken til Proxy Server ved hjelp av scp. En annen måte er å skrive følgende kommandoer i rotterminalen til Proxy Server direkte (som en linje):

 #curl http://quintolabs.com/qlproxy/binaries/2.0.0/qlproxy-2.0.0-bb01d.i386.rpm>qlproxy-2.0.0-bb01d.i386.rpm 

Etter at nedlastingen er fullført (ca. 21MB), kjører du følgende kommando for å installere den nedlastede pakken og alle dens avhengigheter (merk at pakken kommer i i386-smak, men yum tar seg av riktig installasjon på x86_64-arkitekturer):

 #yum localinstall qlproxy-2.0.0-bb01d.i386.rpm 

Installasjonssjefen for yum kjører en stund, og programmet blir installert i / opt / quintolabs / qlproxy (binærprogrammer), / var / opt / quintolabs / qlproxy (forskjellige logger og databasefilteringsdatabaser), og / etc / opt / quintolabs / qlproxy (konfigurasjon).

MERKNAD: Denne HowTo antar at du har SELinux deaktivert på maskinen din. For spesifikke merknader som vurderer SELinux-basert installasjon av qlproxy, se nettstedet og prøve SELinux-policyen installert i / opt / quintolabs / qlproxy / usr / share / selinux . For å deaktivere SELinux, angi SELINUX = deaktivert i / etc / selinux / config og start på nytt.

Integrer blekksprut og innholdssikkerhet

QuintoLabs Content Security kan integreres med blekksprut på to forskjellige måter - som ICAP-server og som URL-omskriver. Det anbefales å bruke ICAP-integrasjon da den gir tilgang til all HTTP-trafikk som passerer gjennom blekksprut og lar qlproxy utføre full forespørsel og responsfiltrering (ICAP støttes i blekksprutversjon 3 og oppover)

README-filen i / etc / opt / quintolabs / qlproxy- mappen inneholder detaljerte instruksjoner om hvordan du utfører integrasjon med Squid på forskjellige plattformer (Debian, Ubuntu, RedHat og til og med Windows). For å integrere den med Squid som kjører på CentOS, må vi legge til følgende linjer i /etc/squid/squid.conf konfigurasjonsfil:

 icap_enable på 
 icap_preview_enable på 
 icap_preview_size 4096 
 icap_persistent_connections på 
 icap_send_client_ip på 
 icap_send_client_username på 
 icap_service qlproxy1 reqmod_precache bypass = 0 icap: //127.0.0.1: 1344 / reqmod 
 icap_service qlproxy2 respmod_precache bypass = 0 icap: //127.0.0.1: 1344 / respmod 
 tilpasning_tilgang qlproxy1 tillate alle 
 tilpasning_tilgang qlproxy2 tillate alle 

Start Squid på nytt ved å skrive tjenesten blekksprut på nytt og prøve å surfe til favorittnettstedene dine og se hvor mange annonser som er blokkert. En annen nyttig test er å gå til eicar.com-nettstedet og prøve å laste ned et eksempel på et kunstig eicar.com-virus for å se at * .com-filer er blokkert av nedlastingsfilteret.

Standardinstallasjon av Content Security er ganske brukbar utenfor boksen, men for å justere den etter nettverkskravene våre som er beskrevet tidligere, må vi utføre noen konfigurasjonsendringer som beskrevet nedenfor (alle stier er i forhold til / etc / opt / quintolabs / qlproxy / policyer ):

  1. Sett alle normale brukere i retningslinjene for streng filtrering ved å legge til IP-adressene deres (eller brukernavn hvis din blekksprut utfører autentisering) til filen streng / members.conf.
  2. Sett alle maktbrukere i avslappet filtreringspolicy ved å legge til IP-adressene eller brukernavnet til den avslappede / members.conf-filen.
  3. Aktiver utvidede AdBlock-abonnement for blokkering av engelske, tyske og russiske annonser i blocks_ads.conf-konfigurasjonsfilen for begge retningslinjene. Blokker også vanlige websporingsmotorer ved å kommentere EasyPrivacy-abonnement i de samme filene.
  4. Øk nivået for voksenblokkerende heuristikker til "høyt" i filen streng / block_adult_sites.conf. Selv om det kan føre til overdreven falsk blokkering, er det alltid muligheten for å legge feilblokkerte nettsteder til en unntaksliste.
  5. UrlBlock-modulen som bruker en samfunnsutviklet database med kategoriserte domener feil plasserer blogspot.com i en voksenkategori ... så vi vil legge den til unntakslisten for en avslappet policy i avslappede / unntak.konf for å kunne lese blogger.
  6. Når vi vet at ormer, trojanere og annen malware-relatert programvare ofte kobles til verden ved numeriske IP-adresser i stedet for normale vertsnavn, vil vi sette en magisk regexp url = http: // \ d + \. \ D + \. \ D + \. \ D + /.* i streng / block_sites_by_name.conf-fil for å blokkere tilgang til nettsteder via IP.

Gi nå en omstartkommando for å gjøre qlproxyd daemon på nytt om konfigurasjonen /etc/init.d/qlproxy omstart.

Sett opp nettbruksgrensesnitt for innholdssikkerhet med Apache

QuintoLabs Content Security inneholder et minimalt webgrensesnitt som lar deg se gjeldende programkonfigurasjon, se rapporter om bruksaktivitet og programlogger fra en ekstern vert ved hjelp av favorittleseren din. Web UI er skrevet ved hjelp av Django Python Framework og integreres med Apache ved å bruke mod_wsgi distribuert i virtualisert Python-miljø (for å minimere pakkeavhengighet).

For å installere Apache, skriver du følgende i rotterminalen yum install httpd . Gjør Apache-tjenesten automatisk start på systemstart ved å skrive chkconfig httpd på . Start maskinen på nytt, eller bare start Apache for første gang manuelt ved å skrive inn httpd start for tjenesten . Deretter installerer du flere Apache- og Python-moduler ved å skrive inn rotterminalen:

 #yum installer mod_wsgi python-setuptools 
 #easy_install virtualenv 
 #cd / var / opt / quintolabs / qlproxy / www 
 #virtualenv - ingen-side-pakker qlproxy_django 
 #. / qlproxy_django / bin / easy_install django 
 Integrer Web UI med Apache ved å legge til følgende linjer i konfigurasjonsfilen /etc/httpd/httpd.conf: 
 Servernavn proxy.lan 
 ServerAdmin 
 LogLevel-info 
 ErrorLog /var/log/httpd/proxy.lan-error.log 
 CustomLog /var/log/httpd/proxy.lan-access.log kombinert 
 # aliaser til statiske filer (må komme før mod_wsgi-innstillingene) 
 Alias ​​/ statisk / / var / opt / quintolabs / qlproxy / www / qlproxy / static / 
 Alias ​​/ omdirigere / / var / opt / quintolabs / qlproxy / www / qlproxy / omdirigere / 
 # mod_wsgi-innstillinger 
 WSGIDaemonProcess proxy.lan display-name =% {GROUP} 
 WSGIProcessGroup proxy.lan 
 WSGIScriptAlias ​​/ /var/opt/quintolabs/qlproxy/www/qlproxy/qlproxy.wsgi 
 Ordre nekte, tillat 
 Tillat fra alle 

Legg til følgende linje i /etc/httpd/conf.d/wsgi.conf for å la mod_wsgi kjøre i daemon-modus:

 WSGISocketPrefix / var / run / wsgi 
MERKNAD : Hvis du får en "Tilgang nektet" -feilside som prøver å få tilgang til http: // localhost, må du sjekke om SELinux-tillatelser kan forhindre tilgang til / var / opt / quintolabs / qlproxy / www / qlproxy / katalog for httpd-prosess.

Etter omstart av Apache navigerer du til http://192.168.1.2/qlproxy for å se programkonfigurasjon, logger og genererte rapporter.

Avsluttende trinn

Det eneste som er igjen er å peke nettverksbrukere til Proxy Server. Det er flere muligheter til å gjøre det automatisk (tenk WPAD), men for testformål bør manuell proxy-konfigurasjon være mer enn nok. Så pek nettleseren til proxy på 192.168.1.4 port 3128, surfe til noen favorittnettsteder og se forskjellen: IP-adresser i nettadresser er blokkert, eksplisitt innholdssider for voksne er forbudt. RAM- og CPU-bruk på serveren er minimal, surfingopplevelsen er akseptabel. Systemet oppdateres automatisk en gang om dagen for den siste URL-blokkeringslisten og AdBlock-abonnementene og krever minimalt med ekstra vedlikehold.

For mer informasjon se følgende ressurser:

  • http://www.centos.org
  • http://www.squid-cache.org
  • http://www.quintolabs.com/qlicap_info.php
  • http://issues.quintolabs.com/trac/quintolabs_qlicap/wiki/QlicapDocs

Forfatter Rafael Akchurin er en av grunnleggerne, støtteingeniører og evangelist for QuintoLabs.

© Copyright 2021 | pepebotifarra.com