netinsystems/netin-ds-fh-server-local

By netinsystems

Updated about 1 year ago

NetinDS Firehose - Server Local.

Image

1.1K

@netin-ds/netin-ds-fh-server-local

Known VulnerabilitiesBuild StatusNode VersionDocker Image

netin


Uso

Docker-compose
netin-ds-fh-server-local:
        container_name: netin-ds-fh-server-local
        ports:
            - '29000:29000'
        expose:
            - 29000/tcp
        image: 'netinsystems/netin-ds-fh-server-local'
        cpu_count
        cpu_percent
        mem_limit
        environment:           
        networks:
Variables de entorno

Configuración general de NetinDS-Firehose - Server Local

  • CONFIG_ARTIFACT_ID default(netin-ds-fh-server-local): nombre identificativo del artefacto. Es utilizado en por la interfaz OpenC2, asi como en otros procesos de identificación del propio artefacto contra los subsistemas de NetinDS (bases de datos, conexión contra streams de datos ...).
  • CONFIG_STREAM_HIGH_WATER_MARK default(500): indica el tamaño de los buffers internos del Firehose, utilizados para las funciones de backpressure. Los Firehose cuentan con varios buffers de procesamiento, por lo que el tamaño total del buffer depende de la suma de todos ellos, y del tipo de dato a procesar.
  • CONFIG_AMQP_QUEUE_ALARMS default(stream.alarms::alarms.realtime): identificación de la cola de datos de donde deben consumirse las alarmas y eventos provenientes de los NetinDS-Agents.
  • CONFIG_AMQP_QUEUE_DEVICES default(stream.devices::devices.realtime): identificación de la cola de datos de donde deben consumirse los dispositivos provenientes de los NetinDS-Agents.
  • CONFIG_LEGACY_MODE default(false): en el modo legacy, las alarmas con CoT (Cause of Transmission) went son eliminadas de la base de datos que alberga el estado actual del sistema.

    En sistemas con una gran cantidad de alarmas, es recomendable activar este modo con el objetivo de reducir el numero de entradas en la base datos.

  • CONFIG_GONE_ALARMS_CLEANUP_INTERVAL default(1800000): intervalo de tiempo, en milisegundos, entre los procesos de limpieza de alarmas envejecidas la base datos. Se considera alarma envejecida aquellas cuyo ultimo evento fue debido a un CoT went y ocurrió hace hace mas tiempo que el indicado en CONFIG_GONE_ALARMS_AGING_TIME. En caso de indicar un valor 0, no se realiza ningún proceso de limpieza de alarmas.
  • CONFIG_GONE_ALARMS_AGING_TIME default(3600000): indica el tiempo, en milisegundos, que debe haber transcurrido desde un último evento con CoT went para considerar que una alarma esta envejecida.
  • CONFIG_MULTITHREADING_WORKERS default(os.cpus - 1): indica el número de hilos que debe utilizar el artefacto en la ejecución. Por defecto el artefacto creara un hilo por core de la CPU donde se este ejecutando, pero puede controlarse el número de hilos mediante la variable de entorno CONFIG_MULTITHREADING_WORKERS. Para cada hilo se creara un endpoint de health distinto, cada uno de ellos servido en un puerto diferente mediante el siguiente algoritmo: CONFIG_HEALTH_PORT + 10 + nº de hilo, por lo que para el valor por defecto del artefacto (29000) y pidiendo que se generen 3 hilos tendríamos un total de 4 procesos que podemos monitorizar en los puertos 29000 (hilo principal), 29010, 29011 y 29012.
  • CONFIG_HEALTH_PORT default(29000): puerto sobre el que se ofrece el REST API de observability de NetinDS. Dicha REST API se ofrecerá en los endpoints:
    • http://127.0.0.1:{CONFIG_HEALTH_PORT}/v1/health: estado de los subcomponentes internos del Firehose.
    • http://127.0.0.1:{CONFIG_HEALTH_PORT}/v1/metrics: métricas del Firehose en formato prometheus.
    • http://127.0.0.1:{CONFIG_HEALTH_PORT}/v1/registers: registro de los últimos trabajos de publicación hacia el servidor que acabarón con algún tipo de error. El tamaño de este listado puede configurarse mediante la variable de entorno: CONFIG_CONFLICT_BUFFER_LENGTH, cuyo valor por defecto es 100.

      No se recomienda modificación de la variable CONFIG_CONFLICT_BUFFER_LENGTH si no se sabe lo que se esta haciendo.

    • http://127.0.0.1:{CONFIG_HEALTH_PORT}/v1/openc2: registro de los últimos mensajes OpenC2 que ha recibido o emitido esta instancia. El tamaño de este listado puede configurarse mediante la variable de entorno: CONFIG_FIREHOSE_MAX_OC2_REGISTERS, cuyo valor por defecto es 100.

      No se recomienda modificación de la variable CONFIG_FIREHOSE_MAX_OC2_REGISTERS si no se sabe lo que se esta haciendo.

  • CONFIG_HEALTH_HOST default(localhost): dirección IP sobre la que se asocia el REST API de observability.
  • CONFIG_HEALTH_MODE default(http): modo de funcionamiento del REST API de observability. Las opciones validas son http o https, esta ultima obliga a la configuración de certificados para el servidor.
  • CONFIG_HEALTH_FILE_CERT_PATH default(certs/cert.pem): ruta al fichero de certificado para el servidor. Solo se usa en modo https.
  • CONFIG_HEALTH_FILE_KEY_PATH default(certs/key.pem): ruta al fichero de clave privada. Solo se usa en modo https.

