Proxy Squid Y Dansguardian

El dia de hoy quise mostrarles la experiencia que tuve tratando de instalar un servidor proxy y filtro de contenidos en Linux, decidí entonces elegir para esta actividad el Squid y el Dansguardian.

Conceptos Básicos.

Proxy:

Un proxy es un software que se encarga de hacer las peticiones por otros, es decir que cuando un equipo esta navegando en internet a través de un proxy, quien realiza las peticiones es en realidad el proxy y no el cliente.

Squid:

Este es un software licenciado bajo la licencia GNU/GPL, soporta diversos protocolos entre estos HTTP, HTTPS y FTP, a parte de ser un proxy también sirve de caché es decir que cuando un cliente que navega a través de el, visita una pagina, esta queda almacenada en el disco y la siguiente vez que sea abierta la navegación en esta sera mucho mas rápida.

Dansguardian:

Este es un control de contenidos, sirve para filtrar diversos tipos de accesos vía web, también puede ser integrado con control de virus, es flexible y de fácil implementación.

Requisitos previos.

En mi caso cuento con una maquina cuya IP es la 192.168.1.2 con sistema operativo CentOs y en la cual tengo un servidor DNS corriendo, para este caso esta sera utilizada como router encaminando paquetes desde los clientes hacia internet y utilizando el DNS con reenviadores para que la resolución de nombres por parte de los clientes se haga a través de servidores DNS públicos, aclaro esto NO es estrictamente necesario, yo solo lo hago para mayor faicilidad.

Si necesitan información de como se instala un servidor DNS los invito a visitar el siguiente enlace.

Primero que todo les mostrare como hacer para enrutar los paquetes que vengan desde un cliente hacia internet, es decir que el gateway de los clientes de ahora en adelante seria nuestro proxy.

Utilizando Centos Como Router Y Reenviadores DNS.

Primero que todo debemos añadir un valor "1" al archivo /proc/sys/net/ipv4/ip_forward


Luego definiremos mediante iptables la subred a la que le daremos salida a internet, y la interfaz por la que debe salir, añadiendo enrutamiento nat, en este punto pueden cambiar el los valores subrayados en rojo el primero por la id de red y mascara de subred de su red interna y el segundo por el nombre de la interfaz que tiene salida a internet.


Ahora configuraremos los reenviadores en el DNS, en el archivo /var/named/chroot/var/etc/named.conf agregaremos la dirección 8.8.8.8 el cual es el DNS publico de google.



Finalmente en el cliente pondremos nuestro servidor como gateway y como DNS.


Listo, esta parte queda configurada.

Instalando Y Configurando El Proxy.

Desde los repositorios nos descargaremos el squid.


Solo con instalarlo e iniciarlo con el demonio /etc/init.d/squid start, este quedara funcionando y denegando TODO el trafico hacia internet, les mostrare como se configura el cliente para verificar esto.

En Mozilla vamos a Herramientas, Opciones.


Avanzado, Red, Configuración.


y pondremos la IP del proxy y el puerto (que por defecto viene el 3128)


Si intentamos navegar podremos ver que no nos deja hacerlo con ninguna URL.

Ahora procederemos a editar el archivo squid.conf


La linea "http_access deny all" viene descomentada por defecto, esto lo que hace es denegar cualquier tipo de salida a internet, entonces la comentaremos.


Ahora procedemos a buscar las lineas que nos permitirán la integración con el Dansguardian las cuales son http_port 3128 (puerto por defecto, lo dejare asi) http_port 127.0.0.1:3128 (Loopback y puerto) cache_peer 127.0.0.1 parent 8080 3131 (los puertos por los que se comunicara el Dansguardian con el squid).



Ahora les explicare lo que son las acl:

Una acl o lista de control de acceso es aquel parámetro que define como, cuando y a que sitios puede ingresar determinado equipo, persona o grupo de personas o equipos; es decir; que si yo quiero que equipo2 no entre a la pagina www.google.com entre las 12:00 y la 1:00pm lo puedo hacer mediante acl's. Estas se manejan generalmente escribiendo acl (parámetro) (tipo de acl) (contenido)

Hay diversos tipos de acl

Dentro de estas encontramos las siguientes.

src: especifica IP's, nombres o subredes de origen.

Ej: acl usuario src 192.168.1.3 (esta acl define que el origen de los paquetes sera la ip 192.168.1.3)

dst: especifica IP's, nombres o subredes de destino.

