Configuració del servidor intermediari Squid amb accés restringit i configuració de clients per utilitzar el servidor intermediari - Part 5


Un Enginyer certificat de la Fundació Linux és un professional qualificat que té l'experiència per instal·lar, gestionar i solucionar problemes de serveis de xarxa en sistemes Linux, i s'encarrega del disseny, la implementació i el manteniment continu del sistema. arquitectura àmplia.

Presentació del programa de certificació de la Fundació Linux.

A la part 1 d'aquesta sèrie, vam mostrar com instal·lar squid, un servidor intermediari de memòria cau per a clients web. Si us plau, consulteu aquesta publicació (enllaç a continuació) abans de continuar si encara no heu instal·lat squid al vostre sistema.

  1. Part 1: instal·lar serveis de xarxa i configurar l'inici automàtic a l'arrencada

En aquest article, us mostrarem com configurar el servidor intermediari Squid per concedir o restringir l'accés a Internet i com configurar un client http o navegador web per utilitzar aquest servidor intermediari.

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

Recordem que, en termes senzills, un servidor intermediari web és un intermediari entre un (o més) ordinadors client i un determinat recurs de xarxa, el més habitual és l'accés a Internet. És a dir, el servidor proxy està connectat d'una banda directament a Internet (o a un encaminador connectat a Internet) i de l'altra a una xarxa d'ordinadors client que accediran a la World Wide Web a través d'ella.

Potser us preguntareu, per què voldria afegir un altre programari a la meva infraestructura de xarxa?

1. Squid emmagatzema fitxers de sol·licituds anteriors per accelerar les futures transferències. Per exemple, suposem que client1 baixa CentOS-7.0-1406-x86_64-DVD.iso d'Internet. Quan el client2 sol·licita accés al mateix fitxer, squid pot transferir el fitxer de la seva memòria cau en lloc de tornar-lo a baixar d'Internet. Com podeu suposar, podeu utilitzar aquesta funció per accelerar les transferències de dades en una xarxa d'ordinadors que requereixen actualitzacions freqüents d'algun tipus.

2. Les ACL (Llistes de control d'accés) ens permeten restringir l'accés als llocs web i/o supervisar l'accés per usuari. Podeu restringir l'accés segons el dia de la setmana o l'hora del dia o el domini, per exemple.

3. Eliminar els filtres web es fa possible mitjançant l'ús d'un servidor intermediari web al qual es fan les sol·licituds i que retorna el contingut sol·licitat a un client, en comptes de que el client ho sol·liciti directament a Internet.

Per exemple, suposem que heu iniciat la sessió a client1 i voleu accedir a www.facebook.com mitjançant l'encaminador de la vostra empresa. Com que les polítiques de la vostra empresa poden bloquejar el lloc, podeu connectar-vos a un servidor intermediari web i demanar-li accés a www.facebook.com. Aleshores, el contingut remot us retorna a través del servidor intermediari web, sense passar per alt les polítiques de bloqueig de l'encaminador de la vostra empresa.

Configuració de Squid: conceptes bàsics

L'esquema de control d'accés del servidor intermediari web Squid consta de dos components diferents:

  1. Els elements ACL són línies directives que comencen amb la paraula “acl” i representen tipus de proves que es realitzen amb qualsevol transacció de sol·licitud.
  2. Les regles de la llista d'accés consisteixen en una acció permetre o denegar seguida d'una sèrie d'elements ACL i s'utilitzen per indicar quina acció o la limitació s'ha de fer complir per a una sol·licitud determinada. Es comproven en ordre i la cerca de llista finalitza tan bon punt una de les regles coincideix. Si una regla té diversos elements ACL, s'implementa com una operació booleana AND (tots els elements ACL de la regla han de coincidir perquè la regla sigui una coincidència).

El fitxer de configuració principal de Squid és /etc/squid/squid.conf, que té ~5000 línies, ja que inclou tant directives de configuració com documentació. Per aquest motiu, crearem un nou fitxer squid.conf amb només les línies que inclouen directrius de configuració per a la nostra comoditat, deixant de banda les línies buides o comentades. Per fer-ho, utilitzarem les ordres següents.

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

I llavors,

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

OR

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

Ara, obriu el fitxer squid.conf acabat de crear i cerqueu (o afegiu) els elements ACL i llistes d'accés següents.

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

Les dues línies anteriors representen un exemple bàsic de l'ús d'elements ACL.

  1. La primera paraula, acl, indica que es tracta d'una línia directiva d'element ACL.
  2. La segona paraula, localhost o localnet, especifica un nom per a la directiva.
  3. La tercera paraula, src en aquest cas, és un tipus d'element ACL que s'utilitza per representar una adreça IP de client o un rang d'adreces, respectivament. Podeu especificar un únic amfitrió per IP (o nom d'amfitrió, si teniu algun tipus de resolució DNS implementada) o per adreça de xarxa.
  4. El quart paràmetre és un argument de filtrat que és \alimentat a la directiva.

