how to password protect Elastic search - elasticsearch

I have Es version 7.6.2 I saw on website that from version 6.2 onwards x-pack is included by default but i was not able to find or enable x-pack for security. how do i enable password protection in Elastic search.

As per elastic search documentation
The first thing you have to do is download the default distribution of
Elasticsearch and Kibana version 6.8+ or 7.1+. Security was added to
the default distribution in 7.1 and 6.8, so if you’re on an older
version, you’ll need to upgrade.
After downloading latest version , you need to enable xpack.security.enabled: true in elasticsearch.yml file
To generate passwords
elasticsearch-setup-passwords auto
in command prompt, your cmd path should be elasticsearch/bin. It will auto generate passwords for elasticsearch kibana etc. note them .
If you want to provide your own username password instead of auto generated execute
elasticsearch-setup-passwords interactive
In kibana.yml update below two with user name and password for elastic search you got by executing set up password
elasticsearch.username: "<elastic>"
elasticsearch.password: "<password>"
Opening kubana it will prompt for username and password, enter password for "kibana" you got from set-up-password

I am able to password protect ES however my kibana is now asking for UID and password when opened. The ES credentials dont work on the kibana screen. What password does Kibana looking for ?

isseue resolved by using elastic user rather than kibana user

Related

Java rest client call elastic search after enable https

everyone , I am using elasticsearch 6.8.22 and I need to enable the https for it
I have done setting of secure the elasticsearch and can connect to https://localhost:9200/_cat/indices?v , it require user login , then I already set the user password and can login the elastic search
but when I use java rest client to connect elastic search , it throw such error
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request
I am using RestHighLevelClient and the elastic jar version is 6.5.4, the certification of elastic search already install into my java client, I think it's because I need to add the elasticsearch user and password into java client , is there anyone knows about this or whether we can skip to authorize the user when java client call elastic search ?
Here is my elastic search https setting
xpack.security.enabled : true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: D:/App/elasticsearch-6.8.22/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: D:/App/elasticsearch-6.8.22/config/certs/elastic-certificates.p12
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: D:/App/elasticsearch-6.8.22/config/certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: D:/App/elasticsearch-6.8.22/config/certs/elastic-certificates.p12
resolved the problem by following way
in the <es_folder>/bin run cmd : elasticsearch-setup-passwords interactive to set elastic search user password
apply following changes
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.16/_basic_authentication.html

failed to authenticate user [elastic] after enabling xpack.security in elasticsearch

I Use Kibana 7.11.1 stack. this problem is related to elasticsearch alone.
I added xpack.security.enabled: true to elasticsearch.yml and ran elasticsearch-setup-passwords auto
to set the default users password. but now when I start elasticsearch I keep seeing the message:
[o.e.x.s.a.AuthenticationService] [SERVER_NAME] Authentication of [elastic] was terminated by realm [reserved] - failed to authenticate user [elastic]
i see this only when elasticsearch service is up, so I assumed that I need to set the new elastic user password in elasticsearch.yml file, but i have no idea how..
any ideas ?
thanks
The error message indicates that the credentials with which you are trying to authenticate do not match the saved username and password.
After turning on the xpack.security.enabled setting, you can set the built-in user credentials, using the below command
bin/elasticsearch-setup-passwords interactive
I missed one service that is part of the kibana stack. the elastic-agent.
so the database wasn't trying to connect to itself! :) elastic-agent was trying to connect to elasticsearch without the proper credentials.
once i resolved that and restart elastic-agent, the problem resolved.

How to Disable Elastic User access in Kibana Dashboard

I am trying to setup Elastic search log management...
I have enabled Free Xpack secutiry for kibana Dashboard authentication and created users with super access for my team members.. Now I would like to disable elastic user login access in kibana Dashboard..
So elastic user access will work only beat's & Logstash configurations.
How can I disable elastic user kibana Dashboard access?
Read this link. Create a separate user with privileges required to only index data and use them in the output plugin for logstash and beats.

Kibana {"statusCode":403,"error":"Forbidden","message":"Forbidden"}

I just set up authentication on a newly installed ES stack.
I followed:
https://www.elastic.co/guide/en/elastic-stack-overview/current/get-started-enable-security.html
I tried logging into kibana as user 'kibana'
I encountered {"statusCode":403,"error":"Forbidden","message":"Forbidden"}
Answer:
Login as elastic
that simple
username : elastic
password : changeme # or what ever password you kept while enabling xpack

searchguard for SSL communication in ELK

Basic username/password authentication for ELK, i was able to achieve using searchguard on windows platform.
Now i am trying to establish secure communication. I have performed the following changes,
In elasticsearch.yml
searchguard.ssl.http.enabled: true
searchguard.ssl.http.keystore_filepath: D:\Softwares\ELK\elasticsearch-5.4.0\elasticsearch-5.4.0\config\CN=localhost-keystore.jks
searchguard.ssl.http.keystore_password: 221749a2add117cf889f
searchguard.ssl.http.truststore_filepath: D:\Softwares\ELK\elasticsearch-5.4.0\elasticsearch-5.4.0\config\truststore.jks
searchguard.ssl.http.truststore_password: 6d6cf1cc017dc874960b
searchguard.authcz.admin_dn:
- CN=sgadmin
searchguard.ssl.transport.keystore_filepath: D:\Softwares\ELK\elasticsearch-5.4.0\elasticsearch-5.4.0\config\CN=localhost-keystore.jks
searchguard.ssl.transport.keystore_password: 221749a2add117cf889f
searchguard.ssl.transport.truststore_filepath: D:\Softwares\ELK\elasticsearch-5.4.0\elasticsearch-5.4.0\config\truststore.jks
searchguard.ssl.transport.truststore_password: 6d6cf1cc017dc874960b
In Kibana.yml
elasticsearch.url: "https://localhost:9200"
elasticsearch.username: "admin"
elasticsearch.password: "admin"
If i login to kibana, using http://localhost:5601, it asks for username and password. I dont know what credentails to enter here. i tried admin/admin. Its not working. Before i gave searchguard.ssl.http.... configurations, admin/admin was working fine.
After i added all the searchguard.ssl.http related configuration, the credentails are not working.
I am sure there is some other configuration in kibana.yml w.r.t searchguard configuration. I am not able to find it online. Can any one please help me here on what is missing.
Enabling TLS on the REST layer does not have any impact on user authentication/authorisation. The only difference is:
If you enable TLS on REST layer, only HTTPS access is allowed. You will see an error message if you try to access ES with HTTP
If you disable TLS on REST layer, only HTTP access is allowed. You will see an error message if you try to access ES with HTTPS.
Search Guard will authenticate the credentials against the configured authentication backend in sg_config.yml. If you use the default configuration that ships with Search Guard, it will use the internal user database and the users defined in internal_users.yml. The default "admin" user has full access to all indices and types, so you should be able to use this user to log into Kibana. If you need a user with limited access, the corresponding demo user is "kibanaro". Please refer to internal_users.yml to see all demo users.
Since ES 5.0.2, you need to install the Search Guard Kibana plugin for full authentication and session support. You can find the plugin on the corresponding GitHub repository. You install it like any other Kibana plugin, for example:
bin/kibana-plugin install https://github.com/floragunncom/search-guard-kibana-plugin/releases/download/v5.4.3-3/searchguard-kibana-5.4.3-3.zip
If you do not need advanced stuff like multi-tenancy or JWT Single Sign-on, it should start and work out of the box.
If this does not help, please post the output of your Elasticsearch log files when trying to log in.
Disclaimer: I work for floragunn, makers of Search Guard.

Resources