Filtrado mac

De WikiEtl
Saltar a: navegación, buscar

Filtrado MAC para los laboratorios

Se ha establecido reglas de filtrado en base a las dirección mac de los equipos de los laboratorios para evitar principalmente la intrusión de equipos personales de los usuarios en los laboratorios. Además se ha establecido una política de protección de filtrado por defecto para todo el tráfico entrante, excepto servicios habilitados. La red 163.117.139.0/24 tiene acceso directo sin pasar por los filtros para facilitar la gestión y pruebas hacia los laboratorios para el personal del dpto. Este filtrado consiste en denegar todo el acceso a cualquier mac exceptuando la lista de mac conocidas y estableciendo la política por defecto en descarte del tráfico. El tráfico dentro de la misma red está autorizado, pero no se podrá acceder al resto de redes del laboratorio, ni a internet en caso de ser una mac no autorizada.

Estructura de ficheros de reglas en alcazar01/02

La generación de reglas se realiza a través de unos scripts almacenados en alcazar01 en /var/lib/iptables.


Ficheros principales:

alcazar01:/var/lib/iptables# ls -l

active <= fichero con reglas estable
forward.d <= directorio de reglas forward
forward_setup <= fichero de carga de reglas forward.d
inactive <= fichero sin reglas por defecto todo el tráfico es aceptado.
input.d <= directorio de reglas input
input_setup <= fichero de carga de reglas input.d
iptables_ruleset_updated <= script de generación de reglas "iptables_ruleset_updated.rules"  
iptables_ruleset_updated.conf <= fichero de configuraciones básicas
iptables_ruleset_updated.rules <= fichero con la reglas generadas
mac <= estructura con las direcciones mac de los equipos
output.d <= reglas de output
output_setup <= fichero de carga de reglas de output.d

Los ficheros importantes son los siguientes:

active <= fichero con reglas estable
iptables_ruleset_updated <= script de generación de reglas "iptables_ruleset_updated.rules"  
iptables_ruleset_updated.rules <= fichero con la reglas generadas en "bruto"


Scripts de Actualización de reglas

Proceso automático

Hay que ejecutar el siguiente script:


