Diferència entre revisions de la pàgina «UF3-NF2. Implantació servidors intermediaris»

De Wiki IES Marianao. Departament Informàtica
Dreceres ràpides: navegació, cerca
(Es crea la pàgina amb «tornar M11_-_Seguretat_i_alta_disponibilitat#UF3_-_Tallafocs_i_servidors_intermediaris == SQUID == http://www.squid-cache.org/ Squid és un proxy web caché per...».)
 
(Opcions, tunning)
 
(Hi ha 26 revisions intermèdies del mateix usuari que no es mostren)
Línia 5: Línia 5:
 
http://www.squid-cache.org/
 
http://www.squid-cache.org/
  
Squid és un proxy web caché per als principals protocols associats al web HTTP, HTTPS, FTP.
+
[[ File:squid_logo.gif]]
 +
 
 +
Squid és un proxy web caché per als principals protocols associats al web HTTP, HTTPS, FTP, SSL, DNS.
  
 
A més inclou tècniques de '''filtre a nivell d'aplicació''' (control d'accés).
 
A més inclou tècniques de '''filtre a nivell d'aplicació''' (control d'accés).
 +
 +
Fitxer de configuració base sense comentaris [[File:squid.conf]]
 +
 +
=== Instal·lació ===
 +
 +
Squid treballa per defecte sobre el '''port 3128 tcp''', tot i que també s'utilitza el port 8080, més genèric per a proxys
 +
 +
La instal·lació per defecte denega l'accés a través del servidor intermediar, per començar a treballar el primer que cal fer és canviar
 +
 +
<pre>http_access deny all --> http_access allow all</pre>
 +
 +
Els dos fitxers més importants són
 +
 +
Configuració
 +
 +
<pre>/etc/squid3/squid.conf</pre>
 +
 +
Registre (Log) d'accés al servei
 +
 +
<pre>/var/log/squid/access.log
 +
 +
$sudo tail -f /var/log/squid/access.log
 +
</pre>
 +
 +
En aquest és poden veure missatges del tipus:
 +
 +
TCP_DENIED/403
 +
 +
TCP_MISS/302
 +
 +
TCP_MISS/200
 +
 +
TCP_MISS/204
 +
 +
TCP_NEGATIVE_HIT/204
 +
 +
TCP_HIT/200
 +
 +
TCP_MEMHIT/200
 +
 +
 +
En general
 +
* '''DENIED''': Accés denegat
 +
* '''HIT''': Petició en caché, retorna la còpia del servidor
 +
* '''MISS''': Petició no trobada, accedeix directament a la font
 +
 +
http://wiki.squid-cache.org/SquidFaq/SquidLogs
 +
 +
Directori de Caché
 +
 +
<pre>/var/spool/squid3/</pre>
 +
 +
Respecte a la caché és interessant la reflexió que realitzen els propis desenvolupadors de l'aplicació respecte a les proves de funcionament
 +
 +
TEST CACHÉ
 +
“As you can see, pressing reload in Netscape (and some other browsers) doesn't simply re-fetch the page, it forces the cache not to serve the cached page. Many people doing tests of how the cache increases performance simply press reload, and believe that there has been no change in speed. The cache is, in fact, re-downloading the page from the origin server, so a speed increase is impossible. “
 +
 +
http://www.deckle.co.za/squid-users-guide/Browser_Configuration
 +
 +
=== Funcionament i comprovació ===
 +
 +
Comanda per comprovar la configuració
 +
 +
<pre>#squid3 -k parse</pre>
 +
 +
 +
En alguns casos per manteniment cal netejar la caché
 +
 +
 +
<pre>
 +
/etc/init.d/squid3 stop
 +
rm -Rf /var/spool/squid3/*
 +
squid3 -z                  --> Crear directoris swap
 +
/etc/init.d/squid3 start
 +
</pre>
 +
 +
 +
==== Eines addicionals ====
 +
 +
 +
http://www.squid-cache.org/Scripts/
 +
 +
El programa Calamaris (disponible als repositoris) per exemple permet generar informes d'ús de la caché.
 +
 +
A la web hi ha exemples del report http://cord.de/tools/squid/calamaris/
 +
 +
<pre>cat /var/log/squid3/access.log | calamaris [-F html]</pre>
 +
 +
 +
=== Configuració ===
 +
 +
==== Control d'accés ====
 +
 +
http://www.deckle.co.za/squid-users-guide/Access_Control_and_Access_Control_Operators
 +
 +
 +
En general el control d'accés consta de dues parts
 +
 +
* '''Crear llistes d'accés''', en general a través de la directiva ''acl''
 +
* '''Donar permisos''' a les llistes, en general a través de la directiva ''http_access'' (aquests s'anomenen ''operadors acl'' i són específics del protocol). Les peticions HTTP es validen contra la llista d'operadors http_access
 +
 +
Cal tenir en compte que els operadors acl
 +
* S'avaluen per ordre, quan una coincideix amb la petició s'executa l'acció i no es comproven les altres
 +
* És una bona pràctica denegar per defecte al final
 +
 +
===== Llistes d'accés =====
 +
 +
http://www.squid-cache.org/Doc/config/acl/
 +
 +
<pre>
 +
acl nom tipus parametres
 +
acl nom tipus “fitxer”
 +
</pre>
 +
 +
Els tipus poden ser: src, dst, time, srcdomain...
 +
 +
Cal observar que a la documentació al costat de les opcions apareix [fast] [low], que indiquen com afecten al temps de resposta del proxy
 +
 +
<pre>
 +
#Adreces i dominis
 +
 +
acl server src 192.168.200.2
 +
acl informatica src 192.168.200.0/24
 +
acl aula1 src 192.168.200.64/26
 +
acl tothom src 192.168.200.0/24 192.168.0.0/24
 +
acl marianao dstdomain .institutmarianao.com
 +
acl microsoft dstdomain .microsoft.com
 +
 +
#Temps, els dies en anglés: M T W H F A S
 +
 +
acl horarilaboral time MTWHF 08:00-23:00
 +
acl diesfesta time AS
 +
acl mati time 07:00-12:00
 +
 +
#Usuaris
 +
 +
acl usuaris proxy_auth REQUIRED          --> qualsevol
 +
acl senserestringir proxy_auth dirigents    --> usuari concret
 +
acl restringits proxy_auth treballadors
 +
 +
#Protocols, només els gestionats per squid
 +
 +
acl tots proto HTTP FTP SSL
 +
acl protocolHTTP proto HTTP
 +
acl protocolFTP proto FTP
 +
 +
#Mètodes HTTP
 +
 +
acl metodesHTTP method GET POST
 +
 +
#Filtre MAC (Només *NIX)
 +
 +
acl macserver arp 00:00:0C:01:01:01
 +
 +
#URL's, usen expressions regulars,
 +
#  $ indica final de text
 +
#  \. indica el caràcter "."
 +
#  Opció -i case-insensitive
 +
 +
acl urlJocs url_regex [-i] juegos
 +
acl multimedia urlpath_regex \.mp3$ \.mpg$ \.wav$
 +
acl instaladores urlpath_regex \.exe$ \.rar$ \.zip$ \.iso$
 +
 +
#Navegadors
 +
 +
acl IE browser MSIE
 +
acl firefox browser Mozilla
 +
 +
#Tipus mime, usen expressions regulars,
 +
#    ^ indica començament del text
 +
 +
acl No req_mime_type ^application/x-msn-messenger$
 +
</pre>
 +
 +
 +
A vegades pot ser recomanable usar fitxers per contenir llistes que apliquen a les regles i alliberar i simplificar l'arxiu de configuració
 +
 +
<pre>
 +
acl llistaparaules url_regex "/etc/squid3/llistes/paraules.acl"
 +
acl extensions urlpath_regex -i "/etc/squid3/llistes/extensions.acl"
 +
</pre>
 +
 +
===== Operadors acl =====
 +
 +
http://www.squid-cache.org/Doc/config/http_access/
 +
 +
<pre>http_access allow|deny [!]aclname [& [!]aclname2 ... ]</pre>
 +
 +
 +
En un operador es pot posar vàries llistes, sempre que s'entengui s'aplica un AND lògic i que s'han de complir totes per a que apliqui el operador
 +
 +
La última regla denega tot.
 +
 +
<pre>
 +
http_access allow llistablanca
 +
http_access allow !restringir
 +
http_access allow usuaris ports_web
 +
http_access deny all
 +
</pre>
 +
 +
 +
==== Autenticació ====
 +
 +
http://wiki.squid-cache.org/Features/Authentication
 +
 +
Squid permet requerir autenticació dels usuaris per accedir al servei a través de múltiples sistemes d'autenticació: MySQL, LDAP, PAM, RADIUS...
 +
 +
Un dels més senzills és el propi de l'aplicació, NCSA mòdul propi d'squid (Apache)
 +
 +
Primer cal crear els usuaris
 +
 +
<pre>
 +
$sudo htpasswd -c /etc/squid3/passwds autoritzats
 +
$sudo htpasswd /etc/squid3/passwds altres
 +
</pre>
 +
 +
 +
Després activar-la a la configuració
 +
 +
<pre>
 +
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwds          -> Pop up navegador
 +
acl usuaris proxy_auth REQUIRED            --> qualsevol
 +
http_access allow usuaris
 +
acl senserestringir proxy_auth dirigents              --> usuari concret
 +
acl restringits proxy_auth treballadors
 +
acl whitelist dstdomain .google.com
 +
http_access allow senserestringir
 +
http_access allow restringits whitelist
 +
http_access deny all
 +
</pre>
 +
 +
 +
 +
==== Redirecció d'errors ====
 +
 +
 +
http://www.squid-cache.org/Doc/config/deny_info/
 +
 +
Redirecció dels errors a una pàgina pròpia, permet configurar la pàgina o tancar la connexió tcp
 +
 +
Errors HTTP1.1
 +
 +
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
 +
 +
2XX --> OK
 +
3XX --> Redirecció
 +
4XX --> Error client
 +
5XX --> Error servidor
 +
 +
Aquesta configuració es situa abans de denegar la acl
 +
 +
<pre>
 +
deny_info err_page_name acl
 +
deny_info http://... acl
 +
deny_info TCP_RESET acl
 +
</pre>
 +
 +
Per defecte les pàgines d'error es defineixen a la directiva error_directory /usr/share/squid3/errors/templates
 +
 +
Dins el codi HTML de la pàgina d'error es poden afegir tags (variables), per exemple:
 +
 +
%T - Timestamp in RFC 1123 format
 +
 +
%u - Url
 +
 +
==== Opcions, tunning ====
 +
 +
Per exemple
 +
http://wiki.squid-cache.org/SquidFaq/WindowsUpdate
 +
 +
 +
Paràmetres que es poden configurar al servidor
 +
 +
<pre>
 +
# Opcions de xarxa, definir el port 3128 per defecte, però també es fa servir 8080
 +
 +
http_port 3128
 +
 +
# En mode transparent redirecció
 +
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
 +
 +
http_port 3128 transparent
 +
 +
# Opcions de Memòria Caché
 +
# Al voltant d'un terç de la memòria que utilitza en càrrega el proxy (La resta són dades de control per gestionar on estan les pàgines)
 +
 +
cache_mem 512 MB
 +
 +
# Opcions de Disk per al Caché
 +
# Fins a un 80% de la capacitat del disk
 +
# On ufs és el format 40000 la mida en MB 16 i 256 nombre de subdirectoris de 1er i segon nivell
 +
 +
Major caché --> més memòria --> possible problema SWAPPING
 +
 +
Menor caché --> menys HIT o més MISS --> possible problema NO CACHING
 +
 +
 +
cache_dir ufs /var/spool/squid 40000 16 256
 +
 +
</pre>
 +
 +
=== Eines ===
 +
 +
==== DansGuardian ====
 +
 +
http://dansguardian.org/?page=whatisdg
 +
 +
http://dansguardian.org/downloads/DG2.9.7.1_Squid_Slackware_10.2.pdf
 +
 +
A tenir en compte la penalització que suposa el filtre de continguts. Baixa rendiment

Revisió de 22:31, 12 març 2014

tornar M11_-_Seguretat_i_alta_disponibilitat#UF3_-_Tallafocs_i_servidors_intermediaris

SQUID

http://www.squid-cache.org/

Squid logo.gif

Squid és un proxy web caché per als principals protocols associats al web HTTP, HTTPS, FTP, SSL, DNS.

A més inclou tècniques de filtre a nivell d'aplicació (control d'accés).

Fitxer de configuració base sense comentaris Fitxer:Squid.conf

Instal·lació

Squid treballa per defecte sobre el port 3128 tcp, tot i que també s'utilitza el port 8080, més genèric per a proxys

La instal·lació per defecte denega l'accés a través del servidor intermediar, per començar a treballar el primer que cal fer és canviar

http_access deny all --> http_access allow all

Els dos fitxers més importants són

Configuració

/etc/squid3/squid.conf

Registre (Log) d'accés al servei

/var/log/squid/access.log

$sudo tail -f /var/log/squid/access.log

En aquest és poden veure missatges del tipus:

TCP_DENIED/403

TCP_MISS/302

TCP_MISS/200

TCP_MISS/204

TCP_NEGATIVE_HIT/204

TCP_HIT/200

TCP_MEMHIT/200


En general

  • DENIED: Accés denegat
  • HIT: Petició en caché, retorna la còpia del servidor
  • MISS: Petició no trobada, accedeix directament a la font

http://wiki.squid-cache.org/SquidFaq/SquidLogs

Directori de Caché

/var/spool/squid3/

Respecte a la caché és interessant la reflexió que realitzen els propis desenvolupadors de l'aplicació respecte a les proves de funcionament

TEST CACHÉ “As you can see, pressing reload in Netscape (and some other browsers) doesn't simply re-fetch the page, it forces the cache not to serve the cached page. Many people doing tests of how the cache increases performance simply press reload, and believe that there has been no change in speed. The cache is, in fact, re-downloading the page from the origin server, so a speed increase is impossible. “

http://www.deckle.co.za/squid-users-guide/Browser_Configuration

Funcionament i comprovació

Comanda per comprovar la configuració

#squid3 -k parse


En alguns casos per manteniment cal netejar la caché


/etc/init.d/squid3 stop
rm -Rf /var/spool/squid3/*
squid3 -z                  --> Crear directoris swap
/etc/init.d/squid3 start


Eines addicionals

http://www.squid-cache.org/Scripts/

El programa Calamaris (disponible als repositoris) per exemple permet generar informes d'ús de la caché.

A la web hi ha exemples del report http://cord.de/tools/squid/calamaris/

cat /var/log/squid3/access.log | calamaris [-F html]


Configuració

Control d'accés

http://www.deckle.co.za/squid-users-guide/Access_Control_and_Access_Control_Operators


En general el control d'accés consta de dues parts

  • Crear llistes d'accés, en general a través de la directiva acl
  • Donar permisos a les llistes, en general a través de la directiva http_access (aquests s'anomenen operadors acl i són específics del protocol). Les peticions HTTP es validen contra la llista d'operadors http_access

Cal tenir en compte que els operadors acl

  • S'avaluen per ordre, quan una coincideix amb la petició s'executa l'acció i no es comproven les altres
  • És una bona pràctica denegar per defecte al final
Llistes d'accés

http://www.squid-cache.org/Doc/config/acl/

acl nom tipus parametres 
acl nom tipus “fitxer”

Els tipus poden ser: src, dst, time, srcdomain...

Cal observar que a la documentació al costat de les opcions apareix [fast] [low], que indiquen com afecten al temps de resposta del proxy

#Adreces i dominis

acl server src 192.168.200.2
acl informatica src 192.168.200.0/24
acl aula1 src 192.168.200.64/26
acl tothom src 192.168.200.0/24 192.168.0.0/24
acl marianao dstdomain .institutmarianao.com
acl microsoft dstdomain .microsoft.com

#Temps, els dies en anglés: M T W H F A S

acl horarilaboral time MTWHF 08:00-23:00
acl diesfesta time AS
acl mati time 07:00-12:00

#Usuaris

acl usuaris proxy_auth REQUIRED           --> qualsevol
acl senserestringir proxy_auth dirigents    --> usuari concret
acl restringits proxy_auth treballadors

#Protocols, només els gestionats per squid

acl tots proto HTTP FTP SSL
acl protocolHTTP proto HTTP
acl protocolFTP proto FTP

#Mètodes HTTP

acl metodesHTTP method GET POST

#Filtre MAC (Només *NIX)

acl macserver arp 00:00:0C:01:01:01

#URL's, usen expressions regulars,
#   $ indica final de text
#   \. indica el caràcter "."
#   Opció -i case-insensitive

acl urlJocs url_regex [-i] juegos
acl multimedia urlpath_regex \.mp3$ \.mpg$ \.wav$
acl instaladores urlpath_regex \.exe$ \.rar$ \.zip$ \.iso$

#Navegadors

acl IE browser MSIE
acl firefox browser Mozilla

#Tipus mime, usen expressions regulars,
#    ^ indica començament del text

acl No req_mime_type ^application/x-msn-messenger$


A vegades pot ser recomanable usar fitxers per contenir llistes que apliquen a les regles i alliberar i simplificar l'arxiu de configuració

acl llistaparaules url_regex "/etc/squid3/llistes/paraules.acl"
acl extensions urlpath_regex -i "/etc/squid3/llistes/extensions.acl"
Operadors acl

http://www.squid-cache.org/Doc/config/http_access/

http_access allow|deny [!]aclname [& [!]aclname2 ... ]


En un operador es pot posar vàries llistes, sempre que s'entengui s'aplica un AND lògic i que s'han de complir totes per a que apliqui el operador

La última regla denega tot.

http_access allow llistablanca
http_access allow !restringir
http_access allow usuaris ports_web
http_access deny all


Autenticació

http://wiki.squid-cache.org/Features/Authentication

Squid permet requerir autenticació dels usuaris per accedir al servei a través de múltiples sistemes d'autenticació: MySQL, LDAP, PAM, RADIUS...

Un dels més senzills és el propi de l'aplicació, NCSA mòdul propi d'squid (Apache)

Primer cal crear els usuaris

$sudo htpasswd -c /etc/squid3/passwds autoritzats
$sudo htpasswd /etc/squid3/passwds altres


Després activar-la a la configuració

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwds           -> Pop up navegador
acl usuaris proxy_auth REQUIRED             --> qualsevol
http_access allow usuaris
acl senserestringir proxy_auth dirigents               --> usuari concret
acl restringits proxy_auth treballadors
acl whitelist dstdomain .google.com
http_access allow senserestringir
http_access allow restringits whitelist
http_access deny all


Redirecció d'errors

http://www.squid-cache.org/Doc/config/deny_info/

Redirecció dels errors a una pàgina pròpia, permet configurar la pàgina o tancar la connexió tcp

Errors HTTP1.1

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

2XX --> OK 3XX --> Redirecció 4XX --> Error client 5XX --> Error servidor

Aquesta configuració es situa abans de denegar la acl

deny_info err_page_name acl
deny_info http://... acl
deny_info TCP_RESET acl

Per defecte les pàgines d'error es defineixen a la directiva error_directory /usr/share/squid3/errors/templates

Dins el codi HTML de la pàgina d'error es poden afegir tags (variables), per exemple:

%T - Timestamp in RFC 1123 format

%u - Url

Opcions, tunning

Per exemple http://wiki.squid-cache.org/SquidFaq/WindowsUpdate


Paràmetres que es poden configurar al servidor

# Opcions de xarxa, definir el port 3128 per defecte, però també es fa servir 8080

http_port 3128

# En mode transparent redirecció
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

http_port 3128 transparent

# Opcions de Memòria Caché
# Al voltant d'un terç de la memòria que utilitza en càrrega el proxy (La resta són dades de control per gestionar on estan les pàgines)

cache_mem 512 MB

# Opcions de Disk per al Caché
# Fins a un 80% de la capacitat del disk
# On ufs és el format 40000 la mida en MB 16 i 256 nombre de subdirectoris de 1er i segon nivell

Major caché --> més memòria --> possible problema SWAPPING

Menor caché --> menys HIT o més MISS --> possible problema NO CACHING


cache_dir ufs /var/spool/squid 40000 16 256 

Eines

DansGuardian

http://dansguardian.org/?page=whatisdg

http://dansguardian.org/downloads/DG2.9.7.1_Squid_Slackware_10.2.pdf

A tenir en compte la penalització que suposa el filtre de continguts. Baixa rendiment