Squid Proxy Server mat limitéierten Zougang konfiguréieren a Clienten opsetzen fir Proxy ze benotzen - Deel 5


En Linux Foundation Certified Engineer ass e qualifizéierten Fachmann deen d'Expertise huet fir Netzwierkservicer a Linux Systemer z'installéieren, ze verwalten an ze léisen, a verantwortlech ass fir den Design, d'Implementatioun an de lafenden Ënnerhalt vum System- breet Architektur.

Aféierung vum Linux Foundation Certification Program.

Am Deel 1 vun dëser Serie hu mir gewisen wéi een Squid installéiert, e Proxy Caching Server fir Web Clienten. Gitt w.e.g. op dee Post (Link hei ënnendrënner) ier Dir weidergeet wann Dir nach net Squid op Ärem System installéiert hutt.

  1. Deel 1 - Installéiert Netzwierkservicer an Konfiguratioun vum Auto Startup beim Boot

An dësem Artikel wäerte mir Iech weisen wéi Dir de Squid Proxy Server konfiguréiert fir den Internetzougang z'erméiglechen oder ze beschränken, a wéi Dir en http Client oder Webbrowser konfiguréiert fir dee Proxy Server ze benotzen.

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

Loosst eis drun erënneren datt, an einfache Begrëffer, e Web Proxy Server en Tëschestatioun tëscht engem (oder méi) Client Computeren an enger bestëmmter Ressource Ressource ass, am meeschte verbreet Zougang zum Internet. An anere Wierder, de Proxy-Server ass op enger Säit direkt mam Internet verbonnen (oder mat engem Router, deen un den Internet verbonnen ass) an op der anerer Säit mat engem Netz vu Clientcomputer, déi Zougang zum World Wide Web duerch et kréien.

Dir kënnt Iech froen, firwat géif ech nach en anert Stéck Software op meng Netzwierkinfrastruktur addéieren?

1. Squid späichert Dateien vu fréiere Ufroe fir zukünfteg Transfere ze beschleunegen. Zum Beispill, ugeholl client1 downloads CentOS-7.0-1406-x86_64-DVD.iso vum Internet. Wann Client2 Zougang zu der selwechter Datei freet, kann Squid d'Datei aus sengem Cache transferéieren anstatt se erëm vum Internet erofzelueden. Wéi Dir kënnt roden, kënnt Dir dës Fonktioun benotzen fir Datenübertragungen an engem Netzwierk vu Computeren ze beschleunegen, déi dacks Updates vun iergendenger Aart erfuerderen.

2. ACLs (Access Control Lists) erlaaben eis den Zougang zu Websäiten ze beschränken, an/oder den Zougang pro Benotzerbasis ze iwwerwaachen. Dir kënnt den Zougang op Basis vum Dag vun der Woch oder Zäit vum Dag, oder Domain, zum Beispill beschränken.

3. Webfilter ëmgoen gëtt méiglech gemaach duerch d'Benotzung vun engem Webproxy, op deen Ufroe gemaach ginn an deen ugefrote Inhalter un e Client zréckginn, anstatt datt de Client en direkt un den Internet ufroen.

Zum Beispill, ugeholl datt Dir op Client1 ageloggt sidd a wëllt Zougang zu www.facebook.com iwwer de Router vun Ärer Firma. Zënter datt de Site duerch d'Politik vun Ärer Firma blockéiert ka ginn, kënnt Dir amplaz mat engem Web Proxy-Server verbannen an en Zougang zu www.facebook.com froen. Remote Inhalt gëtt dann erëm un Iech iwwer de Web Proxy Server zréckginn, andeems d'Blockéierungspolitike vun Ärer Firma Router ëmgoen.

Squid konfiguréieren - D'Basis

