Het is mogelijk om controles aan de agentzijde te beperken door een lijst met items op de zwarte lijst, een witte lijst, of een combinatie van beide te maken.
Gebruik daarvoor een combinatie van twee agent configuratie parameters:
AllowKey=<patroon>
- welke controles zijn toegestaan; <patroon>
wordt gespecificeerd met behulp van een wildcard (*) expressie.DenyKey=<patroon>
- welke controles zijn verboden; <patroon>
wordt gespecificeerd met behulp van een wildcard (*) expressie.Merk op dat:
system.run[*]
items (op afstand uitgevoerde commando's, scripts) standaard zijn uitgeschakeld, zelfs wanneer er geen verboden sleutels zijn gespecificeerd.Daarom, om op afstand uitgevoerde commando's toe te staan, specificeert u een AllowKey=system.run[<commando>,*] voor elk toegestaan commando, waarbij * staat voor de wacht- en nowait-modus. Het is ook mogelijk om de AllowKey=system.run[*] parameter te specificeren om alle commando's met wacht- en nowait-modi toe te staan. Om specifieke op afstand uitgevoerde commando's te verbieden, voegt u DenyKey parameters toe met system.run[] commando's vóór de AllowKey=system.run[*] parameter.
Bijvoorbeeld:
Een zwarte lijst kan mogelijk geen goede keuze zijn, omdat een nieuwe Zabbix-versie nieuwe sleutels kan hebben die niet expliciet beperkt zijn door de bestaande configuratie. Dit kan een beveiligingslek veroorzaken.
# Specifiek commando weigeren
DenyKey=system.run[ls -l /]
# Andere scripts toestaan
AllowKey=system.run[*]
DenyKey=*
parameter.Bijvoorbeeld:
# Logbestanden lezen toestaan:
AllowKey=vfs.file.*[/var/log/*]
# Lokale tijd controles toestaan
AllowKey=system.localtime[*]
# Alle andere sleutels weigeren
DenyKey=*
Patroon | Beschrijving | Overeenkomsten | Geen overeenkomst |
---|---|---|---|
* | Komt overeen met alle mogelijke sleutels met of zonder parameters. | Elk | Geen |
vfs.file.contents | Komt overeen met vfs.file.contents zonder parameters. |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | Komt overeen met vfs.file.contents met lege parameters. |
vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | Komt overeen met vfs.file.contents met willekeurige parameters; komt niet overeen met vfs.file.contents zonder vierkante haken. |
vfs.file.contents[] vfs.file.contents[/pad/naar/bestand] |
vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | Komt overeen met vfs.file.contents waarvan de eerste parameters overeenkomen met /etc/passwd en alle andere parameters een willekeurige waarde hebben (ook leeg). |
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*] | Komt overeen met vfs.file.contents waarvan de eerste parameter overeenkomt met *passwd* en geen andere parameters heeft. |
vfs.file.contents[/etc/passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | Komt overeen met vfs.file.contents waarvan alleen de eerste parameter overeenkomt met *passwd* en alle volgende parameters een willekeurige waarde hebben (ook leeg). |
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] | Komt overeen met vfs.file.contents waarvan de eerste parameter overeenkomt met /var/log/zabbix_server.log, de derde parameter overeenkomt met 'abc' en een willekeurige (ook lege) tweede parameter heeft. |
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] | Komt overeen met vfs.file.contents waarvan de eerste parameter overeenkomt met /etc/passwd, de tweede parameter overeenkomt met 'utf8' en geen andere argumenten heeft. |
vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | Komt overeen met alle sleutels die beginnen met vfs.file. zonder enige parameters. |
vfs.file.contents vfs.file.size |
vfs.file.contents[] vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | Komt overeen met alle sleutels die beginnen met vfs.file. met willekeurige parameters. |
vfs.file.size.bytes[] vfs.file.size[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
vfs.*.contents | Komt overeen met alle sleutels die beginnen met vfs. en eindigen met .contents zonder enige parameters. |
vfs.mount.point.file.contents vfs..contents |
vfs.contents |
Een hypothetisch script genaamd 'myscript.sh' kan op een host worden uitgevoerd via de Zabbix-agent op verschillende manieren:
Als een item-sleutel in een passieve of actieve controle, bijvoorbeeld:
Hier kan de gebruiker "wait", "nowait" toevoegen of het tweede argument weglaten om de standaardwaarde te gebruiken in system.run[].
Als een globaal script (geïnitieerd door de gebruiker in de frontend of API).
Een gebruiker configureert dit script in Administratie → Scripts, stelt "Uitvoeren op: Zabbix-agent" in en plaatst "myscript.sh" in het invoerveld "Opdrachten" van het script. Wanneer het vanuit de frontend of API wordt opgeroepen, stuurt de Zabbix-server naar de agent:
Hier controleert de gebruiker de "wait"/"nowait"-parameters niet.
Als een externe opdracht vanuit een actie. De Zabbix-server stuurt naar de agent:
Hier controleert de gebruiker opnieuw de "wait"/"nowait"-parameters niet.
Wat dit betekent is dat als we AllowKey instellen als:
dan
Om alle beschreven varianten toe te staan, kunt u het volgende toevoegen:
aan de agent/agent2 parameters.