Konfiguration af blæksprutte-proxyserver med begrænset adgang og opsætning af klienter til at bruge proxy - del 5


En Linux Foundation Certified Engineer er en dygtig professionel, der har ekspertisen til at installere, administrere og fejlfinde netværkstjenester i Linux-systemer og har ansvaret for design, implementering og løbende vedligeholdelse af systemet- bred arkitektur.

Introduktion til Linux Foundation-certificeringsprogrammet.

I del 1 i denne serie viste vi, hvordan du installerer blæksprutter, en proxycaching-server til webklienter. Se dette indlæg (linket nedenfor), inden du fortsætter, hvis du endnu ikke har installeret blæksprutte på dit system.

  1. Del 1 - Installer netværkstjenester og konfiguration af automatisk opstart ved opstart

I denne artikel viser vi dig, hvordan du konfigurerer Squid-proxyserveren for at give eller begrænse internetadgang, og hvordan du konfigurerer en http-klient eller webbrowser til at bruge denne proxyserver.

Operating System :	Debian Wheezy 7.5
IP Address 	 :	192.168.0.15
Hostname	 :	dev2.gabrielcanepa.com.ar
Operating System :	Ubuntu 12.04
IP Address 	 :	192.168.0.104 
Hostname	 :	ubuntuOS.gabrielcanepa.com.ar
Operating System :	CentOS-7.0-1406
IP Address 	 :	192.168.0.17 
Hostname	 :	dev1.gabrielcanepa.com.ar

Lad os huske på, at simpelt sagt er en web-proxyserver en mellemled mellem en (eller flere) klientcomputere og en bestemt netværksressource, hvor den mest almindelige er adgang til Internettet. Med andre ord er proxyserveren forbundet på den ene side direkte til Internettet (eller til en router, der er forbundet til Internettet) og på den anden side til et netværk af klientcomputere, der får adgang til World Wide Web via det.

Du undrer dig måske over, hvorfor vil jeg tilføje endnu et stykke software til min netværksinfrastruktur?

1. Blæksprutte gemmer filer fra tidligere anmodninger for at fremskynde fremtidige overførsler . Antag for eksempel, at klient1 downloader CentOS-7.0-1406-x86_64-DVD.iso fra internettet. Når client2 anmoder om adgang til den samme fil, kan blæksprutter overføre filen fra dens cache i stedet for at downloade den igen fra Internettet. Som du kan gætte, kan du bruge denne funktion til at fremskynde dataoverførsler i et netværk af computere, der kræver hyppige opdateringer af en slags.

2. ACL'er ( Adgangskontrolister ) giver os mulighed for at begrænse adgangen til websteder og/eller overvåge adgangen pr. Bruger. Du kan begrænse adgangen baseret på f.eks. Ugedag eller tidspunkt på dagen eller domæne.

3. Omgå webfiltre er muliggjort ved hjælp af en webproxy, som anmodninger rettes til, og som returnerer anmodet indhold til en klient, i stedet for at klienten anmoder om det direkte til Internettet.

Antag for eksempel, at du er logget ind på klient1 og vil have adgang til www.facebook.com via din virksomheds router. Da webstedet muligvis er blokeret af din virksomheds politikker, kan du i stedet oprette forbindelse til en web-proxyserver og få det til at anmode om adgang til www.facebook.com . Fjernindhold returneres derefter til dig via web-proxyserveren igen og omgår din virksomheds routers blokeringspolitikker.

Konfiguration af blæksprutte - det grundlæggende

Adgangskontrolskemaet for Squid-web-proxyserveren består af to forskellige komponenter:

  1. ACL-elementerne er retningslinjer, der begynder med ordet " acl " og repræsenterer typer af tests, der udføres mod enhver anmodningstransaktion.
  2. adgangslistereglerne består af en tilladelse eller nægt handling efterfulgt af et antal ACL-elementer og bruges til at indikere hvilken handling eller begrænsning skal håndhæves for en given anmodning. De kontrolleres i rækkefølge, og listesøgning ophører, så snart en af reglerne er en match. Hvis en regel har flere ACL-elementer, implementeres den som en boolsk AND-handling (alle ACL-elementer i reglen skal være et match for at reglen skal være en match).

Blækspruttehovedkonfigurationsfil er /etc/squid/squid.conf , hvilket er ~ 5000 linjer, da den indeholder både konfigurationsdirektiver og dokumentation. Af den grund opretter vi en ny squid.conf -fil med kun de linjer, der indeholder konfigurationsdirektiver for vores bekvemmelighed og udelader tomme eller kommenterede linjer. For at gøre dette bruger vi følgende kommandoer.

# mv /etc/squid/squid.conf /etc/squid/squid.conf.bkp

Og så,

# grep -Eiv '(^#|^$)' /etc/squid/squid.conf.bkp

OR

# grep -ve ^# -ve ^$ /etc/squid/squid.conf.bkp > /etc/squid/squid.conf

Åbn nu den nyoprettede squid.conf fil, og se efter (eller tilføj) følgende ACL -elementer og adgangslister.

