La vulnerabilidad Log4j es el último ciber exploit, que aporta una puntuación crítica CVSS de 10. Permite a los atacantes ejecutar código Java arbitrario en ordenadores remotos, incluyendo el acceso a información sensible.

Sólo un año después de que el mundo abordara el ataque a la cadena de suministro de SolarWinds, es otra confirmación de que los profesionales de las redes deben adoptar estrategias de gestión de riesgos a largo plazo.

¿Se ven afectados los productos de Opmantek? Opmantek no publica software escrito en Java o Log4J, ni los proyectos de los que dependemos utilizan directamente Java o Log4J.

Aprovechar los datos de configuración para identificar el riesgo

Puede ser difícil identificar si se está utilizando Log4j, ya que a menudo se incluye con otro software. Un sistema de gestión de la configuración proporciona medios para auditar la configuración de un recurso y los elementos del inventario con respecto a una política de seguridad definida.

Recopilar datos de configuración

Introducir los datos en el sistema mediante la integración o la recogida directa

Extraer información operativa

Procesar los datos para extraer información sobre el cambio y el cumplimiento

Recopilar datos de configuración

Introducir los datos en el sistema mediante la integración o la recogida directa

Detección de Log4j en un servidor con opConfig

Como cualquier organización, nuestros equipos internos utilizan una variedad de software de terceros. En el caso de la vulnerabilidad de Log4J, necesitábamos confirmar si la biblioteca estaba instalada en nuestros servidores, parchearla y asegurarnos de que no se instalara en el futuro.

Entre nuestros servidores de producto, de desarrollo y de pruebas, teníamos unos 50 servidores Linux que comprobar, así que necesitábamos encontrar una solución rápida y automatizada.

Detección

Desafortunadamente, el software no utiliza un gestor de paquetes de Linux, por lo que no podemos utilizar los comandos RPM y APT. Hay una forma sencilla de verificar si el software se instaló, busque en / (directorio raíz y todos los directorios hijos) para ver si había algún archivo que contenga el nombre log4j.

El comando de Linux que necesitábamos era:

  • sudo find / -name "*log4j*"

Queríamos ejecutar este comando de forma rápida y sencilla en 50 servidores Linux. Se necesitaba un nuevo conjunto de comandos que llamamos "Linux_Log4j". Creamos un nuevo archivo de conjunto de comandos para esto y cosas similares llamado "Linux_Software_Installed.nmis".

Conjunto de comandos de Linux_Software_Installed

Los conjuntos de comandos en opConfig se almacenan en /usr/local/omk/conf/command_sets.d por defecto. Copiamos uno existente y lo editamos para que refleje lo que necesitamos. Este cambio también podría hacerse en la interfaz gráfica de usuario, editando un conjunto de comandos existente y añadiendo una nueva colección de comandos. Lo más importante es que esto necesitaba tener os_info que coincidiera con Linux solamente y necesitábamos cambiar los dos comandos. En la versión más reciente de opConfig para NMIS9 estos archivos son JSON.

Para entender el contenido es bastante sencillo, os_info significa que sólo se ejecutan estos comandos cuando se cumplen estas condiciones os_info. Cada una de las secciones de comandos es sencilla y el sistema de etiquetado es potente:

  • privilegiado: significa que requiere privilegios elevados para ejecutarse, por ejemplo, acceso sudo
  • comando: el comando que se desea ejecutar, que es también la forma en que se guardan los datos en el sistema
  • exec: es opcional si quiere guardar el comando con otro nombre, utilice el exec como el comando que realmente se ejecuta y el elemento comando será el nombre del comando a ejecutar.
  • etiquetas: HOURLY significa que se ejecutará automáticamente cada hora, Linux y operations son útiles para encontrar el comando, detect-change y report-change significan que opConfig monitorizará la salida de este comando en busca de cambios y si se encuentra un cambio lanzará un evento.

Linux_Software_Installed.json

El conjunto de comandos final tiene el siguiente aspecto:

{

“Linux_Log4j” : {

"comandos" : [

{

"privilegiado" : "verdadero",

"comando" : "Log4jSearch",

"exec" : "sudo find / -name \ "*log4j*\"",

"etiquetas" : [

"HORA",

"Linux",

"operaciones",

"detectar-cambio",

"informe-cambio"

]

}

],

“scheduling_info” : {

"run_commands_on_separate_connection" : "false"

},

“os_info” : {

"os" : "/(Linux|CentOS|Ubuntu)/"

}

}

}

Ejecución del conjunto de comandos

Como está etiquetado con "HOURLY" el conjunto de comandos se ejecutará automáticamente cada hora. Si quieres ejecutarlo manualmente para probarlo, ejecuta el siguiente comando:

sudo /usr/local/omk/bin/opconfig-cli.pl quiet=1 nodes=NODE-TO-TEST-WITH act=run_command_sets tags=HOURLY debug=true

Compruebe si hay algún error, si todo está bien, ejecute manualmente para todos los nodos o espere una hora más o menos.

Es posible que tenga que aumentar el tiempo de espera si ve las líneas de la consola como las siguientes.

[2021-12-22 03:58:48.21513] [23682] [warn] no se ha podido establecer una sesión privilegiada: lectura agotada

[2021-12-22 03:58:48.21573] [23682] [warn] Fallo en la ejecución del comando Log4jSearch: No se pudo hacer una sesión privilegiada: lectura agotada

[2021-12-22 03:58:48.21587] [23682] [warn] El comando se ha agotado - la respuesta parcial era: ""

Se puede editar el archivo /usr/local/omk/conf/opCommon.json y aumentar el valor de opconfig_command_timeout a un número adecuado de segundos.

Funcionamiento como no privilegiado

Puede que no tengas (o quieras usar) el usuario privilegiado (usando sudo). En este caso, una cadena exec más adecuada es la siguiente (y recuerde establecer "privilegiado": "false").

"exec" : "find / -name \"*log4j*\" 2>/dev/null",

Diagnosticar

Ahora podemos ir a la interfaz gráfica de opConfig y encontrar los nodos correspondientes.

Acceder al resumen de comandos

En el menú opConfig, seleccione "Vistas → Comandos recientes" y debería ver una pantalla como la siguiente.

En primer lugar podemos ver cuántas instancias de "Log4jSearch" hemos recogido.En la caja introduzca "Log4jSearch" cambie el select a "Command" y pulse "Go". Tendrás una lista de nodos y el nombre del comando.

A continuación, haga clic en el botón "Avanzado" de la derecha.

Haga clic en el nombre del nodo para ver la salida del comando.

Aquí podemos ver que este nodo tiene algunos posibles archivos de interés.

Remediación

En este caso, la reparación requiere que uno de los miembros del equipo de operaciones instale versiones actualizadas de Log4j o los paquetes de los proveedores que lo utilizan. El equipo de desarrollo de Opmantek utiliza Vagrant para automatizar este tipo de actividades y el problema se resolvió rápidamente.

Conclusión

Utilizando la metodología de Automatización de Procesos Operativos de detectar, diagnosticar y actuar, Opmantek fue capaz de identificar cuáles de nuestros servidores requerían cambios en 15 minutos.

¿Está listo para ver lo que opConfig puede hacer por su organización?

Póngase en contacto para hablar con un ingeniero de redes. Somos un equipo dirigido por técnicos, así que prepárate para una conversación sobre soluciones, no sobre ventas.

O bien, empiece directamente con una licencia de 20 nodos por tiempo ilimitado.