竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚!

在 你竟然還去服務器上撈日誌,搭個日誌收集系統難道不香麼 一文中咱們介紹過ELK日誌收集系統的搭建,因爲咱們的Kibana沒有任何安全保護機制,若是部署到公網上去的話,任何人均可以查看你的日誌了。日誌暴露在網絡上可不是件好事情,今天教你們如何給Kibana設置登陸認證來保護它php

實現原理

因爲Kibana的日誌信息都存儲在Elasticsearch中,因此只要給Elasticsearch開啓X-PACK中的安全功能,並給預置的帳號設置好密碼便可。Elasticsearch設置好以後,就能夠在Kibana中對用戶、角色、權限進行管理了,本文使用的ELK組件版本均爲7.6.2。css

Elasticsearch設置密碼

  • 修改Elasticsearch的配置文件並開啓X-PACK中的安全功能,該配置文件在安裝目錄的config文件夾下面,例如elasticsearch-7.6.2\config\elasticsearch.yml;spring

http.cors.enabledtrue
http.cors.allow-origin: "*"
http.cors.allow-headersAuthorization
xpack.security.enabledtrue
xpack.security.transport.ssl.enabledtrue
  • 啓動Elasticsearch服務,啓動命令在bin目錄下,例如elasticsearch-7.6.2\bin\elasticsearch.bat;apache

  • 在bin目錄下使用以下命令elasticsearch-setup-passwords interactive修改預置帳號的密碼,期間須要設置多個帳號密碼,我都設置成了123456;json

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚


  • 期間設置了好幾個帳號,咱們先來了解下這些帳號都有啥做用吧;安全

elastic:超級管理員帳號
kibana:Kibana訪問專用帳號
logstash_system:Logstash訪問專用帳號
beats_system:FileBeat訪問專用帳號
apm_system:APM系統專用帳號
remote_monitoring_user:遠程監控帳號
  • 接下來咱們須要在Kibana的配置文件中添加能夠訪問Elasticsearch的帳號,該配置文件在安裝目錄的config文件夾下面,例如kibana-7.6.2\config\kibana.yml;服務器

elasticsearch.username: "kibana"
elasticsearch.password: "123456"
  • 啓動Kibana服務,啓動命令在bin目錄下,例如kibana-7.6.2\bin\kibana.bat;網絡

  • 當Kibana啓動完成後,咱們訪問的時就須要登陸認證了,使用超級管理員帳號elastic:123456能夠進行登陸,訪問地址:http://localhost:5601app

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚


  • 登陸成功後,在咱們的Management選項中能夠找到安全相關的配置,在此咱們能夠對用戶、角色、權限進行設置。cors

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚


SpringBoot安全訪問

因爲Elasticsearch開啓X-PACK中的安全功能,當咱們的SpringBoot應用訪問Elasticsearch時,也須要設置用戶名和密碼了!

  • 咱們能夠直接在SpringBoot中設置超級管理員帳號,但這不是個好辦法,咱們仍是本身建個角色和帳號吧!

  • 首先在Kibana中建立一個應用訪問專用的角色app_user;

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚


  • 建立一個用戶並配置好該角色,帳號密碼爲app:123456;

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚


  • 修改SpringBoot應用的配置文件application.yml,配置好帳號密碼便可正常訪問了!

spring:
  elasticsearch:
    rest:
      urishttp://localhost:9200
      username: app
      password: 123456

Logstash安全訪問

因爲Elasticsearch開啓X-PACK中的安全功能,向Elasticsearch輸出日誌的Logstash也須要設置用戶名和密碼了!

  • 首先修改咱們原來的Logstash配置文件logstash.conf,在output節點下設置訪問Elasticsearch的用戶名和密碼,直接使用咱們建立的app:123456帳號便可;

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
    type => "debug"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4561
    codec => json_lines
    type => "error"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4562
    codec => json_lines
    type => "business"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4563
    codec => json_lines
    type => "record"
  }
}
filter{
  if [type] == "record" {
    mutate {
      remove_field => "port"
      remove_field => "host"
      remove_field => "@version"
    }
    json {
      source => "message"
      remove_field => ["message"]
    }
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    action => "index"
    codec => json
    index => "mall-tiny-%{type}-%{+YYYY.MM.dd}"
    template_name => "mall-tiny"
    user => app
    password => "123456"
  }
}
  • 使用指定配置文件啓動Logstash服務,啓動命令在bin目錄下,例如logstash-7.6.2\bin\logstash.bat;

logstash -f logstash.conf
  • 接下來在Kibana中就能夠查看到應用輸出的日誌了!

竟然有人想白嫖個人日誌,趕忙開啓安全保護壓壓驚