Les dues línies següents són regles de la llista d'accés i representen una implementació explícita de les directives ACL esmentades anteriorment. En poques paraules, indiquen que s'ha de concedir accés http si la sol·licitud prové de la xarxa local (localnet) o de localhost. Concretament, quina és la xarxa local o les adreces d'amfitrió local permeses? La resposta és: les especificades a les directives localhost i localnet.

http_access allow localnet
http_access allow localhost

En aquest punt, podeu reiniciar Squid per aplicar els canvis pendents.

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

i, a continuació, configureu un navegador de client a la xarxa local (192.168.0.104 en el nostre cas) per accedir a Internet mitjançant el vostre servidor intermediari de la manera següent.

1. Aneu al menú Edita i trieu l'opció Preferències.

2. Feu clic a Avançat, després a la pestanya Xarxa i, finalment, a Configuració...

3. Comproveu la Configuració manual del servidor intermediari i introduïu l'adreça IP del servidor intermediari i el port on està escoltant les connexions.

Tingueu en compte que, per defecte, Squid escolta al port 3128, però podeu anul·lar aquest comportament editant la regla de la llista d'accés que comença per http_port (per per defecte es llegeix http_port 3128).

4. Feu clic a D'acord per aplicar els canvis i ja està a punt.

Ara podeu verificar que el vostre client de xarxa local accedeix a Internet mitjançant el vostre servidor intermediari de la manera següent.

1. Al vostre client, obriu un terminal i escriviu:

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

Aquesta ordre mostrarà l'adreça IP actual del vostre client (192.168.0.104 a la imatge següent).

2. Al vostre client, utilitzeu un navegador web per obrir qualsevol lloc web determinat (linux-console.net en aquest cas).

3. Al servidor, executeu.

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

i tindreu una visualització en directe de les sol·licituds que s'atenguin mitjançant Squid.

Restringir l'accés pel client

Ara suposem que voleu denegar explícitament l'accés a aquesta adreça IP del client en particular, tot i que manteniu l'accés per a la resta de la xarxa local.

