ProHoster > blogg > administration > Elastisk under lås och nyckel: möjliggör Elasticsearch-klustersäkerhetsalternativ för åtkomst från insidan och utsidan
Elastisk under lås och nyckel: möjliggör Elasticsearch-klustersäkerhetsalternativ för åtkomst från insidan och utsidan
Elastic Stack är ett välkänt verktyg på SIEM-systemmarknaden (faktiskt inte bara dem). Den kan samla in en mängd olika stora data, både känsliga och inte särskilt känsliga. Det är inte helt korrekt om åtkomsten till själva Elastic Stack-elementen inte är skyddad. Som standard körs alla Elastic out-of-the-box-element (Elasticsearch, Logstash, Kibana och Beats-samlare) på öppna protokoll. Och i själva Kibana är autentisering inaktiverad. Alla dessa interaktioner kan säkras och i den här artikeln kommer vi att berätta hur du gör detta. För enkelhetens skull delade vi berättelsen i tre semantiska block:
Rollbaserad dataåtkomstmodell
Datasäkerhet inom ett Elasticsearch-kluster
Säkra data utanför ett Elasticsearch-kluster
Detaljer under snittet.
Rollbaserad dataåtkomstmodell
Om du installerar Elasticsearch och inte ställer in det på något sätt, kommer åtkomst till alla index att vara öppen för alla. Tja, eller de som kan använda curl. För att undvika detta har Elasticsearch en förebild som är tillgänglig från och med ett Basic-abonnemang (som är gratis). Schematiskt ser det ut ungefär så här:
Vad finns på bilden
Användare är alla som kan logga in med sina referenser.
Resurser är index, dokument, fält, användare och andra lagringsenheter (förebilden för vissa resurser är endast tillgänglig med betalda prenumerationer).
Som standard har Elasticsearch boxanvändare, till vilken de är fästa box roller. När du har aktiverat säkerhetsinställningarna kan du börja använda dem direkt.
För att aktivera säkerhet i Elasticsearch-inställningarna måste du lägga till den i konfigurationsfilen (som standard är detta elasticsearch/config/elasticsearch.yml) ny linje:
xpack.security.enabled: true
Efter att ha ändrat konfigurationsfilen, starta eller starta om Elasticsearch för att ändringarna ska träda i kraft. Nästa steg är att tilldela lösenord till boxanvändare. Låt oss göra detta interaktivt med kommandot nedan:
[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]
Vi kontrollerar:
[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
Du kan klappa dig själv på axeln - inställningarna på Elasticsearch-sidan är klara. Nu är det dags att konfigurera Kibana. Om du kör det nu kommer fel att dyka upp, så det är viktigt att skapa ett nyckellager. Detta görs med två kommandon (användare Kibana och lösenordet som angavs vid steget att skapa lösenord i Elasticsearch):
Om allt stämmer kommer Kibana att börja be om inloggning och lösenord. I Basic-abonnemanget ingår en förebild baserad på interna användare. Från och med Gold kan du ansluta externa autentiseringssystem - LDAP, PKI, Active Directory och Single sign-on-system.
Åtkomsträttigheter till objekt i Elasticsearch kan också begränsas. Men för att göra samma sak för dokument eller fält, behöver du en betald prenumeration (denna lyx börjar med platinanivån). Dessa inställningar är tillgängliga i Kibanas gränssnitt eller via Säkerhets-API. Du kan kolla igenom den redan välbekanta Dev Tools-menyn:
När Elasticsearch körs i ett kluster (vilket är vanligt) blir säkerhetsinställningarna inom klustret viktiga. För säker kommunikation mellan noder använder Elasticsearch TLS-protokollet. För att skapa säker interaktion mellan dem behöver du ett certifikat. Vi genererar ett certifikat och en privat nyckel i PEM-format:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem
Efter att ha utfört kommandot ovan, i katalogen /../elasticsearch arkivet visas elastic-stack-ca.zip. Inuti den hittar du ett certifikat och en privat nyckel med tillägg crt и nyckel respektive. Det är lämpligt att lägga dem på en delad resurs, som bör vara tillgänglig från alla noder i klustret.
Varje nod behöver nu sina egna certifikat och privata nycklar baserat på de i den delade katalogen. När du utför kommandot kommer du att bli ombedd att ange ett lösenord. Du kan lägga till ytterligare alternativ -ip och -dns för fullständig verifiering av interagerande noder.
Som ett resultat av att köra kommandot kommer vi att få ett certifikat och en privat nyckel i PKCS#12-format, skyddade av ett lösenord. Allt som återstår är att flytta den genererade filen p12 till konfigurationskatalogen:
Det finns ett annat säkerhetsalternativ - IP-adressfiltrering (tillgänglig i abonnemang från Guldnivån). Låter dig skapa vita listor över IP-adresser från vilka du får åtkomst till noder.
Säkra data utanför ett Elasticsearch-kluster
Utanför klustret innebär det att ansluta externa verktyg: Kibana, Logstash, Beats eller andra externa klienter.
För att konfigurera stöd för https (istället för http), lägg till nya rader i elasticsearch.yml:
Efter att ha lagt till nycklarna är Elasticsearch-noder redo att ansluta via https. Nu kan de lanseras.
Nästa steg är att skapa en nyckel för att ansluta Kibana och lägga till den i konfigurationen. Baserat på certifikatet som redan finns i den delade katalogen kommer vi att generera ett certifikat i PEM-format (PKCS#12 Kibana, Logstash och Beats stöder ännu inte):
Nycklarna finns där, så det enda som återstår är att ändra Kibana-konfigurationen så att den börjar använda dem. I konfigurationsfilen kibana.yml, ändra http till https och lägg till rader med SSL-anslutningsinställningar. De sista tre raderna konfigurerar säker kommunikation mellan användarens webbläsare och Kibana.
Därmed är inställningarna slutförda och åtkomsten till data i Elasticsearch-klustret är krypterad.
Om du har frågor om funktionerna hos Elastic Stack på gratis eller betalda prenumerationer, övervakningsuppgifter eller skapande av ett SIEM-system, lämna en förfrågan till återkopplingsformulär på vår webbplats.