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/,会提示输入用户名和密码。