关于java:居然有人想白嫖我的日志赶紧开启安全保护压压惊

4次阅读

共计 2672 个字符,预计需要花费 7 分钟才能阅读完成。

在《你竟然还去服务器上捞日志,搭个日志收集零碎难道不香么!》一文中咱们介绍过 ELK 日志收集零碎的搭建,因为咱们的 Kibana 没有任何平安爱护机制,如果部署到公网上去的话,任何人都能够查看你的日志了。日志裸露在网络上可不是件好事件,明天教大家如何给 Kibana 设置登录认证来爱护它。

SpringBoot 实战电商我的项目 mall(40k+star)地址:https://github.com/macrozheng/mall

实现原理

因为 Kibana 的日志信息都存储在 Elasticsearch 中,所以只有给 Elasticsearch 开启 X-PACK 中的平安性能,并给预置的账号设置好明码即可。Elasticsearch 设置好之后,就能够在 Kibana 中对用户、角色、权限进行治理了,本文应用的 ELK 组件版本均为7.6.2

Elasticsearch 设置明码

  • 批改 Elasticsearch 的配置文件并开启 X-PACK 中的平安性能,该配置文件在装置目录的 config 文件夹上面,例如elasticsearch-7.6.2\config\elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  • 启动 Elasticsearch 服务,启动命令在 bin 目录下,例如elasticsearch-7.6.2\bin\elasticsearch.bat
  • bin 目录下应用如下命令 elasticsearch-setup-passwords interactive 批改预置账号的明码,期间须要设置多个账号密码,我都设置成了123456

  • 期间设置了好几个账号,咱们先来理解下这些账号都有啥作用吧;
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:5601

  • 登录胜利后,在咱们的 Management 选项中能够找到平安相干的配置,在此咱们能够对用户、角色、权限进行设置。

SpringBoot 平安拜访

因为 Elasticsearch 开启 X-PACK 中的平安性能,当咱们的 SpringBoot 利用拜访 Elasticsearch 时,也须要设置用户名和明码了!

  • 咱们能够间接在 SpringBoot 中设置超级管理员账号,但这不是个好方法,咱们还是本人建个角色和账号吧!
  • 首先在 Kibana 中创立一个利用拜访专用的角色app_user

  • 创立一个用户并配置好该角色,账号密码为app:123456

  • 批改 SpringBoot 利用的配置文件application.yml,配置好账号密码即可失常拜访了!
spring:
  elasticsearch:
    rest:
      uris: http://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 中就能够查看到利用输入的日志了!

我的项目源码地址

https://github.com/macrozheng…

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!

正文完
 0