Configuración del servicio OpenC2

  • CONFIG_OPENC2_LOOKUP_INTERVAL default(60000): indica el intervalo de tiempo para el envío de la solicitudes query features. Esta solicitudes son enviadas a modo de descubrimiento de interlocutores, los Firehose interactúan con estos interlocutores para la sincronización de alarmas y dispositivos.
  • CONFIG_OPENC2_LOOKUP_MAX_DELAY default(30000): Tiempo máximo durante el cual se esperan respuestas para solitudes de descubrimiento. Este tiempo debe ser coherente con la variable CONFIG_OPENC2_LOOKUP_INTERVAL, es decir, debe ser siempre menor.
  • CONFIG_OPENC2_ALARM_DELETE_MAX_DELAY default(30000): tiempo máximo durante el cual se esperan respuestas para cualquier solicitud, excepto query features.
  • CONFIG_FIREHOSE_MAX_OC2_REGISTERS default(100): tamaño máximo de listado de mensajes recibidos y emitidos por esta instancia.

Configuración del registro de eventos (logger) @netin-js\logger

Registro por consola
  • CONFIG_LOGGER_CONSOLE_ENABLE default(false): habilitación del logger de consola.
  • CONFIG_LOGGER_CONSOLE_LEVEL default('info'): nivel de registro.
Registro por fichero
  • CONFIG_LOGGER_FILE_ENABLE default(true): habilitación del logger de fichero.
  • CONFIG_LOGGER_FILE_LEVEL default('info'): nivel de registro.
  • CONFIG_LOGGER_FILE_FILE_NAME default('logs/${CONFIG_ARTIFACT_ID}'): nombre del fichero de registro.
  • CONFIG_LOGGER_FILE_MAX_FILES default(10): cantidad maxima de ficheros (rotacional).
  • CONFIG_LOGGER_FILE_MAX_SIZE default(10 * 1000000): tamaño máximo en bytes del archivo.
  • CONFIG_LOGGER_FILE_ZIPPED default(true): indica que todos los ficheros logs se comprimen, excepto el que se está escribiendo actualmente
  • CONFIG_LOGGER_FILE_JSON default(false): indica si el formato es json o string, por defecto es string.
Registro mediante el fluentd
  • CONFIG_LOGGER_FLUENTD_ENABLE default(false): habilitación del logger mediante fluentd.
  • CONFIG_LOGGER_FLUENTD_LEVEL default('info'): nivel de registro.
  • CONFIG_LOGGER_FLUENTD_HOST default('localhost'): host donde se encuentra el servicio fluentd.
  • CONFIG_LOGGER_FLUENTD_PORT default(28930): host donde se encuentra el servicio fluentd.
  • CONFIG_LOGGER_FLUENTD_TIMEOUT default(5000): configura el tiempo de inactividad del socket.
  • CONFIG_LOGGER_FLUENTD_ACK_RESPONSE default(true): cambia el protocolo a at-least-one. El logger esperara por el ack del servicio.
  • CONFIG_LOGGER_FLUENTD_RECONNECT_INTERVAL default(5000): configura el intervalo de reconexión en milisegundos.
  • CONFIG_LOGGER_FLUENTD_EVENT_MODE default('Message'): configura el modo en el que son tratados los eventos. Son soportados Message, PackedForward y CompressedPackedForward. Ver Event Modes.
  • CONFIG_LOGGER_FLUENTD_TLS default(false): habilita el uso de TLS en este socket.
  • CONFIG_LOGGER_FLUENTD_FLUSH_INTERVAL default(2000): no tiene efecto en Message Mode. El logger almacena los eventos y los envía en cada intervalo de flush.
  • CONFIG_LOGGER_FLUENTD_MESSAGE_SEND_QUEUE_SIZE default(100 * 1024 * 1024): no tiene efecto en Message Mode. Tamaño de la cola de mensajes en bytes.
