Áú»¢¶Ä²©

13 Restringindo verifica??es de agentes

Vis?o geral

? poss¨ªvel restringir as verifica??es do lado do agente criando um item lista negra, uma lista branca ou uma combina??o de lista branca/lista negra.

Para fazer isso, use uma combina??o de dois agentes configura??o par?metros:

  • AllowKey=<pattern> - quais verifica??es s?o permitidas; <padr?o> ¨¦ especificado usando uma express?o curinga (*)
  • DenyKey=<pattern> - quais verifica??es s?o negadas; <padr?o> ¨¦ especificado usando uma express?o curinga (*)

Observe que:

  • Todos os itens system.run[*] (comandos remotos, scripts) s?o desabilitados por padr?o, mesmo quando nenhuma chave de nega??o ¨¦ especificada;
  • Desde o Áú»¢¶Ä²© 5.0.2 o par?metro do agente EnableRemoteCommands ¨¦:
   * obsoleto pelo agente Áú»¢¶Ä²©
          * n?o suportado pelo agente Áú»¢¶Ä²©2

Portanto, para permitir todos os comandos remotos, especifique um par?metro AllowKey=system.run[*]. Para permitir apenas alguns comandos remotos, crie uma lista branca de comandos espec¨ªficos do system.run[]. Para n?o permitir comandos remotos espec¨ªficos, adicione par?metros DenyKey com system.run[] comandos antes do par?metro AllowKey=system.run[*].

Regras importantes

  • Uma lista branca sem uma regra de nega??o s¨® ¨¦ permitida para system.run[*] Itens. Para todos os outros itens, os par?metros AllowKey n?o s?o permitidos sem um par?metro DenyKey; neste caso o agente Áú»¢¶Ä²© n?o ir¨¢ start apenas com par?metros AllowKey.
  • A ordem importa. Os par?metros especificados s?o verificados um a um de acordo com sua ordem de apar¨ºncia no arquivo de configura??o:
    • Assim que uma chave de item corresponder a uma regra de permiss?o/nega??o, o item ser¨¢ permitido ou negado; e a verifica??o de regras p¨¢ra. Ent?o, se um item corresponde a uma regra de permiss?o e uma regra de nega??o, o resultado ser¨¢ depende de qual regra vem primeiro.
    • A ordem afeta tamb¨¦m o par?metro EnableRemoteCommands (se usado).
  • N¨²meros ilimitados de par?metros AllowKey/DenyKey s?o suportados.
  • As regras AllowKey, DenyKey n?o afetam HostnameItem, Par?metros de configura??o HostMetadataItem, HostInterfaceItem.
  • O padr?o de chave ¨¦ uma express?o curinga em que o curinga (*) caractere corresponde a qualquer n¨²mero de caracteres em determinada posi??o. Pode ser usado tanto no nome da chave quanto nos par?metros.
  • Se uma chave de item espec¨ªfica n?o for permitida na configura??o do agente, o item ser¨¢ relatado como n?o suportado (nenhuma dica ¨¦ dada quanto ao raz?o);
  • O agente Áú»¢¶Ä²© com a op??o de linha de comando --print (-p) n?o ser¨¢ exibido chaves que n?o s?o permitidas pela configura??o;
  • O agente Áú»¢¶Ä²© com a op??o de linha de comando --test (-t) retornar¨¢ "Chave de item n?o compat¨ªvel." status para chaves que n?o s?o permitidas por configura??o;
  • Comandos remotos negados n?o ser?o registrados no log do agente (se LogRemoteCommands=1).

Casos de uso

Negar verifica??o espec¨ªfica
  • Lista negra de uma verifica??o espec¨ªfica com o par?metro DenyKey. Chaves correspondentes ser¨¢ desautorizado. Todas as chaves n?o correspondentes ser?o permitidas, exceto system.run[] itens.

Por exemplo:

# Negar acesso seguro a dados
       DenyKey=vfs.file.contents[/etc/passwd,*]

::: n?o importante Uma lista negra pode n?o ser uma boa escolha, porque um nova vers?o do Áú»¢¶Ä²© pode ter novas chaves que n?o s?o explicitamente restritas pela configura??o existente. Isso pode causar uma seguran?a falha. :::

Negar comando espec¨ªfico, permitir outros
  • Lista negra de um comando espec¨ªfico com o par?metro DenyKey. Colocar todos na lista de permiss?es outros comandos, com o par?metro AllowKey.
# Desabilita comando espec¨ªfico
       DenyKey=system.run[ls -l /]
        
       # Permitir outros scripts
       AllowKey=system.run[*]
Permitir verifica??o espec¨ªfica, negar outras
  • Verifica??es espec¨ªficas da lista de permiss?es com par?metros AllowKey, negue outras com DenyKey=*

Por exemplo:

