miércoles, 19 de agosto de 2009

Recomendaciones para montar un proxy.

Este post es de temática avanzada, se obvian todos los conocimientos necesarios para entender lo que voy a explicar.

Esto es un resumen de cómo tengo configurado en mi casa el proxy para control de acceso a internet de mi nodo de Valencia Wireless.

Proxy: Squid.
Opciones de compilación:
--enable-arp-acl permite posteriormente configurar ACLs usando direcciones MAC (solo en el mismo segmento de red).
--enable-delay-pools necesario para poder configurar el control de ancho de banda.

Ejemplo real de ACLs. El orden es indiferente.
acl wifi src 10.34.12.48/28 - origen de la red wifi
acl wifi2 src 10.34.13.48/28 - origen de la segunda interfaz wifi
acl lan src 192.168.0.0/16 - origen del rango completo de red local
acl landst dst 192.168.0.0/16 - destino del rango completo de red local
acl redlibre dst 10.0.0.0/8 - destino del rango completo de redlibre
acl internet dst 0.0.0.0/0.0.0.0 - destino genérico para "todo internet"
acl permitidos dstdomain "/usr/local/squid/etc/permitidos.conf" - dominios permitidos
acl bloqueados dstdomain "/usr/local/squid/etc/bloqueados.conf" - dominios bloqueados
acl espias dstdomain "/usr/local/squid/etc/espias.conf" - dominios conocidos de programas espía
acl vip arp "/usr/local/squid/etc/vip.conf" - direcciones MAC de confianza
acl habituales arp "/usr/local/squid/etc/habituales.conf" - direcciones MAC habituales
acl messenger req_mime_type -i ^application/x-msn-messenger$ - especial para acceso del msn messenger

Ejemplo real de control de acceso usando las ACL anteriores.
Squid las interpreta en estricto orden, por lo tanto la colocación es muy importante, conviene que los accesos más permisivos estén al final.
http_access deny landst - nadie puede conectarse a la red local
http_access deny espias - nadie puede conectarse a los dominios malignos
http_access allow wifi permitidos - las IP inalámbricas pueden acceder a los dominios permitidos
http_access allow wifi redlibre - las IP inalámbricas pueden acceder a redlibre
http_access allow wifi2 permitidos - lo mismo para el segundo interfaz wifi
http_access allow wifi2 redlibre - lo mismo para el segundo interfaz wifi
http_access deny messenger bloqueados - el programa messenger no puede acceder a los dominios bloqueados
http_access allow messenger internet - el programa messenger puede conectarse a internet
http_access deny habituales bloqueados - los usuarios habituales no pueden acceder a los dominios bloqueados
http_access allow habituales internet - los usuarios habituales pueden acceder a internet
http_access allow vip internet - los usuarios de confianza tienen acceso total a internet
http_access allow lan internet - la red local tiene acceso total a internet
http_access deny internet - si no se ha permitido anteriormente de forma explícita, está bloqueado. También, si por algún motivo hubiera algun fallo, y la petición no coincidiera con ninguna regla anterior, no se puede acceder a ninguna parte, esta regla cierra cualquier agujero involuntario que pudiera haber

Ejemplo real de control de ancho de banda con delay pools.
Cuatro delay pools, tres de tipo 1 y una de tipo 2
delay_class 1 1
delay_class 2 1
delay_class 3 2
delay_class 4 1


delay_access 1 allow lan - la red local accede al tipo 1
delay_access 2 allow permitidos - dominios permitidos, tipo 2
delay_access 3 allow redlibre - redlibre, tipo 3
delay_access 3 allow habituales - habituales, tipo 3
delay_access 3 allow vip - de confianza, tipo 3
delay_access 4 allow all - si no se ha definido antes, tipo 4

delay_parameters 1 -1/-1
- tipo 1, ilimitada
delay_parameters 2 30720/15360 - tipo 2, 30 KB/s con ráfagas de 15 KB
delay_parameters 3 122880/61440 61440/30720 - tipo 3, 120 KB/s con ráfagas de 64 KB, para todos los autorizados a este tipo, con un límite por cliente de 64 KB/s y ráfaga de 32 KB
delay_parameters 4 5120/5120 - tipo 4, 5KB/s con ráfaga de 5KB, sólamente para cubrir posibles errores de configuración y que no se escape nada

Programas auxiliares:
IR Redirector
Permite configurar que cada X segundos, cuando un cliente realice una petición, se le devuelva una web predefinida, en vez de la solicitada. Yo lo tengo configurado para que cada 60 minutos muestre una web de bienvenida a Valencia Wireless. Es un muy muy simple sustituto para un portal cautivo.

Squid Graph
Permite generar gráficas y estadísticas de uso del proxy. Puede ser de mucha utilidad, ya que indican el porcentaje de aciertos de la caché de disco y de memoria, la cantidad de accesos totales y promedio, y total y promedio de los Mbytes transferidos y cacheados. Y además pinta unas gráficas muy chulas :-)