acl localhost src 127.0.0.1/32
acl localnet src 192.168.0.0/24

De to linjer ovenfor repræsenterer et grundlæggende eksempel på brugen af ACL -elementer.

  1. Det første ord, acl , indikerer at dette er en ACL-elementdirektivlinje.
  2. Det andet ord, localhost eller localnet , angiver et navn til direktivet.
  3. Det tredje ord, src i dette tilfælde, er en ACL-elementtype, der bruges til at repræsentere henholdsvis en klients IP-adresse eller adresseområde. Du kan angive en enkelt vært efter IP (eller værtsnavn, hvis du har implementeret en slags DNS-opløsning) eller efter netværksadresse.
  4. Den fjerde parameter er et filterargument, der er " tilført " til direktivet.

De to linjer nedenfor er adgangsliste regler og repræsenterer en eksplicit implementering af ACL -direktiverne, der er nævnt tidligere. Med få ord angiver de, at http-adgang skal gives, hvis anmodningen kommer fra det lokale netværk ( localnet ) eller fra localhost . Specifikt hvad er det tilladte lokale netværk eller lokale værtsadresser? Svaret er: dem, der er specificeret i localhost og localnet direktiverne.

http_access allow localnet
http_access allow localhost

På dette tidspunkt kan du genstarte Blæksprutte for at anvende eventuelle ventende ændringer.

# service squid restart 		[Upstart / sysvinit-based distributions]
# systemctl restart squid.service 	[systemd-based distributions]

og konfigurer derefter en klientbrowser i det lokale netværk ( 192.168.0.104 i vores tilfælde) til at få adgang til Internettet via din proxy som følger.

1. Gå til menuen Rediger , og vælg indstillingen Indstillinger .

2. Klik på Avanceret , derefter på fanen Netværk og til sidst på Indstillinger ...

3. Kontroller Manuel proxykonfiguration , og indtast proxyserverens IP-adresse og porten , hvor den lytter efter forbindelser.

Bemærk, at blæksprutter som standard lytter til port 3128 , men du kan tilsidesætte denne adfærd ved at redigere adgangsliste reglen, der begynder med http_port (ved som standard læses det http_port 3128 ).

4. Klik på OK for at anvende ændringerne, så er du klar.

Du kan nu kontrollere, at din lokale netværksklient har adgang til Internettet via din proxy som følger.

1. Åbn en terminal i din klient, og skriv,

# ip address show eth0 | grep -Ei '(inet.*eth0)'

Denne kommando viser den aktuelle IP-adresse på din klient ( 192.168.0.104 i det følgende billede).

2. I din klient skal du bruge en webbrowser til at åbne et givet websted ( linux-console.net i dette tilfælde).

3. Kør på serveren.

# tail -f /var/log/squid/access.log

og du får en live visning af anmodninger, der vises via blæksprutte .

Begrænsning af adgang fra klient

Antag nu, at du eksplicit vil nægte adgang til den pågældende klient-IP-adresse, mens du alligevel opretholder adgang for resten af det lokale netværk.

1. Definer et nyt ACL direktiv som følger (jeg har navngivet det ubuntuOS , men du kan navngive det, hvad du vil).

acl ubuntuOS src 192.168.0.104

2. Føj ACL -direktivet til listen localnet access , der allerede er på plads, men forud for det med et udråbstegn. Dette betyder, " Tillad internetadgang til klienter, der matcher localnet ACL-direktivet undtagen det, der matcher ubuntuOS-direktivet ".

http_access allow localnet !ubuntuOS

3. Nu skal vi genstarte blæksprutter for at anvende ændringer. Så hvis vi prøver at søge på et hvilket som helst sted, finder vi ud af, at adgang nægtes nu.

Konfigurering af blæksprutte - Finjustering

For at begrænse adgangen til blæksprutte efter domæne bruger vi nøgleordet dstdomain i et ACL -direktiv som følger.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Hvor forbudte_domæner er en almindelig tekstfil, der indeholder de domæner, som vi ønsker at nægte adgang til.

Endelig skal vi give adgang til Squid for anmodninger, der ikke svarer til ovenstående direktiv.

http_access allow localnet !forbidden

Eller måske vil vi kun give adgang til disse websteder i løbet af et bestemt tidspunkt på dagen ( 10:00 indtil 11:00 ) kun på mandag (M) , onsdag (W) og fredag (F) .

acl someDays time MWF 10:00-11:00
http_access allow forbidden someDays
http_access deny forbidden

Ellers vil adgang til disse domæner blive blokeret.

Blæksprutter understøtter flere godkendelsesmekanismer (Basic, NTLM, Digest, SPNEGO og Oauth) og hjælpere (SQL-database, LDAP, NIS, NCSA, for at nævne nogle få). I denne vejledning bruger vi grundlæggende godkendelse med NCSA .

Føj følgende linjer til din /etc/squid/squid.conf fil.

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive on
auth_param basic realm Squid proxy-caching web server for Tecmint's LFCE series
acl ncsa proxy_auth REQUIRED
http_access allow ncsa

