Elasticsearch是一種開源的搜索引擎,被大多數人用來作為數據存儲。如果你是 Elasticsearch 的用戶,你可以使用默認密碼”changeme” 登錄,但是這個密碼是不安全的。在保證數據安全性的基礎上,我們需要修改 Elasticsearch 的默認密碼,使其更加安全。
一、Elasticsearch修改密碼的準備工作
在進行 Elasticsearch 修改密碼之前,需要確認以下三個方面的準備工作:
1.確認Elasticsearch版本
確認 Elasticsearch 的版本,因為每個版本的語法不完全相同,這是區別最大的地方。假設你使用的是 Elasticsearch 2.x,那麼下文中的文本方案將不適用於 Elasticsearch 5.x 以上版本。
2.創建管理員用戶並賦權
在 Elasticsearch 中,我們需要創建一個具有管理員權限的用戶。使用管理員用戶具有以下兩個好處:
- 提升 Elasticserch 數據庫安全性
- 管理員用戶擁有更多權限,可以做一些不同於普通用戶的操作
3.安裝Java的訪問工具curl或使用Postman
Curl是一個在 UNIX平台下利用URL語法傳輸文件和數據的工具,可以用來發送 HTTP/HTTPS/FTP 等請求。 在我們的例子中,我們可以使用Curl或Postman來發送修改 Elasticsearch 密碼的請求,所以在你開始前,你需要確保其已安裝。
二、Elasticsearch修改密碼過程
1.啟用X-Pack 安全特性
X-Pack提供了安全、監控、報告和機器學習等功能,當然也包括了安全特性。
./bin/elasticsearch-plugin install x-pack
啟用X-Pack 安全特性的操作很簡單,只需要在安裝目錄下執行以下命令即可:
./bin/elasticsearch-setup-passwords interactive
在執行完以上命令後,你會看到如下的安全選項:
Modify Passwords
A built-in user database is enabled, but you haven't defined any users yet.
Would you like to create a user with the "superuser" role?
[createdefaultusers=Y/n]
這裡建議創建一個具有管理員權限的用戶,操作如下:
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Passwords changed successfully!
輸入以上的登錄名和密碼即可創建具有管理員權限的用戶。
2.修改Elasticsearch管理員密碼
建議將初始密碼修改為更高安全性的密碼。在進行 Elasticsearch 修改密碼之前,先用創建的管理員用戶使用以下命令獲取 Elasticsearch的一些基本信息:
curl -u user:password 'http://localhost:9200/'
輸入服務器的 IP 地址和端口,用創建的管理員用戶訪問 Elasticsearch。如果訪問成功,你會看到 Elasticsearch 的基本信息。
在這之後,使用以下命令修改 Elasticsearch 管理員密碼:
curl -XPUT -u user:password 'http://localhost:9200/_security/user/elastic/_password' -H "Content-Type: application/json" -d'
{
"password": "newpassword"
}
'
請將 user 替換成具有管理員權限的用戶名,password 替換成用戶名的登錄密碼,newpassword 替換成你要設置的新密碼。
三、避免Elasticsearch數據受到攻擊
1.使用HTTPS
使用 HTTPS 可以避免數據中途被攻擊者截獲。在 Elasticsearch 中,可以使用 x-pack 進行設置。首先需要安裝 x-pack,之後在 Elasticsearch 配置文件中添加以下參數:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.cert: /path/to/cert
xpack.security.http.ssl.key: /path/to/key
xpack.security.http.ssl.key_passphrase: yourpassword
其中,/path/to/cert 表示證書路徑,/path/to/key 表示私鑰路徑,yourpassword 表示私鑰密碼。
2.禁止遠程訪問
對於一些內部使用的 Elasticsearch 數據庫,建議禁止遠程訪問。在 Elasticsearch 配置文件中添加以下參數:
network.host: localhost
這樣,Elasticsearch 只能在本地訪問。
3.定期備份數據
儘管 Elasticsearch 可以確保最高的數據安全性,最好每天都備份數據。備份數據可以在數據丟失時用於恢復。
四、總結
在沒有修改 Elasticsearch 初始密碼時,Elasticsearch 是非常容易受到攻擊的。通過創建管理員用戶、修改管理員密碼、使用 HTTPS 等方法,可以很好地保護 Elasticsearch 數據庫的安全性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/156955.html