Konfiguriranje proxy strežnika Squid z omejenim dostopom in nastavitev odjemalcev za uporabo proxyja - 5. del


Linux Foundation Certified Engineer je usposobljen strokovnjak, ki ima strokovno znanje za namestitev, upravljanje in odpravljanje težav z omrežnimi storitvami v sistemih Linux ter je odgovoren za načrtovanje, izvajanje in tekoče vzdrževanje sistema - široka arhitektura.

Predstavljamo vam Linux Foundation Certification Program.

V 1. delu te serije smo pokazali, kako namestiti squid, strežnik za predpomnjenje proxy za spletne odjemalce. Pred nadaljevanjem si oglejte to objavo (spodnja povezava), če v svoj sistem še niste namestili lignjev.

  1. 1. del - Namestite omrežne storitve in konfigurirajte samodejni zagon ob zagonu

V tem članku vam bomo pokazali, kako konfigurirati proxy strežnik Squid za odobritev ali omejitev dostopa do interneta in kako konfigurirati odjemalca http ali spletnega brskalnika za uporabo tega proxy strežnika.

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

Spomnimo se, da je poenostavljeno povedano spletni strežnik posrednik posrednik med enim (ali več) odjemalskimi računalniki in določenim omrežnim virom, najpogostejši pa je dostop do interneta. Z drugimi besedami, proxy strežnik je na eni strani povezan neposredno z internetom (ali z usmerjevalnikom, ki je povezan z internetom), na drugi strani pa z omrežjem odjemalskih računalnikov, ki bodo prek njega dostopali do svetovnega spleta.

Morda se sprašujete, zakaj bi želel svoji omrežni infrastrukturi dodati še en del programske opreme?

1. Squid shrani datoteke s prejšnjih zahtev za pospešitev prihodnjih prenosov . Denimo, da client1 prenese CentOS-7.0-1406-x86_64-DVD.iso iz interneta. Ko client2 zahteva dostop do iste datoteke, lahko lignji prenesejo datoteko iz predpomnilnika, namesto da bi jo znova prenesli iz interneta. Kot ugibate, lahko to funkcijo uporabite za pospešitev prenosa podatkov v omrežju računalnikov, ki zahtevajo nekakšne pogoste posodobitve.

2. ACL-ji ( seznami za nadzor dostopa ) nam omogočajo, da omejimo dostop do spletnih mest in/ali nadzor dostopa za vsakega uporabnika. Dostop lahko omejite na primer na dan v tednu ali na uro ali domeno, na primer.

3. Obid spletnih filtrov je omogočen z uporabo spletnega strežnika proxy, za katerega se pošiljajo zahteve in ki stranki vrne zahtevano vsebino, namesto da bi jo stranka zahtevala neposredno v internetu.

Denimo, da ste prijavljeni v client1 in želite dostopati do www.facebook.com prek usmerjevalnika vašega podjetja. Ker spletno mesto morda blokirajo pravilniki vašega podjetja, se lahko namesto tega povežete s spletnim strežnikom proxy in zahtevate dostop do www.facebook.com . Oddaljena vsebina se vam nato znova vrne prek spletnega strežnika proxy, pri čemer se izognejo pravilnikom o blokiranju usmerjevalnika vašega podjetja.

Konfiguriranje lignjev - osnove

Shema nadzora dostopa spletnega proxy strežnika Squid je sestavljena iz dveh različnih komponent:

  1. Elementi ACL so direktivne vrstice, ki se začnejo z besedo » acl « in predstavljajo vrste preskusov, ki se izvajajo proti kateri koli transakciji zahteve.
  2. Pravila seznama dostopa so sestavljena iz dejanja dopusti ali zavrni , ki mu sledijo številni elementi ACL in se uporabljajo za označevanje dejanja ali je treba za določeno zahtevo uveljaviti omejitev. Preverjajo se po vrstnem redu in iskanje po seznamu se konča takoj, ko se ujema eno od pravil. Če ima pravilo več elementov ACL, je izvedeno kot logična operacija AND (vsi elementi pravila ACL se morajo ujemati, da se pravilo lahko ujema).

Glavna konfiguracijska datoteka Squid je /etc/squid/squid.conf , ki je dolga ~ 5000 vrstic, saj vključuje tako konfiguracijske smernice kot dokumentacijo. Iz tega razloga bomo ustvarili novo datoteko squid.conf , ki vsebuje samo vrstice, ki vsebujejo konfiguracijske direktive, zaradi česar pustimo prazne ali komentirane vrstice. Za to bomo uporabili naslednje ukaze.

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

In potem,

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

OR

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

Zdaj odprite novo ustvarjeno datoteko squid.conf in poiščite (ali dodajte) naslednje elemente ACL in sezname za dostop.

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

