::[INTRO]::
Como buenos "bastardos sysadmin del infierno" en ocasiones nos vemos obligados a delimitar los accesos de los "buenos, santos, puros e indefensos angelitos" usuarios de nuestra red. Muchas veces contamos con soluciones perimetrales que nos ayudan a filtrar los tipos de archivos que reciben los usuarios del sistema a través del correo corporativo. ¿Pero que sucede cuando los usuarios resultan ser más vivos que nosotros, diciéndole al amigo, amiga, novio, novia, esposo, esposa, etc. que le envien el flash de la monita aquella ejercitando sus atributos pectorales (si, yo también lo he visto) a hotmail o a yahoo porque en el correo corporativo no dejan pasar esa clase archivo?. Suponiendo que somos los suficientemente "bastardos", hemos de tener saliendo a Internet a toda la compañía a través de un Proxy como Squid (http://www.squid-cache.org). Esta vez aprenderemos a "parar" esta clase de "artimañas" de los usuarios.
::[ESCENARIO]::
/---------\ /------------------------\ | LINUX | /--------------------\ | RED LOCAL | 10.1.0.254 | BOX | | ESA COSA LLAMADA | | |--------------| SQUID |-----------| "DISQUE" | | 10.1.0.0/255.255.0.0 | | PROXY | 200.1.1.1 | INTERNET | \------------------------/ \---------/ \--------------------/
El escenario es bastante "minimalista". Tenemos una subred local en donde están los "ángelitos", es decir, los usuarios. El direccionamiento IP de dicha subred es 10.1.0.0/255.255.0.0. Tenemos una máquina con Linux y Squid Proxy instalado en donde está "el bastardo del infierno", o sea, nosostros. Por último tenemos conectada la caja Linux hacia Internet para poder brindar el acceso "a toda la pornografía de este planeta" a los "angelitos".
Como mencioné anteriormente, supongo que todos los "angelitos" de la subred local tiene configurada la salida a Internet a través del Proxy, esto es, 10.1.0.254. La dirección IP pública asignada a nuestra caja Linux es la 200.1.1.1 (solo por información).
::[HOWTO]::
Ahora veremos como permitir el acceso de la subred 10.1.0.0/16 (/16 es lo mismo que 255.255.0.0 ) hacia Internet pasando por la caja Linux que tiene Squid instalado, obviamente haciendo las restricciones de los tipo MIME que vamos a ver.
acl RED_LOCAL src 10.1.0.0/255.255.0.0 acl NO_MIMES rep_mime_type -i "/etc/squid/mimes_prohibidos.txt"
La primera lista de acceso con el nombre "RED_LOCAL" define el conjunto de hosts de la subred 10.1.0.0/255.255.0.0.
La segunda lista de acceso con el nombre "NO_MIMES" define el conjunto de tipos MIME especificados en el archivo /etc/squid/mimes_prohibidos.txt. En este archivo vamos a definir los tipos MIME que vamos a denegar al momento en que los "angelitos" decidan descargar un archivo con un tipo MIME específico.
http_access allow RED_LOCAL
Con esto entonces estamos diciéndole a Squid que permita pasar a través de él todo el conjunto de equipos conectados en la subred 10.1.0.0/255.255.0.0.
http_reply_access deny NO_MIMES
Con lo anterior, le especificamos a Squid que no permita pasar en el encabezdo HTTP de RESPUESTA ningún tipo MIME definido en la lista de control de acceso llamada NO_MIMES. Recordemos que la lista de control de acceso NO_MIMES la definimos para que hiciera referencia al archivo "/etc/squid/mimes_prohibidos.txt ". Es allí en donde vamos a definir los tipos MIME que no vamos a permitir que se descarguen.
En el archivo /etc/mime.types hay un sinfín de definiciones de los tipos MIME correspondientes a cada tipo de archivo. A continuación voy a listar los tipos MIME más comunes para el bloqueo:
application/octet-stream
application/vnd.ms-powerpoint
application/x-javascript
application/x-shockwave-flash
Bueno, el resto lo consultan ustedes o me escriben para preguntarme.
^application/octet-stream ^application/vnd.ms-powerpoint ^application/x-javascript ^application/x-shockwave-flash
/etc/init.d/squid restart
::[CUIDADOS]::
El orden de cada línea en cada una de estas secciones es influyente para que apliquen correctamente las reglas definidas. Una mala organización de las mismas y nada funcionará como esperamos.
::[FINAL]::
Comments
Duda...
Hola, muy bueno tu manual, pero creo que por que tengo el servidor haciendo NAT con un script no me esta funcionando...
Dejare aqui el script que uso para ver si recomiendas una modificacion y que asi me funcione el filtrado Squid+MIME
-----inicio de mi script-----
## Activa Forward
echo 1 > /proc/sys/net/ipv4/ip_forward
# Limpa Tabelas & define Politica de ACEPTAR todo
iptables -F INPUT
iptables -P INPUT ACCEPT
iptables -F FORWARD
iptables -P FORWARD ACCEPT
iptables -F OUTPUT
iptables -P OUTPUT ACCEPT
iptables -F -t nat
# Define Variables
INTERNET="0/0"
IF_EXTERNA="eth0"
RED_INTERNA="192.168.1.0/24"
IF_INTERNA="eth1"
## INPUT
iptables -A INPUT -i $IF_EXTERNA -s $INTERNET -d $RED_INTERNA -j ACCEPT -v
iptables -A INPUT -i $IF_INTERNA -s $RED_INTERNA -d $INTERNET -j ACCEPT -v
## FORWARD - Internet Rede Adm
iptables -A FORWARD -i $IF_EXTERNA -o $IF_INTERNA -s $INTERNET -d $RED_INTERNA -j ACCEPT -v
iptables -A FORWARD -i $IF_INTERNA -o $IF_EXTERNA -s $RED_INTERNA -d $INTERNET -j ACCEPT -v
## NAT
iptables -t nat -A POSTROUTING -s $RED_INTERNA -j MASQUERADE -v
## Activacion del redireccionamiento del puerto 80 -> 3128
iptables -t nat -A PREROUTING -s $RED_INTERNA -p TCP --dport 80 -j REDIRECT --to-port 3128
-----fin de mi script-----
Gracias por cualquier recomendacion
Recomendaciones y sugerencias
Hola. Las recomendaciones y sugerencias fueron enviadas a tu e-mail.
JFMF
Solicitud de las recomendaciones
Hola.
En este momento estoy tratando de darle seguridad a mi red. Podrías hacerme el favor de enviarme a mi tambiem las sugerencias y recomendaciones ?.
mi email: hbmiguel@hotmail.com
Muchas gracias por la colaboracion prestada.
Oye, eres un genio!!!
Esto esta genial, ahora si que se tengan estos usuarios... jajajaja