marzo 27, 2013

Firewall II

En el post anterior Firewall explicamos la manera de bloquear las conexiones de tipo HTTPS no autorizadas usando una regla, sin embargo, ésta por sí sola no impide el acceso al HTTPs a usuarios no deseados, ya que su única función es validar o denegar las IPs contenidas dentro de ACL usada según el caso, pero no discrimina cuáles usuarios pueden hacer peticiones HTTPs y cuáles no.
Puede ocurrir que un fulano de tal, no autorizado, haga peticiones (desde dentro o fuera de nuestra red local) a sitios HTTPs contenidos en la ACL citada en el artículo anterior, por lo tanto podrá navegar sin problemas. Peor aún; un hacker irrumpe en nuestra LAN, (ya sea por un ataque por fuerza bruta descifrando la clave del WIFI, usando software de penetración como Backtrack, Beini, WirelessKeyView, etc, o logra acceso físico a uno de los equipos de nuestra red o cibercafé y copie la clave WIFI en la configuración de red de los terminales Windows. En este caso el chico malo tendrá acceso a gmail, hotmail, yahoo o a cualquier IP registrada en la ACL https-permitidos, con tan solo agregarle una "s" a su petición http://. Para evitarlo hay que aplicar niveles de seguridad en el servidor; o sea blindar el firewall IPTABLES.
TABLA MANGLES
MANGLES es una de las tantas alternativas que existen para hacer más seguro el acceso a nuestra red. De acuerdo a la estructura misma del IPTABLES, lo primero que aparece es la tabla MANGLES. Esta se encarga de modificar los paquetes de Internet y es precisamente en este punto cuando podemos establecer los usuarios que vamos a autorizar a recibir o enviar paquetes dentro de nuestra red, sin importar que sus peticiones sean http o https, ftp, etc.
Un filtrado con MANGLES se logra creando una simple regla que hace dos cosas:
1. Solo permite el acceso a Internet y a los recursos de nuestra LAN a las MACs previamente seleccionadas por el administrador TI, que registre en una ACL.
2. Denegar el resto de las conexiones (corta literalmente las comunicaciones al resto)
De esta manera es más fácil controlar los equipos que hacen uso de nuestros recursos en la red y por ende el filtrado de HTTPs descrito en el post Firewall, sería más fácil de aplicar.
NOTA: Consulte las variables de la cabecera del IPTables en Firewall
Ejemplo del uso de MANGLES en el IPTABLES, visto en Firewall:
# SOLO PETICIONES DE LA LAN
for mac in `sed '/#.*/d' $route/macs-* | tr '[A-Z]' '[a-z]' | sort -u`; do
$iptables -t mangle -A PREROUTING -i $lan -m mac --mac-source $mac -j ACCEPT
done
$iptables -t mangle -A PREROUTING -i $lan -j DROP
Con esta regla limitamos el acceso a nuestra red a un puñado de MACs establecidas previamente en las ACLs creadas por el administrador TI. El resto de las MACs que logren entrar a nuestra red local, simplemente no tendrán conectividad ni acceso a ningún recurso.
Pero a pesar de que esta regla es muy efectiva, solo considera las macs autorizadas, mas no realiza ningún "amarre" entre Host+IP+Mac. Para poder elevar el nivel de seguridad, lea nuestra próxima entrega Firewall III.
ESTABLECIENDO HORARIOS
Supongamos ahora que el administradores TI quiere hacer una discriminación. Un grupo de computadores de nuestra red tendrá acceso a Internet 24/7 y a los sitios establecidos en la ACL https-permitidos (o como quieran llamarle), sin embargo el otro grupo no tendrá Internet salvo en un horario predefinido y solo tendrá acceso a ciertos recursos de la red en ese horario (Ejemplo: carpetas compartidas desde el servidor, impresión, sistema de mensajería interna, etc). Para este grupo limitado, hay que poner de primero la regla MANGLES, antes que cualquier otra regla del IPTABLES e irle validando los puertos que queremos que tengan acceso y cerrarles el resto. El administrador TI es quien debe valorar qué recursos les otorga a sus usuarios (abriendo o cerrando puertos y bloqueando sitios y recursos) dentro de su red LAN.
El siguiente ejemplo se abren solamente los puertos 53 (consulta DNS), 80 (internet), 8080 (proxy) 137, 138, 139 y 445 (samba - archivos compartidos con redes windows).
Para efectos de este ejemplo llamaremos a la ACL macs-limitadas. Aquí se le aplicará un horario especial a esta ACL y las restricciones estarán sujetas a este horario. Las restricciones consisten en un bloqueo general y la validación de algunos puertos. Una vez terminado el horario, se levantarán las restricciones impuestas. Se recomienda que se programe esta tarea en el Crontab (/usb/bin/crontab) para que se ejecute de manera desatendida y automáticamente. También se incluyen especificaciones adicionales y las reglas descritas en la primera parte Firewall para una mayor comprensión de los pasos.
Primero debe establecer en la cabecera del IPtables el horario (Ajústelo en dependencia de sus necesidades
# horario (formato 24h)
route=/etc/acl
hora_actual=$(date +%H)
hora_permitida=12
hora_ilimitada=16
Uso de MANGLES para aplicarle restricciones a un grupo de equipos de la red LAN en un horario determinado.
# TABLA/CADENA: -t mangle -A PREROUTING (INTERNET-2-LOCALHOST)
# BLOQUEAR HTTPS A MACS-LIMITADAS SI NO ES LA HORA PERMITIDA Y ABRIR PUERTO HTTP PARA ERROR (BLOQUEO SQUID)
if [ $hora_actual -lt $hora_permitida ]; then
  echo bloqueando https para macs-limitadas
  for mac in `sed '/#.*/d' $route/macs-limitadas`; do
  $iptables -t mangle -A PREROUTING -i $lan -m mac --mac-source $mac -p tcp -m multiport --dports 80,3128,139,445 -j ACCEPT
  $iptables -t mangle -A PREROUTING -i $lan -m mac --mac-source $mac -p udp -m multiport --dports 53,137,138 -j ACCEPT
  $iptables -t mangle -A PREROUTING -i $lan -m mac --mac-source $mac -j DROP
  done                                                                         
fi
Otro ejemplo es cuando permite solo la entrada a las direcciones mac de nuestra red local, previamente seleccionadas
# SOLO PETICIONES DE LA LAN
for mac in `sed '/#.*/d' $route/macs-* | tr '[A-Z]' '[a-z]' | sort -u`; do
$iptables -t mangle -A PREROUTING -i $lan -m mac --mac-source $mac -j ACCEPT
done
$iptables -t mangle -A PREROUTING -i $lan -j DROP
O cuando las trabajamos con el DHCP (Se profundizará en este punto en entregas posteriores de Firewall)
# SOLO PETICIONES DE LA LAN
create_acl $mac2ip
$iptables -t mangle -A PREROUTING -i $lan -j DROP
MANGLES es de gran ayuda, pero no servirá de mucho si la política es demasiado flexible. Habría que implementar un nivel mucho más alto de seguridad y aplicar protecciones adicionales, que se describirán en el próximo capítulo.

... Continúa en Firewall III.
Maravento, Actualizado en: 14:00
Escrito por: Maravento Studio
 
© 2017 Maravento. All Rights Reserved | Powered by Maravento
Design by Novatoz and Maravento | Bloggerized By LawnyDesignz
# https://github.com/google/code-prettify