Zgornji vrstici predstavljata osnovni primer uporabe elementov ACL .

  1. Prva beseda, acl , pomeni, da gre za vrstico z navodili za element ACL.
  2. Druga beseda, localhost ali localnet , poda ime za direktivo.
  3. Tretja beseda, src , je v tem primeru vrsta elementa ACL, ki se uporablja za predstavitev naslova IP oziroma obsega naslovov odjemalca. Posameznega gostitelja lahko določite po IP-ju (ali imenu gostitelja, če imate implementirano nekakšno ločljivost DNS) ali po omrežnem naslovu.
  4. Četrti parameter je argument filtriranja, ki je\" doveden " v direktivo.

Spodnji vrstici sta pravili seznama dostopa in predstavljata izrecno izvajanje prej omenjenih direktiv ACL . V nekaj besedah pomenijo, da je treba odobriti http dostop , če zahteva prihaja iz lokalnega omrežja ( localnet ) ali iz localhost . Kaj natančno je dovoljeno lokalno omrežje ali naslovi lokalnega gostitelja? Odgovor je: tisti, ki so navedeni v direktivah localhost in localnet.

http_access allow localnet
http_access allow localhost

Na tej točki lahko znova zaženete Squid , da uveljavite morebitne spremembe v teku.

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

in nato v lokalnem omrežju konfigurirajte odjemalski brskalnik (v našem primeru 192.168.0.104 ) za dostop do interneta prek vašega proxyja, kot sledi.

1. Pojdite v meni Uredi in izberite možnost Nastavitve .

2. Kliknite Napredno , nato zavihek Omrežje in nazadnje Nastavitve ...

3. Preverite Ročna konfiguracija proxyja in vnesite naslov IP proxy strežnika in vrat , kjer posluša, ali obstajajo povezave.

Upoštevajte, da Squid privzeto posluša na vratih 3128 , vendar lahko to ravnanje preglasite z urejanjem pravila seznama dostopa , ki se začne s http_port (s privzeto se glasi http_port 3128 ).

4. Kliknite V redu , da uveljavite spremembe in ste pripravljeni.

Zdaj lahko preverite, ali odjemalec lokalnega omrežja dostopa do interneta prek vašega strežnika proxy, kot sledi.

1. V odjemalcu odprite terminal in vnesite,

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

Ta ukaz bo prikazal trenutni naslov IP vaše stranke ( 192.168.0.104 na naslednji sliki).

2. V odjemalcu s spletnim brskalnikom odprite katero koli določeno spletno stran (v tem primeru linux-console.net ).

3. V strežniku zaženite.

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

in v živo boste videli zahteve, ki so bile vročene prek Squid

Omejitev dostopa s strani odjemalca

Zdaj predpostavimo, da želite izrecno zavrniti dostop do tega določenega naslova IP, hkrati pa ohraniti dostop do preostalega lokalnega omrežja.

1. Določite novo direktivo ACL na naslednji način (poimenoval sem jo ubuntuOS , lahko pa jo poimenujete, kot želite).

acl ubuntuOS src 192.168.0.104

2. Na seznam dostop do lokalnega omrežja , ki je že na voljo, dodajte direktivo ACL , vendar jo označite s klicajem. To pomeni,\" Dovolite dostop do interneta odjemalcem, ki se ujemajo z direktivo ACL localnet, razen s tisto, ki se ujema z direktivo ubuntuOS ".

http_access allow localnet !ubuntuOS

3. Zdaj moramo znova zagnati Squid, da uporabimo spremembe. Potem, če poskusimo brskati do katerega koli spletnega mesta, bomo ugotovili, da je dostop zdaj zavrnjen.

Konfiguriranje lignjev - natančna nastavitev

Za omejitev dostopa do lignjev po domeni bomo uporabili ključno besedo dstdomain v direktivi ACL , kot sledi.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Kjer je prepovedane_domene navadna besedilna datoteka, ki vsebuje domene, do katerih želimo zavrniti dostop.

Nazadnje moramo omogočiti dostop do Squid za zahteve, ki se ne ujemajo z zgornjo direktivo.

http_access allow localnet !forbidden

Ali pa bomo morda želeli dostop do teh mest omogočiti le v določenem času dneva ( od 10.00 do 11.00 ure ) samo v ponedeljek (M) sreda (W) in petek (F) .

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

V nasprotnem primeru bo dostop do teh domen blokiran.

Lignji podpirajo več avtentikacijskih mehanizmov (Basic, NTLM, Digest, SPNEGO in Oauth) in pomočnike (baza podatkov SQL, LDAP, NIS, NCSA, če omenimo le nekatere). V tej vadnici bomo uporabili osnovno overjanje z NCSA .

V datoteko /etc/squid/squid.conf dodajte naslednje vrstice.

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

Opomba: V CentOS 7 lahko vtičnik NCSA za lignje najdete v/usr/lib64/squid/basic_nsca_auth, zato ga ustrezno spremenite v zgornji vrstici.