Ej: acl usuario dst www.google.com (esta acl define que el destino de los paquetes sera www.google.com

srcdomain: especifica dominios de origen

Ej: acl dominio srcdomain gnunick.com (esta acl define que el origen sera gnunick.com)

dstdomain: especifica dominios de destino.

Ej: acl dominio dstdomain google.com (esta acl define que el destino sera gnunick.com)


srcdom_regex: evalúa palabras de entrada a nuestra red.

Ej: acl intranet srcdom_regex  gnunick\..* (esta acl define cualquier palabra relacionada con el dominio gnunick)

dstdom_regex: evalúa palabras de salida de nuestra red.

Ej: acl internet srcdom_regex  google\..* (esta acl define cualquier palabra relacionada con el dominio google)

time: establece tiempos de ingreso o salida, en esta acl Comenzando desde el domingo hasta el lunes los valores de los dias se representan en las letras SMTWHFA y maneja un formato de 24:00h.

Sunday
Monday
Tuesday
Wednesday
tHursday
Friday
sAturday

Ej: acl horas time SAF 00:00-02:00 (esta acl define Domingo, Sábado y viernes entre las 00:00 y las 2:00Am)

url_regex: define ingresos por url

Ej: acl adultos url_regex porno sexo lolitas (esta acl define las palabras sexo porno y lolitas)

urlpath_regex: define extensiones de archivos. 

Ej: acl exe urlpath_regex .\exe (define la extensión .exe)

macaddress: administra por medio de direcciones MAC.

Ej: acl bannedmac macaddress 00:99:11:22:33:44 (define la mac 00:99:11:22:33:44)

password: administra por usuarios.(Para hacer esto pueden seguir el siguiente enlace INTEGRANDO SQUID CON LDAP)

Luego de definir una acl se debe definir luego de estas el parámetro "http_access con los valores allow(permitir) deny(denegar) Por ejemplo si quisieramos denegar  la anterior acl macaddress seria de la siguiente manera 

acl bannedmac macaddress 00:99:11:22:33:44
http_access deny bannedmac

Ahora les mostrare mi configuración.

Lo primero que hice fue crear una acl para la red local llamada localnet, cuyo origen es mi subred completa, lo que quería era permitir el acceso de todos a internet entonces lo hice de la siguiente manera, al final del archivo también puse la linea que había descomentado en la parte superior.


Después quise denegar a la IP 192.168.1.20 para que no pudiera tener acceso a internet.


Luego recargue el demonio para que me tomara ese cambio.


Intente navegar desde dicho cliente y efectivamente estaba denegado.


Ahora quería probar la acl tipo time, entonces agregue una acl llamada horario y la denegué por 4 minutos entre las 11:00 y las 11:09.


Intente navegar a las 11:07 y no me dejo.


Volví a intentar a las 11:11 y fue satisfactorio.



Es hora de jugar con Dansguardian.

Lo primero sera bajarlo desde los repositorios.

Ahora editaremos el archivo de configuración cambiando solo los parámetros que les mostrare a continuación.


Cambiaremos el idioma para el español y el nivel de logs lo aumentaremos a 3.


Definimos la IP donde esta el proxy (en este caso es la loopback) el puerto para comunicarse con squid y el puerto por el que el cliente se conecta con el proxy (3128).

Apagamos el modo weightphrase con el parámetro 0.


En mi caso le daré el máximo de memoria caché ya que el volumen de usuarios sera muy grande.


Descomentamos las siguientes lineas.

Pondremos el nombre de la maquina y el dominio que se mostrara cuando el acceso sea denegado.


Luego de esto procedemos a cerrar el archivo. Ahora podemos ingresar a el archivo /etc/dansguardian/bannedsitelist para definir los sitios que queremos bannear.


No tenemos que poner ni http:// ni www. tan solo basta con poner el dominio para bannear el sitio.


Si guardamos y reiniciamos el dansguardian podremos probar desde el cliente.




El dansguardian ahora nos mostrara un mensaje de "Sitio No Permitido"


Ahora quiero intentar el ingreso por palabras, para esto ingresamos al archivo /etc/dansguardian/bannedphraselist para ingresar las palabras que quiero bannear.


Estas son las palabras que quiero evitar, están relacionadas con contenido para adultos, cuando las pongo de la siguiente manera < palabra > se evita cualquier relación con estas palabras en internet.


Ahora cerramos, volvemos a reiniciar y probamos desde el cliente.


Dansguardian me aclarara que se encontró una frase no permitida.

Así termine mis pruebas con estos servicios, si llegan a tener alguna duda o problema no duden en preguntar para tratar de ayudar a resolverlo.

Si has encontrado útil este artículo puedes compartirlo desde tu blog, página Web o foro.




1 comentarios:

AudYoeL dijo...

buen dia, y gracias por tu aporte que es muy bueno,
quero hacerte una consulta con el squid aqui tenemos cuentas de correo alojadas en google apps,
y se quiere bloquear el gmail y el correo que sale en google.com.pe y google en general pero si bloqueo el google no entramos al correo de la empresa, recien estoy empesando en linux y se me complica por el tiempo.
saludos

Publicar un comentario

 
Licencia Creative Commons
Este obra está bajo una licencia Creative Commons Atribución-NoComercial-SinDerivadas 2.5 Colombia.