Bemærk: I CentOS 7 kan NCSA-pluginet til blæksprutter findes i/usr/lib64/blæksprutte/basic_nsca_auth, så skift tilsvarende i ovenstående linje.

Et par afklaringer:

  1. Vi er nødt til at fortælle blæksprutte, hvilket godkendelseshjælperprogram der skal bruges med auth_param -direktivet ved at specificere navnet på programmet (sandsynligvis /usr/lib/blæksprutte/ncsa_auth eller/usr/lib64/squid/basic_nsca_auth) plus eventuelle kommandolinjemuligheder (/etc/squid/passwd i dette tilfælde) om nødvendigt.
  2. Filen /etc/squid/passwd oprettes via htpasswd , et værktøj til at styre grundlæggende godkendelse gennem filer. Det giver os mulighed for at tilføje en liste over brugernavne (og deres tilsvarende adgangskoder), der får lov til at bruge blæksprutte.
  3. credentialsttl 30 minutter kræver, at du indtaster dit brugernavn og din adgangskode hvert 30. minut (du kan også angive dette tidsinterval med timer).
  4. store og små bogstaver til angiver, at brugernavne og adgangskoder er store og små bogstaver.
  5. realm repræsenterer teksten i godkendelsesdialogen, der skal bruges til at godkende til blæksprutte.
  6. Endelig gives der kun adgang, når proxyautentificering ( proxy_auth kræves ) lykkes.

Kør følgende kommando for at oprette filen og tilføje legitimationsoplysninger til bruger gacanepa (udelad -c -flagget, hvis filen allerede findes).

# htpasswd -c /etc/squid/passwd gacanepa

Åbn en webbrowser i klientmaskinen, og prøv at søge på et givet sted.

Hvis godkendelse lykkes, gives adgang til den anmodede ressource. Ellers nægtes adgang.

Brug af cache til hurtigere dataoverførsel

En af Squids kendetegn er muligheden for at cache ressourcer, der anmodes om fra internettet til disk for at fremskynde fremtidige anmodninger fra disse objekter, enten af den samme klient eller andre.

Tilføj følgende direktiver i din squid.conf fil.

cache_dir ufs /var/cache/squid 1000 16 256
maximum_object_size 100 MB
refresh_pattern .*\.(mp4|iso) 2880

Et par præciseringer af ovenstående direktiver.

  1. ufs er blæksprutteopbevaringsformatet.
  2. /var/cache/blæksprutte er et katalog på øverste niveau, hvor cache-filer gemmes. Denne mappe skal eksistere og kunne skrives af Squid (Squid opretter IKKE denne mappe til dig).
  3. 1000 er det beløb (i MB), der skal bruges under denne mappe.
  4. 16 er antallet af underkataloger på 1. niveau, mens 256 er antallet af underkataloger på 2. niveau inden for /var/spool/blæksprutte .
  5. Direktivet maximum_object_size angiver den maksimale størrelse af tilladte objekter i cachen.
  6. refresh_pattern fortæller Squid, hvordan man skal håndtere specifikke filtyper ( .mp4 og .iso i dette tilfælde), og hvor længe det skal gem de ønskede objekter i cachen (2880 minutter = 2 dage).

Den første og den anden 2880 er henholdsvis nedre og øvre grænse for, hvor længe objekter uden en eksplicit udløbstid vil blive betragtet som nylige og dermed vil blive betjent af cachen, hvorimod 0% er procentdelen af objektenes alder (tid siden sidste ændring), som hvert objekt uden eksplicit udløbstid vil blive betragtet som nylig.

Første klient ( IP 192.168.0.104 ) downloader en 71 MB .mp4 fil på 2 minutter og 52 sekunder.

Anden klient ( IP 192.168.0.17 ) downloader den samme fil på 1,4 sekunder!

Det skyldes, at filen blev serveret fra blæksprutte-cache (angivet med TCP_HIT/200 ) i det andet tilfælde i modsætning til første instans, da den blev downloadet direkte fra Internettet (repræsenteret af TCP_MISS/200 ).

Nøgleordene HIT og MISS sammen med 200 http responskoden indikerer, at filen blev serveret med succes begge gange, men cachen var HIT og savnet henholdsvis. Når en anmodning af en eller anden grund ikke kan serveres af cachen, forsøger Squid at servere den fra Internettet.

Konklusion

I denne artikel har vi diskuteret, hvordan man opretter en blæksprutte-web-caching-proxy . Du kan bruge proxyserveren til at filtrere indhold ved hjælp af et valgt kriterium og også til at reducere ventetid (da identiske indgående anmodninger serveres fra cachen, som er tættere på klienten end den webserver, der faktisk serverer indholdet, hvilket resulterer i hurtigere dataoverførsler) og netværkstrafik (reducerer mængden af brugt båndbredde, hvilket sparer dig penge, hvis du betaler for trafik).

Du kan eventuelt henvise til Squid-webstedet for yderligere dokumentation (sørg også for at kontrollere wiki'en), men tøv ikke med at kontakte os, hvis du har spørgsmål eller kommentarer. Vi vil være mere end glade for at høre fra dig!