# Permitir a leitura de logs:
       AllowKey=vfs.file.*[/var/log/*]
       
       # Permitir verifica??es de hora local
       AllowKey=system.localtime[*]
       
       # Negar todas as outras chaves
       DenyKey=*

Exemplos de padr?es

Padr?o Descri??o °ä´Ç°ù°ù±ð²õ±è´Ç²Ô»å¨º²Ô³¦¾±²¹²õ Sem correspond¨ºncia
* Corresponde a todas as chaves poss¨ªveis com ou sem par?metros. Qualquer Nenhum
vfs.file.contents Corresponde a vfs.file.contents sem par?metros. vfs.file.contents vfs.file.contents[/etc/passwd]
vfs.file.contents[] Corresponde vfs.file.contents com par?metros vazios. vfs.file.contents[] vfs.file.contents
vfs.file.contents[*] Corresponde vfs.file.contents com quaisquer par?metros; n?o corresponder¨¢ a vfs.file.contents sem colchetes. vfs.file.contents[]
vfs.file.contents[/path/to/file]
vfs.file.contents
vfs.file.contents[/etc/passwd,*] Corresponde vfs.file.contents com os primeiros par?metros correspondentes a /etc/passwd e todos os outros par?metros com qualquer valor (tamb¨¦m vazio). vfs .file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf8]
vfs.file.contents[/etc/passwd]
vfs. file.contents[/var/log/zabbix_server.log]
vfs.file.contents[]
vfs.file.contents[*passwd*] Corresponde vfs.file.contents com o primeiro par?metro correspondente a *passwd* e nenhum outro par?metro. vfs.file.contents[/etc /passwd] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[*passwd*,*] Corresponde a vfs.file.contents apenas com o primeiro par?metro correspondente a *passwd* e todos os par?metros seguintes com qualquer valor (tamb¨¦m vazio) . vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[/etc/passwd]<br >vfs.file.contents[/tmp/test]
vfs.file.contents[/var/log/zabbix_server.log,*,abc] Corresponde vfs.file.contents com o primeiro par?metro correspondente a /var/log/zabbix_server.log , terceiro par?metro correspondente a 'abc' e qualquer segundo par?metro (tamb¨¦m vazio). vfs.file.contents[/var/log/zabbix_server.log,,abc]
vfs.file.contents[/ var/log/zabbix_server.log,utf8,abc]
vfs.file.contents[/var/log/zabbix_server.log,,abc,def]
vfs.file.contents[/etc/passwd,utf8] Corresponde vfs.file.contents com o primeiro par?metro correspondente a /etc/passwd, segundo par?metro correspondente a 'utf8' e nenhum outro argumento. vfs. file.contents[/etc/passwd,utf8] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf16]
vfs.file.* Corresponde a qualquer chave que comece com vfs.file. sem nenhum par?metro. vfs.file.contents
vfs.file.size
vfs.file.contents[]< br>vfs.file.size[/var/log/zabbix_server.log]
vfs.file.*[*] Corresponde a qualquer chave que comece com vfs.file. com quaisquer par?metros. vfs.file.size.bytes[]
vfs.file. size[/var/log/zabbix_server.log, utf8]
vfs.file.size.bytes
vfs.*.contents Corresponde a qualquer chave come?ando com vfs. e terminando com .contents sem nenhum par?metro. vfs.mount.point.file.contents
vfs..contents
vfs. conte¨²do

system.run e AllowKey

Um script hipot¨¦tico como 'myscript.sh' pode ser executado em um host via Agente Áú»¢¶Ä²© de v¨¢rias maneiras:

1. Como chave de item em uma verifica??o passiva ou ativa, por exemplo:

  • system.run[myscript.sh]
  • system.run[myscript.sh,wait]
  • system.run[myscript.sh.nowait]

Aqui o usu¨¢rio pode adicionar "wait", "nowait" ou omitir o 2? argumento para usar seu valor padr?o em system.run[].

2. Como um script global (iniciado pelo usu¨¢rio no frontend ou API).

Um usu¨¢rio configura este script em Administration ¡ú Scripts, define "Execute on: Áú»¢¶Ä²© agent" e coloca "myscript.sh" no script Campo de entrada "Comandos". Quando invocado do frontend ou API o Áú»¢¶Ä²© servidor envia ao agente:

  • system.run[myscript.sh,wait] - at¨¦ Áú»¢¶Ä²© 5.0.4
  • system.run[myscript.sh] - desde 5.0.5

Aqui o usu¨¢rio n?o controla os par?metros "wait"/"nowait".

3. Como um comando remoto de uma a??o. O servidor Áú»¢¶Ä²© envia para agente:

  • system.run[myscript.sh,nowait]

Aqui, novamente, o usu¨¢rio n?o controla os par?metros "wait"/"nowait".

O que isso significa ¨¦ se definirmos AllowKey como:

AllowKey=system.run[myscript.sh]

ent?o

  • system.run[myscript.sh] - ser¨¢ permitido
  • system.run[myscript.sh,wait], system.run[myscript.sh,nowait] n?o ser¨¢ permitido - o script n?o ser¨¢ executado se invocado como passo de a??o

Para permitir todas as variantes descritas, voc¨º pode adicionar:

AllowKey=system.run[myscript.sh,*]
       DenyKey=system.run[*]

aos par?metros agente/agente2.