前言
在使用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/,會提示輸入用戶名和密碼。