alcazar01:/var/lib/iptables# ./actualizar.sh 
tar: Removing leading `/' from member names
iptables.tgz                                                                   100%  392KB 392.0KB/s   00:00    


Nota: Usar siempre el proceso automático, es lo mismo que el "paso a paso" y además lo copia en alcazar02.

Proceso paso a paso

Para actualizar las reglas primero hay que generar el fichero con las reglas:

alcazar01:/var/lib/iptables# ./iptables_ruleset_updated

Después se cargarían las reglas:

alcazar01:/var/lib/iptables# sh ./iptables_ruleset_updated.rules

Procedemos a comprobar que se ha cargado la regla con la mac que hemos puesto, usando el comando:

iptables -L -n -v | grep -i 00:17:31:c3:c6:f4

Una vez se prueban que las nuevas reglas no emiten ningún mensaje de error y no filtra en exceso/defecto se puede actualizar el fichero "active" para cuando se inicie el equipo. Para actualizar las reglas por defecto se utiliza el siguiente comando:

# iptables-save > /var/lib/iptables/active 

Después hay que copiar el fichero active modificado a alcazar02 que es el router de backup alcazar01. (Hacemos copia de seguridad del antiguo active de alcazar02 antes de reemplazarlo)

Una vez reemplazado, ejecutamos el comando :

/etc/init.d/iptables/reload

Y comprobamos que se ha cargado la regla con la mac que hemos puesto, usando el comando:

iptables -L -n -v | grep -i 00:17:31:c3:c6:f4


NOTA: En caso de error al cargar las reglas se puede volver a cargar las reglas por defecto con el comando: (Una vez ejecutado el comando iptables-save, ya no podemos rectificar de esta forma, habrá que cargar las reglas de nuevo, usando el fichero de backup que hemos creado)

/etc/init.d/iptables start

Añadir una dirección MAC nueva

La estructura de almacenamiento de direcciones mac se realiza en ficheros en texto plano, como se ve en el siguiente cuadro:

rbravo@alcazar01:/var/lib/iptables/mac$ ls -l
drwxr-xr-x 11 root root 4096 Apr  3 14:33 AULAS
drwxr-xr-x 27 root root 4096 Mar 22 17:22 SERVIDORES
drwxr-xr-x 19 root root 4096 Mar 22 17:31 SWITCH
-rwxr-xr-x  1 root root  132 Mar 22 13:04 all_mac.sh
-rw-r--r--  1 root root 7888 Apr  3 17:22 all_mac.txt

Se ha establecido tres directorios donde se establecen tres destinos posibles:

Directorio AULAS

Para añadir una mac a un equipo de laboratorios hay que añadirlo según la estructura:

rbravo@alcazar01:/var/lib/iptables/mac/AULAS$ ls -l
drwxr-xr-x  4 root root 4096 Apr  3 14:33 A03
drwxr-xr-x 32 root root 4096 Jan 29 19:41 B01
drwxr-xr-x 32 root root 4096 Jan 29 19:39 B02
drwxr-xr-x 22 root root 4096 Mar 22 17:56 C-1.1B11
drwxr-xr-x 21 root root 4096 Jan 29 19:47 D03
drwxr-xr-x 25 root root 4096 Jan 29 19:45 D04
drwxr-xr-x 30 root root 4096 Jan 29 19:45 J02
drwxr-xr-x 30 root root 4096 Jan 29 19:45 J03
drwxr-xr-x  8 root root 4096 Apr  2 18:41 Monitor
 

Y luego crear un fichero ".txt" con el contenido de la mac según el interfaz:

rbravo@alcazar01:/var/lib/iptables/mac/AULAS$ find B01/it001/
B01/it001/
B01/it001/eth0.txt
B01/it001/eth1.txt

rbravo@alcazar01:/var/lib/iptables/mac/AULAS$ cat B01/it001/eth0.txt
00:19:66:3c:32:60
rbravo@alcazar01:/var/lib/iptables/mac/AULAS$ cat B01/it001/eth1.txt
00:10:5a:56:b7:11
 

Directorio SERVIDORES

En esta carpeta están las mac asociadas a cada servidor, cada servidor está un directorio. Se ha simplificado algunos servidores con ficheros all.txt en vez de separar por red, ya que algunas mac son generadas.

Directorio SWITCH

En esta carpeta van las mac de gestión de los switch y equipos de redes de docencia.

Volver a actualizar las reglas

Hay que seguir el procedimiento aquí descrito Actualizar reglas

Añadir reglas de Forward

Para añadir nuevas reglas hay que crear un fichero con las reglas nuevas en directorioforward.d. Ejemplos de reglas:

rbravo@alcazar01:/var/lib/iptables/forward.d$ find

./localhosts
./alerts
./ldap
./smtp
./disable_exemptions
./ax150
./ftp
./dns
./allow_services


Crear el fichero con las reglas

Una vez creado el fichero, por ejemplo con este nuevo contenido:

# cat prueba

write_rule " "
write_rule "#"
write_rule "# forward.d/prueba"
write_rule "#"
write_rule " "
write_rule -A FORWARD -d 163.117.144.100 -p udp --dport 1234 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.200 -p udp --dport 1234 -j ACCEPT
write_rule " "

Enlazar fichero en la configuración

Hay que añadir la entra de "prueba" en el fichero: "iptables_ruleset_updated.conf" y modificar la variable $FORWARD_RULES_FILES.

 iptables_ruleset_updated.conf:55:FORWARD_RULES_FILES="alerts localhosts smtp dns allow_services"

Volver a actualizar las reglas

Hay que seguir el procedimiento aquí descrito Actualizar reglas

Añadir nevas reglas para los monitores

Para añadir nuevas reglas para los monitores hay que editar el fichero disable_exemtions

$ vim forward.d/disable_exemptions

El contenido actual es el siguiente:

write_rule " "
write_rule "#"
write_rule "# forward.d/disable_exemptions"
write_rule "#"
write_rule " "

write_rule "# filtro puerto ssh (22) para todos los equipos desde fuera de los segmentos 139,144,168 excepto los 6 monitores"
write_rule -A FORWARD -d 163.117.144.140 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.141 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.241 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.242 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.156 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.157 -i eth0 -m tcp -p tcp  -m multiport --dports 22 -j ACCEPT

write_rule "# se abren puertos del 9100-9300 par monitores desde el exterior". 
write_rule -A FORWARD -d 163.117.144.140 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.141 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.241 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.242 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.156 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
write_rule -A FORWARD -d 163.117.144.157 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT

write_rule "# Se permite todo el tráfico entrante desde la 139"
write_rule -A FORWARD -s 163.117.139.0/24 -i eth0 -j ACCEPT  

write_rule " "


Consiste en añadir reglas "write rule" en la tabla de "FORWARD" que sean necesarias, en principio la mayoría serán rangos de puertos. Ejemplo:

write_rule -A FORWARD -d 163.117.144.140 -i eth0 -m tcp -p tcp  --dports 9100:9300 -j ACCEPT
(Una línea por cada monitor).


--Rbravo 15:05 25 abr 2013 (UTC)