Konfiguriranje proxy poslužitelja Squid s ograničenim pristupom i postavljanje klijenata za upotrebu proxyja - 5. dio


Ovlašteni inženjer Linux Foundation vješt je stručnjak koji ima stručnost za instaliranje, upravljanje i rješavanje problema mrežnih usluga u Linux sustavima i zadužen je za dizajn, implementaciju i kontinuirano održavanje sustava- široka arhitektura.

Predstavljamo vam Linux Foundation Certification Program.

U 1. dijelu ove serije pokazali smo kako instalirati squid, proxy poslužitelj za predmemoriranje za web klijente. Molimo pogledajte taj post (donja veza) prije nego što nastavite ako još niste instalirali lignje u svoj sustav.

  1. 1. dio - Instalirajte mrežne usluge i konfiguriranje automatskog pokretanja prilikom pokretanja

U ovom ćemo vam članku pokazati kako konfigurirati proxy poslužitelj Squid kako bi se odobrio ili ograničio pristup Internetu i kako konfigurirati http klijent ili web preglednik za upotrebu tog proxy poslužitelja.

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

Sjetimo se da je, jednostavno rečeno, web proxy poslužitelj posrednik između jednog (ili više) klijentskih računala i određenog mrežnog resursa, a najčešći je pristup Internetu. Drugim riječima, proxy poslužitelj povezan je s jedne strane izravno s Internetom (ili s usmjerivačem koji je povezan s Internetom), a s druge strane s mrežom klijentskih računala koja će putem njega pristupiti World Wide Webu.

Možda se pitate, zašto bih želio dodati još jedan dio softvera u svoju mrežnu infrastrukturu?

1. Squid sprema datoteke iz prethodnih zahtjeva kako bi ubrzao buduće prijenose . Na primjer, pretpostavimo da client1 preuzme CentOS-7.0-1406-x86_64-DVD.iso s Interneta. Kada client2 zatraži pristup istoj datoteci, lignje mogu datoteku prenijeti iz svoje predmemorije, umjesto da je ponovno preuzmu s Interneta. Kao što pretpostavljate, ovu značajku možete koristiti za ubrzavanje prijenosa podataka u mreži računala koja zahtijevaju česta ažuriranja neke vrste.

2. ACL-ovi ( Popisi kontrole pristupa ) omogućuju nam da ograničimo pristup web mjestima i/ili nadgledamo pristup po korisniku. Možete ograničiti pristup na primjer prema danu u tjednu ili dobu dana ili domeni.

3. Zaobilaženje web filtara omogućeno je upotrebom web proxyja kojem se upućuju zahtjevi i koji klijentu vraća traženi sadržaj, umjesto da ga klijent izravno traži na Internetu.

Na primjer, pretpostavimo da ste prijavljeni u client1 i želite pristupiti web lokaciji www. www.facebook.com putem usmjerivača vaše tvrtke. Budući da web mjesto mogu blokirati pravila vaše tvrtke, umjesto toga možete se povezati s web proxy poslužiteljem i zatražiti pristup web lokaciji www.facebook.com . Udaljeni sadržaj vam se zatim vraća putem web proxy poslužitelja, zaobilazeći pravila blokiranja usmjerivača vaše tvrtke.

Konfiguriranje lignji - osnove

Shema kontrole pristupa web proxy poslužitelja Squid sastoji se od dvije različite komponente:

  1. ACL elementi su direktivne linije koje započinju riječju " acl " i predstavljaju vrste ispitivanja koja se provode prema bilo kojoj transakciji zahtjeva.
  2. Pravila popisa za pristup sastoje se od akcije dozvoli ili zabrani nakon čega slijedi niz ACL elemenata i koriste se za označavanje radnje ili se za određeni zahtjev mora izvršiti ograničenje. Provjeravaju se redom i pretraživanje popisa prestaje čim se podudara jedno od pravila. Ako pravilo ima više ACL elemenata, ono se provodi kao logička operacija AND (svi ACL elementi pravila moraju se podudarati kako bi se pravilo podudaralo).

Glavna datoteka za konfiguraciju Squid-a je /etc/squid/squid.conf , koja iznosi ~ 5000 redaka jer uključuje i konfiguracijske smjernice i dokumentaciju. Iz tog ćemo razloga stvoriti novu datoteku squid.conf sa samo linijama koje uključuju direktive o konfiguraciji radi naše udobnosti, izostavljajući prazne ili komentirane retke. Da bismo to učinili, poslužit ćemo se sljedećim naredbama.

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

I onda,

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

OR

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

Sada otvorite novostvorenu datoteku squid.conf i potražite (ili dodajte) sljedeće ACL elemente i popise pristupa.

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

