kibana 使用 nginx basic auth

這陣子都在搞  ELK,  其實二年多前玩時很多地方不是很清楚,只能在日常中的運用足夠,而且在  Logstash 這花了比較多的時間在處理日誌格式如多行日誌及 grok 的匹配及轉換,在新地方平時沒有在收集匯整日誌,對系統監控的處理還有改善的空間,為了能做到自動化運維及處理上我的第一步就是先匯整所有日誌,將ELK搭建起來並匯整所有的日誌,一清查發現日誌還不少,什麼想的到想不到的都有,很多的日誌都需要在日常維運及開發的人進行糾錯及處理,至少在事件的發現及預先的處置可以省下一點時間。

所以接下來就會開始陸續將自己這陣子的記憶留下來以供未來參考。

1.Kibana Authentication (這個算是月經文了吧)
因為 Kibana 沒有的驗證的機制,我又不想花時間去搞快樂版的x-pack, 其實有看到幾個開源的項目也是針對這個改善,建議可用http://chenlinux.com/2014/09/23/kibana-auth/ 或 https://aboullaite.me/secure-kibana-keycloak/ 這二個是我覺的比較符合大多數人的用途, 尤其是前者,加上了許多 index權限級別的處理,不過還沒有空試下,有空有試的話再來補充上來,而自己因為老闆要求,所以就先在kibana前弄個nginx reverse proxy + basic auth 反正都是內部在用,就只是想防一些人亂亂試,對現在的要求是足夠了,所以先這樣搞。

# 安裝 nginx & httpd-tools
> yum install nginx httpd-tools -y

# 設置 nginx
> vi /etc/nginx/conf.d/myweb.conf

在這個例子中,我的 kibana 在本地,只聽 5601 Port,

upstream kibana_server{
    server 127.0.0.1:5601;
}
    server {
            listen 80;
            server_name 192.168.31.250;
            location / {
                        proxy_pass http://kibana_server;
                        auth_basic "Restricted";
                        auth_basic_user_file /etc/nginx/userpwd;
            }
     }
> htpasswd -c /etc/nginx/userpwd jerryw
> systemctl restart nginx

# 設置 kibana(安裝不用我在這教吧)

sed -i 's/server\.host\:.*/server\.host\:"127.0.0.1"/g' /etc/kibana/kibana.yml
systemctl restart kibana

# 確定 防火牆及SELinux的權限有開

> yum install policycoreutils-python
> semanage port -l|grep http_port
> semanage port -a -t http_port_t -p tcp 5601
> semanage port -l|grep http_port

當然你也可以直接將 SELinux 關掉或改成 permissive mode
> setenforce 0
> sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 

> firewall-cmd --add-port=80/tcp --permananet
> firewall-cmd --reload

完成收工

Author: jerryw1974

learning and focus on computer science, cloud infrastructure, virtualization and information security, technical, networking,platform system and cyber-security related topic.