Um eine einfach HTTP basic authentication einzurichten für Elasticsearch mit Username und Passwort muss man als erstes X-Pack installieren.
Danach sollten alle Funktionen automatisch mit Basic Auth geschützt sein. Nach der Installation steht ein Default-User bereit, um weiterarbeiten zu können:
Name: elastic Password: changeme
Damit können dann erfolgreich Requests gemacht werden:
curl --user elastic:changeme -XGET 'localhost:9200'
Anlegen eigener User
Nun könnne eigene User hinzugefügt werden:
curl --user elastic:changeme -XPOST 'hlocalhost:9200/_xpack/security/user/SebastianViereck?pretty' -H 'Content-Type: application/json' -d' { "password" : "thePassword", "roles" : [ "superuser"], "full_name" : "Sebastian Viereck", "email" : "email@sebastianviereckEmails.de", "metadata" : { "intelligence" : 7 }, "enabled": true }
Danach können sofort Requests mit dem User gemacht werden:
curl --user SebastianViereck:thePassword -XGET 'localhost:9200'
Es sollten eigene Rollen angelegt werden und benutzt werden oder wie hier die vorgefertigten Rollen (superuser) benutzt werden.
Deaktivieren des Elastic Users
Sehr wichtig: Natürlich muss der Default elastic User mit dem „changeme“ Passwort wieder deaktiviert werden. In der elasticsearch.yml
muss dafür der folgende Parameter eingesetzt werden:
xpack.security.authc.accept_default_password
: false
Und der elasticsearch Service neugestartet werden:
sudo service elasticsearch restart
Zur Kontrolle sollte bei dem Request eine Fehlermeldung erscheinen:
curl --user elastic:changeme -XGET 'localhost:9200'
Weitere Verbesserungen der Sicherheit
Es sollte unbedingt eine Daten-Verschlüsselung mit SSL benutzt werden.
Der IP Raum, mit dem überhaupt kommuniziert werden darf, sollte auch eingeengt werden.