Niveles de registro

Los niveles de registro, al ser niveles apilados, cada nivel complementa al nivel anterior mostrando mayor detalle del mismo evento o flujo. Usar el nivel adecuado para cada tipo de registro es de gran importancia, especialmente en sistemas en producción donde un alto nivel de registros pueden reducir en gran medida el rendimiento de los sistemas:

  • error: Cualquier error que es fatal para la operación, aunque no tiene porque serlo para el servicio o la aplicación. Este tipo de errores requieren de la intervención de los administradores del sistema ó usuarios para corregir el problema.
  • warn: Eventos que pueden provocar comportamientos no deseados en el sistema, el sistema trata de recuperarse por si mismo del evento, pero se podrían producir comportamiento extraños en la aplicación.
  • info: Información util para los usuarios administradores del sistema (inicio/parada de servicio, version de la aplicación, conexiones con recursos externos ...)
  • verbose: Información util para conocer todos los pasos realizados por una aplicación, orientada a usuarios administradores que tratan de conocer la toma de decisiones el fundamento de la toma de decisiones o la razón base de los eventos de una aplicación o sistema.
  • debug: - Información que es util para el diagnostico de los sistemas ó servicios, no solo para desarrolladores (configuraciones, modos de funcionamiento ...).
  • silly: - Información especifica de utilizada para trazar el comportamiento del código en una funcionalidad especifica.