Dva gornja retka predstavljaju osnovni primjer upotrebe ACL elemenata.

  1. Prva riječ, acl , označava da je ovo linija direktiva ACL elementa.
  2. Druga riječ, localhost ili localnet , navodi naziv za direktivu.
  3. Treća riječ, src , u ovom je slučaju vrsta ACL elementa koja se koristi za predstavljanje IP adrese ili raspona adresa klijenta. Možete odrediti jednog hosta prema IP-u (ili imenu hosta, ako imate implementiranu nekakvu DNS rezoluciju) ili prema mrežnoj adresi.
  4. Četvrti je parametar argument filtriranja koji je " uložen " u direktivu.

Dva reda u nastavku su pravila popisa pristupa i predstavljaju eksplicitnu provedbu prethodno spomenutih direktiva ACL U nekoliko riječi naznačuju da http pristup treba odobriti ako zahtjev dolazi iz lokalne mreže ( localnet ) ili iz localhost . Konkretno, koja je dopuštena lokalna mreža ili adrese lokalnog hosta? Odgovor je: oni navedeni u smjernicama localhost i localnet.

http_access allow localnet
http_access allow localhost

U ovom trenutku možete ponovno pokrenuti Squid kako biste primijenili promjene na čekanju.

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

a zatim konfigurirajte klijentski preglednik u lokalnoj mreži ( 192.168.0.104 u našem slučaju) za pristup Internetu putem vašeg proxyja na sljedeći način.

1. Idite na izbornik Uredi i odaberite opciju Postavke .

2. Kliknite Napredno , zatim karticu Mreža i na kraju Postavke ...

3. Označite Ručna konfiguracija proxyja i unesite IP adresu proxy poslužitelja i priključka na kojem sluša veze.

Imajte na umu da Squid prema zadanim postavkama sluša na priključku 3128 , ali to ponašanje možete nadjačati uređivanjem pravila popisa pristupa koje započinje s http_port ( zadana vrijednost glasi http_port 3128 ).

4. Kliknite U redu da biste primijenili promjene i spremni ste.

Sada možete provjeriti pristupa li vaš klijent lokalne mreže Internetu putem vašeg proxyja na sljedeći način.

1. U klijentu otvorite terminal i unesite,

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

Ta će naredba prikazati trenutnu IP adresu vašeg klijenta ( 192.168.0.104 na sljedećoj slici).

2. U klijentu koristite web preglednik za otvaranje bilo kojeg web mjesta (u ovom slučaju linux-console.net ).

3. Na poslužitelju pokrenite.

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

i dobit ćete prikaz uživo zahtjeva koji se poslužuju putem Squid .

Ograničavanje pristupa od strane klijenta

Sada pretpostavimo da želite izričito zabraniti pristup toj određenoj IP adresi klijenta, a da pritom zadržite pristup za ostatak lokalne mreže.

1. Definirajte novu ACL direktivu na sljedeći način (nazvao sam je ubuntuOS , ali možete je imenovati kako god želite).

acl ubuntuOS src 192.168.0.104

2. Dodajte direktivu ACL na već postojeći popis lokalnog pristupa , ali predznakom uzvika. To znači, " Omogućite pristup Internetu klijentima koji odgovaraju Localnet ACL direktivi, osim onoj koja odgovara ubuntuOS direktivi ".

http_access allow localnet !ubuntuOS

3. Sada moramo ponovno pokrenuti Squid kako bismo primijenili promjene. Tada, ako pokušamo pregledati bilo koju stranicu, ustanovit ćemo da je pristup sada odbijen.

Konfiguriranje lignji - fino podešavanje

Da bismo ograničili pristup Squidu prema domeni, upotrijebit ćemo ključnu riječ dstdomain u direktivi ACL , kako slijedi.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Gdje je zabranjene_domene obična tekstualna datoteka koja sadrži domene kojima želimo odbiti pristup.

Konačno, moramo odobriti pristup Squidu za zahtjeve koji se ne podudaraju s gornjom smjernicom.

http_access allow localnet !forbidden

Ili ćemo možda htjeti dopustiti pristup tim web mjestima samo tijekom određenog doba dana ( 10:00 do 11:00 am ) samo u ponedjeljak (M) , srijeda (Z) i petak (F) .

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

U suprotnom, pristup tim domenama bit će blokiran.

Lignje podržavaju nekoliko mehanizama za provjeru autentičnosti (Basic, NTLM, Digest, SPNEGO i Oauth) i pomagače (SQL baza podataka, LDAP, NIS, NCSA, da nabrojimo samo neke). U ovom uputstvu koristit ćemo osnovnu provjeru autentičnosti s NCSA .

U datoteku /etc/squid/squid.conf dodajte sljedeće retke.

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

Napomena: U CentOS 7, NCSA dodatak za lignje može se naći u/usr/lib64/squid/basic_nsca_auth, pa ga u skladu s tim promijenite u gornjem retku.

