lunes, 16 de septiembre de 2019

Sistema de monitoreo NetData

Netdata es un monitoreo distribuido, en tiempo real, de rendimiento y salud para sistemas y aplicaciones. Es un agente de monitoreo altamente optimizado que instala en todos sus sistemas y contenedores.

Netdata proporciona información incomparable, en tiempo real, de todo lo que sucede en los sistemas que ejecuta (incluidos servidores web, bases de datos, aplicaciones), utilizando paneles web altamente interactivos. Puede ejecutarse de forma autónoma, sin componentes de terceros, o puede integrarse a las cadenas de herramientas de monitoreo existentes (Prometheus, Graphite, OpenTSDB, Kafka, Grafana, etc.).

Netdata es rápido y eficiente, diseñado para ejecutarse permanentemente en todos los sistemas (servidores físicos y virtuales, contenedores, dispositivos IoT), sin interrumpir su función principal.

Netdata es un software gratuito de código abierto y actualmente se ejecuta en Linux, FreeBSD y MacOS.

Sus datos están seguros con Netdata¶

Netdata recopila datos sin procesar de muchas fuentes. Para cada fuente, Netdata utiliza un complemento que se conecta a la fuente (o lee los archivos relativos producidos por la fuente), recibe datos sin procesar y los procesa para calcular las métricas que se muestran en los paneles de Netdata.

Incluso si los complementos de Netdata se conectan a su servidor de base de datos o leen el archivo de registro de la aplicación para recopilar datos sin procesar, el producto de este proceso de recopilación de datos es siempre una serie de metadatos de gráficos y valores métricos (datos resumidos para la visualización del tablero). Todos los complementos de Netdata (internos al demonio de Netdata y externos escritos en cualquier lenguaje de computadora), convierten los datos sin procesar recopilados en métricas, y solo estas métricas se almacenan en bases de datos de Netdata, se envían a servidores de Netdata ascendentes o se archivan para series de tiempo de backend bases de datos

Los datos brutos recopilados por Netdata no dejan el host donde se recopilan. Los únicos datos que expone Netdata son los metadatos del gráfico y los valores métricos.

Esto significa que Netdata se puede usar de forma segura en entornos que requieren el más alto nivel de aislamiento de datos (como PCI Nivel 1).

Sus sistemas están seguros con Netdata¶

Estamos muy orgullosos de que el demonio Netdata se ejecute como un usuario normal del sistema, sin ningún privilegio especial. Este es un gran logro para un sistema de monitoreo que recopila todo tipo de métricas de sistemas y aplicaciones.

Sin embargo, hay algunos casos en los que los datos de origen sin procesar solo están expuestos a procesos con privilegios escalados. Para admitir estos casos, Netdata intenta minimizar y aislar completamente el código que se ejecuta con privilegios escalados.

Por lo tanto, los complementos de Netdata, incluso aquellos que se ejecutan con capacidades o privilegios escalados, realizan un trabajo de recopilación de datos codificado. No aceptan comandos de Netdata. La comunicación es estrictamente unidireccional: desde el complemento hacia el demonio Netdata. Los datos de la aplicación original recopilados por cada complemento no abandonan el proceso en el que se recopilan, no se guardan y no se transfieren al demonio Netdata. La comunicación de los complementos al demonio Netdata incluye solo metadatos de gráficos y valores métricos procesados.

Netdata esclava las métricas de transmisión a los servidores de Netdata, use exactamente el mismo protocolo que usan los complementos locales. Los datos sin procesar recopilados por los complementos de los servidores esclavos Netdata nunca abandonan el host donde se recopilan. Los únicos datos que aparecen en el cable son metadatos de gráficos y valores métricos. Esta comunicación también es unidireccional: los servidores Netdata esclavos nunca aceptan comandos de servidores Netdata maestros.

Netdata es de solo lectura¶

Los paneles de Netdata son de solo lectura. Los usuarios del panel pueden ver y examinar las métricas recopiladas por Netdata, pero no pueden indicar a Netdata que haga algo más que presentar las métricas ya recopiladas.

Los paneles de Netdata no exponen información confidencial. Los datos comerciales de cualquier tipo, la versión del kernel, la versión O / S, las versiones de la aplicación, las IP del host, etc., no se almacenan y Netdata no los expone en sus paneles.
Autenticación de espectadores de Netdata¶

Netdata es un sistema de monitoreo. Debe estar protegido, de la misma manera que proteges todas tus aplicaciones de administración. Suponemos que Netdata se instalará de forma privada, solo para sus ojos.
Por qué se debe proteger Netdata¶

Los espectadores podrán obtener información sobre el sistema que Netdata está ejecutando. Esta información es todo lo que proporciona el tablero. El panel de control incluye una lista de los servicios que ejecuta cada sistema (las leyendas de los gráficos en la sección Servicios de Systemd), las aplicaciones que se ejecutan (las leyendas de los gráficos en la sección de Aplicaciones), los discos del sistema y sus nombres, el usuario cuentas del sistema que están ejecutando procesos (la sección Usuarios y grupos de usuarios del tablero), las interfaces de red y sus nombres (no las IP) e información detallada sobre el rendimiento del sistema y sus aplicaciones.

Esta información no es confidencial (lo que significa que no son los datos de su empresa), pero es importante para los posibles atacantes. Les dará pistas sobre qué verificar, qué probar y, en el caso de DDoS contra sus aplicaciones, sabrán si lo están haciendo bien o no.

Además, los espectadores podrían usar Netdata para estresar sus servidores. Aunque el demonio Netdata se ejecuta sin privilegios, con la prioridad de proceso mínima (prioridad de programación inactiva - menor que 19) y ajusta su puntaje OutOfMemory (OOM) a 1000 (para que el núcleo lo mate primero si el sistema se muere de hambre por memoria), se puede aplicar cierta presión en sus sistemas si alguien intenta un DDoS contra Netdata.
Proteger Netdata de internet¶

Netdata es una aplicación distribuida. Lo más probable es que tenga muchas instalaciones de la misma. Como se distribuye y se espera que salte de un servidor a otro, hay muy poca usabilidad para agregar autenticación local en cada Netdata.

Hasta que agreguemos un método de autenticación distribuida a Netdata, tiene las siguientes opciones:
Exponga Netdata solo en una LAN privada¶

Si su organización tiene una LAN de administración y administración privada, puede vincular Netdata en esta interfaz de red en todos sus servidores. Esto se hace en Netdata.conf con esta configuración:

[web] bind to = 10.1.1.1:19999 localhost:19999

Puede vincular Netdata a múltiples IP y puertos. Si usa nombres de host, Netdata los resolverá y usará todas las IP (en el ejemplo anterior, localhost generalmente se resuelve en 127.0.0.1 y :: 1).

Esta es la mejor y la forma sugerida de proteger Netdata. Sus sistemas deben tener una LAN de administración y administración privada, de modo que todas las tareas de administración se realicen sin ninguna posibilidad de que estén expuestas en Internet.

Para instalaciones basadas en la nube, si su proveedor de la nube no proporciona una LAN privada (o si utiliza varios proveedores), puede crear una LAN virtual de administración y administración con herramientas como tincd o gvpe. Estas herramientas crean una VPN de malla que permite que todos los servidores se comuniquen de forma segura y privada. Sus estaciones de administración se unen a esta VPN de malla para obtener acceso a las tareas de administración y administración en todos sus servidores en la nube.

Para gvpe, hemos desarrollado una herramienta de aprovisionamiento simple que puede encontrar útil (incluye binarios de gvpe compilados estáticamente para Linux y FreeBSD, y también un script para compilar gvpe en su Mac). Usamos esto para crear una LAN de administración y administración para todos los sitios de demostración de Netdata (distribuidos por todo Internet utilizando múltiples proveedores de alojamiento).

En Netdata v1.9 + también hay soporte para la lista de acceso, como este:

[web]
enlazar a = *
permitir conexiones desde = localhost 10. * 192.168. *

Use un servidor web de autenticación en modo proxy¶

Use un servidor web para proporcionar autenticación frente a todos sus servidores Netdata. Por lo tanto, accederá a todos sus Netdata con URL como http: // {HOST} / netdata / {NETDATA_HOSTNAME} / y la autenticación se compartirá entre todos ellos (iniciará sesión una vez para todos sus servidores). Se proporcionan instrucciones sobre cómo configurar la configuración del proxy para que Netdata se ejecute detrás de nginx, Apache, lighthttpd y Caddy.

Para utilizar este método, debe proteger con firewall todos sus servidores Netdata, de modo que solo la IP del servidor web pueda acceder directamente a Netdata. Para hacer esto, ejecute esto en cada uno de sus servidores (o use su administrador de firewall):

PROXY_IP = "1.2.3.4"
iptables -t filter -I INPUT -p tcp --dport 19999 \! -s $ {PROXY_IP} -m conntrack --ctstate NUEVO -j DROP

comandos para permitir el acceso directo a Netdata desde un servidor proxy web

Lo anterior evitará que cualquier persona, excepto su servidor web, acceda a un panel de Netdata que se ejecuta en el host.

Para Netdata v1.9 + también puede usar netdata.conf:

[web]
permitir conexiones desde = localhost 1.2.3.4

Por supuesto, puede agregar más IP.

Para Netdata anterior a v1.9, si desea permitir múltiples IP, use esto:

# lista de direcciones IP separadas por espacios para permitir el acceso a Netdata
NETDATA_ALLOWED = "1.2.3.4 5.6.7.8 9.10.11.12"
NETDATA_PORT = 19999

# crear una nueva cadena de filtrado || o vaciar uno existente llamado netdata
iptables -t filtro -N netdata 2> / dev / null || iptables -t filtro -F netdata
para x en $ {NETDATA_ALLOWED}
hacer
# permitir esta IP
iptables -t filter -A netdata -s $ {x} -j ACEPTAR
hecho

# descartar todas las demás IP
iptables -t filter -A netdata -j DROP

# eliminar el gancho de la cadena de entrada (si existe)
iptables -t filter -D INPUT -p tcp --dport $ {NETDATA_PORT} -m conntrack --ctstate NEW -j netdata 2> / dev / null

# agregue el gancho de la cadena de entrada (nuevamente)
# para enviar todas las nuevas conexiones de Netdata a nuestra cadena de filtrado
iptables -t filtro -I INPUT -p tcp --dport $ {NETDATA_PORT} -m conntrack --ctstate NUEVO -j netdata

script para permitir el acceso a Netdata solo desde varios hosts

Puede ejecutar lo anterior cualquier cantidad de veces. Cada vez que se ejecuta, actualiza la lista de hosts permitidos.
Otros metodos¶

Por supuesto, hay muchos más métodos que podría usar para proteger Netdata:

enlace Netdata a localhost y use ssh -L 19998: 127.0.0.1: 19999 remote.netdata.ip para reenviar las conexiones del puerto local 19998 al puerto remoto 19999. De esta manera puede enviar ssh a un servidor Netdata y luego usar http: //127.0 .0.1: 19998 / en su computadora para acceder al panel de control remoto de Netdata.

Si siempre está bajo una IP estática, puede usar la secuencia de comandos anterior para permitir el acceso directo a sus servidores Netdata sin autenticación, desde todas sus IP estáticas.

instale todos sus Netdata en modo de recopilador de datos sin cabeza, reenviando todas las métricas en tiempo real a un servidor Netdata maestro, que estará protegido con autenticación utilizando un servidor nginx que se ejecuta localmente en el servidor Netdata maestro. Esto requiere más recursos (necesitará un servidor Netdata maestro más grande), pero no requiere ningún cambio de firewall, ya que todos los servidores Netdata esclavos no escucharán las conexiones entrantes.

Estadísticas anónimas¶
Registro o cómo no enviar ninguna información a un servidor de terceros¶

La configuración predeterminada utiliza un registro público en register.my-netdata.io (más información sobre el registro aquí: mynetdata-menu-item). Tenga en cuenta que si utiliza ese registro público, envía la siguiente información a un servidor de terceros:

La url donde abre la interfaz de usuario web en el navegador (a través de http request referer)
Los nombres de host de los servidores de Netdata

Si envía esta información al Netd central

un registro viola sus políticas de seguridad, puede configurar Netdat para ejecutar su propio registro.
Inhabilitar estadísticas anónimas¶

A partir de v1.12, Netdata también recopila estadísticas anónimas sobre ciertos eventos para:

Garantía de calidad, para ayudarnos a comprender si Netdata se comporta como se espera y ayudarnos a identificar problemas recurrentes para ciertas distribuciones o entornos.

Estadísticas de uso, para ayudarnos a centrarnos en las partes de Netdata que más se usan, o ayudarnos a identificar la medida en que nuestras decisiones de desarrollo influyen en la comunidad.

Para optar por no enviar estadísticas anónimas, puede crear un archivo llamado .opt-out-from-anonymous-statistics en el directorio de configuración del usuario (generalmente / etc / netdata). 


Instalación en GNU/Linux Kali Linux

Integración Entre Nodos



Netdata directories

path owner permissions Netdata comments
/etc/netdata user root
group netdata
dirs 0755
files 0640
reads Netdata config files
may contain sensitive information, so group netdata is allowed to read them.
/usr/libexec/netdata user root
group root
executable by anyone
dirs 0755
files 0644 or 0755
executes Netdata plugins
permissions depend on the file - not all of them should have the executable flag.
there are a few plugins that run with escalated privileges (Linux capabilities or setuid) - these plugins should be executable only by group netdata.
/usr/share/netdata user root
group netdata
readable by anyone
dirs 0755
files 0644
reads and sends over the network Netdata web static files
these files are sent over the network to anyone that has access to the Netdata web server. Netdata checks the ownership of these files (using settings at the [web] section of netdata.conf) and refuses to serve them if they are not properly owned. Symbolic links are not supported. Netdata also refuses to serve URLs with .. in their name.
/var/cache/netdata user netdata
group netdata
dirs 0750
files 0660
reads, writes, creates, deletes Netdata ephemeral database files
Netdata stores its ephemeral real-time database here.
/var/lib/netdata user netdata
group netdata
dirs 0750
files 0660
reads, writes, creates, deletes Netdata permanent database files
Netdata stores here the registry data, health alarm log db, etc.
/var/log/netdata user netdata
group root
dirs 0755
files 0644
writes, creates Netdata log files
all the Netdata applications, logs their errors or other informational messages to files in this directory. These files should be log rotated.
      

No hay comentarios.: