SQUID
Control de acceso mediante Squid
Para controlar los accesos primero, tenemos que saber definir las propiedades de las conexiones sobre las que queremos establecer algún tipo de control. Las acl de Squid permiten especificar acl según muy diversos criterios, por ejemplo:
-
Una dirección de red
-
Una dirección de máquina
-
Un rango de direcciones
-
Una url de una conexión
-
Una franja horaria
Concepto de ACL en Squid
Un ACL es una definición de control de acceso, que en Squid se especifica mediante el parámetro acl según la siguiente sintaxis:
acl nombre_acl tipo_acl descripción ...
acl nombre_acl tipo_acl "fichero_de_descripciones" ...
Cuando usamos un "fichero_de_descripciones", cada descripción se corresponde con una línea del fichero.
Proxy Transparente
La configuración normal de un proxy exige que cada navegador esté configurado para utilizar dicho proxy como salida. Pero claro, por una lado es un engorro tener que configurar uno a uno todos los equipos de la red y por otro, tenemos la posibilidad de que la configuración TCP/IP le da salida a través de una pasarela.
Si a pesar de todo queremos esta configuración, tendremos que decirle al navegador que utilice como proxy el equipo que alberga Squid y el puerto el 3128. El puerto se puede cambiar en el fichero de configuración. Otro puerto que se suele usar para proxy es el 8080, pero ¿para qué cambiarlo?
Como queremos evitar tener que configurar los navegadores cliente y queremos evitar posibles puertas traseras de salida vamos a configurar un proxy transparente.
¿Qué es un proxy transparente? Es un proxy que no necesita ninguna configuración especial en los clientes. Se denomina transparente porque el cliente en realidad no sabe que lo está usando, es transparente para él.
Cómo configurar el proxy transparente, pues en primer lugar tenemos que configurar el cortafuegos para que reenvÃe todas las peticiones que se hagan a un puerto 80 hacia el puerto 3128 que utiliza Squid. Es decir, capturamos todas las peticiones que se hagan a un servidor http y se las enviamos a Squid para que él se encarge del resto.
Estas son las reglas de iptables. La primera para redrigir las peticiones al proxy la siguiente para rechazar el resto de los reenvÃos.
Si queremos que las páginas web pasen por el proxy con squid que está en 192.168.5.254, pero el resto siga con acceso normal, pondríamos:
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.5.254:3128
Si el equipo con squid está en la misma pasarela entonces podemos poner:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Cuidado, de las opciones anteriores, sólo debemos escoger una de ellas.
Si sólo queremos salida para visitar páginas web, entonces pondremos:
Primero garantizamos el tráfico DNS:
iptables -A FORWARD -p tcp -m tcp --dport 53 -j ACCEPTiptables -A FORWARD -p udp -m udp --dport 53 -j ACCEPTiptables -A FORWARD -p tcp -m tcp --sport 53 -j ACCEPTiptables -A FORWARD -p udp -m udp --sport 53 -j ACCEPT
En el siguiente caso suponemos que el equipo con squid está en 192.168.5.254:
iptables -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.5.254:3128iptables -t nat -A FORWARD -j REJECT --reject-with icmp-port-unreachable
Si el equipo con squid está en la misma pasarela entonces podemos poner:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128iptables -A FORWARD -j REJECT --reject-with icmp-port-unreachable