Squid

Proxy

Administrator

ACL (Control de Acceso)

Una regla ACL es la definición de objetos como son redes, maquinas, usuarios, paginas permitidas, grupo de páginas no permitidas etc.
sintaxis de un acl:
 
SRC
acl [ nombre de la lista ] src [lo que compone la lista]
acl miredlocal src 192.168.10.0/255.255.255.0    # definimos toda la red local
acl permitidos src "/etc/squid/permitidos"            # definimos un archivo 
                       |
           Dirección origen de una conexión en formatio IP/máscara
acl google_es dst 216.239.0.0/24                     # definimos la red de google
                       |
           Dirección destino de una conexión en formatio IP/máscara
Expresión regular que verifican los dominios de destino. La expresión regular hace distinción entre mayúsculas y minúsculas salvo que incluyamos la oción "-i" que evita dicha distinción.
acl porno dstdom_regex -i sex\..*               # busca sex en cualquier parte de la url
Permite especificar expresiones regulares para comprobar una url completa, desde el http:// inicial, por ejemplo podemos definir un todas las url que contengan http://mail.

url_regex ^http://mail.*

En otro ejemplo podemos ver una acl que verifique las peticiones de ficheros mp3:

url_regex -i mp3$

acl sitiospermitidos url_regex "/etc/squid/sitiosp"       # definición de url de sitios denegados

acl sitiosnegados    url_regex  "/etc/squid/sitiosn"      # definicion de url de sitios permitidos
Este tipo de acl perimite especificar una franja horaria concreta dentro de una semana. La sintaxis es la siguientes

acl nombre_acl_horaria time [dias-abrev] [h1:m1-h2:m2]

Donde la abreviatura del día es:

S - Sunday (domingo)

M - Monday (lunes)

T - Tuesday (martes)

W - Wednesday (miércoles)

H - Thursday (jueves)

F - Friday (viernes)

A - Saturday (sábado)

además la primera hora especificada debe ser menor que la segunda, es decir h1:m1 tiene que ser menor que h2:m2

Por ejemplo:

acl horario_laboral time M T W H F 8:00-15:00

Estarímos especificando un horario de 8 a 15 y de lunes a viernes.

rep_mime_type

Este tipo de acl se utiliza para verificar el tipo de respuesta recibida por el proxy. Este tipo de acl, analiza una respuesta del servidor por lo que sólo le afectas las reglas de respuesta como http_reply_access y no las reglas http_access que se aplican a las peticiones.

Por ejemplo:

acl video rep_mime_type application/octet-stream     #Bloquear youtube

acl video_no rep_mime_type -i ^video/x-flv$                               #Bloquear youtube

acl radio1_no rep_mime_type -i ^application/x-mms-framed$     #Bloquear RPP 

acl radio2_no rep_mime_type -i ^video/x-ms-asf$                        #Bloquear otras radios

acl javascript rep_mime_type -i ^application/x-javascript$          #Aplicaciones java

acl ejecutables rep_mime_type -i ^application/octet-stream$      #Algunos ejecutables

acl audiompeg rep_mime_type -i ^audio/mpeg$                         #Audio en mpeg

Para este tipo de ACL es importante resaltar que a la hora de hacer la regla en lugar de usar http_access se debe usar http_reply_access por ejemplo:
http_reply_access deny video_no
acl password proxy_auth REQUIRED                  # solicitud de autenticacion (hay que definir)

acl extencionesn urlpath_regex  "/etc/squid/extencionesn"  # definicion de extenciones 
.
 
## ACLs para usuarios autenticados
acl grupo_gerentes proxy_auth juanperez
acl grupo_usuarios proxy_auth junalaloca

Ejemplos de Acl y http_access

Denegar las peticiones de ficheros de tipo exe, pif, bat y cmd

acl tipoexe url_regex -i exe$ pif$ bat$ cmd$

http_access deny tipoexe

Denegar el acceso a todos los servidores cuyo nombre comience por "popup", "banner" o "ads"

acl incordios url_regex http://popup.* http://ads.* http://ads.*

http_access deny incordios

Denegar todos los ficheros de tipo exe que provengan de virus_fijo.com

acl anti_exe url_regex -i exe$

acl vfijo dstdomain virus_fijo.com

http_access deny anti_exe vfijo

Denegar las conexiones a las url completas o incompletas que hay en el fichero "/etc/squid/lista_negra_1.txt"

acl ln1 url_regex "/etc/squid/lista_negra_1.txt"

http_access deny ln1


TIPO A
Red con 3 Niveles de reglas Gerentes, Nivel_B, Nivel_C donde:
Gerentes tiene acceso a todo, 
Nivel_B a todo menos páginas prohibidas y msn.
Nivel_C sólo a páginas permitidas.


acl ipgerentes src "/etc/squid/ipgerentes"
acl ipnivel_b src "/etc/squid/ipnive_b"
acl ipnivel_c src "/etc/squid/ipnivel_c"

acl permitidos url_regex -i "/etc/squid/sitios-permitidos"
acl nopermitidos url_regex "/etc/squid/sitios-nopermitidos"
acl especificas url_regex "/etc/squid/sitios-especificas"
acl messenger url_regex "/etc/squid/pagmessenger"

=====>>>>> 

http_access allow localhost                          
http_access allow CONNECT !SSL_ports
http_access allow ipgerentes                    

http_access deny messenger 
http_access allow nivel_b !nopermitidos    
http_access deny nivel_c 
!permitidos
http_access deny all

------
---------------------------------------------------------------------------------
TIPO B : restricciones por extención:

acl extencionesn urlpath_regex  "/etc/squid/extencionesn"  # definicion de extenciones 

=====>>>>> 

http_access allow localhost
http_access allow CONNECT !SSL_ports
http_access 
deny extencionesn                    # Nadie baja lista de extenciones
http_access allow ipgerentes 
http_access deny messenger
http_access allow nivel_b !nopermitidos
http_access deny nivel_c 
!permitidos
http_access deny all


----------------------------------------------------------------------------------------
TIPO C : restricciones por horario:

acl noche time MTWHF 18:00-24:00

acl extencionesn urlpath_regex  "/etc/squid/extencionesn"  # definicion de extenciones 

=====>>>>> 

http_access allow localhost
http_access allow CONNECT !SSL_ports
http_access 
deny extencionesn                    # Nadie baja lista de extenciones
http_access allow ipgerentes 
http_access deny messenger
http_access allow nivel_b !nopermitidos
http_access allow nivel_c noche 
http_access deny nivel_c !permitidos
http_access deny all