Nekaj pojasnil:

  1. Squidu moramo povedati, kateri pomožni program za preverjanje pristnosti naj uporablja z direktivo auth_param , tako da določimo ime programa (najverjetneje /usr/lib/squid/ncsa_auth ali/usr/lib64/squid/basic_nsca_auth) ter morebitne možnosti ukazne vrstice (/etc/squid/passwd v tem primeru).
  2. Datoteka /etc/squid/passwd je ustvarjena z orodjem za upravljanje osnovnega preverjanja pristnosti prek datotek htpasswd . Omogočil nam bo seznam uporabniških imen (in njihovih ustreznih gesel), ki bodo lahko uporabljali Squid.
  3. poverilnice 30 minut bo treba vsakih 30 minut vnesti uporabniško ime in geslo (ta časovni interval lahko določite tudi z urami).
  4. občutljivo na velike in male črke on pomeni, da so uporabniška imena in gesla občutljiva na velike in male črke.
  5. področje predstavlja besedilo pogovornega okna za preverjanje pristnosti, ki bo uporabljeno za preverjanje pristnosti lignjev.
  6. Nazadnje je dostop dovoljen le, ko avtentikacija proxy ( proxy_auth REQUIRED ) uspe.

Zaženite naslednji ukaz, da ustvarite datoteko in dodate poverilnice za uporabnika gacanepa (izpustite oznako -c , če datoteka že obstaja).

# htpasswd -c /etc/squid/passwd gacanepa

V odjemalskem računalniku odprite spletni brskalnik in poskusite brskati do katerega koli spletnega mesta.

Če preverjanje pristnosti uspe, se dovoli dostop do zahtevanega vira. V nasprotnem primeru bo dostop zavrnjen.

Uporaba predpomnilnika za pospešitev prenosa podatkov

Ena od značilnosti Squid-a je možnost predpomnjenja virov, ki jih splet zahteva na disk, da se pospešijo prihodnje zahteve teh predmetov bodisi istega odjemalca bodisi drugih.

V datoteko squid.conf dodajte naslednje smernice.

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

Nekaj pojasnil zgornjih direktiv.

  1. ufs je oblika shranjevanja lignjev.
  2. /var/cache/squid je imenik najvišje ravni, v katerem bodo shranjene datoteke predpomnilnika. Ta imenik mora obstajati in ga Squid lahko zapisuje (Squid tega imenika NE bo ustvaril za vas).
  3. 1000 je znesek (v MB) za uporabo v tem imeniku.
  4. 16 je število podimenikov 1. stopnje, medtem ko je 256 število podimenikov 2. stopnje znotraj /var/spool/squid .
  5. Direktiva maximum_object_size določa največjo dovoljeno velikost predmetov v predpomnilniku.
  6. refresh_pattern pove Squidu, kako ravnati z določenimi vrstami datotek (v tem primeru .mp4 in .iso ) in kako dolgo naj bo shranite zahtevane predmete v predpomnilnik (2880 minut = 2 dni).

Prva in druga 2880 sta spodnji in zgornji meji, koliko časa bodo predmeti brez izrecnega roka trajanja veljali za nedavne in jih bo zato predpomnilnik, medtem ko 0% je odstotek starosti predmetov (čas od zadnje spremembe), da se bo vsak predmet brez izrecnega časa poteka obravnaval kot nov.

Prvi odjemalec ( IP 192.168.0.104 ) prenese datoteko 71 MB .mp4 v 2 minutah in 52 sekundah.

Drugi odjemalec ( IP 192.168.0.17 ) prenese isto datoteko v 1,4 sekunde!

To je zato, ker je bila datoteka v drugem primeru v nasprotju s prvo stopnjo, ko je bila prenesena neposredno iz strežnika, posredovana iz predpomnilnika lignjev (označeno s TCP_HIT/200 ). internet (predstavlja TCP_MISS/200 ).

Ključni besedi HIT in MISS skupaj z odzivno kodo 200 http označujeta, da je bila datoteka obakrat uspešno vročena, vendar je bil predpomnilnik HIT zgrešeni oziroma zgrešeni. Če predpomnilnik iz nekega razloga ne more vročiti zahteve, ga Squid poskuša vročiti iz interneta.

Zaključek

V tem članku smo razpravljali o tem, kako nastaviti proxy spletnega predpomnilnika Squid . Proxy strežnik lahko uporabite za filtriranje vsebine z uporabo izbranih meril in tudi za zmanjšanje zakasnitve (saj se enake dohodne zahteve strežejo iz predpomnilnika, ki je bližje odjemalcu kot spletni strežnik, ki dejansko streže vsebino, kar povzroči hitrejše prenos podatkov) in omrežni promet (zmanjšanje količine uporabljene pasovne širine, kar prihrani denar, če plačujete za promet).

Za nadaljnjo dokumentacijo se boste morda želeli obrniti na spletno mesto Squid (preverite tudi wiki), vendar se obrnite na nas, če imate kakršna koli vprašanja ali komentarje. Z veseljem vas bomo slišali!