Podemos hacerlo en este sitio.
Es deseable que tengamos en uso el nuevo modelo de AAA (Autorización, Autenticación y Auditoría), ya que nos va a permitir hacer muchas configuraciones específicas en cuanto a lo que los usuarios pueden hacer en nuestros equipos. Ver este sitio.
Usar protocolos seguros siempre que sea posible. Las conexiones por TELNET,HTTP,FTP,etc. pueden ser interceptadas y leídas debido a que la misma se envía en texto plano. Usemos SSH,HTTPS,FTPS, etc. para garantizar que si existe un hombre en el medio el mismo no pueda entender lo que estamos transmitiendo.
ip domain-name capaocho.net ! crypto key generate rsa modulus 2048 ! ip ssh time-out 60 ip ssh authentication-retries 3 ip ssh source-interface Loopback0 ip scp server enable ! line vty 0 4 transport input ssh
crypto key generate rsa modulus 2048 ! ip http secure-server
Centralizar los logs en un equipo remoto utilizando el protocolo Syslog. Esto facilita el monitoreo. Podemos enviar los mensajes de log a un equipo externo utilizando el siguiente comando:
logging host <direccion-ip>
Tener copias de las configuraciones para poder volver atrás en cualquier momento. Hace poco escribí un mini tutorial al respecto en CapaOcho.Net. Otras implementaciones más elegantes utilizan CVS.
Usar passwords no reversibles configurables con el comando secret en cada caso.
Mientras menos tengamos abierto, más difícil va a ser que entren. Algunos ejemplos son:
no ip http server no service tcp-small-servers no service udp-small-servers no ip finger no ip bootp server no mop enabled no ip domain-lookup no service pad no service config no cdp run no lldp run global
Si tenemos un IOS reciente contamos con la posibilidad de trabajar con scripts TCL. Entonces si no contamos con los conocimientos necesarios para realizar tareas con este sistema, será mejor desactivarlo.
no scripting tcl init no scripting tcl encdir
Si tenemos abierta una consola de administración que lleva un determinado tiempo de inactividad, la misma puede cerrarse automáticamente. Se configura con:
line con 0 exec-timeout <minutos> [segundos] line vty 0 4 exec-timeout <minutos> [segundos]
Debemos recordar que el puerto AUX puede ser usado como una consola, y al no estar configurado deja abierta una puerta para poder acceder al equipo. Veamos como desactivarlo.
line aux 0 transport input none transport output none no exec exec-timeout 0 1 no password
De otra forma podríamos ponerle contraseña al igual que al puerto de consola.
Este feature does evita que cualquier persona con acceso a la consola pueda manipular el equipo y cambiar las contraseñas. Además evita que usuarios maliciosos cambien el registro de configuración y accedan a la NVRAM.
IOS provee un procedimiento de recuperación de contraseñas que confía en el acceso al modo ROMMON usando la combinación de teclas Control+Break durante el arranque del sistema. En el modo ROMMON, el software del dispositivo puede ser configurado para pedir una nueva configuración que incluye una nueva contraseña.
Una vez aplicado, el equipo no hace caso a la combinación de teclas antes mencionada, y se impide el acceso al modo ROMMON.
no service password-recovery
Este algoritmo debe activarse en los routers para mejorar en general el rendimiento de las sesiones telnet ya sean entrantes o salientes.
Si no lo usamos TCP va a intentar enviar cada caracter de la sesión en un paquete distinto, generando muchos paquetes de tamaño muy pequeños que pueden terminar congestionando el enlace.
Más información acerca del algoritmo de Nagle en CapaOcho.Net
service nagle
Esto asegura que el dispositivo en el lado remoto de la conexión siempre sea accesible y que las conexiones abiertas a medias o bien las conexiones huérfanas sean removidas del dispositivo local.
Lo configuramos con:
service tcp-keepalives-in service tcp-keepalives-out
Estas interfaces son virtuales y por ende nunca se caen. Por esto es conveniente que aprendamos a conectarnos a las direcciones que ellas tienen asignadas, porque se nos permitirá entrar al equipo por donde quiera que haya conectividad en caso de falla de algún enlace.
También podemos hacer que estas interfases loopback sean las originadoras del tráfico que emite el equipo con los siguientes comandos:
interface Loopback0 description Loopback de management ip address 192.168.254.254 255.255.255.255 ! ip ftp source-interface Loopback0 ip tftp source-interface Loopback0 ip telnet source-interface Loopback0 ip ssh source-interface Loopback0 logging source-interface Loopback0 ntp source Loopback0
Esto genera un mensaje de log advirtiendo que la memoria disponible está por debajo del umbral configurado. Se configura con:
memory free low-watermark processor <umbral> memory free low-watermark io <umbral>
Con esto podemos dejar reservada una determinada cantidad de memoria para poder seguir ejecutando los procesos más críticos.
memory reserve critical <valor>
memory reserve console <valor>
Obviamente una de las formas más básicas (y efectivas) de volver seguro un equipo es la aplicación de las access-list. Voy a dar una idea de las access-list que deberíamos tener configuradas, aunque no significa que con esto alcance…
ip access-list extended ACL-CISCOHARDEN-IN permit tcp host <peer-bgp> host <direccion-local-bgp> eq 179 permit tcp host <peer-bgp> eq 179 host <direccion-local-bgp> permit tcp host <pc-del-administrador> any eq 22 permit udp host <server-de-monitoreo> any eq 161 permit icmp host <red-confiable> any echo ! deny ip any <red-de-dispositivos-de-infraestructura> <wilcard> ! permit ip any any
Dada la naturaleza no intuitiva del manejo de fragmentos, estos son usualmente permitidos por las access-list. La fragmentación es usada a veces en los intentos de evadir la detección por medio de los IDS.
ip access-list extended ACL-CISCOHARDEN-IN deny tcp any any fragments deny udp any any fragments deny icmp any any fragments deny ip any any fragments ! permit ip any any
Puedo filtrar si es que el paquete viene desde una dirección propia que debería estar a pocos saltos de router, pero llega con un TTL muy bajo. O sea que viene desde una red lejana…
ip access-list extended ACL-CISCOHARDEN-IN deny ip <mi-red> any ttl lt 30
Las opciones IP presentan un desafío a la seguridad de los dispositivos de red debido a que estos paquetes deben ser procesados como excepciones. Esto requiere ciclos de CPU adicionales que no son requeridos para los paquetes típicos que atraviesan la red. La presencia de opciones IP dentro de un paquete además pueden indicar un intento de saltear los controles de seguridad o bien alterar las características de tránsito de un paquete.
ip access-list extended ACL-CISCOHARDEN-IN deny ip any any option any-options ! permit ip any any
Si tenemos IOS 12.3(4)T, 12.0(22)S, o bien 12.2(25)S en adelante podemos usar el comando ip options drop, con esto todos los paquetes que contengan opciones IP son descartados al momento de ser recibidos. Esto es bastante más fácil que configurar el access-list antes mencionado y posibilita otra opción más permisiva que veremos a continuación.
Con el comando ip options ignore, configuramos el IOS para ignorar las opciones IP que están contenidas en los paquetes recibidos.
Por esta última razón se recomienda habilitar el drop de estos paquetes especiales.
ip options drop
Una vez habilitado podemos usar el siguiente comando para ver el número de paquetes dropeados:
show ip traffic
Ejemplo permitir https y ssh únicamente entrando por la GigabitEthernet 0/1:
control-plane host management-interface GigabitEthernet 0/1 allow ssh https
No puedo ahondar mucho en cuanto a al Control Plane Protection dado que el tema es increiblemente extenso.
En pocas palabras puedo decir que es aplicar un policy a los paquetes que vienen desde la red y tienen como destino el Control Plane del equipo.
Pueden encontrar mucha info sobre estos temas en los siguientes links:
Debo poner ejemplos de CPPr
De más está decir que no se deben usar las communities más conocidas (public/system/private). Además de esto, podemos poner un access-list al proceso de SNMP para que solo las estaciones habilitadas hagan las consultas:
ip access-list standard snmpaccess permit 192.168.1.3 permit 172.18.56.98 permit 10.25.65.87 ! snmp-server community C0Mmun1tYD1f1CiL RO snmpaccess
Con este feature filtramos todos los paquetes de DHCP en las vlans que queramos y definimos en el switch en qué puertos puede haber un servidor DHCP seteandolo como un puerto trust.
ip dhcp snooping vlan 1 interface FastEthernet0/1 description DHCP Server ip dhcp snooping trust
voy a ampliar esto después de publicar el artículo en el blog.
Todos estos textos fueron sacados principalmente de la páginas de: