Áú»¢¶Ä²©

13 Restringir les verificacions de l'agent

Vista general

Les comprovacions de l'agent es poden restringir creant una llista negra, una llista blanca o una combinaci¨® de llista blanca/llista negra d'elements.

Per fer-ho, empreu una combinaci¨® de dos par¨¤metres ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de l'agent:

  • ´¡±ô±ô´Ç·É°­±ð²â=&±ô³Ù;±è²¹³Ù°ù¨®&²µ³Ù; - quines comprovacions s¨®n permeses; <patr¨®> s'especifica mitjan?ant una expressi¨® comod¨ª (*)
  • ¶Ù±ð²Ô²â°­±ð²â=&±ô³Ù;±è²¹³Ù°ù¨®&²µ³Ù; - quines comprovacions es deneguen; <patr¨®> s'especifica mitjan?ant una expressi¨® comod¨ª (*)

Tingueu en compte que:

  • Tots els elements system.run[*] (ordres remotes, scripts) s¨®n desactivats per defecte, fins i tot quan no s'especifica cap clau de denegaci¨®;
  • At¨¨s que el par¨¤metre de l'agent de Áú»¢¶Ä²© 5.0.2 EnableRemoteCommands ¨¦s:
  • obsolet per l'agent de Áú»¢¶Ä²©
  • no compatible amb l'agent de Áú»¢¶Ä²© 2

Per tant, per permetre ordres remotes, especifiqueu una clau AllowKey=system.run[<command>,*] per a cada ordre permesa, * representa el mode wait i nowait. Tamb¨¦ ¨¦s possible especificar el par¨¤metre AllowKey=system.run[*] per permetre totes les ordres amb els modes wait i nowait. Per no permetre ordres remotes espec¨ªfiques, afegiu par¨¤metres DenyKey amb ordres system.run[] abans del par¨¤metre AllowKey=system.run[*].

Regles importants

  • La llista blanca sense una regla de denegaci¨® nom¨¦s es permet per als elements system.run[*]. Per a la resta d'elements, els par¨¤metres AllowKey no es permeten sense un par¨¤metre DenyKey; en aquest cas, l'agent Áú»¢¶Ä²© no comen?ar¨¤ nom¨¦s amb par¨¤metres AllowKey.
  • L'ordre compta. Els par¨¤metres especificats es comproven un a un segons el seu ordre d'aparici¨® al fitxer de ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®:
    • Tan aviat com una clau d'element coincideix amb una regla d'autoritzaci¨®/denegaci¨®, l'element es permet o es denega; i la comprovaci¨® de regles s'atura. Per tant, si un element coincideix amb una regla d'autoritzaci¨® i una regla de denegaci¨®, el resultat dependr¨¤ de quina regla sigui primera.
    • L'ordre tamb¨¦ afecta la ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® EnableRemoteCommands (si s'empra).
  • S'admeten par¨¤metres AllowKey/DenyKey il¡¤limitats.
  • Les regles AllowKey i DenyKey no afecten els par¨¤metres de ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de HostnameItem, HostMetadataItem i HostInterfaceItem.
  • El patr¨® de clau ¨¦s una expressi¨® de comod¨ª on el car¨¤cter comod¨ª (*) coincideix amb qualsevol nombre de car¨¤cters en una posici¨® determinada. Es pot emprar tant en el nom de la clau com en els par¨¤metres.
  • Si no es permet una clau d'element espec¨ªfica a la ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de l'agent, l'element es marcar¨¤ com a no compatible (no s'indica per qu¨¨);
  • L'agent Áú»¢¶Ä²© amb l'opci¨® de l¨ªnia d'ordres --print (-p) no mostrar¨¤ les claus que la ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® no permet;
  • L'agent Áú»¢¶Ä²© amb l'opci¨® de l¨ªnia d'ordres --test (-t) retornar¨¤ l'estat "La clau d'element no ¨¦s compatible". per a claus no autoritzades per la ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®;
  • Les ordres remotes denegades no es registraran al registre de l'agent (si LogRemoteCommands=1).

Casos d'¨²s

Denegar validacions espec¨ªfiques
  • Posar a la llista negra una comprovaci¨® espec¨ªfica amb el par¨¤metre DenyKey. Les claus coincidents no es permetran. Es permetran totes les claus que no coincideixen, excepte els elements system.run[].
Denegar una verificaci¨® espec¨ªfica
  • Posar a la llista negra una comprovaci¨® espec¨ªfica amb el par¨¤metre DenyKey. Les claus coincidents seran rebutjades. Es permetran totes les claus que no coincideixin excepte system.run[].

Per exemple:

 # Denegueu l'acc¨¦s segur a les dades
        DenyKey=vfs.file.contents[/etc/passwd,*]

Pot ser que una llista negra no sigui una bona opci¨®, perqu¨¨ una versi¨® nova de Áú»¢¶Ä²© pot tindre claus noves que no siguin restringides expl¨ªcitament per la ³¦´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® existent. Aix¨° podria provocar una violaci¨® de seguretat.

Denegar una ordre espec¨ªfica, permetent-ne d'altres
  • Afegir a la llista negra una ordre espec¨ªfica amb el par¨¤metre DenyKey. Posar a la llista blanca totes les altres ordres, amb el par¨¤metre AllowKey.
 # Prohibir una ordre espec¨ªfica
        DenyKey=system.run[ls -l /]
        
        # Permetre altres scripts
        AllowKey=system.run[*]
