Hola a todos, 

Con el lanzamiento de Open-AudIT 3.2.0 llega una importante novedad - Reglas.

Las reglas son una colección de entradas que esencialmente dicen "Si el dispositivo tiene un atributo con X, entonces haz que el otro atributo del dispositivo sea Y". Eso puede parecer abstracto, así que ¿qué pasa con "Si el dispositivo tiene un OID SNMP de 1.3.6.1.4.1.9.1.620, entonces es un router Cisco 1851".

De forma inmediata, tenemos reglas para los prefijos de las direcciones MAC, los ID de los fabricantes de SNMP y todos los OID de SNMP mencionados anteriormente en Open-AudIT. También enviamos otras reglas que antes estaban codificadas. En total, para nuestra primera versión, estamos enviando casi 100.000 reglas.

"¿Y qué?", dirás "¿Qué significa esto para mí?". Bueno, significa que ya no necesitas enviarme tus OIDs y modelos de dispositivos, para empezar. Puedes crear reglas personalizadas que detecten (casi) todo lo que quieras y establezcan el atributo de dispositivo apropiado.

Las Reglas se procesan cuando se procesan los detalles de un dispositivo - durante la detección y/o al procesar un resultado de auditoría (por lo tanto, suelen ejecutarse varias veces). Las reglas se ajustan al sistema de prioridades habitual: anulan todo lo que no sea una entrada del usuario a través de la GUI. Las reglas se consideran SUS reglas. No algo derivado de un dispositivo. Por lo tanto, significan más que (digamos) algo recuperado a través de SSH o SNMP o WMI. Esto es porque si no hacen lo que quieres puedes cambiarlas.

Las reglas tienen dos secciones principales: entradas y salidas.

Las entradas son lo que se utiliza para detectar y hacer coincidir un atributo (o varios atributos).

Las salidas son lo que se debe establecer si las entradas coinciden.

Las entradas pueden utilizar varios operadores para detectar una coincidencia, no sólo los iguales. Podemos utilizar los siguientes operadores:

es igual a
no es igual a
mayor que
mayor que o igual a
menos que
menos que o igual a
como (que no distingue entre mayúsculas y minúsculas)
no como (de nuevo, no distingue entre mayúsculas y minúsculas)
en (una lista)
no en (de nuevo, una lista)
comienza con

Cuando probamos varios atributos en una sola "entrada", esos atributos se unen entre sí. No se pueden OR. A continuación se muestra un ejemplo (de la base de datos, almacenada como JSON).
[{"table":"system","attribute":"manufacturer","operator":"eq","value":"Ubiquiti Networks Inc."},
{"table":"system","attribute":"sysDescr","operator":"li","value":"UAP"}]

Esto se traduce en Si system.manufacturer = Ubiquiti Networks Inc. AND system.sysDescr like UAP entonces tenemos una coincidencia.
La sección de "salida" correspondiente de estas reglas establece (de nuevo, en JSON de la base de datos):
[{"table":"system","attribute":"type","value":"wap","value_type":"string"},
{"table":"system","attribute":"model","value":"UniFi AP","value_type":"string"}]

Lo que significa establecer el system.type a wap y el system.model a UniFi AP. Las salidas pueden establecer un atributo utilizando uno de los tres "tipos": un número, un texto o una marca de tiempo. Para una marca de tiempo, tiene la opción de proporcionar una fecha/hora O dejarla en blanco y hacer que el sistema utilice la fecha/hora actual cuando se procese la regla.

Y no te preocupes: no te pedimos que escribas el JSON. La interfaz web se encarga de eso por ti. Por supuesto, si utilizas la API, entonces la creación de JSON corre de tu cuenta 🙂 .

Otro elemento a destacar es el atributo "peso" que asignamos a las reglas. Por defecto, es 100, pero cualquier regla con un peso mayor o menor se ejecutará antes o después de las de peso 100. Esto proporciona una forma de ordenar la lista en la que se aplican las reglas. La mayoría de las veces no necesitará preocuparse por esto, pero si es necesario, es un salvavidas.

Las entradas de reglas tampoco necesitan aplicarse sólo a la tabla "sistema". Puedes tener una regla en la tabla de servicios para decir que si detectamos un servicio llamado "Mi Servicio" entonces establece la descripción del dispositivo como "Mi Servidor de Servicios" (como un mal ejemplo).

En este momento, las salidas de las reglas sólo pueden establecer un atributo (o varios atributos) en la tabla del sistema. Los campos personalizados no están soportados en este momento (manténgase en sintonía).

El motor de reglas es utilizado por la Comunidad y está disponible para su edición en Profesional y Empresa.

Entonces, ¿cuál es el inconveniente? Bueno, ejecutar 100.000 reglas varias veces pasa factura. Sin embargo, me sorprendió gratamente ver que tarda menos de 1 segundo cada vez que se procesan las 100.000 reglas. Sin embargo, significa que se consume más memoria. En mis pruebas, utiliza unos 500 MB. No debería preocuparse por aumentar el límite de memoria de PHP, ya que lo hacemos en el código, pero tendrá que vigilar su servidor. Aquellos usuarios que procesan muchos dispositivos A LA VEZ pueden encontrarse con limitaciones de memoria. En general, la mayoría de los usuarios no deberían notar ninguna diferencia discernible. Si la notan, lo primero que hay que intentar es darle al servidor un aumento de memoria. Es una aplicación de base de datos después de todo, así que más memoria y un disco rápido es siempre la respuesta 🙂 .

Una última cosa a destacar es el nuevo widget de la GUI. Como tenemos casi 100.000 reglas, no es posible mostrarlas todas en una lista en la interfaz gráfica. Así que no lo hacemos. Hemos construido un nuevo widget que se encuentra en la cabecera del panel y se utiliza para buscar las reglas. Introduzca cualquier cosa y el nombre de las reglas, la descripción, las entradas y las salidas se buscarán y se devolverá todo lo que coincida. Ese conjunto de resultados seguirá estando limitado al tamaño de la página por defecto (1.000 elementos), así que no busques simplemente Cisco y esperes recuperar todas las reglas (por cierto, hay 7.828 reglas de Cisco).

Con esta función, esencialmente eliminamos el problema de "Díganos cuáles son sus dispositivos desconocidos", así como proporcionamos una poderosa herramienta para que usted establezca automáticamente los atributos de su agrado en sus dispositivos. Fácil.

Y un elemento más - ahora tenemos la capacidad de exportar una Regla - o cualquier otra cosa para ese asunto. La exportación de un elemento proporcionará un objeto JSON que podrá utilizar para la importación. El botón de exportación está en la página de detalles de cada artículo y el botón de importación está en la página de la lista de cada colección. Con esto en su lugar, siéntase libre de enviarnos o publicar en Preguntas cualquier Regla o Consulta que crea que otros puedan beneficiarse.

Feliz auditoría.
Mark Unwin.

Normas de Open-AudIT Imagen 1 - 700
Normas de Open-AudIT Imagen 2 - 700