Solución al alto consumo de CPU en Cisco Asa y Cisco PIX

 

A veces es difícil identificar por qué un firewall Cisco Pix o Cisco ASA está a niveles altos de CPU.

cisco-asdm-cpu-grafica

 

Existe documentación de buenas prácticas en el soporte oficial de Cisco para minimizar el impacto de los procesos sobre la cpu:

http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_tech_note09186a008009491c.shtml#showprocesses

El primer comando a ejecutar para ver el consumo de cpu es :

firewall-management# show cpu usage
CPU utilization for 5 seconds = 92%; 1 minute: 92%; 5 minutes: 92%

El output anterior muestra un firewall degradado con valores de consumo de cpu disparados.

Uno de los comandos que resulta más útil es el show tech-support que además permite añadirle un flag para no mostrar la configuración del firewall en pantalla :

show tech-support no-config

Este comando nos saca por pantalla los “shows” más importantes para la resolución de problemas.

Sin embargo, en el ejemplo anterior vemos un 92% de uso y el firewall con el rol de separar una red de gestión fuera de banda ( out of band management ), se encuentra prácticamente sin tráfico, sin ser atacado, además tampoco tiene direccionamiento ip público y únicamente con cuatro sesiones activas.

Este firewall no ha entrado todavía en producción y la configuración del mismo no estaba finalizada

Además, el firewall secundario con el que forma un cluster activo-pasivo también mostraba valores de la misma magnitud, cuando en realidad debería estar prácticamente a cero. Como no me apetece abrir un terminal ssh al firewall secundario, desde el firewall primario ejecutamos el comando sobre el firewall secundario

firewall-management# failover exec mate show cpu usage
CPU utilization for 5 seconds = 91%; 1 minute: 92%; 5 minutes: 92%

Entonces, ¿ Cuál es el problema ?

Ante esto y después de analizar profundamente la configuración del equipo, su tráfico, sus conexiones ect y no encontrar nada anormal, deduje que un proceso debido a un bug del software estaba provocando el problema.

Si miramos la salida del comando show processes, vemos la lista de procesos y una serie de columnas un poco indescifrables ya que no muestra el tanto por ciento de cpu que consume cada proceso.

Para entender la salida del comando, la información completa para la interpretación del show processes está también documentada en el site de Cisco :

http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_tech_note09186a008009456c.shtml

A partir de ahí, empecé a analizar los procesos y me fijé en la columna Runtime que según el link anterior informa :

Runtime (ms) = CPU time the thread has used, in milliseconds

Aunque la salida del comando es larga, pongo el trozo interesante :

 

cisco-asa-show-processes

Lo que destaca es que el proceso de telnet, si ya sé, que hace activo eso ?? , como ya he comentado la configuración no estaba finalizada …

Pero para saber exactamente que proceso es el culpable, hay que obtener diferentes muestras del show processes, esperando un minuto y restar la columna Runtime

Una herramienta online permite realizar la operación, te muestra el resultado y así podemos determinar fácilmente cuál es el culpable :

http://bogpeople.com/networking/pixhighcpu/compare.cgi

diferencias-show-processes

 

Solución :

Desactivar telnet !! 🙂

firewall-management# show run telnet
telnet 10.x.x.x 255.255.255.255 management
telnet timeout 5

firewall-management(config)#  no telnet 10.x.x.x 255.255.255.255 management
firewall-management(config)# end

firewall-management# show cpu usage
CPU utilization for 5 seconds = 0%; 1 minute: 80%; 5 minutes: 88%

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *