ProHoster > blog > amministrazione > Elastico sotto chiave: abilitazione delle opzioni di sicurezza del cluster Elasticsearch per l'accesso dall'interno e dall'esterno
Elastico sotto chiave: abilitazione delle opzioni di sicurezza del cluster Elasticsearch per l'accesso dall'interno e dall'esterno
Elastic Stack è uno strumento molto noto nel mercato dei sistemi SIEM (per la verità, non solo). Può raccogliere molti dati di dimensioni diverse, sia sensibili che non molto sensibili. Non è del tutto corretto se l’accesso agli stessi elementi Elastic Stack non è protetto. Per impostazione predefinita, tutti gli elementi Elastic pronti all'uso (raccoglitori Elasticsearch, Logstash, Kibana e Beats) vengono eseguiti su protocolli aperti. E nella stessa Kibana l'autenticazione è disabilitata. Tutte queste interazioni possono essere protette e in questo articolo ti diremo come farlo. Per comodità abbiamo diviso la narrazione in 3 blocchi semantici:
Modello di accesso ai dati basato sui ruoli
Sicurezza dei dati all'interno di un cluster Elasticsearch
Protezione dei dati all'esterno di un cluster Elasticsearch
Dettagli sotto il taglio.
Modello di accesso ai dati basato sui ruoli
Se installi Elasticsearch e non lo ottimizzi in alcun modo, l'accesso a tutti gli indici sarà aperto a tutti. Bene, o quelli che possono usare il ricciolo. Per evitare ciò, Elasticsearch dispone di un modello di ruolo disponibile a partire da un abbonamento Basic (che è gratuito). Schematicamente assomiglia a questo:
Cosa c'è nella foto
Gli utenti sono tutti coloro che possono accedere utilizzando le proprie credenziali.
Le risorse sono indici, documenti, campi, utenti e altre entità di archiviazione (il modello di ruolo per alcune risorse è disponibile solo con abbonamenti a pagamento).
Per impostazione predefinita Elasticsearch ha utenti della scatola, al quale sono allegati ruoli della scatola. Una volta abilitate le impostazioni di sicurezza, puoi iniziare a utilizzarle immediatamente.
Per abilitare la sicurezza nelle impostazioni di Elasticsearch, è necessario aggiungerlo al file di configurazione (per impostazione predefinita è elasticsearch/config/elasticsearch.yml) nuova linea:
xpack.security.enabled: true
Dopo aver modificato il file di configurazione, avvia o riavvia Elasticsearch affinché le modifiche abbiano effetto. Il passaggio successivo è l'assegnazione delle password agli utenti della casella. Facciamolo in modo interattivo utilizzando il comando seguente:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
Controlliamo:
[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1
Puoi darti una pacca sulla spalla: le impostazioni sul lato Elasticsearch sono completate. Ora è il momento di configurare Kibana. Se lo esegui ora, verranno visualizzati degli errori, quindi è importante creare un archivio chiavi. Questo viene fatto in due comandi (user kibana e la password inserita nella fase di creazione della password in Elasticsearch):
Se tutto è corretto, Kibana inizierà a chiedere login e password. L'abbonamento Basic include un modello di ruolo basato sugli utenti interni. A partire da Gold, puoi connettere sistemi di autenticazione esterni: LDAP, PKI, Active Directory e sistemi Single Sign-On.
Anche i diritti di accesso agli oggetti all'interno di Elasticsearch possono essere limitati. Tuttavia, per fare lo stesso con documenti o campi, avrai bisogno di un abbonamento a pagamento (questo lusso inizia con il livello Platinum). Queste impostazioni sono disponibili nell'interfaccia Kibana o tramite API di sicurezza. Puoi controllare attraverso il già familiare menu Dev Tools:
Sicurezza dei dati all'interno di un cluster Elasticsearch
Quando Elasticsearch viene eseguito in un cluster (cosa comune), le impostazioni di sicurezza all'interno del cluster diventano importanti. Per la comunicazione sicura tra i nodi, Elasticsearch utilizza il protocollo TLS. Per impostare un'interazione sicura tra loro, è necessario un certificato. Generiamo un certificato e una chiave privata in formato PEM:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem
Dopo aver eseguito il comando precedente, nella directory /../elasticsearch apparirà l'archivio elastic-stack-ca.zip. Al suo interno troverai un certificato e una chiave privata con estensioni crt и chiave rispettivamente. È consigliabile metterli su una risorsa condivisa, che dovrebbe essere accessibile da tutti i nodi del cluster.
Ogni nodo ora necessita dei propri certificati e delle chiavi private basate su quelle nella directory condivisa. Durante l'esecuzione del comando ti verrà chiesto di impostare una password. Puoi aggiungere opzioni aggiuntive -ip e -dns per la verifica completa dei nodi interagenti.
A seguito dell'esecuzione del comando riceveremo un certificato e una chiave privata in formato PKCS#12, protetti da password. Non resta che spostare il file generato p12 alla directory di configurazione:
Esiste un'altra opzione di sicurezza: il filtraggio degli indirizzi IP (disponibile negli abbonamenti dal livello Gold). Consente di creare liste bianche di indirizzi IP da cui è consentito accedere ai nodi.
Protezione dei dati all'esterno di un cluster Elasticsearch
Fuori dal cluster significa connettere strumenti esterni: Kibana, Logstash, Beats o altri client esterni.
Per configurare il supporto per https (invece di http), aggiungi nuove righe a elasticsearch.yml:
Dopo aver aggiunto le chiavi, i nodi Elasticsearch sono pronti per connettersi tramite https. Ora possono essere lanciati.
Il passo successivo è creare una chiave per connettere Kibana e aggiungerla alla configurazione. In base al certificato che si trova già nella directory condivisa, genereremo un certificato in formato PEM (PKCS#12 Kibana, Logstash e Beats non supportano ancora):
Le chiavi ci sono, quindi non resta che modificare la configurazione di Kibana in modo che inizi a usarle. Nel file di configurazione kibana.yml, cambia http in https e aggiungi righe con le impostazioni di connessione SSL. Le ultime tre righe configurano la comunicazione sicura tra il browser dell'utente e Kibana.
Pertanto, le impostazioni sono completate e l'accesso ai dati nel cluster Elasticsearch è crittografato.
Se hai domande sulle funzionalità di Elastic Stack su abbonamenti gratuiti o a pagamento, attività di monitoraggio o creazione di un sistema SIEM, lascia una richiesta a modulo di feedback sul nostro sito