Guía de seguridad para la configuración de routers (I)
En este artículo voy a intentar explicar como configurar de forma correcta un router en redes TCP/IP. Además estoy preparando otro artículo complementario a este en el que explico como configurar un «syslog» y conseguir que un router nos informe de ataques en tiempo real. Los ejemplos van a estar basados en routers Cisco corriendo el sistema operativo IOS versión 12.1, aunque los ejemplos se pueden aplicar a versiones anteriores y con mínimos cambios, a otro tipo de routers.
Varios textos de obligada lectura antes de continuar son:
a) La transmisión de información en Internet
b) Curso de protocolos TCP/IP
Otro documento muy recomendable es Router Security Configuration Guide (en inglés). Gracias a Juamma Merino por el enlace.
Un router es un dispositivo de red capaz de encaminar los paquetes TCP/IP entre dos o más subredes TCP/IP. Dependiendo del modelo que usemos, además de encaminar los paquetes podemos tener acceso a funciones adicionales como el filtrado de paquetes o el control del ancho de banda. Voy a centrar este documento en el filtrado de paquetes como medida para prevenir ataques a nuestra red y también para evitar que ocurran desde nuestra red.
Todo router tiene al menos 2 interfaces de red. Una configuración típica podría tener un interface ISDN o uno ADSL y otro interface ethernet. También se podría dar el caso en que los dos interfaces son iguales, por ejemplo, dos interfaces ethernet. Las configuraciones son prácticamente interminables pero para este artículo nos es indiferente el tipo de interfaces que estemos usando. Llamaremos al interface que esta conectado a nuestra red interface interno, y al otro, el que esta conectado a «Internet», interface «externo».
Los filtros que debemos aplicar al router varían de una red a otra, aunque hay ciertas normas comunes a las que debemos prestar atención.
a) No deben entrar en nuestra red paquetes provenientes de nuestras propias IP’s.
Al evitar que entren en nuestra red paquetes con la IP de origen igual a alguna de las de nuestra red, estaremos evitando que alguien pueda a acceder a servicios restringidos solo a nuestras IP’s.
b) No deben entrar en nuestra red paquetes provenientes de IP’s reservadas.
Las direcciones IP reservadas son aquellas que no se usan en maquinas conectadas a Internet, y que, como su nombre indica, se reservan para uso exclusivo en intranets o para uso experimental. Estas direcciones IP son:
Localhost:
127.0.0.0/8
Privadas:
10.0.0.0/8
172.16.0.0/11
192.168.0.0/16
Network/Broadcast:
0.0.0.0/8
224.0.0.0/3
Es recomendable echar un vistazo a la lista completa del espacio de direcciones IPv4. Gracias a VaWen por el enlace.
c) Solo deben entrar en nuestra red paquetes con destino nuestras propias IP’s, excepto las de red y las de broadcast.
La dirección IP de red y la dirección IP de broadcast, son direcciones especiales que no se asignan a ningún dispositivo. La IP de red es la primera de la subred y la de broadcast la ultima. Por ejemplo, en la red 192.168.10.0/24 la dirección IP de red es la 192.168.10.0 y la dirección IP de broadcast es la 192.168.10.255, y nunca deben ser asignadas a ningún dispositivo.
d) No deben salir de nuestra red paquetes con destino nuestras propias IP’s
Esta norma es trivial, pero no esta de más mencionarla.
e) No deben salir de nuestra red paquetes con destino IP’s reservadas.
Del mismo modo que no debemos permitir que entren paquetes provenientes de direcciones IP reservadas (punto b), debemos evitar que salgan paquetes con destino hacia esas IP’s.
f) Solo deben salir de nuestra red paquetes provenientes de nuestras propias IP’s excepto las de red y las de broadcast.
Esta ultima norma es la más importante. Si todos los proveedores de servicio de Internet aplicaran esta norma, no existirían ataques por spoofing o de tipo smurf. Por desgracia son muchos los proveedores, incluso los grandes, que no aplican esta norma. Aplicándola nosotros no evitaremos que nos puedan atacar, pero al menos evitaremos que se produzcan ataques de este tipo desde nuestra red.
La teoría esta muy bien, pero vamos con un poco de practica. Voy a poner un ejemplo de como aplicar estos filtros en un router Cisco. Para ello, vamos a suponer que el router da acceso a 2 subredes que son:
199.10.10.0/27
201.10.10.0/24
Además supongamos que por motivos administrativos la subred 201.10.10.0 esta dividida en otras 3 subredes. Este detalle es importantísimo a la hora de bloquear las direcciones de red y de broadcast.
201.10.10.0/25
201.10.10.128/26
201.10.10.192/26
Con estos datos, y siguiendo las normas anteriores, vamos a crear las listas de acceso numero 101 y 102. Para introducir estas listas en un router Cisco, deberemos habernos identificado en el router y entrar en el modo de configuración escribiendo «configure terminal». A continuacion introducimos las listas en el orden que aparecen aquí, ignorando las que comienzan por «!» que son comentarios.
! Norma (a)
access-list 101 deny ip 199.10.10.0 0.0.0.31 any
access-list 101 deny ip 201.10.10.0 0.0.0.255 any
! Norma (b)
access-list 101 deny ip 127.0.0.0 0.255.255.255 any
access-list 101 deny ip 10.0.0.0 0.255.255.255 any
access-list 101 deny ip 172.16.0.0 0.15.255.255 any
access-list 101 deny ip 192.168.0.0 0.0.255.255 any
access-list 101 deny ip 0.0.0.0 0.255.255.255 any
access-list 101 deny ip 224.0.0.0 31.255.255.255 any
! Norma (c)
! Bloqueamos las direcciones de red
! Bloqueamos las direcciones de broadcast
! Permitimos la entrada hacia nuestras IP's
access-list 101 deny ip any host 199.10.10.0
access-list 101 deny ip any host 199.10.10.31
access-list 101 deny ip any host 201.10.10.0
access-list 101 deny ip any host 201.10.10.127
access-list 101 deny ip any host 201.10.10.128
access-list 101 deny ip any host 201.10.10.191
access-list 101 deny ip any host 201.10.10.192
access-list 101 deny ip any host 201.10.10.255
access-list 101 permit ip any 199.10.10.0 0.0.0.31
access-list 101 permit ip any 201.10.10.0 0.0.0.255
! Todo lo demás, no esta permitido
access-list 101 deny ip any any
! Norma (d)
access-list 102 deny ip any 199.10.10.0 0.0.0.31
access-list 102 deny ip any 201.10.10.0 0.0.0.255
! Norma (e)
access-list 102 deny ip any 127.0.0.0 0.255.255.255
access-list 102 deny ip any 10.0.0.0 0.255.255.255
access-list 102 deny ip any 172.16.0.0 0.15.255.255
access-list 102 deny ip any 192.168.0.0 0.0.255.255
access-list 102 deny ip any 0.0.0.0 0.255.255.255
access-list 102 deny ip any 224.0.0.0 31.255.255.255
! Norma (f)
! Bloqueamos las direcciones de red
! Bloqueamos las direcciones de broadcast
! Permitimos la salida desde nuestras IP's
access-list 102 deny ip host 199.10.10.0 any
access-list 102 deny ip host 199.10.10.31 any
access-list 102 deny ip host 201.10.10.0 any
access-list 102 deny ip host 201.10.10.127 any
access-list 102 deny ip host 201.10.10.128 any
access-list 102 deny ip host 201.10.10.191 any
access-list 102 deny ip host 201.10.10.192 any
access-list 102 deny ip host 201.10.10.255 any
access-list 102 permit ip 199.10.10.0 0.0.0.31 any
access-list 102 permit ip 201.10.10.0 0.0.0.255 any
! Todo lo demás, no esta permitido
access-list 102 deny ip any any
Finalmente aplicamos las listas al interface «externo». Para ello, entramos en el modo de configuración del interface escribiendo «interface x», donde «x» es el nombre del interface. A continuación escribimos:
ip access-group 101 in
ip access-group 102 out
Por último, salimos del modo de configuración del interface, y del modo de configuración. Para ellos, escribimos dos veces «exit». Ahora solo nos queda guardar la configuración escribiendo «copy running-config startup-config».
Este artículo solo explica como configurar un router Cisco a partir de las 6 normas básicas que explique al principio. En un segundo artículo que estoy preparando añadiré mas normas, y más complejas, para además de lo anterior poder filtrar paquetes por el tipo de protocolo y puerto para convertir a nuestro router Cisco en un dispositivo de defensa perimetral.
Versión de este documento: 0.92
Historia de este documento:
13/12/2001: Versión 0.92
+ Incluídos varios enlaces adicionales
+ Cambio en el título (Original: Configuración de routers)
12/12/2001: Versión 0.91 (Primera versión pública)
Este documento esta en contínua revisión, y abierto a sugerencias y críticas. Agradezco enormemente la colaboración de todo el mundo