Squid v4 Mas Webmin
Squid v4 Mas Webmin
Squid v4 Mas Webmin
aclSSL_portsport443acl
CONNECTmethodCONNECTac
lloc_subnetsrc192.168.
221.0/24aclloc_sysadmi
nsrc192.168.221.110/32
http_accessallowdomini
os_msnloc_sysadminhttp
_accessdenydominios_ms
nhttp_accessallowloc_s
ysadmin
Squid
Índice
1 Introducción...............................................................................................................................................4
2 Instalación y configuración básica...........................................................................................................7
2.1 Instalando los paquetes.....................................................................................................................7
2.2 Verificando la instalación.................................................................................................................8
2.3 Configuración básica de squid ........................................................................................................9
2.3.1 Introducción al archivo de configuración de squid ..............................................................9
2.3.2 Validando los archivos de configuración de Squid...............................................................9
2.3.3 Configuración de parámetros de red.....................................................................................10
2.3.4 Configuración de parámetros administrativos....................................................................10
2.3.5 Configurando el uso del caché en memoria.........................................................................11
2.3.6 Configuración y creación del directorio caché.....................................................................11
2.3.7 Configurando el tamaño para los objetos en caché.............................................................12
2.3.8 Configuración de los parámetros de logs.............................................................................13
2.3.9 Configurando las paginas de error de squid........................................................................14
2.3.10 Configuración de otros parámetros.....................................................................................15
2.4 Controlando el servicio squid........................................................................................................15
3 Configuración de los esquemas de control de acceso.........................................................................17
3.1.1 Tipos de elementos de ACL....................................................................................................18
3.1.2 Sintaxis de los elementos de ACL..........................................................................................19
3.1.3 Reglas de control de acceso....................................................................................................20
3.2 Creando reglas de control de acceso basadas en direcciones IP................................................22
3.3 Creando reglas de acceso basadas en puertos, dominios, URLs y tipos MIME.......................23
3.3.1 Listas de control de acceso basadas en puertos y método HTTP.......................................23
3.3.2 Listas de control de acceso basadas en dominios................................................................24
3.3.3 Listas de control de acceso basadas en URLs.......................................................................25
3.3.4 Listas de control de acceso basadas en tipos MIME............................................................27
Controles de acceso basados en la petición de tipos MIME....................................................27
Controles de acceso basados en la respuesta de tipos MIME.................................................28
4 Squid con Webmin...................................................................................................................................31
4.1 Instalación de Webmin....................................................................................................................31
4.2 Acceso a Webmin.............................................................................................................................32
4.3 Configuración de Squid .................................................................................................................33
4.3.1 Configuración actual ..............................................................................................................34
4.3.2 Creación de ACLs y restricciones..........................................................................................36
4.3.3 Directrices para la ordenación de restricciones....................................................................37
2/44
Squid
5 Apéndices.................................................................................................................................................38
5.1 Chuleta resumen básico..................................................................................................................38
5.2 Archivo de configuración por defecto sin comentarios ni líneas en blanco.............................40
5.3 Configurar navegador Firefox para usar el proxy......................................................................41
5.4 Ejemplo: permitir accesos a la red local........................................................................................41
5.5 Ejemplo: denegar acceso a la prensa deportiva............................................................................42
5.6 Expresiones regulares......................................................................................................................44
6 Fuentes......................................................................................................................................................44
Aula 30x
aula30x@yahoo.com
@aula30x
junio 2015 – v.4
3/44
Squid
1 Introducción
Características principales de Squid:
Caché de contenido para aceleración web con soporte de diferentes sistemas de archivos
para el almacenamiento del caché.
Squid provee soporte para controles de accesos para los clientes basados en varios criterios de
autenticación, como:
RADIUS.
Kerberos.
PAM (Linux).
Horarios.
4/44
Squid
Además Squid provee soporte robusto y extensible para controlar las peticiones basadas en el
destino y el contenido, creando reglas para:
Expresiones regulares para las URLs destino, ejem: .mp3, .torrent, .rar, .avi.
Además, se integra el filtro de URLs squidGuard, cuya función es analizar los URLs solicitados
por los clientes y compararlos contra una base de datos de listas negras y en base al resultado
obtenido permitir o denegar el acceso al URL. Las características principales de squidGuard son:
Ultra-rápido.
Direcciones IP.
Usuarios NCSA.
Permite el uso de listas blancas para excluir sitios bloqueados (falsos positivos) por alguna
categoría de lista negra.
Para obtener información sobre las peticiones al proxy en tiempo real existen varias herramientas
para el análisis de los logs de acceso de squid.
multitail
multitail es un programa de línea de comando para la visualización de múltiples archivos de
log en tiempo real, además posee el soporte de coloreado de logs basado en esquemas.
Incluye el esquema de colores para los logs de acceso de squid.
5/44
Squid
squidview
squidview es una interfaz en linea de comando para visualizar las conexiones activas del
proxy squid. Algunas de sus funcionalidades son:
sarg
SARG es una herramienta de análisis de logs de Squid Mediante los reportes de uso web
usted podrá obtener la siguiente información:
Tiempos de navegación
Descargas
calamaris
Calamaris genera reportes y estadísticas del uso del proxy, sus principales características
son:
6/44
Squid
7/44
Squid
Instalación de la v3:
root@manolo-debian:/# apt-get install squid3
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
squid3-common
Paquetes sugeridos:
squidclient squid-cgi resolvconf
Se instalarán los siguientes paquetes NUEVOS:
squid3 squid3-common
0 actualizados, 2 se instalarán, 0 para eliminar y 193 no actualizados.
Necesito descargar 1.847 kB de archivos.
Se utilizarán 4.550 kB de espacio de disco adicional después de esta
operación.
¿Desea continuar [S/n]?
Los permisos del archivo de configuración principal de squid son para root, sin embargo, otros
tienen permiso de lectura sobre el archivo. Es importante que tome esto en consideración si
almacena contraseñas en formato texto plano en dicho archivo.
root@manolo-debian:/# ls -l /etc/squid3/squid.conf
-rw-r--r-- 1 root root 206557 ago 28 2014 /etc/squid3/squid.conf
8/44
Squid
El usuario y grupo proxy requieren acceso al directorio del caché en el cual se almacenarán los de
objetos descargados, por defecto es el directorio /var/spool/squid3. Asegúrese de que los
permisos son correctos:
root@manolo-debian:/# ls -ld /var/spool/squid3
drwxr-xr-x 2 proxy proxy 4096 ago 28 2014 /var/spool/squid3
9/44
Squid
Si el sistema es multi-homed, es decir, tiene más de una interfaz de red y desea limitar en que
redes dar el servicio de proxy, por ejemplo, para que solo escuche peticiones en la dirección IP
192.168.221.254 asignada a la interfaz que esta conectada a la LAN use:
http_port 192.168.221.254:3128
Debe recargar la configuración del proxy para que este cambio tome efecto.
La directiva visible_hostname define el nombre de host con el que squid se anunciará, y
también será el nombre que aparecerá en las paginas de error. Defina un nombre válido, por
ejemplo:
visible_hostname fwproxy.example.com
Squid por defecto usa los servidores DNS definidos en el archivo /etc/resolv.conf a menos
que se definan los servidores DNS usando la directiva dns_nameservers. Si no desea que
squid use los servidores DNS del sistema, defina la lista de servidores, por ejemplo:
dns_nameservers 192.168.221.253 192.168.221.252
Se recomienda que el servidor proxy squid tenga acceso a uno o más servidores DNS caché para
acelerar el servicio de resolución de nombres. Puede instalar un servidor BIND en modo sólo-
caché.
Importante
Como buena práctica de seguridad nunca corra squid con los privilegios de root, use un usuario
no privilegiado como nobody o uno dedicado como proxy o squid.
El parámetro cache_mgr define la dirección de correo del administrador del proxy. Esta dirección
es usada en las páginas de error; además, si el proceso Squid muere, un email es enviado a la
dirección usada.
Este parámetro viene predefinido con la dirección de root, se recomienda que use una dirección
válida ya que es la que los usuarios usarían para notificar problemas con el proxy, por ejemplo
cache_mgr proxy@example.com
10/44
Squid
Nota
Squid usa memoria para otras tareas. La memoria asignada para el caché de objetos es la tercera
causa de consumo total de memoria.
Defina un valor no demasiado alto para el caché de memoria ya que podría afectar el rendimiento
del proxy.
Nota
Puede especificar múltiples directorios para caché en disco, por ejemplo, para repartir el caché en
varios discos duros y balancear el acceso al caché.
El tipo define el sistema de almacenamiento que squid usará para almacenar los objetos en disco.
El tipo predeterminado es UFS.
Directory-Name define la ruta absoluta al directorio designado para el caché. En la mayoría de
distribuciones GNU/Linux el directorio predeterminado es /var/spool/squid. En
Debian/Ubuntu se usa /var/spool/squid3, por ejemplo:
cache_dir ufs /var/spool/squid3 100 16 256
Importante
• Recuerde que el tamaño de la caché influirá en el tamaño de memoria que squid usará del
sistema.
• No ponga el tamaño del disco duro aquí. Mejor, si quiere que squid use todo el disco, reste
el 20% de la capacidad total y use este valor.
11/44
Squid
Level1 define subdirectorios de primer nivel que serán creados en el directorio. El valor
predeterminado es 16. Level2 define el número de subdirectorios para el segundo nivel de
subdirectorios. El valor predeterminado es 256.
Squid realiza muchas operaciones de I/O en disco, por lo que se recomienda tener el directorio de
caché en un disco rápido, preferentemente que esté separado del disco en el que está instalado el
sistema operativo.
Recuerde que puede tener múltiples cachés, es decir, puede tener varias lineas cache_dir y así
distribuir la carga de acceso a disco de un solo caché en varios discos.
12/44
Squid
El name es una etiqueta para el formato especificado. Las especificaciones de formato definen
códigos de formato propios de squid. Este parámetro esta comentado: se recomienda descomentar
la línea predefinida, por ejemplo:
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
Nota
Descomentar la linea del formato squid y eliminar el espacio entre squid y %t
% a literal % character
El parámetro access_log define la ruta del archivo en el que se va a registrar la actividad de los
clientes, además, se define el formato en el que se registrará la información, por ejemplo:
access_log /var/log/squid3/access.log squid
Nota
Si no desea registrar la actividad de los clientes, use el argumento none.
Importante
El usuario proxy debe tener permisos de escritura sobre este archivo.
13/44
Squid
El parámetro cache_log define la ruta del archivo en la que se registrarán los eventos generados
por el proceso squid. Cuando squid es iniciado, registra la información en este log. Si hubiese
algún problema al leer ciertos archivos, esa información se registra en este log. Problemas con
espacio insuficiente o en la autenticación la veremos en el archivo definido aquí.
cache_log /var/log/squid3/cache.log
El parámetro cache_store_log define el archivo de log en el que se registran los objetos puestos
en el caché, por ejemplo:
cache_store_log /var/log/squid3/store.log
Mediante la opción -k rotate del comando squid3 puede ordenar al proceso squid en ejecución
que realice una rotación del log access.log. El parámetro logfile_rotate define el número de
archivos access.log que se almacenarán antes de ser rotados.
Si ejecuta el comando squid3 -k rotate diariamente, probablemente querrá guardar los logs
antiguos por una semana. Para hacerlo, cambie el valor a 7, por ejemplo:
logfile_rotate 7
Nota
En la página de acceso denegado no se muestra la dirección de correo del administrador del caché.
Si desea mostrar esa información, use la versión en inglés y modifique el HTML.
Las páginas de error son archivos de texto plano en HTML. La dirección de correo especificada en
cache_mgr es incluída como dirección de contacto. Si desea agregar más información en la página
de conexiones rechazadas, edite el archivo
/usr/share/squid3/errors/Spanish/ERR_ACCESS_DENIED
y al final del archivo, después de la etiqueta </UL> agregue algo así::
<P>
Si cree que el sitio fué bloqueado por equivocación contacte al
administrador del proxy en el correo
<A HREF="mailto:%w%W">%w</A> o marque al departamento de TI en la extensión
XXXX.
</P>
Nota
No incluya las etiquetas HTML de cierre </HTML> </BODY>, squid las cerrará.
14/44
Squid
Puede editar estos archivos para personalizar los mensajes devueltos a los clientes cuando entren a
una pagina denegada, cuando no puedan acceder a un sitio cuando el servidor esta caído o cuando
el puerto sea rechazado por la política del firewall.
Lea los comentarios del archivo de configuración squid.conf para más parámetros de
configuración.
Muchas de las veces va a requerir realizar alguna configuración o cambio de ACLs o reglas de
acceso y aplicar los cambios sin tener que reiniciar squid. Use el siguiente comando para recargar
la configuración de squid:
root@manolo-debian:/# squid3 -k reconfigure
Nota
No olvide validar la configuración con -k parse antes de realizar la reconfiguración.
Importante
Al usar la opción -d, squid registrará todos los eventos en la salida estándar (stderr), de esta forma
podrá encontrar mensajes importantes o de error que pueden indicarle la causa del problema.
15/44
Squid
Si deseamos que el servicio Squid sea iniciado al arranque del sistema, usaremos el comando:
root@manolo-debian:/# update-rc.d squid3 defaults
Nota
Cuando se instala el paquete squid3, se agrega el servicio squid3 para que sea iniciado
automáticamente al arranque del sistema, por lo que es posible que reciba un mensaje como el
siguiente:
root@manolo-debian:/# update-rc.d squid3 defaults
System startup links for /etc/init.d/squid3 already exist.
Nota
En Redhat/CentOS use el comando: chkconfig squid on para activar el servicio al inicio del
sistema.
Si deseamos que el servidor squid3 NO sea iniciado al arranque del sistema usaremos el comando:
root@manolo-debian:/# update-rc.d -f squid3 remove
Nota
En Redhat/CentOS use el comando: chkconfig squid off para desactivar el servicio al inicio del
sistema.
16/44
Squid
Squid incorpora un sistema de control de acceso bastante flexible y potente basado en Listas de
Control de Acceso o ACLs. Los controles de acceso en Squid están formados por dos componentes
principales: los elementos de ACL y las listas de acceso.
Grupo de usuarios
Navegador
Los tipos de elementos de ACL de tipo destino pueden ser:
Puerto
Dominio DNS
URL
Tipo MIME
Además hay otros tipos de elementos de ACL como:
Protocolo
Nota
Cuando use un archivo, escriba un elemento por línea.
17/44
Squid
SEGÚN EL ORIGEN
Para crear controles de acceso basados en el origen de la petición del cliente podemos usar los
siguientes tipos de elementos de ACL:
src
Dirección IP del cliente, puede ser una sola dirección lista o rango de direcciones IP, soporta
el uso de mascaras de subred en formato CIDR
proxy_auth
Autenticación de usuarios vía procesos externos
browser
User-agent (nombre “interno” del navegador web) desde el cual se realiza la petición
SEGÚN EL DESTINO
Para crear controles de acceso basados en el destino de la petición encontramos los siguientes tipos
de elementos de ACL:
dstdomain
Este tipo define uno o más dominios destino solicitados por el cliente
url_regex
Tipo con soporte de expresiones regulares para el URL solicitado por el cliente
urlpath_regex
Tipo con soporte de expresiones regulares para el URL solicitado por el cliente, omitiendo el
protocolo y el nombre de host (http://hostname). Es decir, sólo se centra en la ruta al recurso.
port
Este tipo define uno o más números de puerto destino solicitados por el cliente
method
Este tipo define el método usado por el cliente para la petición HTTP (get, post, etc)
18/44
Squid
SEGÚN LA FECHA/HORA
Además es posible crear controles de acceso basados en el tiempo en el que se realiza la petición:
time
hora del día, y día de la semana
Si desea que la coincidencia la haga ignorando si son mayúsculas, minúsculas o mixtos use la
opción -i, por ejemplo:
acl lista_a tipo -i valor
Si desea incluir más de un valor, use una lista de elementos, por ejemplo:
acl lista_b tipo valor1 valor2
Nota
Cuando use múltiples valores, separe cada valor con un espacio. Si la lista es muy grande, puede
continuar en múltiples líneas.
Si requiere crear listas grandes puede continuar la lista en varias líneas, por ejemplo:
acl lista_x tipo valor1 valor2 valor3 valor4 valor5 valor6 valor7 valor8
valor9 valor10 valor11 valor12
Si la lista esta conformada por más de una línea, se recomienda que guarde los elementos del ACL
en un archivo de texto plano para su fácil revisión y edición, por ejemplo:
acl lista_x src "/etc/squid3/lista_x.acl"
19/44
Squid
Nota
Cuando use una lista basada en archivos, asegúrese de escribir la ruta absoluta al archivo entre
comillas.
Y en el archivo cada valor de la lista debe estar en una línea, por ejemplo:
root@manolo-debian:/# cat /etc/squid3/ips_sin_internet.acl
valor1
valor2
valor3
valor4
valor5
También es posible usar diferentes valores para una misma ACL en diferentes líneas: Squid las
combina en una sola lista, por ejemplo:
acl lista_z tipo valor1
acl lista_z tipo valor2
acl lista_z tipo valor3
acl lista_z tipo valor4
No puedes asignar el mismo nombre a dos tipos de elementos de ACL. Generará un error
de sintaxis
Puede usar el carácter "_" ó "-" para nombres de más de una palabra
Como se explicó brevemente, las reglas http_access se usan para permitir o denegar el acceso a
uno o más elementos de ACL, es decir, se podría evaluar tanto el origen (dirección IP, usuario, …)
como el destino (dominio, URL de la petición, ...). Squid tomará toda la información posible de las
cabeceras de la petición HTTP.
20/44
Squid
Dicho esto, el esquema más simple las reglas http_access para determinar el acceso a un a un
elemento sería el siguiente:
http_access allow|deny acl
Squid evalúa las reglas en el orden en el que son escritas, es decir, de arriba hacia abajo. Si la
primer regla no hace coincidencia con la petición, entonces el squid realizará una operación de tipo
OR y evaluará los elementos de la siguiente regla de acceso.
http_access allow|deny acl
OR
http_access allow|deny acl
OR
...
Si en una regla de acceso hay más de un elemento de ACL, el sistema utiliza el operador AND
para cada elemento de la regla, esto quiere decir que todos los elementos de la ACL deben hacer
coincidencia para que una acción se aplique.
En resumidas cuentas, el esquema de evaluación de las reglas de control de acceso en squid se
traduce a:
http_access allow|deny acl AND acl AND ...
OR
http_access allow|deny acl AND acl AND ...
OR
...
Si después de evaluar todas las reglas de acceso, squid no encuentra una regla que haga
coincidencia con la petición, la acción predeterminada será lo contrario a la acción definida por la
última regla de la lista, por lo que es recomendable que la última regla en su lista sea aquella
que deniegue el acceso sin condiciones. Puede usar el acl predeterminada all, por ejemplo:
http_access allow|deny acl AND acl AND ...
OR
http_access allow|deny acl AND acl AND ...
OR
...
http_access deny all
Nota
El acl all esta comentado por defecto en la mayoría de instalaciones ya que dicha ACL ya está
incorporada en squid.
Tome en consideración que habrá ocasiones en donde quiera definir reglas con más de un
elemento de ACL, por ejemplo para diferentes puertos. Para tal caso no podrá listar en una misma
regla dos puertos diferentes ya que eso no es posible, para tal caso escriba las reglas una delante de
la otra para que use una lógica OR.
En las siguientes secciones se muestran diferentes ejemplos de elementos de ACL y reglas de
acceso para diferentes tipos de ACL.
21/44
Squid
La lista puede ser escrita en un archivo de texto plano, cada elemento en una línea:
# Lista de direcciones en archivo
acl loc_gerentes src "/etc/squid3/loc_gerentes.acl"
También puede crear una lista basada en un rango de direcciones IP, por ejemplo:
# Rango de direcciones IP:
acl loc_rango_directores src 192.168.221.200-192.168.221.210/24
22/44
Squid
Nota
La lista anterior son las predeterminadas en squid, modifíquela de acuerdo a sus necesidades o
políticas de seguridad.
En la instalación predeterminada de squid, se define el ACL Safe_ports la cual incluye los puertos
80(HTTP), 21 (FTP), 443 (HTTPS), 563 (NNTP over SSL), 70 (GHOPER), 210 (WAIS) y del 1025 al
65535. Los primeros podrían ser seguros, pero para algunas organizaciones no se permite
conexiones a través del proxy a puertos superiores al 1025, con ciertas excepciones, quizá. Si en su
organización no se permite el acceso a puertos no privilegiados, elimine 1025-65535 de la lista de
elementos del ACL Safe_ports.
Las ACL de tipo method define una lista e métodos HTTP usados en la petición. En la mayoría de
casos los clientes usan el método GET ó POST. Sin embargo, algunos clientes usan el método
CONNECT para realizar un túnel hacía un puerto TCP; por ejemplo, para realizar un túnel y
conectarse a un sitio seguro vía HTTPS (TCP/443), la conexión sería
tienda.superofertasonline.com:443
Otros clientes pueden aprovechar esta característica para, por ejemplo, enviar SPAM haciendo un
túnel HTTP usando el método CONNECT a smtp.spammermalignoiii.com:25. Por lo tanto es
altamente recomendable limitar el uso del método CONNECT a puertos que considere seguros.
Por defecto, solo se permite el uso del método CONNECT al puerto HTTPS TCP/443..
23/44
Squid
Algunos sitios publican servicios que usan HTTPS para sitios seguros pero que no siguen los
estándares y usan puertos diferentes al 443, por lo que, si se usa la regla anterior para
SSL_Ports, no podrá entrar a un sitio que es supercaja.bancototote.com:1850. Si confía en el
sitio, entonces agregue el puerto 1850 al lista de puertos del ACL Safe_ports y SSL_Ports.
La siguiente regla solo hará coincidencia para las URLs http://youtube.com y http/justin.tv pero no a
http://www.youtube.com. Para que la regla también haga coincidencia con los subdominios use el
carácter "." como prefijo del elemento del ACL, por ejemplo:
acl dominios_videos dstdomain .youtube.com .justin.tv
Si la lista es muy grande, use una lista de dominios basada en archivos, por ejemplo:
acl dominios_porno dstdomain "/etc/squid3/dominios_porno.acl"
24/44
Squid
Ejemplo configuración de ACLs con control de puertos y direcciones IP, y dominios destino:
#
# Elementos de ACL:
#
...
#acl all src all
acl localhost src 127.0.0.1/32
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl SSL_ports port 443
acl CONNECT method CONNECT
acl loc_subnet src 192.168.221.0/24
acl loc_sysadmin src 192.168.221.110/32
acl loc_gerentes src 192.168.221.130 192.168.221.140 192.168.221.150
192.168.221.160
acl ip_sin_internet src "/etc/squid3/ip_sin_internet.acl"
acl dominios_videos dstdomain .youtube.com .justin.tv
acl dominios_msn dstdomain .login.live.com .contacts.msn.com
.messenger.msn.com .messenger.hotmail.com .hotmail.msn.com
.messenger.live.com loginnet.passport.com
acl dominios_porno dstdomain "/etc/squid3/dominios_porno.acl"
#
# Reglas de acceso:
#
...
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny ip_sin_internet
http_access allow dominios_msn loc_sysadmin
http_access deny dominios_msn
http_access allow loc_sysadmin
http_access allow loc_gerentes !dominios_porno
http_access allow loc_subnet !dominios_videos !dominios_porno
http_access deny all
El tipo de ACL url_regex define expresiones regulares para elementos de ACL basados en el
URL o partes del URL.
Para crear una ACL basado en el URL completo use:
acl urls_permitidos url_regex ^http://www.squid-cache.org/Doc/FAQ/$
25/44
Squid
El tipo url_regex también puede ser usado para crear controles de acceso basados en palabras
dentro del URL, por ejemplo (recuerda: “-i” para que no sea sensible a mayúsculas/minúsculas):
acl urls_descargas url_regex -i rapidshare megaupload
acl msn_url url_regex -i gateway.dll
El tipo de ACL urlpath_regex es basado en la ruta el URL solicitado, es decir, quita la parte del
protocolo y el hostname, por ejemplo, si el cliente solicita el URL
http://www.example.com/downloads/music/featured.mp3, la coincidencia tomaría efecto solo a la parte
de /downloads/music/featured.mp3.
El programa MSN Messenger se conecta a URLs que tienen la cadena gateway.dll: podemos crear
un ACL:
acl url_msn url_regex -i gateway.dll
Ejemplo configuración de ACLs con bloqueo de dominios, URLs y archivos adjuntos prohibidos y
multimedia:
#
# Elementos de ACL:
#
...
#acl all src all
acl localhost src 127.0.0.1/32
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl SSL_ports port 443
acl CONNECT method CONNECT
acl loc_subnet src 192.168.221.0/24
acl loc_sysadmin src 192.168.221.110/32
acl loc_gerentes src 192.168.221.130 192.168.221.140 192.168.221.150
192.168.221.160
acl ip_sin_internet src "/etc/squid3/ip_sin_internet.acl"
acl dominios_videos dstdomain .youtube.com .justin.tv
acl dominios_msn dstdomain .login.live.com .contacts.msn.com
.messenger.msn.com .messenger.hotmail.com .hotmail.msn.com
.messenger.live.com loginnet.passport.com
acl dominios_porno dstdomain "/etc/squid3/dominios_porno.acl"
acl urls_descargas url_regex -i rapidshare megaupload
acl archivos_multimedia urlpath_regex -i \.mp3$ \.mp4$ \.wma$ \.avi$ \.wmv$
\.mov$ \.mpg$ \.mpeg$ \.ram$ \.vob$
acl url_msn url_regex -i gateway.dll
26/44
Squid
#
# Reglas de acceso:
#
...
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny ip_sin_internet
http_access allow url_msn loc_sysadmin
http_access deny url_msn
http_access allow dominios_msn loc_sysadmin
http_access deny dominios_msn
http_access allow loc_sysadmin
http_access allow loc_gerentes !dominios_porno !urls_descargas
http_access allow loc_subnet !dominios_videos !dominios_porno !
urls_descargas !archivos_multimedia
http_access deny all
Cree un archivo de texto plano para crear una lista de tipos MIME multimedia:
root@manolo-debian:/# cat /etc/squid3/tipos_mime_audio.acl
^audio/mp3$
^audio/mp4$
^audio/mpeg$
^audio/wav$
^audio/x-mp3$
^audio/x-mp4$
^audio/x-mpeg$
^audio/x-wav$
27/44
Squid
Y cree el ACL:
acl req_mimetype_audio req_mime_type -i "/etc/squid3/tipos_mime_audio.acl"
O cree un archivo de texto plano para crear una lista de tipos MIME vídeo:
root@manolo-debian:/# cat /etc/squid3/tipos_mime_video.acl
^video/3gpp$
^video/avi$
^video/mp4$
^audio/mpeg$
^video/ogg$
^video/quicktime$
^video/s-ms-asf$
^video/x-ms-asx$
^video/x-msvideo$
^video/x-ms-asf$
^video/x-ms-wma$
^video/x-ms-wmv$
^video/x-ms-wvx$
^video/x-pn-realvideo$
Y cree la ACL:
acl req_mimetype_video req_mime_type -i "/etc/squid3/tipos_mime_video.acl"
28/44
Squid
Ejemplo configuración de ACLs con bloqueo de dominios, URLs y archivos adjuntos prohibidos y
multimedia y tipos MIME multimedia y flash:
#
# Elementos de ACL:
#
...
#acl all src all
acl localhost src 127.0.0.1/32
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl SSL_ports port 443
acl CONNECT method CONNECT
acl loc_subnet src 192.168.221.0/24
acl loc_sysadmin src 192.168.221.110/32
acl loc_gerentes src 192.168.221.130 192.168.221.140 192.168.221.150
192.168.221.160
acl ip_sin_internet src "/etc/squid3/ip_sin_internet.acl"
acl dominios_videos dstdomain .youtube.com .justin.tv
acl dominios_msn dstdomain .login.live.com .contacts.msn.com
.messenger.msn.com .messenger.hotmail.com .hotmail.msn.com
.messenger.live.com loginnet.passport.com
acl dominios_porno dstdomain "/etc/squid3/dominios_porno.acl"
acl urls_descargas url_regex -i rapidshare megaupload
acl archivos_multimedia urlpath_regex -i \.mp3$ \.mp4$ \.wma$ \.avi$ \.wmv$
\.mov$ \.mpg$ \.mpeg$ \.ram$ \.vob$
acl url_msn url_regex -i gateway.dll
acl req_mimetype_audio req_mime_type -i ^audio/mp3$ ^audio/mp4$
^audio/mpeg$ ^audio/wav$ ^audio/x-mp3$ ^audio/x-mp4$
acl rep_mimetype_audio rep_mime_type -i ^audio/mp3$ ^audio/mp4$
^audio/mpeg$ ^audio/wav$ ^audio/x-mp3$ ^audio/x-mp4$
acl req_mimetype_video req_mime_type -i ^video/avi$ ^audio/mpeg$
^video/ogg$ ^video/quicktime$ ^video/x-ms-wmv$
acl rep_mimetype_video rep_mime_type -i ^video/avi$ ^audio/mpeg$
^video/ogg$ ^video/quicktime$ ^video/x-ms-wmv$
acl req_mimetype_flash req_mime_type -i ^video/flash$ ^video/flv$ ^video/x-
flv$ ^video/x-shockwave-flash$ ^video/x-swf$
acl rep_mimetype_flash rep_mime_type -i ^video/flash$ ^video/flv$ ^video/x-
flv$ ^video/x-shockwave-flash$ ^video/x-swf$
#
# Reglas de acceso:
#
...
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny ip_sin_internet
http_access allow url_msn loc_sysadmin
http_access deny url_msn
http_access allow dominios_msn loc_sysadmin
http_access deny dominios_msn
http_access allow loc_sysadmin
29/44
Squid
30/44
Squid
Para instalarlo mediante interfaz gráfica, debería bastar con un doble clic.
Para su instalación mediante comandos, deberemos utilizar el comando dpkg -i:
1. Descargar archivo.deb y guardarlo en una carpeta del disco duro.
root@manolo-debian:/# ls -l /home/manolo/Descargas/
total 24004
-rw-r--r-- 1 manolo manolo 24578284 may 1 00:43 webmin_1.740_all.deb
2. Instalarlo con el comando dpkg, que sería algo así como una forma de más bajo nivel que
apt de acceder a la gestión de paquetes.
root@manolo-debian:/# dpkg -i /home/manolo/Descargas/webmin_1.740_all.deb
Seleccionando el paquete webmin previamente no seleccionado.
(Leyendo la base de datos ... 146423 ficheros o directorios instalados
actualmente.)
Desempaquetando webmin (de .../Descargas/webmin_1.740_all.deb) ...
dpkg: problemas de dependencias impiden la configuración de webmin:
webmin depende de libauthen-pam-perl; sin embargo:
El paquete `libauthen-pam-perl' no está instalado.
webmin depende de libio-pty-perl; sin embargo:
El paquete `libio-pty-perl' no está instalado.
webmin depende de apt-show-versions; sin embargo:
El paquete `apt-show-versions' no está instalado.
31/44
Squid
3. Pero dpkg sólo instala, sin tener en cuenta dependencias. De hecho, durante la instalación
informa de dependencias no resueltas.
Para resolverlas automáticamente, sí que tendremos que echar mano de apt.
root@manolo-debian:/# apt-get install -f
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
(…)
32/44
Squid
Existen varias categorías de configuración: Ports and Networking, Logging, Cache Options, …
La gestión del filtrado de tráfico se realiza mediante las listas de control de acceso (ACLs) de la
categoría Access Control, fundamentalmente mediante las pestañas Access control lists y Proxy
restrictions.
¡Cuidado!
Es muy importante tener en cuenta cómo ordenaremos las restricciones, ya que el
proxy tendrá en cuenta únicamente la 1ª coincidencia que encuentre y no analizará las
demás.
Las listas se crean en la pestaña Access control lists y se agregan, indicando si tienen permitido o
denegado el acceso, en la pestaña Proxy restrictions. Es aquí, en Proxy restrictions, donde el
administrador debe poner especial cuidado en ordenar correctamente las restricciones.
33/44
Squid
34/44
Squid
RESTRICCIONES
También hay dos creadas por el administrador,
utilizando las dos ACLs anteriores:
35/44
Squid
36/44
Squid
37/44
Squid
5 Apéndices
Archivo de configuración
/etc/squid3/squid.conf
Configuración
1. Crear ACL
acl loc_subnet src 192.168.1.0/24
2. Agregar restricción basada en dicha ACL
http_access allow loc_subnet
Sintaxis ACL
acl nombreacl tipoacl [-i] valor...
“-i” para que no sea sensible a mayúsculas/minúsculas
Sintaxis restricciones
http_access allow | deny nombre_acl
38/44
Squid
Ejemplos:
Permitir acceso a los equipos de la red local
acl loc_subnet src 192.168.1.0/24
http_access allow loc_subnet
• Consejos:
◦ Es usual que la primera nueva que coloquemos sea la que permita acceso a los equipos
de la red local.
39/44
Squid
Una buena idea sería realizar una copia de seguridad del archivo original y, posteriormente,
eliminar todos los comentarios para obtener un archivo más limpio y manejable.
40/44
Squid
41/44
Squid
Agregamos nueva ACL loc_subnet para permitir conexiones a los equipos de la red local:
(...)
acl CONNECT method CONNECT
# ACL para red local
acl loc_subnet src 192.168.1.0/24
Y ya podemos acceder.
42/44
Squid
El resultado:
43/44
Squid
EJEMPLOS
# grep '^La' fichero
El comando anterior nos devuelve todas las líneas del fichero que comienzan por La.
# ls -l | grep '^d'
El comando anterior nos devuelve la lista de ficheros que comienzan por d, es decir, la lista de
directorios.
6 Fuentes
http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Server_y_Sq
uid/html-onechunk/
44/44