Configuración de Squid

Copiar y ejecutar los siguientes comandos desde consola creará un fichero de configuración para Squid en su mínima forma

chown proxy:proxy /var/spool/squid/dump
mkdir /var/spool/squid/dump
source /etc/fws/infraestructura.sh
cat <<MAFI > /etc/squid/squid.conf
$(for r in ${listados_red['LAN']}; do printf "acl usuarios src %s\n" $r; done)
acl Safe_ports port 80 443 8080 20 21
acl CONNECT method CONNECT
acl NONE method NONE

ftp_passive on

http_access deny NONE
http_access deny !Safe_ports
http_access allow usuarios
http_access deny all

$(for r in ${listados['SRV']}; do printf "http_port %s:3128\n" $(echo $r | cut -d '/' -f 1); done)
http_port 8080

cache_mem 469 MB
cache_dir aufs /var/spool/squid 500 16 256

debug_options ALL,2
coredump_dir /var/spool/squid/dump

url_rewrite_program /usr/bin/squidGuard 
url_rewrite_children 10 startup=10 idle=10 concurrency=0

refresh_pattern .       0   20% 4320

relaxed_header_parser warn
connect_timeout 20 seconds
shutdown_lifetime 3 seconds
cache_mgr fws@salud.gob.sv
httpd_suppress_version_string on
visible_hostname $HOSTNAME.$DOMINIO

error_default_language  es-sv
prefer_direct on
check_hostnames on

dns_retransmit_interval 2 seconds
dns_timeout 1 minutes
dns_nameservers 10.10.20.20 10.10.20.21
dns_v4_first on

MAFI

Personalizando la configuración:

Puede cambiar los valores por defecto para url_rewrite_children.
Es importante, sin embargo, que siempre use concurrency=0, squidGuard no es capaz de procesar adecuadamente las peticiones formadas con esta configuración por parte de Squid

url_rewrite_children 15 startup=15 idle=15 concurrency=0

En realidad, es altamente recomendable iniciar squid con todos los hilos que planeé hacer disponibles, y que estos no mueran el estar ocioso.
El problema es que estos hilos tienen una inicialización muy costosa, así que si la petición de un usuario necesita de la creación de uno, este termina esperando un tiempo espantoso en su navegador

Marcas conocidas

Hasta el momento, conocemos de los siguiente casos:

url_rewrite_children 25 startup=25 idle=25 concurrency=0, AMD Opteron(tm) Processor 4332 HE 4 GB de RAM

url_rewrite_children 30 startup=30 idle=30 concurrency=0, AMD Opteron(tm) Processor 4332 HE 16 GB de RAM (Este podría mucho más)

Despliegue de configuración

Reiniciar Squid no tiene sentido por el momento. El despliegue y pruebas de configuración se llevarán a cabo hasta que hayamos configurado squidGuard.

Configuración avanzada

Limite global al ancho de banda usado por squid

La experiencia dice que si su enlace no es de al menos 5 Mbps, es conveniente poner un límite global a squid.

Puede calcular el valor a usar con la formula (x * 1000) / 8, donde x es la restricción en kbps que quiere hacer al uso de ancho de banda.

Hasta 2 Mb, considere usar el 75%: (2048 / 4) * 3 Luego, hasta 5 Mb, puede considerar 80%: (5120 / 5) * 4

La ubicación de esta configuración es inmediatamente antes de las directivas http_access. El siguiente ejemplo limitara a 1536 Kb:

[...]
ftp_passive off

delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 192000/192000

http_access deny NONE
[...]

Es posible que quiera considerar una configuración para tráfico de conocidad voracidad por su ancho de banda:

[...]
ftp_passive off

delay_pools 3

#640 kbps. 1/8 del total
acl STREAMING dstdomain .yimg.com
acl STREAMING dstdomain .fbcdn.net
acl STREAMING dstdomain .twimg.com
acl STREAMING dstdomain .mega.co.nz
acl STREAMING dstdomain .nflxso.net
acl STREAMING dstdomain .cloudup.com
acl STREAMING dstdomain .openload.co
acl STREAMING dstdomain .akamaihd.net
acl STREAMING dstdomain .akamaized.net
acl STREAMING dstdomain .angelcam.com
acl STREAMING dstdomain .gfrvideo.com
acl STREAMING dstdomain .oloadcdn.net
acl STREAMING dstdomain .nflxvideo.net
acl STREAMING dstdomain .flowplayer.org
acl STREAMING dstdomain .vkuserlive.com
acl STREAMING dstdomain .googlevideo.com
acl STREAMING dstdomain .dailymotion.com
acl STREAMING dstdomain .drive.amazonaws.com
acl STREAMING dstdomain .whatsapp.com
delay_class 1 2
delay_access 1 allow STREAMING
delay_parameters 1 80000/80000 160000/160000

#1280 kbps. 2/8 del total
acl DISPENSA dstdomain .muug.ca
acl DISPENSA dstdomain .office365
acl DISPENSA dstdomain .microsoft.com
acl DISPENSA dstdomain .dropbox.com
acl DISPENSA dstdomain .360safe.com
acl DISPENSA dstdomain .ff.avast.com
acl DISPENSA dstdomain .cdn.livefyre.com
acl DISPENSA dstdomain .drive.google.com
acl DISPENSA dstdomain .windowsupdate.com
acl DISPENSA dstdomain .geo.kaspersky.com
acl DISPENSA dstdomain .mirror.steadfast.net
acl DISPENSA dstdomain .googleusercontent.com
delay_class 2 2
delay_access 2 allow DISPENSA
delay_parameters 2 80000/80000 160000/160000

# 3200 kbps. 5/8 del total
delay_class 3 1
delay_access 3 allow all
delay_parameters 3 400000/400000

http_access deny NONE
[...]

Los tres pool definen el siguiente comportamiento:

  • Al acceder a los sitios en la ACL STREAMING, se puede hacer uso de hasta 640 kbps en total, y cada usuario que caiga en dicho bucket no puede usar más de 512 kbps
  • Al acceder a los sitios en la ACL DISPENSA, se puede hacer uso de hasta 640 kbps en total, y cada usuario que caiga en dicho bucket no puede usar más de 512 kbps. Cabe destacar que ambos son bucket totalmente diferentes
  • Para todo el tráfico restante, squid tratará de usar no más de 1536 Kbps.

Si necesita agregar una bucket adicional, debe configurarse antes del bucket por defecto, el último en el ejemplo

Autenticación de usuarios mediante LDAP

En nuestra configuración, tres cosas son necesarias

  • Agregar la configuración mediante las directivas auth_param al principio del fichero
  • Cambiar nuestra ACL usuarios
  • Eliminar intercept de la directiva http_port
auth_param basic program /usr/lib/squid3/squid_ldap_auth -v 3 -b "ou=Users,dc=empresa,dc=com" -f "(uid=%s)" -u "uid" -H ldap://ldap.empresa.com 
auth_param basic children 50 
auth_param basic realm Servidor Proxy para INSTITUCION
[...]

acl usuarios proxy_auth REQUIRED 
acl [...]
[...]

http_port 10.20.20.1:3128
http_port [...]
[...]

Desde este punto, puede seguir usando las ACL de squidGuard basadas en direcciones IP, lo que sería un verdadero desperdicio. Por tanto, busque en las configuraciones avanzadas de squidGuardla configuración necesaria para que también use LDAP