Configuración de squid con Webmin
Router y Proxy Linux (Ubuntu 8.04)
Internet
10.0.0.1/8 eth1
Router Cisco 2600 192.168.0.2/24 eth0 192.168.0.70/24
Cliente 1 Cliente 2 10.0.0.2/8 10.0.0.3/8
Bueno instalaremos squid-2.6.STABLE14 ya que es la última versión soportada por webmin-1.420. Descomprimos squid-2.6.STABLE14.tar.bz2 y webmin-1.420.tar.gz. Entramos al directorio resultante de la descompresi ón del tarball de squid y procedemos a instalarlo: ./configure - -sysconfdir=/etc/squid/ make make install Vamos al archivo de configuraci ón de squid (/etc/squid/squid.conf) y en la última linea o despu és de una ACL ponemos lo siguiente: visible_hostname “nombre_de_mi_proxy” No tiene que ser necesariamente el nombre del equipo, por ejemplo, yo le coloqu é al mio “ubuntu_proxy” (sin las comillas). Luego, como root, creamos el grupo y el usuario squid: _# groupadd squid _# useradd -d /var/log/squid -s /bin/false -g squid squid Bueno, todo bien hasta aqui, ahora nos toca crear el directorio cache/ en /usr/local/squid/var/ Ponemos al usuario squid como propietario del directorio que acabamos de crear y tambi én demosle permisos de lectura y escritura. El siguiente paso es crear tres arhivos en el directorio /usr/local/squid/var/logs/ : access.log cache.log store.log Y le damos permisos de lectura y escritura a estos tres arhivos. Bueno listo, continuamos pero con la instalaci ón de Webmin. Entramos al directorio resultante de la descompresión del tarball de webmin y ejecutamos el siguiente ejecutable (como root y se necesita que el sistema tenga instalado el Perl y sus librerias):
_# ./setup.sh Y seguimos las indicaciones del instalador. Cuando él termina coloca por defecto el puerto 10000 como puerto de escucha de peticiones para entrar al webmin por web (ya sea Firefox, Konkeror, Opera, etc), es decir, una vez instalado el webmin abrimos nuestro navegador favorito y colocamos en la barra de direcciones los siguiente: http://nombre_de_nuestro_equipo:10000
Y listo, colocamos el usuario y password (figura 1) que configuramos en la instalaci ón de Webmin y entramos en la consola de administraci ón del mismo (figura 2).
Figura 1
Figura 2
En el menú servidores podemos ver los servicios de red ejecutandose en el server, pero si no aparece el servidor proxy Squid debemos instalar el modulo Squid que se encarga de administrar dicho servicio de red. Ahhh bueno pero antes si tenemos al Webmin en ingl és podemos pasarlo a Español haciendo click en Webmin -> Webmin Configuration -> Language (figura 3) :
Figura 3 Bueno, continuando con la instalaci ón del modulo, dentro del Webmin, vamos a Webmin -> Configuración de Webmin -> Módulos de Webmin (figura 4):
Figura 4 Una vez dentro de Modulos de Webmin, seleccionamos M ódulo estándar de www.webmin.com (figura 5) y oprimimos el bot ón con los tres puntos para seleccionar el modulo Squid :
Figura 5
Luego de selecionar el módulo Squid hacemos clic en el bot ón “Instalar Módulo” y listo, comienza la descarga e instalación del módulo. Ahora ya podemos hacer clic en el men ú servidores y encontraremos el m ódulo de configuración del proxy Squid (figura6):
Figura 6 Entremos al sub-modulo “Puertos y Trabajo en Red” para configurar el puerto de escucha de nuestro proxy, por defecto viene configurado con el puerto 3128, cambiemoslo al puerto 8080. Cada vez que hagamos un cambio en la configuraci ón del servidor Squid debemos hacer clic en el botón “Salvar”. Bien, vamos a la parte m ás importante, las ACLs (figura 7).
Figura 7 En el menú Servidores -> Squid – Servidor Proxy podemos ver las ACLs que vienen por defecto (figura 7) y justo abajo encontramos un bot ón para definir nuestras nuevas ACLs. Comenzemos definiendo una ACL que permita acceso a Internet a toda nuestra red, en el men ú contextual del lado del bot ón “Crear nueva ACL” seleccionemos “Direcci ón de Cliente” (figura 8):
Figura 8
Figura 9
Le ponemos un nombre a nuestra ACL, en “Desde IP” colocamos la direcci ón de red de nuestra LAN, el campo “A IP” lo dejamos en blanco y el campo “M áscara de Red” lo llenamos con la máscara de sub-red de nuestra LAN. Listo le hacemos clic en Salvar.
Figura 10 Ya la ACL que define nuestra red est á configurada, ahora debemos programar si el acceso a Internet para esta red es permitido o denegado, esto lo hacemos parandonos en la solapa “Restricciones Proxy”, del mismo sub-modulo “Control de Acceso” (figura 11), y luego hacemos clic en “Añadir restricción proxy” lo cual no colocará en otro sub-modulo llamado “Crear Restricci ón de Proxy” (figura 12), all í seleccionamos la acción “Permitir” y luego seleccionamos la ACL “red_10.0.0.0” y por último Salvamos.
Figura 11
Figura 12 Listo, nos regresamos al sub-modulo “Control de Acceso” solapa “Restricciones Proxy” y allí debemos subir al menos un nivel hacia arriba la ACL “red_10.0.0.0” ( toda ACL debe quedar encima de la ACL “all” cuya acción es “Denegar”) con ayuda de la flecha en el campo “Mover” podemos hacerlo
Figura 13
Figura 14 Por último hacemos clic en “Aplicar cambios” para que la nueva ACL funcione.
Bloquear páginas por Expresión regular de servidor. Vamos a hacer una ACL que bloquee todo tipo de p áginas que contengan en su URL la frase “rubia”. Desde el principio (Indice squid) entramos a “Control de Acceso” en el men ú contextual de la parte inferior seleccionamos “Expresi ón Regular de Servidor Web” y luego clic en “Crear nueva ACL” (figura 15):
figura 15
Al hacer clic en “Crear nueva ACL” entraremos autom áticamente al sub-modulo “Editar ACL” dentro del cual le pondremos un nombre a nuestra nueva ACL, yo la llam é “prohibido”, luego en el campo “Expresiones Regulares” colocaremos todo tipo de frases que sean inapropiadas en la URL de una p ágina web, yo a modo de ejemplo coloqu é “rubia” y “sexo” (una p ágina como www.rubias19.com será bloqueada, una p ágina como www.sexofree.com también será bloqueada) y cuando terminemos salvamos y aplicamos los cambios.
figura 16 Pero hasta aqu í no llega esta configuraci ón, ahora en el modulo “Control de Acceso” entramos en la solapa “Restricciones Proxy” y seleccionamos la ACL “red_10.0.0.0” para aplicarle la condici ón que acabamos de crear en la ACL “prohibido”. Al hacer clic en la ACL “red_10.0.0.0” el sistema nos entrará en el sub-modulo “Editar Restricci ón de Proxy” (figura 17): En éste modulo lo que hacemos es asociar la ACL “red_10.0.0.0” con la ACL “prohibido” de tal manera que permita el acceso a Internet a todos los de la red 10.0.0.0/24 pero con la excepci ón de páginas que contengan frases en la ACL “prihibido”, entonces
figura 17
Ya en el módulo “Editar Restricción de Proxy” en el campo “Coincidir con ACLs” seleccionamos la ACL “red_10.0.0.0” y en el campo “No coincidir con ACLs” (de la parte derecha del m ódulo) seleccionamos la ACL “prohibido” (si queremos asociar m ás ACLs lo hacemos teniendo la tecla “Control” oprimida y con el puntero del mouse selecionamos l ás demás). Cuando terminos esta parte, salvamos. Y listo, ya coneso nuestra ACL bien condicionada lucir á como se muestra en la figura 18:
Figura 18 Bloquear archivos por extensi ón. En el siguiente ejercicio veremos como configurar a Squid para que bloquee descargas de archivos ejeutables y archivos mp3. Entonces dentro del m ódulo Squid en el Webmin vamos a Control de Acceso -> Lista de Control de Acceso, seleccionamos del men ú contextual, en la parte inferior de la página, la opción “Expresión Regular de Ruta URL” y luego clic en “Crear nueva ACL”. Le ponemos un nombre a la ACL, yo enmi caso la llam é “bloquea_archivos” y en el campo “expresiones regulares” digitamos las extensiones de los archivos que queremos bloquear, con el siguiente formato: \ . exe \ . mp3 (todos los caracteres sin espacios) Y luego salvamos, la configuraci ón quedar á similar a la de la figura 19.
Figura 19 Luego vamos a la solapa “Restricciones Proxy” (figura 20), seleccionamos la ACL “red_10.0.0.0/24”
figura 20 En el cuadro izquierdo (figura 21) seleccionamos la ACL “red_10.0.0.0/24” y luego, con la tecla “Control” oprimida, seleccionamos la ACL “bloquea_archivos” del cuadro derecho (figura 21). Salvamos y listo.
figura 21 Podemos excluir a ciertas IP para que tengan descargas y acceso total hacia Internet. En el sub-modulo “Control de Acceso” seleccionamos “Direcci ón de Cliente” → “Crear nueva ACL”, bueno eso nos lleva al sub-modulo “Crear ACL” (figura 22) y all í empezamos a definir las IPs que tendrán todos los privilegios para nevegar en la Internet.
Figura 22. Solo colocamos la IP address, sin m áscara de Red, de los equipos que deben tener acceso total hacia Internet. Si le onfiguramos una m áscara de red en este paso la configuración se aplicará a todos los equipos de esa red y la intenci ón de excluir un equipo de las ACLs no funcionar á. Y listo salvamos. Si necesitamos m ás equipos con acceso total a Internet podemos hacerlo volviendo a entrar a ésta misma ACL (“su_excelencia” la que acabamos de crear) y nos aparecer á un nuevo campo para ingresar otra direcci ón IP (figura 23). Hacemos los mismos pasos para
ingresar más IP address.
Figura 23 Y también podriamos configurar restricciones proxy individuales a esas IPs que tienen, hasta ahora, acceso total hacia Internet.
Figura 24 En la ACL “su_excelencia” se encuentra las IP que tienen acceso total a Internet.
Esta el primera IP que configuramos
Esta la configuré después.
Configuración de las reglas IPTABLES. Ya que los Proxy Servers no soportan protocolos de correo como el POP3, SMPTP e IMAP debemos configurar el firewall para que redireccione hacia la Internet cualquier petici ón de conexi ón, de un cliente de correo como Outlook, a un servidor de correo POP3 y SMPT y bloquee el resto del tráfico, como el tr áfico Web; claro para que este último se haga solo por medio del proxy. Ponemos a 1 en bit del ip_forward para habilitar el enrutamiento en el servidor Linux: _# echo 1 > /proc/sys/net/ipv4/ip_forward Y le hacemos un NAT a las conexiones de puertos de correo y DNS para que los clientes puedan enviar y recibir correos en su Outlook: _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p tcp --dport 53 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p udp --dport 53 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p tcp --dport 25 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p tcp --dport 110 -j MASQUERADE Las siguientes reglas de IPTABLES las configuramos para poder usar nuestras web cams en nuestro aMSN _# iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -p udp --dport 1863 -j ACCEPT _# iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -p tcp --dport 1863 -j ACCEPT _# iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -p tcp --dport 6891 -j ACCEPT _# iptables -A FORWARD -s 10.0.0.0/8 -o eth0 -p udp --dport 6891 -j ACCEPT _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p tcp --dport 6891 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p tcp --dport 1863 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p udp --dport 1863 -j MASQUERADE _# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -p udp --dport 6891 -j MASQUERADE Aunque podemos configurar las conexiones de proxy en el aMsn para poder “chatear” como de costumbre, el video o la c ámara web, para usarlos en este tipo de clienetes de mensajeria, no pasan a través del proxy asi que debemos configurar las reglas IPTABLES que acabamos de ver para que el video de nuestras c ámaras en el aMsn pueda funcionar (para el MSN de Microsoft ser í a otro puerto, yo en el momento no s é cual es asi que queda en manos suyas averiguarlo) . Podemois averiguar los puertos que utiliza el aMsn para c ámaras web siguiendo la ruta Cuenta → Preferencia → Conexión (figura 25). Abrir esos puertos para las web cams en el aMsn es util si necesitamos hacer videoconferencias en una empresa, pero si no las necesitamos entonces no es necesario configurar este tipo de reglas en firewall IPTABLES.
Figura 25
Proxy transparente Si lo que queremos es no incomodar al usuario con la configuraci ón del proxy en su Internet Explorer (suele ocurrir que cuando el usuario se lleva su laptop a casa con el proxy de la empresa éste no le entra a Internet, o en un aereopuerto le pasa lo mismo) podemos recurrir a algo llamado “Prxoy transparente”, y como su nombre lo dice el servidor Proxy es transparente para los navegadores de Internet (Mozilla Firefox, Internet Explorer de Microsoft, etc), es decir que no es necesario configurar la direci ón del proxy en los clientes, aunque igual todo el tr áfico hacia Internet se hace por medio del Servidor Proxy, este truco se logra configurando una regla en el IPTABLES del mismo servidor y diciendole a al Proxy Server que va a trabajar como Proxy transaparente. Para lograr ese modo de trabajo hacemos lo siguiente: En el archivo de configuraci ón de Squid (squid.conf) ubicamos la diretiva http_port 8080 (ahi es donde se configura el squid para que escuche peticiones de conexi ón por el puerto que le indiquemos, por defecto ese puerto es el 3128 pero yo le coloqu é el 8080) yal lado dejando un espaio escribimos transparent: http_port 8080
(antes)
http_port 8080 transparent
(después)
Para que se aplique el cambio debe detener e iniciar Squid.
Después metemos el siguiente comando para que el Router-firewall redirija todo el flujo de tr áfico web al puerto de escucha del servidor proxy para que as í se apliquen todas las ACLs que hemos configurado:
_# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080 Recordemos que la interface de red eth1 es la que recibe el tr áfico de la red LAN y eth0 proporciona la salida a Internet. El siguiente gr áfico (figura 26) explicar á de forma somera como pasa el tr áfico de la LAN hacia Internet por medio del Router-Proxy:
Internet Router – Proxy Linux 8080 Proxy
eth1
LAN eth0 Firewall Figura 26. Del lado de eth1 se encuentra la red LAN y del lado de eth0 se encuentra el enlace hacia Internet.
Tráfico Web (todo lo que salga por http, https, etc) Tráfico de correo ( protocolos POP3, SMTP, IMAP, clientes de correo) Tráfico de cámaras web de clientes de mensajer í a (aMsn)
El siguiente gr áfico (figura 27) muestra el flujo de tr áfico del servidor proxy configurado como transparente:
Internet
Router – Proxy Linux 8080 Proxy
Tráfico Web (todo lo que salga por http, https, etc) Tráfico de correo ( protocolos POP3, SMTP, IMAP, clientes de correo) Tráfico de cámaras web de clientes de mensajer í a (aMsn)