Den Zougangskontrollschema vum Squid Web Proxy Server besteet aus zwee verschiddene Komponenten:

  1. D'ACL Elementer sinn Direktivlinnen, déi mam Wuert acl ufänken a representéieren Typen vun Tester, déi géint all Ufrotransaktioun ausgefouert ginn.
  2. D'Zougangslëscht Regelen besteet aus enger erlaaben oder verleegnen Aktioun gefollegt vun enger Zuel vun ACL Elementer, a gi benotzt fir unzeginn wat fir eng Aktioun oder Limitatioun muss fir eng bestëmmten Ufro duerchgesat ginn. Si sinn an Uerdnung iwwerpréift, an Lëscht Sich terminéiert soubal ee vun de Regelen engem Match ass. Wann eng Regel méi ACL Elementer huet, gëtt se als boolesch AND Operatioun ëmgesat (all ACL Elementer vun der Regel mussen e Match sinn, fir datt d'Regel e Match ass).

D'Haaptkonfiguratiounsdatei vum Squid ass /etc/squid/squid.conf, wat ~5000 Zeilen laang ass well et souwuel Konfiguratiounsdirektiven an Dokumentatioun enthält. Aus deem Grond erstellen mir eng nei squid.conf Datei mat nëmmen de Linnen déi Konfiguratiounsdirektiven fir eis Kamoudheet enthalen, eidel oder kommentéiert Zeilen ausloossen. Fir dat ze maachen, benotze mir déi folgend Kommandoen.

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

An dann,

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

OR

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

Elo, öffnen déi nei erstallt squid.conf Datei, a kuckt no (oder fügen) déi folgend ACL Elementer an Zougangslëschten.

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

Déi zwou Zeilen hei uewen representéieren e Basisbeispill vun der Notzung vun ACL Elementer.

  1. Dat éischt Wuert, acl, weist datt dëst eng ACL Element Direktivlinn ass.
  2. Dat zweet Wuert, localhost oder localnet, spezifizéiert en Numm fir d'Direktiv.
  3. Déi drëtt Wuert, src an dësem Fall, ass en ACL Element Typ dee benotzt gëtt fir eng Client IP Adress respektiv Gamme vun Adressen ze representéieren. Dir kënnt en eenzegen Host per IP (oder Hostnumm, wann Dir eng Zort vun DNS-Resolutioun implementéiert hutt) oder duerch Netzwierkadress spezifizéieren.
  4. De véierte Parameter ass e Filterargument dat \gefüttert un d'Direktiv ass.

Déi zwou Zeilen hei drënner sinn Zougangslëscht Regelen a stellen eng explizit Ëmsetzung vun den ACL Direktiven vir, déi virdru genannt goufen. An e puer Wierder weisen se datt http-Zougang zougestëmmt soll ginn, wann d'Ufro vum lokalen Netzwierk (localnet) oder vum localhost kënnt. Speziell wat ass déi erlaabt lokal Netzwierk oder lokal Hostadressen? D'Äntwert ass: déi spezifizéiert an de localhost a localnet Direktiven.

http_access allow localnet
http_access allow localhost

Zu dësem Zäitpunkt kënnt Dir Squid nei starten, fir all pendend Ännerungen z'applizéieren.

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

an dann e Client Browser am lokalen Netzwierk konfiguréieren (192.168.0.104an eisem Fall) fir Zougang zum Internet iwwer Äre Proxy wéi follegt.

1. Gitt op de Menu Edit a wielt d'Optioun Preferences.

2. Klickt op Fortgeschratt, dann op de Tab Netzwierk, a schliisslech op Astellunge...

3. Kontrolléiert Manuell Proxy-Konfiguratioun a gitt d'IP Adress vum Proxy-Server an de Port wou et no Verbindungen lauschtert.

Notéiert datt als Standard Squid um Port 3128 lauschtert, awer Dir kënnt dëst Verhalen iwwerschreiden andeems Dir d'Zougangslëscht Regel ännert déi mat http_port ufänkt (vum Standard liest et http_port 3128).

4. Klickt op OK fir d'Ännerungen z'applizéieren an Dir sidd gutt fir ze goen.

Dir kënnt elo verifizéieren datt Äre lokalen Netzwierk Client den Internet iwwer Äre Proxy zougitt wéi follegt.

1. An Ärem Client, öffnen en Terminal op a gitt,

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

Dëse Kommando weist déi aktuell IP Adress vun Ärem Client (192.168.0.104 am folgenden Bild).

2. An Ärem Client benotzt e Webbrowser fir eng bestëmmte Websäit opzemaachen (linux-console.net an dësem Fall).

