使用ELK實時分析SSH暴力破解
- 2019 年 11 月 14 日
- 筆記
在上一篇《通過rsyslog搭建集中日誌伺服器》,我們分享了如何通過rsyslog搭建集中日誌伺服器,收集系統日誌,在本篇,我們會利用這些系統日誌進行安全分析。
這是ELK入門到實踐系列的第二篇文章,分享如何使用ELK實時分析SSH暴力破解。從一張圖看出SSH登錄時間、登錄狀態、用戶名字典,嘗試次數、來源IP等,可洞悉SSH暴力破解,迅速定位攻擊者。
安全日誌分析
linux系統的安全日誌為/var/log/secure,記錄驗證和授權方面的資訊,只要涉及帳號和密碼的程式都會記錄,比如SSH登錄。
登錄成功:
Nov 7 00:57:50 localhost sshd[22514]: Accepted password for root from 192.168.28.1 port 18415 ssh2 Nov 7 00:57:50 localhost sshd[22514]: pam_unix(sshd:session): session opened for user root by (uid=0
登錄失敗:
Nov 7 00:59:12 localhost sshd[22602]: Failed password for root from 192.168.28.1 port 18443 ssh2 Nov 7 00:59:14 localhost sshd[22602]: error: Received disconnect from 192.168.28.1 port 18443:0: [preauth]
通過以上資訊,我們只需要一條資訊就可以判斷登錄成功或失敗。
# SSH登錄成功 Nov 7 00:57:50 localhost sshd[22514]: Accepted password for root from 192.168.28.1 port 18415 ssh2 # SSH登錄失敗 Nov 7 00:59:12 localhost sshd[22602]: Failed password for root from 192.168.28.1 port 18443 ssh2
Grok正則捕獲
基於上述,我們來構造Grok正則捕獲關鍵資訊欄位。
在線grok調試地址:http://grokdebug.herokuapp.com/

Logstash安裝配置
1、下載安裝(環境要求:JDK8)
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.2.tar.gz tar -zxvf logstash-7.3.2.tar.gz cp -r logstash-7.3.2 /usr/local/logstash
2、測試
/usr/local/logstash/bin/logstash -e 'input { stdin{}} output{ stdout{}}'
3、Logstash配置
input { file { path => "/var/log/secure" } } filter { grok { match => { "message" => ".*sshd[d+]: %{WORD:status} .* %{USER:username} from.*%{IP:clientip}.*" } } } output { if ([status] == "Accepted" or [status] == "Failed") { elasticsearch { hosts => ["http://192.168.28.151:9200"] index => "secure-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } stdout { codec => rubydebug } } }
Elasticsearch部署
1、安裝
yum -y install elasticsearch
2、配置
cd /etc/elasticsearch/vi elasticsearch.yml network.host: 0.0.0.0 http.port: 9200
3、啟動ES
/bin/systemctl daemon-reloadsystemctl start elasticsearch
Kibana數據展示
安裝部署
# 安裝yum -y install kibana# 配置cd /etc/kibana cp kibana.yml kibana.yml.bak vi kibana.yml server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.28.151:9200"]# 啟動systemctl daemon-reload systemctl restart kibana
繪製數據表
可以直觀的看到攻擊者所使用的用戶名字典,登錄成功或者失敗的次數。

繪製折線圖
Y軸為登錄失敗次數,X軸為登錄時間,對SSH登錄狀態和IP地址做了一個直觀的統計。

製作儀錶盤
將前面繪製的數據表和折線圖導入到一個儀錶盤,就可以通過一張圖進行安全日誌分析,實時洞悉SSH暴力破解。

結語
本文中,通過對secure日誌的分析,構建Grok正則捕獲關鍵欄位資訊,然後將日誌數據導入ELK進行實時分析。基於ELK實現日誌收集分析,有著更多的應用場景,慢慢去摸索,繼續分享一些最佳實踐。