ElasticSearch7.10 Security

再官网的指导下,我们一起看看怎么配置密码、TLS/SSL等安全操作。

一、Security settings in Elasticsearch(x-pack)

默认安装时,Elasticsearch 的安全特性是被禁用的,你只有基本的或者试用的证书。为了能够试用安全特性,需要配置xpack.security.enabled 属性。

进入config目录,编辑elasticsearch.yml文件,下面都是通常的安全设置:

1. General security settings

xpack.security.enabled

默认为false,没有开启;设置为ture,Elasticsearch在这个节点上就有了安全特性。

若为false,默认使用基本且试用的证书,安全特性被禁用。它也能影响所有的Kibana实例去连接这个Elasticsearch实例;你不需要去禁用在kibana.yml文件中的安全特性。如果要了解更多去禁用在指定的Kibana 实例正的安全特性,可以看Kibana security settings: https://www.elastic.co/guide/en/kibana/7.10/security-settings-kb.html

xpack.security.hide_settings

定义一个逗号分隔的配置清单,过滤掉从集群节点信息API的结果。也可以使用通配符去设置包含多个配置的清单,如下:

xpack.security.authc.realms.active_directory.ad1.*.

由于信息的敏感性,这个API过滤掉所有的ssl、bind_dn、bind_password

xpack.security.fips_mode.enabled

默认false。fips操作启动模式,若在FIPS 140-2 JVM中启动,则需要设置为true。

2.Password hashing settings

指定用于安全用户凭据存储的散列算法。默认bcrypt进行加密。

bcrypt特点

米一次HASH出来的值不一样
计算非常缓慢
对于攻击者来说,需要不断计算,让攻击变得不太可能。

进一步了解:
https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html

3.Anonymous access settings

可以在elasticsearch.yml中根据以下的匿名访问配置。更多详情访问:

https://www.elastic.co/guide/en/elasticsearch/reference/current/anonymous-access.html

xpack.security.authc.aonymous.username

匿名用户的姓名默认 _es_anonymous_user。更多详情访问:

xpack.security.authc.anonymous.roles

要与匿名用户关联角色。是必须的。

xpack.security.authc.anonymous.acthz_exception

默认值为false

ture
如果匿名用户没有请求操作的适当权限,则返回HTTP 403响应,且不会提示用户提供凭证来访问所请求的资源。
false
将返回一个HttP 401响应,用户可以提供具有适当权限的凭据以获得访问权限。

4.Token service settings

xpack.security.authc.token.enabled

设置为false以禁用内置的token 服务。默认为ture,除非xpack.security.http.ssl.enabled 为false,没有启动。这可以防止通过一个http连接获取toekn。

xpack.security.authc.token.timeout

这个token有效时间长度。默认值为20m或者20 minutes 。这个最大值为1个小时。

HTTPP TLS/SSL settings

来到了重点。当xpack.security.enabled为true之后。http连接,可以设置TLS/SSL.

xpack.security.http.ssl.enabled

默认为false。设置ture,开启TLS/SSL安全连接。

xpack.security.http.ssl.supported_protocols

支持版本协议。

有效的协议:SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
如果JVM的SSL支持TLSv1.3, 默认TLSv1.3,TLSv1.2,TLSv1.1
JVN不支持TLSv1.3,默认TLSv1.2,TLSv1.1

** 注意
如果xpack.security.fips_mode.enabled 为true,你必须使用SSLv2Hello 或者SSLv3

xpack.security.http.ssl.client_authentication

控制服务器从客户端连接请求证书的行为。有效值是required,optional,none

required
强制一个客户端提供证书
optional
要求客户端证书,但不要求客户端提供证书。
none

xpack.security.http.ssl.cipher_suites

所支持的密码组取决于你使用java的版本。例如,对于版本12,默认值为:

TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA

更多信息:
https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html

5.Java keystore files

当使用Java 密钥存储库文件时,其中包含私钥,证书和受信任的证书,使用如下的设置

xpack.security.http.ssl.keystore.path

包含私钥和证书的密钥存储库的路径。

它必须也是一个Java密钥存储库或者PKCS#12的文件。如elastic-statck-ca.p12。在同时使用这个配置和ss1.key

xpack.security.http.ssl.keystore.password

密钥存储库的密码

xpack.security.http.ssl.keystore.secure_password

密钥存储库的密码。

在elasticsearch的bin目录下:

./elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

可以设置密码

xpack.security.http.ssl.keystore.secure_key_password

密钥存储库的面膜,默认时这个密钥库的密码

xpack.security.http.ssl.truststore.path

包含可信任证书的密钥存储库的路径。它必须也是一个Java 密钥存储库或者PKCS#12文件。

你不能同时使用这个设置和ssl.certificate_authorities

xpack.security.http.ssl.truststore.password

可信任库的密码。

你不能同时使用这个设置和ssl.trustore.secure_password

xpack.security.http.ssl.truststore.secure_password

信任库的密码

xpack.security.http.ssl.truststore.

弯弯月亮,只为美好的自己。