3. Am Server lafen.

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

an Dir wäert eng liewen Vue vun Demanden kréien duerch Squid zerwéiert ginn.

Beschränken Zougang vum Client

Stellt Iech elo un datt Dir den Zougang zu där bestëmmter Client IP Adress explizit refuséiere wëllt, awer awer den Zougang fir de Rescht vum lokalen Netzwierk behalen.

1. Definéiert eng nei ACL Direktiv wéi follegt (Ech hunn et ubuntuOS genannt, awer Dir kënnt et nennen wat Dir wëllt).

acl ubuntuOS src 192.168.0.104

2. Füügt d'ACL-Direktiv op d'Lëscht vun localnet access, déi schonn op der Plaz ass, awer viraus mat engem Ausrufezeeche. Dat heescht, \Erlaabt den Internetzougang fir Clienten déi mat der localnet ACL Direktiv passen, ausser deen deen mat der ubuntuOS Direktiv entsprécht.

http_access allow localnet !ubuntuOS

3. Elo musse mir Squid nei starten fir Ännerungen z'applizéieren. Da wa mir probéieren op all Site ze surfen, fanne mir datt den Zougang elo refuséiert gëtt.

Squid konfiguréieren - Fine Tuning

Fir den Zougang zu Squid no Domain ze beschränken benotze mir d'dstdomain Schlësselwuert an enger ACL Direktiv, wéi follegt.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Wou forbidden_domains eng einfach Textdatei ass, déi d'Domänen enthält, op déi mir wëllen Zougang zu refuséieren.

Schlussendlech musse mir Zougang zu Squid ginn fir Ufroen déi net mat der Direktiv uewe passen.

http_access allow localnet !forbidden

Oder vläicht wëlle mir nëmmen Zougang zu dëse Siten während enger bestëmmter Zäit vum Dag (10:00 bis 11:00 Auer) nëmmen op Méindes (M) erlaben, Mëttwoch (W), an Freideg (F).

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

Soss gëtt den Zougang zu dësen Domainen blockéiert.

Squid ënnerstëtzen verschidde Authentifikatiounsmechanismen (Basic, NTLM, Digest, SPNEGO, an Oauth) an Helfer (SQL Datebank, LDAP, NIS, NCSA, fir e puer ze nennen). An dësem Tutorial benotze mir Basis Authentifikatioun mat NCSA.

Füügt déi folgend Zeilen op Är /etc/squid/squid.conf Datei.

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

Bemierkung: Am CentOS 7 kann den NCSA Plugin fir Squid an /usr/lib64/squid/basic_nsca_auth fonnt ginn, also ännert deementspriechend an der uewen Linn.

E puer Erklärungen:

  1. Mir mussen Squid soen, wéi eng Authentifikatiounshëllefprogramm mat der auth_param Direktiv ze benotzen andeems Dir den Numm vum Programm uginn (wahrscheinlech, /usr/lib/squid/ncsa_auth oder /usr/lib64/squid/basic_nsca_auth), plus all Kommandozeiloptiounen (/etc/squid/passwd an dësem Fall) wann néideg.
  2. D'/etc/squid/passwd Datei gëtt duerch htpasswd erstallt, en Tool fir d'Basis Authentifikatioun duerch Dateien ze managen. Et erlaabt eis eng Lëscht vu Benotzernimm (an hir entspriechend Passwierder) ze addéieren, déi erlaabt sinn Squid ze benotzen.
  3. Umeldungssttl 30 Minutten erfuerdert Äre Benotzernumm a Passwuert all 30 Minutten aginn (Dir kënnt dësen Zäitintervall och mat Stonnen uginn).
  4. casesensitive on weist datt Benotzernimm a Passwierder ka sensibel sinn.
  5. Räich stellt den Text vum Authentifikatiounsdialog duer, dee benotzt gëtt fir d'Authentifizéierung op Squid.
  6. Schlussendlech gëtt den Zougang nëmme kritt wann d'Proxy Authentifikatioun (proxy_auth REQUIRED) geléngt.