Nekoliko pojašnjenja:

  1. Squidu moramo reći koji pomoćni program za provjeru autentičnosti koristiti s direktivom auth_param navodeći naziv programa (najvjerojatnije, /usr/lib/squid/ncsa_auth ili/usr/lib64/squid/basic_nsca_auth), plus sve opcije naredbenog retka (/etc/squid/passwd u ovom slučaju) ako je potrebno.
  2. Datoteka /etc/squid/passwd kreira se putem htpasswd , alata za upravljanje osnovnom autentifikacijom kroz datoteke. Omogućit će nam dodavanje popisa korisničkih imena (i njihovih odgovarajućih lozinki) kojima će biti dopušteno korištenje Squida.
  3. vjerodostojnost 30 minuta zahtijevat će unos vašeg korisničkog imena i lozinke svakih 30 minuta (ovaj vremenski interval možete odrediti i sa satima).
  4. osjetljivo na mala i velika slova on označava da su korisnička imena i lozinke osjetljiva na velika i mala slova.
  5. carstvo predstavlja tekst dijaloškog okvira za provjeru autentičnosti koji će se koristiti za autentifikaciju u lignje.
  6. Konačno, pristup se dodjeljuje samo kada provjera autentičnosti proxyja ( proxy_auth OBAVEZNA ) uspije.

Pokrenite sljedeću naredbu za stvaranje datoteke i dodavanje vjerodajnica za korisnika gacanepa (izostavite oznaku -c ako datoteka već postoji).

# htpasswd -c /etc/squid/passwd gacanepa

Otvorite web preglednik na klijentskom stroju i pokušajte pregledavati bilo koju web stranicu.

Ako provjera autentičnosti uspije, pristup se dodjeljuje zatraženom resursu. U suprotnom, pristup će biti odbijen.

Korištenje predmemorije za ubrzavanje prijenosa podataka

Jedna od prepoznatljivih značajki Squida je mogućnost predmemoriranja resursa traženih s weba na disk kako bi se ubrzali budući zahtjevi za tim objektima od strane istog klijenta ili drugih.

Dodajte sljedeće smjernice u datoteku squid.conf .

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

Nekoliko pojašnjenja gore navedenih smjernica.

  1. ufs je format za pohranu lignji.
  2. /var/cache/squid je direktorij najviše razine u kojem će se pohraniti datoteke predmemorije. Ovaj direktorij mora postojati i Squid ga može pisati (Squid NEĆE stvoriti ovaj direktorij umjesto vas).
  3. 1000 je iznos (u MB) koji se koristi u ovom direktoriju.
  4. 16 je broj poddirektorijuma 1. razine, dok je 256 broj poddirektorijuma 2. razine unutar /var/spool/squid .
  5. Direktiva max_object_size određuje maksimalnu veličinu dopuštenih objekata u predmemoriji.
  6. refresh_pattern govori Squidu kako se nositi s određenim vrstama datoteka (u ovom slučaju .mp4 i .iso ) i koliko dugo treba pohranite tražene objekte u predmemoriju (2880 minuta = 2 dana).

Prva i druga 2880 donja su, odnosno gornja granica, koliko dugo će se objekti bez eksplicitnog vremena isteka smatrati nedavnima, pa će ih zato posluživati predmemorija, dok 0% je postotak starosti predmeta (vrijeme od zadnje izmjene) da će se svaki objekt bez izričitog vremena isteka smatrati nedavnim.

Prvi klijent ( IP 192.168.0.104 ) preuzima datoteku 71 MB .mp4 za 2 minute i 52 sekunde.

Drugi klijent ( IP 192.168.0.17 ) preuzima istu datoteku za 1,4 sekunde!

To je zato što je datoteka poslužena iz predmemorije lignji (naznačeno TCP_HIT/200 ) u drugom slučaju, za razliku od prvog stupnja, kada je preuzeta izravno s Internet (predstavlja TCP_MISS/200 ).

Ključne riječi HIT i MISS , zajedno s kodom odgovora 200 http , označavaju da je datoteka oba puta uspješno poslužena, ali je predmemorija HIT odnosno Propušteno. Kada predmemorija iz nekog razloga ne može dostaviti zahtjev, Squid ga pokušava poslužiti s Interneta.

Zaključak

U ovom smo članku razgovarali o tome kako postaviti proxy web predmemoriranje lignji . Proxy poslužitelj možete koristiti za filtriranje sadržaja pomoću odabranih kriterija, a također i za smanjenje kašnjenja (budući da se identični dolazni zahtjevi poslužuju iz predmemorije, koja je bliža klijentu od web poslužitelja koji zapravo poslužuje sadržaj, što rezultira bržim prijenosa podataka) i mrežnog prometa (smanjenje količine korištene propusnosti, što štedi novac ako plaćate promet).

Možda ćete htjeti potražiti daljnju dokumentaciju na web mjestu Squid (provjerite i wiki), ali ne ustručavajte se kontaktirati nas ako imate pitanja ili komentare. Bit će nam više nego drago čuti vas!