使用 ELK 实时分析 SSH 暴力破解

地球胖头鱼 2021-02-22
Web安全 发布于 2021-02-22 15:39:17 阅读 221 评论 0

前言

这是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调试地址:grokdebug.herokuapp.com/

使用ELK实时分析SSH暴力破解

Logstash安装配置

下载JDK

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

测试

/usr/local/logstash/bin/logstash -e 'input { stdin{}} output{ stdout{}}'

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部署

安装

yum -y install elasticsearch

配置

cd /etc/elasticsearch/
vi  elasticsearch.yml
    network.host: 0.0.0.0
    http.port: 9200

启动ES

/bin/systemctl daemon-reload
systemctl 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

绘制数据表

可以直观的看到攻击者所使用的用户名字典,登录成功或者失败的次数。

使用ELK实时分析SSH暴力破解

结语

本文中,通过对secure日志的分析,构建Grok正则捕获关键字段信息,然后将日志数据导入ELK进行实时分析。基于ELK实现日志收集分析,有着更多的应用场景,慢慢去摸索,继续分享一些最佳实践。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
地球胖头鱼
未填写
  • 作者发布文章207
  • 作者收获粉丝7
  • 作者收到点赞0
  • 所有文章被收藏了1
  • 博客总访问量排行第2
  • 博客总访问量4.5 万(每日更新)
查看所有博文