Fëllt de folgende Kommando aus fir d'Datei ze erstellen an d'Umeldungsinformatioune fir de Benotzer gacanepa derbäi ze ginn (lass de -c Fändel aus, wann d'Datei schonn existéiert).

# htpasswd -c /etc/squid/passwd gacanepa

Öffnen e Webbrowser an der Clientmaschinn a probéiert op all bestëmmte Site ze surfen.

Wann d'Authentifikatioun geléngt, gëtt Zougang zu der ugefrote Ressource kritt. Soss gëtt den Zougang refuséiert.

Benotzt Cache fir Datenübertragung ze beschleunegen

Ee vun den ënnerscheedende Feature vum Squid ass d'Méiglechkeet fir Ressourcen, déi vum Web op Disk gefrot goufen, ze cache fir zukünfteg Ufroe vun dësen Objeten entweder vum selwechte Client oder anerer ze beschleunegen.

Füügt déi folgend Direktiven an Ärer squid.conf Datei.

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

E puer Erklärungen vun den uewe genannten Direktiven.

  1. ufs ass de Squid Späicherformat.
  2. /var/cache/squid ass en Top-Level Verzeechnes wou Cache Dateien gespäichert ginn. Dëse Verzeichnis muss existéieren a schreiwenbar vum Squid (Squid erstellt NET dësen Verzeechnes fir Iech).
  3. 1000 ass de Betrag (a MB) fir an dësem Verzeichnis ze benotzen.
  4. 16 ass d'Zuel vun den 1. Niveau Ënnerverzeechnungen, wärend 256 d'Zuel vun den 2. >.
  5. D'maximum_object_size Direktiv spezifizéiert déi maximal Gréisst vun erlaabten Objeten am Cache.
  6. refresh_pattern erzielt Squid wéi een mat spezifesche Dateitypen ëmgeet (.mp4 an .iso an dësem Fall) a wéi laang et soll späichert déi ugefrote Objekter am Cache (2880 Minutten = 2 Deeg).

Déi éischt an zweet 2880 sinn ënnescht an iewescht Grenzen, respektiv, wéi laang Objeten ouni explizit Verfallszäit als rezent ugesi ginn, an domat vum Cache servéiert ginn, wärend 0% ass de Prozentsaz vum Alter vun den Objeten (Zäit zënter der leschter Ännerung) datt all Objet ouni explizit Verfallszäit als rezent ugesi gëtt.

Éischt Client (IP 192.168.0.104) Luet eng 71 MB .mp4 Datei an 2 Minutten an 52 Sekonnen erof.

Zweete Client (IP 192.168.0.17) luet déiselwecht Datei an 1,4 Sekonnen erof!

Dat ass well d'Datei vum Squid Cache zerwéiert gouf (gezeechent vun TCP_HIT/200) am zweete Fall, am Géigesaz zu der éischter Instanz, wann se direkt erofgeluede gouf vun den Internet (vertrueden duerch TCP_MISS/200).

D'Schlësselwierder HIT an MISS, zesumme mam 200 http Äntwertcode, weisen datt de Fichier béid Kéieren erfollegräich zerwéiert gouf, awer de Cache war HIT a vermësst respektiv. Wann eng Ufro aus irgendege Grënn net vum Cache zerwéiert ka ginn, da probéiert Squid se vum Internet ze déngen.

Conclusioun

An dësem Artikel hu mir diskutéiert wéi een Squid Web Caching Proxy opstellt. Dir kënnt de Proxy-Server benotze fir Inhalter mat engem gewielte Critère ze filteren, an och fir d'Latenz ze reduzéieren (well identesch Entréeën Ufroe vum Cache zerwéiert ginn, dee méi no beim Client ass wéi de Webserver deen tatsächlech den Inhalt servéiert, wat zu méi séier resultéiert Datenübertragungen) an och Netzverkéier (d'Quantitéit u benotzte Bandbreed reduzéieren, wat Iech Sue spuert wann Dir fir de Verkéier bezuelt).

Dir wëllt vläicht op d'Squid Websäit fir weider Dokumentatioun referenzéieren (vergewëssert Iech och d'Wiki ze kontrolléieren), awer zéckt net eis ze kontaktéieren wann Dir Froen oder Bemierkungen hutt. Mir wäerte méi wéi frou vun Iech ze héieren!