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出來的值不一樣
- 計算非常緩慢
對於攻擊者來說,需要不斷計算,讓攻擊變得不太可能。
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
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
信任庫的密碼