Het is mogelijk om controles aan de kant van de agent te beperken door een lijst met items te maken die zijn toegestaan (whitelist), een lijst met items die zijn verboden (blacklist), of een combinatie van een whitelist en een blacklist.
Gebruik hiervoor een combinatie van twee agent configuratie parameters:
AllowKey=<patroon>
- geeft aan welke controles zijn toegestaan; <patroon> wordt opgegeven met een wildcard (*) expressieDenyKey=<patroon>
- geeft aan welke controles zijn verboden; <patroon> wordt opgegeven met een wildcard (*) expressieHoud er rekening mee dat:
Daarom moet u om externe commando's toe te staan AllowKey=system.run[<commando>,*] opgeven voor elk toegestaan commando, waarbij * staat voor de wacht- en nuwachtmodus. Het is ook mogelijk om de AllowKey=system.run[*] parameter op te geven om alle commando's met wacht- en nuwachtmodi toe te staan. Om specifieke externe commando's te verbieden, voegt u DenyKey parameters toe met system.run[] commando's voordat de AllowKey=system.run[*] parameter wordt opgegeven.
Bijvoorbeeld:
Een blacklist is mogelijk geen goede keuze, omdat een nieuwe versie van Zabbix nieuwe sleutels kan hebben die niet expliciet worden beperkt door de bestaande configuratie. Dit kan een beveiligingsprobleem veroorzaken.
DenyKey=system.run[ls -l /]
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 | Overeenkomt | Geen overeenkomst |
---|---|---|---|
* | Overeenkomst 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 met eerste parameters overeenkomend met /etc/passwd en alle andere parameters met een willekeurige waarde (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 met eerste parameter overeenkomend met *passwd* en geen andere parameters. |
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 met alleen de eerste parameter overeenkomend met *passwd* en alle volgende parameters met een willekeurige waarde (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 met eerste parameter overeenkomend met /var/log/zabbix_server.log, derde parameter overeenkomend met 'abc' en een willekeurige (ook lege) tweede parameter. |
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 met eerste parameter overeenkomend met /etc/passwd, tweede parameter overeenkomend met 'utf8' en geen andere argumenten. |
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 elke sleutel die begint met vfs. en eindigt met .contents zonder enige parameters. |
vfs.mount.point.file.contents vfs..contents |
vfs.contents |
Een hypothetisch script zoals 'myscript.sh' kan op een host worden uitgevoerd via de Zabbix-agent op verschillende manieren:
1. 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 ervan in system.run[] te gebruiken.
2. Als een globaal script (geïnitieerd door de gebruiker in frontend of API).
Een gebruiker configureert dit script in Alerts → 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 aangeroepen, stuurt de Zabbix-server naar de agent:
Hier controleert de gebruiker de "wait"/"nowait" parameters niet.
3. 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 als volgt instellen:
dan
Om alle beschreven varianten toe te staan, kunt u het volgende toevoegen:
aan de agent/agent2 parameters.