Permetre una verificaci¨® concreta, i refusar totes les altres
  • Afegir a la llista blanca de comprovacions espec¨ªfiques amb par¨¤metres AllowKey, denegar altres amb DenyKey=*

Per exemple:

 # Permetre llegir registres:
        AllowKey=vfs.file.*[/var/log/*]
       
        # Permetre comprovacions de l'hora local
        AllowKey=system.localtime[*]
       
         # Denegar totes les altres claus
         DenyKey=*

Exemples de patrons

±Ê²¹³Ù°ù¨® ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨® °ä´Ç¾±²Ô³¦¾±»å¨¨²Ô³¦¾±±ð²õ Sense coincid¨¨ncies
* Coincideix amb totes les claus possibles amb o sense par¨¤metres. Totes Cap
vfs.file.contents Coincideix amb vfs.file.contents sense par¨¤metres. vfs.file.contents vfs.file.contents[/etc/passwd]
vfs.file.contents[] Coincideix vfs.file.contents amb par¨¤metres buits. vfs.file.contents[] vfs.file.contents
vfs.file.contents[*] Fa coincidir vfs.file.contents amb qualsevol par¨¤metre; no coincidir¨¤ amb vfs.file.contents sense claud¨¤tors. vfs.file.contents[]
vfs.file.contents[/path/to/file]
vfs.file.contents
vfs.file.contents[/etc/passwd,*] Fa coincidir vfs.file.contents amb els primers par¨¤metres que coincideixen amb /etc/passwd i tots els altres par¨¤metres amb un valor (tamb¨¦ buit). 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*] Coincideix vfs.file.contents amb el primer par¨¤metre que coincideix amb *passwd* i sense cap altre par¨¤metre. vfs.file.contents[/etc/passwd] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[*passwd*,*] Coincideix amb vfs.file.contents amb nom¨¦s el primer par¨¤metre que coincideix amb *passwd* i sense importar el valor dels seg¨¹ents par¨¤metres (tamb¨¦ buits). vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[/etc/passwd]
vfs.file.contents[/tmp/test]
vfs.file.contents[/var/log/zabbix_server.log,*,abc] Coincideix vfs.file.contents amb el primer par¨¤metre que coincideix amb /var/log/zabbix_server.log, el tercer par¨¤metre corresponent a 'abc' i qualsevol segon par¨¤metre (tamb¨¦ buit). 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] Coincideix vfs.file.contents amb el primer par¨¤metre que coincideix amb /etc/passwd, el segon par¨¤metre que coincideix amb 'utf8' i cap altre argument. vfs.file.contents[/etc/passwd,utf8] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf16]
vfs.file.* Coincideix amb totes les claus que comencen per vfs.file. sense cap par¨¤metre. vfs.file.contents
vfs.file.size
vfs.file.contents[]
vfs.file.size[/var/log/zabbix_server.log]
vfs.file.*[*] Fa coincidir totes les claus que comencen per vfs.file. amb tots els par¨¤metres. vfs.file.size.bytes[]
vfs.file. mida[/var/log/zabbix_server.log, utf8]
vfs.file.size.bytes
vfs.*.contents Coincideix amb qualsevol clau que comenci per vfs. i acabi amb .contents sense cap par¨¤metre. vfs.mount.point.file.contents
vfs..contents
vfs.contents

system.run i AllowKey

Un script hipot¨¨tic com 'myscript.sh' es pot executar en un equip mitjan?ant l'agent Áú»¢¶Ä²© de diverses maneres:

1. Com a clau d'element en un xec passiu o actiu, per exemple:

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

Aqu¨ª l'usuari pot afegir "wait", "nowait" o ometre el segon argument per emprar el seu valor predeterminat a system.run[].

2. Com a script global (iniciat per l'usuari a la interf¨ªcie o l'API).

Un usuari configura aquest script a ´¡»å³¾¾±²Ô¾±²õ³Ù°ù²¹³¦¾±¨® ¡ú Scripts, estableix "Executar a: agent Áú»¢¶Ä²©" i col¡¤loca "myscript.sh" al camp d'entrada "Comandes" de l'script. Quan s'invoca des de la interf¨ªcie o l'API, el servidor Áú»¢¶Ä²© envia a l'agent:

  • system.run[myscript.sh,wait] - fins a Áú»¢¶Ä²© 5.0.4
  • system.run[myscript.sh] - des de 5.0.5

Aqu¨ª, l'usuari no controla els par¨¤metres "wait"/"nowait".

3. Com un comandament remot d'una acci¨®. El servidor Áú»¢¶Ä²© envia a l'agent:

  • system.run[myscript.sh,nowait]

De nou, l'usuari no controla els par¨¤metres "espera"/"nowait".

Aix¨° vol dir que si definim AllowKey com:

 AllowKey=system.run[myscript.sh]

llavors

  • system.run[myscript.sh] - es permetr¨¤
  • No es permetr¨¤ system.run[myscript.sh,wait], system.run[myscript.sh,nowait] - l'script no s'executar¨¤ si es crida com a passa d'acci¨®

Per permetre totes les variants descrites, podeu afegir:

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

als par¨¤metres agent/agent2.