.-----------------------------------------------------------------------------. | .-------. .------. .----. -=[ Total Coredump Security Research Team ]=- | | `--. .--' | .----' | .-. \ | | | | | | | | \ \ Doc : Seguridad en routers CISCO | | | | | `----. | `--' \ Autor : Billsucks tcd-mail@totalcoredump.org> | | `-' `------' `-------' Fecha : Marzo de 1999 | | www.totalcoredump.org | `-----------------------------------------------------------------------------' Este documento intentara detallar todas las opciones y posibilidades que ofrecen los routers Cisco para mejorar la seguridad de su LAN/WAN o conexion a internet. -= Antecedentes: En noviembre de 1997 aparecion en la bugtraq (http://www.geek-girl.com/bugtraq) un anuncio de un fallo de seguridad encontrado en la serie 7xx de los routers Cisco, mediante el cual, podrian ser atacados via telnet e introduciendo un password con una alto numero de caracteres. Cualquier router Cisco 7xx con versiones del IOS comprendidas entre las 4.1(1) y 4.2(2) estaban afectados por dicho bug, que para ser explotado, el atacante ha de tener acceso al prompt del password o a la consola directamente. El efecto que se conseguia con esta vulnerabilidad era resetear el router, con la consiguiente negacion del servicio durante el tiempo que duraban dichos reseteos. Otro nuevo bug aparecio relacionado con el llamado "PIX private Link", una opcion de los PIX firewalls de Cisco. PIX private Link crea una IP-VPN (Virtual Private Network) sobre redes no fiables (Untrusted Networks), como internet, usando tuneles encriptados (similar al IP-tunelling) con encriptacion DES (Data Encryption Standart) en modo ECB ("Electronic Codebook). El bug consistia en un error que reducia la longitud de clave DES de sus originales 56 bits a 48 bits. Los sistemas afectados son aquellos con versiones de PIX private link software inferiores a la 4.1.6. Debido a la proliferacion de bugs en los routers Cisco, nos hemos propuesto hacer un repaso por las diferentes opciones de configuracion que estos routers nos ofrecen, no solo en implementaciones bajo TCP/IP, sino bajo otros protocolos presentes en muchas de las empresas que usan estos enrutadores. -= Comandos y Opciones: Existen un numero de comandos y opciones que pueden ser usados y que no se refieren a ningun protocolo en particular, sino al sistema operativo y al router en si, dichos comandos los mostraremos en mayusculas. Uno de las opciones mas utiles de los routers Cisco es la posibilidad de usar "access lists" o listas de acceso. Esta opcion funciona ligeramente distinto en cada protocolo (IP, Decnet, Appletalk, bridging, etc...) pero el principio es el mismo. Una lista de acceso permite al Cisco actuar como un Firewall, filtrando paquetes basandose en su origen o direccion de destino, y bien usadas, las listas de acceso son capaces de asegurar totalmente un segmento de una LAN o WAN. Mas adelante seguiremos hablando de las access lists. A continuacion pasamos a nombrar comandos y opciones de los routers Cisco para mejorar y supervisar la seguridad: - SHOW SESSIONS: Este comando permite ver las conexiones activas actuales. - Cisco tiene la posibilidad de ser configurado remotamente, pero en caso que se tema que su router pueda ser manipulado existe un jumper que activa/desactiva la escritura en la memoria flash. - Otra posibildad de arranque remoto es el llamado TFTP (Trivial File Transfer Protocol), este metodo es peligroso desde el punto de vista de la seguridad, ya que no tiene siquiera validacion por password. Si la configuracion del router se deja en el directorio de tftp (tftproot), cualquier usuario podra leer dicha configuracion, asi como el login y la ENABLE password.  Existe la posibilidad de dividir la configuracion en dos partes: La parte segura y la insegura. La parte insegura, la cual no implica ningun riesgo de seguridad si alguien la leyese, se deja en el directorio de tftp (tftproot). La parte segura se deja en la memoria flash o ROM. - ENABLE password: Cisco tiene dos niveles de passwords. Uno es el password de "solo lectura", el cual deja ver las configuraciones pero no deja alterar ninguna de ellas, y el segundo nivel es el password de ENABLE, el cual permite la modificacion total de las configuraciones. El password puede contener cualquier caracter, incluido un espacio en blanco. - Encriptacion: Cisco puede mantener su password en texto simple, o puede encriptarla, de modo que cualquiera que hiciese un "SHOW CONF" no la viera en la configuracion. Esto se hara mediante el comando "SERVICE PASSWORD-ENCRYPTION". Si olvidase el password, no hay manera de volver a cambiarlo. - TACACS: Consiste en hacer que un host UNIX de la red haga la validacion de passwords, lo cual permitiria un acceso mas controlado a su router, dejando atras la limitacion de que exista un par de passwords para acceder al router. El comando "TACACS-SERVER HOST host.foobar.com" indica que host.foobar.com es la maquina UNIX que ejecuta el servidor TACACS para validar las peticiones enviadas a los Ciscos. El fichero standard /etc/passwd es el usado para la validacion de usuarios. El comando "TACACS-SERVER LAST-RESORT PASSWORD|SUCCEED" controla que ocurre si el servidor TACACS no esta respondiendo, si se da este caso podria quedarse sin acceso al router, este comando indica si le dejaria loguearse sin password (SUCCEED) o si permite al router autentuficar de modo standard (PASSWORD). Este metodo de validacion de passwords tambien puede ser aplicado al comando ENABLE password mediante el comando "ENABLE USE-TACACS" y "ENABLE LAST-RESORT PASSWORD|SUCCEED". - Existe tambien un metodo para mantener una lista de usuarios y sus passwords directamente en el router Cisco. El comando "USERNAME user PASSWORD 0|7". El numero "0" indica que el password se guardara en texto plano, y el numero "7" indica que guardara el password encriptado. - SNMP: SNMP permite el mantenimiento remoto del router Cisco. SNMP permite dos niveles de acceso, solo lectura (R/O) y lectura-escritura (R/W). R/O permite examinar todas las variables del router mientras que R/W permite alterar el estado de dichas variables, lo que es lo mismo que disponer del ENABLE password. No se recomienda permitir el acceso R/W via SNMP porque el password se envia en texto plano con cada paquete. Para activar el SNMP en los routers Cisco se utiliza el comando "SNMP-SERVER COMMUNITY string RO" donde string es cualquier password que quieras utilizar para controlar el acceso via SNMP. Tambien es aconsejable activar a quien van a ir dirigidos los traps generados por el servicio SNMP del router, el comando seria: "SNMP-SERVER HOST ipaddress community-string SNMP" donde ipaddress es la direccion ip del equipo que recibira los traps SNMP y "community-string" es la comunidad que recibira dichos traps. - LOGGING: Cisco permite un numero de diferentes funciones de logueo. "LOGGIN ipaddress" enviaria todos los logs del router al syslog de la maquina UNIX indicada en "ipaddress". La cantidad de informacion que genera depende a que nivel indiquemos la generacion de logs. "LOGGIN TRAP level" determina que logs generara en base a la siguiente lista: 0 - emergencias 1 - alertas 2 - error critico 3 - errores 4 - warnings (default) 5 - notificacion 6 - informacion 7 - debugging La opcion 4 es la activada por defecto, e indica que generara logs referentes a los niveles comprendidos entre 0-4. Si no desea configurar su syslog para recibir estas alertas, existe la posibilidad de utilizar el comando "LOGGING BUFFER", el cual almacenara los logs en el buffer, que luego podra ser visualizado mediante el comando "SHOW LOGGING". El buffer tiene un limite de aproximadamente unas 100 lineas. - Restringir los accesos: Algunas veces es conveniente permitir el acceso a su router a ciertas direcciones IP. Para ello se utiliza el comando "ACCESS-CLASS". por ejemplo: access-list 12 permit 192.58.55.0 0.0.0.255 access-list 12 deny 0.0.0.0 255.255.255.255 access-class 12 in Esto permitiria el acceso via telnet al Cisco de la direccion 192.58.55.0 y de ninguna otra direccion. - Login timeout: el comando "EXEC-TIMEOUT mm ss" define el tiempo que el router esperara para desactivar un login desatendido. En cuanto la seguridad a nivel de protocolos vamos a entrar en detalle en el protocolo IP. - PROTOCOLO IP: Al igual que las listas de acceso, existen las listas de acceso extendidas, con ellas se puede controlar todo lo que pasa por un router Cisco. Mejor que entrar a explicar la sintaxis de las listas de acceso vamos a poner varios ejemplos: ! Permitir todas las conexiones salientes de la red 128.88 ! Permitir todas las conexiones entrantes al puerto 25 de la maquina ! con direccion IP 128.88.1.2 ! access-list 101 permit tcp 128.88.0.0 0.0.255.255 0.0.0.0 255.255.255.255 access-list 101 permit tcp 0.0.0.0 255.255.255.255 128.82.1.2 eq 25 ! ! Denegar todas las comunicaciones con Cisco TS en la direccion 132.70.1.251 ! access-list 101 deny ip 132.70.1.251 0.0.0.0 0.0.0.0 255.255.255.255 ! ! Bloquear accesos a los puertos de consola en la red 132.70.0.0 ! access-list 101 deny tcp 0.0.0.0 255.255.255.255 132.70.0.0 0.0.255.255 eq 2000 ! ! Permitir el acceso a los servicios basicos TCP ! por debajo del puerto 80 ! incluido 105 = IQ y 113 = AUTH ! Permitir tambien acceso a la ip 132.70.9.24 al puerto 515 (LPD) ! access-list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 lt 80 access-list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 105 access-list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 113 access-list 101 permit tcp 0.0.0.0 255.255.255.255 132.70.9.24 0.0.0.0 eq 515 access-list 101 deny tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 lt 1024 ! ! Permitir acceso a todos los puertos por encima del 1024 ! excepto para los puertos: 6000-6009 (Xwindows) ! y permitir todo a la direccion IP 132.70.9.182 ! access-list 101 permit 0.0.0.0 255.255.255.255 132.70.9.182 0.0.0.0 access-list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 lt 6000 access-list 101 permit tcp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 gt 6009 ! ! Permitir servicios basicos UDP, denegar NFS ! (puerto 67 udp = bootp; 161 udp = SNMP; 2049 udp = NFS) ! access-list 101 permit udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 lt 67 access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 2049 access-list 101 permit udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 gt 160 ! ! Permitir todo el trafico ICMP (no recomendable) ! access-list 101 permit icmp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 ! ! Fin de la lista de accesos. - IPSO: IP Security Option, Cisco implementa esta tecnologia que es la usa por los militares de Estados Unidos. IPSO esta definido en el RFC1108, y distingue entre varios niveles de seguridad: - Top Secret - Secret - Confidencial - Unclassified y tambien niveles de autoridad: - Genser - Siop-Esi - SCI - NSA En los routers Cisco, cada interface puede tener su propio nivel de seguridad. Todo el trafico que entre por un interface tiene que tener el nivel apropiado para pasar, de otro modo, seria rechazado, y una vez el trafico sale de ese interface, lleva la marca de seguridad del interface por el que ha pasado. Ejemplos: interface ether 0 ip security dedicated secret sci interface serial 3 ip security multilevel unclassified to secret nsa interface serial 4 ip security multilevel secret genser to topsecret genser El Router Cisco tiene la habilidad de aceptar o rechazar datagramas que no estan marcados, y de quitar dichas marcas de seguridad cuando dichos datagramas son enviados a redes publicas. - IP Accounting: esta opcion da la posibilidad de ver que nodos estan hablando con que nodos y cuanto lo estan haciendo. Ejecutando "CLEAR IP ACCOUNTING" y "SHOW ACCOUNTING" periodicamente, se puede determinar que hosts estan activos y usando la red. Para habilitar IP accounting se utiliza el comando "IP ACCOUNTING" en el interface que se desee monitorizar. - SLIP: Cisco tambien permite conexiones via SLIP (Serial Line Internet Protocol) mediante lineas RS-232 asincronas (1.2 kb - 19.2 kb). Por razones de seguridad, no se suele activar esta opcion dado que SLIP es un protocolo considerado "no seguro". - Filtrado de enrutado: Si se desea que ciertos routers no actualizen sus tablas de routing, se puede controlar mediante el comando "DISTRIBUTE-LIST 1-99 OUT". Estos filtros de routing pueden ser asignados a interfaces especificos como en el primer ejemplo, o a un protocolo enrutable especifico, como en el segundo ejemplo: router rip network 138.108.0.0 distribute-list 1 out ethernet 3 access-list 1 permit 131.108.0.0 access-list 1 deny 0.0.0.0 255.255.255.255 router egp network 131.108.0.0 redistribute igrp 109 distribute-list 3 out igrp 109 En este segundo ejemplo, las redes descubiertas por el proceso de routing IGRP 109 son redistribuidas al proceso de routing 164, excepto aquellas definidas en el access-list 3. Existen muchas opciones mas, los routers cisco son capaces de mantener su red completamente segura de ataques externos, e incluso internos, solamente se requiere una preocupacion por la seguridad y un mantenimiento de sus routers, actualizando sistemas operativos y estando atentos a los boletines de seguridad para parchear Bugs, si los hubiera. -= EOF