1. Definiu una nova directiva ACL de la següent manera (l'he anomenada ubuntuOS però podeu anomenar-la com vulgueu).

acl ubuntuOS src 192.168.0.104

2. Afegiu la directiva ACL a la llista d'accés localnet que ja està al seu lloc, però precedint-la amb un signe d'exclamació. Això vol dir, \Permetre l'accés a Internet als clients que coincideixin amb la directiva ACL localnet excepte la que coincideixi amb la directiva ubuntuOS.

http_access allow localnet !ubuntuOS

3. Ara hem de reiniciar Squid per poder aplicar els canvis. Aleshores, si intentem navegar a qualsevol lloc, trobarem que l'accés està denegat ara.

Configuració de Squid - Afinació fina

Per restringir l'accés a Squid per domini, utilitzarem la paraula clau dstdomain en una directiva ACL, de la següent manera.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

On forbidden_domains és un fitxer de text senzill que conté els dominis als quals volem denegar l'accés.

Finalment, hem de concedir accés a Squid per a les sol·licituds que no coincideixen amb la directiva anterior.

http_access allow localnet !forbidden

O potser només volem permetre l'accés a aquests llocs durant una hora determinada del dia (10:00 a 11:00) només el dilluns (D), Dimecres (D) i Divendres (D).

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

En cas contrari, es bloquejarà l'accés a aquests dominis.

Squid admet diversos mecanismes d'autenticació (Basic, NTLM, Digest, SPNEGO i Oauth) i ajudants (base de dades SQL, LDAP, NIS, NCSA, per citar-ne alguns). En aquest tutorial farem servir l'autenticació bàsica amb NCSA.

Afegiu les línies següents al vostre fitxer /etc/squid/squid.conf.

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

Nota: a CentOS 7, el connector NCSA per a calamar es pot trobar a /usr/lib64/squid/basic_nsca_auth, així que canvieu en conseqüència a la línia anterior.

Uns quants aclariments:

  1. Hem de dir a Squid quin programa auxiliar d'autenticació utilitzarem amb la directiva auth_param especificant el nom del programa (el més probable és /usr/lib/squid/ncsa_auth). > o /usr/lib64/squid/basic_nsca_auth), a més de qualsevol opció de línia d'ordres (/etc/squid/passwd en aquest cas) si cal.
  2. El fitxer /etc/squid/passwd es crea mitjançant htpasswd, una eina per gestionar l'autenticació bàsica mitjançant fitxers. Ens permetrà afegir una llista de noms d'usuari (i les seves contrasenyes corresponents) que podran utilitzar Squid.
  3. Credentialsttl 30 minuts requerirà que introduïu el vostre nom d'usuari i contrasenya cada 30 minuts (també podeu especificar aquest interval de temps amb hores).
  4. La funció
  5. distingeix entre majúscules i minúscules indica que els noms d'usuari i les contrasenyes distingeixen entre majúscules i minúscules.
  6. regne representa el text del diàleg d'autenticació que s'utilitzarà per autenticar-se amb el calamar.
  7. Finalment, només es concedeix l'accés quan l'autenticació de proxy (proxy_auth REQUIS) té èxit.

Executeu l'ordre següent per crear el fitxer i afegir credencials per a l'usuari gacanepa (ometeu la marca -c si el fitxer ja existeix).

# htpasswd -c /etc/squid/passwd gacanepa

Obriu un navegador web a la màquina client i proveu de navegar a qualsevol lloc determinat.

Si l'autenticació té èxit, es concedeix accés al recurs sol·licitat. En cas contrari, es denegarà l'accés.

Ús de la memòria cau per accelerar la transferència de dades

Una de les característiques distintives de Squid és la possibilitat d'emmagatzemar en memòria cau els recursos sol·licitats des de la web al disc per tal d'accelerar les futures sol·licituds d'aquests objectes, ja sigui per part del mateix client o d'altres.

Afegiu les directives següents al vostre fitxer squid.conf.

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

Alguns aclariments de les directrius anteriors.

  1. ufs és el format d'emmagatzematge de Squid.
  2. /var/cache/squid és un directori de nivell superior on s'emmagatzemaran els fitxers de memòria cau. Aquest directori ha d'existir i es pot escriure per Squid (Squid NO crearà aquest directori per a tu).
  3. 1000 és la quantitat (en MB) que cal utilitzar en aquest directori.
  4. 16 és el nombre de subdirectoris de primer nivell, mentre que 256 és el nombre de subdirectoris de segon nivell dins de /var/spool/squid>.
  5. La directiva maximum_object_size especifica la mida màxima dels objectes permesos a la memòria cau.
  6. refresh_pattern indica a Squid com tractar amb tipus de fitxers específics (.mp4 i .iso en aquest cas) i durant quant de temps hauria de fer-ho. emmagatzema els objectes sol·licitats a la memòria cau (2880 minuts = 2 dies).

El primer i el segon 2880 són límits inferior i superior, respectivament, sobre quant de temps els objectes sense un temps de caducitat explícit es consideraran recents i, per tant, seran servits per la memòria cau, mentre que 0% és el percentatge de l'antiguitat dels objectes (temps des de l'última modificació) que cada objecte sense temps explícit de caducitat es considerarà recent.

El primer client (IP 192.168.0.104) baixa un fitxer .mp4 de 71 MB en 2 minuts i 52 segons.

El segon client (IP 192.168.0.17) baixa el mateix fitxer en 1,4 segons!

Això és degut a que el fitxer es va servir des de la caché Squid (indicat per TCP_HIT/200) en el segon cas, a diferència de la primera instància, quan es va descarregar directament des de Internet (representada per TCP_MISS/200).

Les paraules clau HIT i MISS, juntament amb el codi de resposta 200 http, indiquen que el fitxer s'ha publicat correctament les dues vegades, però la memòria cau va ser HIT i Missat respectivament. Quan la memòria cau no pot atendre una sol·licitud per algun motiu, Squid intenta servir-la des d'Internet.

Conclusió

En aquest article hem parlat de com configurar un proxy de memòria cau web Squid. Podeu utilitzar el servidor intermediari per filtrar continguts amb un criteri escollit, i també per reduir la latència (ja que les sol·licituds entrants idèntiques es serveixen des de la memòria cau, que està més a prop del client que el servidor web que realment serveix el contingut, el que resulta en més rapidesa). transferències de dades) i també el trànsit de xarxa (reduint la quantitat d'ample de banda utilitzat, cosa que us estalvia diners si pagueu pel trànsit).

És possible que vulgueu consultar el lloc web de Squid per obtenir més documentació (assegureu-vos de consultar també la wiki), però no dubteu a contactar amb nosaltres si teniu cap pregunta o comentari. Estarem més que encantats de saber de vostè!