Configuración del acceso la base de datos actuales

  • CONFIG_MONGO_ADDR default(mongodb://127.0.0.1:28900/netin): URL donde se encuentra la base de datos de configuración del agente de NetinDS.
  • CONFIG_MONGO_SERVER_SELECTION_TIMEOUT default(5000): tiempo máximo de espera en el proceso de selección de un server para realizar una operación. Solo es utilizado si la base de datos de configuración esta trabajando en modo cluster.
  • CONFIG_MONGO_MIN_POOL_SIZE default(4): tamaño mínimo de la pila de conexiones contra la base de datos.
  • CONFIG_MONGO_KEEP_ALIVE default(true): habilita el keepalive en la conexiones contra la base de datos permaneciendo de este modo establecidas.
  • CONFIG_MONGO_KEEP_ALIVE_INITIAL_DELAY default(10000): tiempo de espera antes inicial el keepalive en las conexiones contra la base de datos.
  • CONFIG_MONGO_CONNECTION_TIMEOUT default(10000): tiempo máximo de espera ante un intento de conexión con la base de datos.
  • CONFIG_MONGO_SOCKET_TIMEOUT default(10000): tiempo máximo de espera en las peticiones de envió o recepción sobre el socket utilizado para conectarse con la base de datos.

Configuración del acceso al broker de NetinDS-Server

Pese a que se ofrece una gran cantidad de variables de entorno para la configuración de la conexión con el broker de Netin-DS, a continuación se indican cuales son las mas relevantes:

  • CONFIG_AMQP_USER_NAME default('consumer'): nombre de usuario con los permisos de consumidor que se utilizara en la conexión del Firehose.
  • CONFIG_AMQP_PASSWORD default(undefined): contraseña asociada al usuario con permisos de consumidor.
  • CONFIG_AMQP_HOST default('127.0.0.1'): host donde se encuentra el broker de NetinDS-Server.
  • CONFIG_AMQP_HOSTNAME default(undefined): nombre del host donde se encuentra el broker.
  • CONFIG_AMQP_PORT default(5672): puerto donde se ofrece el servicio AMQP por parte del broker de NetinDS-Server.
  • CONFIG_AMQP_TRANSPORT default('tcp'): las opciones posibles son: 'tcp' | 'tls' | 'ssl'.
  • CONFIG_AMQP_CA_PATH default(undefined): cuando el modo transporte (CONFIG_AMQP_TRANSPORT) seleccionado es tls, indica la ruta al certificado de la CA.
  • CONFIG_AMQP_CLIENT_CERT_PATH default(undefined): cuando el modo transporte (CONFIG_AMQP_TRANSPORT) seleccionado es tls, indica la ruta al certificado del cliente.
  • CONFIG_AMQP_CLIENT_KEY_PATH default(undefined): cuando el modo transporte (CONFIG_AMQP_TRANSPORT) seleccionado es tls, indica la ruta a la key del certificado de cliente.
  • CONFIG_AMQP_REQUEST_CERT default(false): cuando el modo transporte (CONFIG_AMQP_TRANSPORT) seleccionado es tls, indica la necesidad de solicitar los certificados de cliente.
  • CONFIG_AMQP_REJECT_UNAUTHORIZED default(false): cuando el modo transporte (CONFIG_AMQP_TRANSPORT) seleccionado es tls, indica si debe rechazarse los certificados autofirmados.

El resto de variables indicadas exigen un profundo conocimiento de los sistemas NetinDS y no se recomienda su modificación por personal no experto.

  • CONFIG_AMQP_CONTAINER_ID default(${CONFIG_ARTIFACT_ID}): identificador del container AMQP utilizado. Es utilizado como identificador de consumidores/productores en ActiveMQ-Artemis.
  • CONFIG_AMQP_ID default(undefined): identificador de la conexión dentro del propio container.
  • CONFIG_AMQP_RECONNECT default(5000): puede ser un número entero o un booleano. En caso de ser un numero entero indica el tiempo, en milisegundos, entre los intentos de reconexión. Si el valor es false no intentara reconectar, y si es true intentara reconectar atendiendo a los valores de CONFIG_AMQP_RECONNECT_LIMIT, CONFIG_AMQP_INITIAL_RECONNECT_DELAY y CONFIG_AMQP_MAX_RECONNECT_DELAY.
  • CONFIG_AMQP_RECONNECT_LIMIT default(undefined): limite intentos de reconexión, aplicable cuando CONFIG_AMQP_RECONNECT es true.
  • CONFIG_AMQP_INITIAL_RECONNECT_DELAY default(30000): tiempo, en milisegundos, hasta el primer intento de reconexión. Aplicable cuando CONFIG_AMQP_RECONNECT es true o un número.
  • CONFIG_AMQP_MAX_RECONNECT_DELAY default(60000): máximo tiempo entre reintentos de reconexión, aplicable cuando CONFIG_AMQP_RECONNECT es true.
  • CONFIG_AMQP_MAX_FRAME_SIZE default(undefined): tamaño máximo del telegrama en bytes que se admite, si no se indica valor, existe limite de 4GB.
  • CONFIG_AMQP_NON_FATAL_ERRORS default(amqp:connection:forced): errores, que en caso de ser recibidos cuando se produce un cierre de la conexión no deben evitar que se produzca una reconexión.
  • CONFIG_AMQP_SENDER_NAME default(undefined): nombre del enlace, debe ser único para contenedor.
  • CONFIG_AMQP_SENDER_SETTLE_MODE default(2): indica el modo de resolución de los mensajes en el remitente:
  • 0: el remitente enviará todas las entregas inicialmente no resueltas al destinatario.
  • 1: el remitente enviará todas las entregas resueltas al destinatario.
  • 2: el remitente PUEDE enviar una mezcla de entregas resueltas y no resueltas al destinatario.
  • CONFIG_AMQP_SENDER_AUTO_SETTLE default(true): indica si los mensajes enviados deben resolverse automáticamente una vez que el par los resuelve.
  • CONFIG_AMQP_RECEIVER_NAME default(undefined): nombre del enlace, debe ser único para contenedor.
  • CONFIG_AMQP_RECEIVER_SETTLE_MODE default(0): indica el modo de resolución de los mensajes en el receptor:
  • 0: el receptor resuelve espontáneamente todas las transferencias entrantes.
  • 1: el receptor resuelve solo resolverá después de enviar la disposición al remitente y recibir una disposición que indique la resolución de la entrega por parte del remitente.
  • CONFIG_AMQP_RECEIVER_CREDIT_WINDOW default(0): Una ventana de "captación previa" que controla el flujo de mensajes a través de este receptor. Se debe usar un valor de 0 para desactivar el control de flujo automático y que sea el Firehose quien lo administra.
  • CONFIG_AMQP_RECEIVER_AUTO_ACCEPT default(false): indica si los mensajes recibidos deben ser automáticamente aceptados.
  • CONFIG_AMQP_RECEIVER_AUTO_SETTLE default(true): indica si los mensajes enviados deben resolverse automáticamente una vez que el par los resuelve.

Colaboración

Como en el resto de los repositorios de Netin Systems, toda colaboración es siempre bien recibida.

Si cree que existe un error cree un bug aportando toda la información posible.

Si quiere realizar un nuevo aporte, cree una nueva rama, respetando en todo momento el flujo de versiones establecido por GitFlow, realice sus modificaciones en ella y solicite la aprobación de las mismas mediante Pull Request, rellenando correctamente la plantilla del mismo.

Licencia

Copyright 2021 Network Intelligence S.L. All rights reserved.

Note: All information contained herein is, and remains the property of Network Intelligence S.L. and its suppliers, if any. The intellectual and technical concepts contained herein are property of Network Intelligence S.L. and its suppliers and may be covered by European and Foreign patents, patents in process, and are protected by trade secret or copyright. Dissemination of this information or the reproduction of this material is strictly forbidden unless prior written permission is obtained from Network Intelligence.

Docker Pull Command

docker pull netinsystems/netin-ds-fh-server-local