Kibana——通过Nginx代理Kibana并实现登陆认证

 

前言

在使用ELK进行日志统计的时候,由于Kibana自身并没有身份验证的功能,任何人只要知道链接地址就可以正常登录到Kibana控制界面。

由于日常的查询,添加日志和删除日志都是在同一个web 中进行,这样就有极高的安全隐患。任何人都有权限对其进行修改。

为了避免这一问题,可以使用Nginx的验证功能来代理Kibana。

 

一、Nginx代理

说明:我的Kibana和Nginx部署在不同的服务器(正常情况下,建议Kibana和Nginx部署在同一台服务器上,将本地监听IP改为127.0.0.1,只通过本地的nginx访问,禁止外部直接访问Kibana)。

Kibana版本为:6.2.8

1.配置Kibana

编辑kibana的配置文件,对server.basePath进行定义,配置路径,然后重启kibana。

vim /etc/kibana/kibana.yml

修改参数如下:
server.basePath: "/kibana"
server.host: "10.0.101.100"  #此配置下,如果要限制外部用户直接访问本机的5601端口,可以使用iptables进行限制(但因我的Nginx和Kibana不在同一台服务器,所以不进行限制,如果在同一台服务器上,则可以把属性值设为127.0.0.1,然后进行5601端口限制)

注:如果 server.host: "127.0.0.1" ,则禁止了外部用户直接访问kibana页面。

 

2.配置Nginx

编写一个代理配置文件,然后重启Nginx。

# cat /home/mppay/nginx/conf/nginx.conf
server { listen
80; server_name 172.24.115.4; location /kibana/ { proxy_pass http://10.0.101.100:5601/; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite ^/kibana/(.*)$ /$1 break; } }

注:上面黑体的kibana要和kibana.yml中的server.basePath属性值保持一样。

 

3.访问测试

最终访问http://172.24.115.4/kibana/便可以访问到代理的Kibana。

 

二、登陆认证

1.准备密码文件

// 安装工具包
yum install httpd-tools

// 生成密码,用户名 admin
htpasswd -c /home/mppay/nginx/conf/kibanauser admin

# 提示输入2遍密码
New password:
Re-type new password:
Adding password for user admin

htpasswd命令参数如下:

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

2.修改Nginx配置文件

修改Nginx配置文件,增加登陆认证配置,然后重启Nginx。

# cat /home/mppay/nginx/conf/nginx.conf
server {
    listen 80;
    server_name 172.24.115.4;
    location /kibana/ {
        auth_basic "secret";
        auth_basic_user_file /home/mppay/nginx/conf/kibanauser;
        proxy_pass http://10.0.101.100:5601/;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        rewrite ^/kibana/(.*)$ /$1 break;
    }
}  

 

3.访问测试

再次访问http://172.24.115.4/kibana/,会提示输入用户名和密码。

 

posted on 2021-06-15 09:58  曹伟雄  阅读(3144)  评论(0编辑  收藏  举报

导航