ELK系列 之 监控ssh登陆日志esalert告警

一 前言

ELK安装部署此文不多赘述,可以查看: 

ELK 之 实践哥搭建elk7 带账号密码_yuezhilangniao的博客-CSDN博客ELK7日志分析系统安装准备ELK7 ELK6:默认安装它是开放访问的,需要xpack之类的才能启用认证 ELK7默认开启安全认证功能环境 系统Centos7 关闭防火墙、selinuxELK基础概念,实践中了解 Elasticsearch: 搜索数据库服务器,提供RESTful Web接口。简称ES Logstash: 数据采集和数据过滤分析,主要功能是数据过滤分析(提取字段) Kibana: 主要是页面展示,包含日志展示、ES操作简化等Centos7阿里y...https://blog.csdn.net/yuezhilangniao/article/details/112691680

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]```

使用ELK实时分析SSH暴力破解 原文 : 使用ELK实时分析SSH暴力破解_寰宇001的博客-CSDN博客这是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.https://blog.csdn.net/qq_40907977/article/details/112175034

二 实战

正则不错:

grok正则:

.*sshd\[\d+\]: %{WORD:status} .* %{USER:username} from.*%{IP:clientip}.*

日志样例:

Mar  1 15:01:26 flexcc-1531 sshd[21794]: Failed password for root from 10.69.10.156 port 60122 ssh2

# 过滤后

{
  "clientip": "10.69.10.156",
  "status": "Failed",
  "username": "root"
}

# 完整的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"] # ES 地址
            index => "secure-%{+YYYY.MM.dd}" # 索引名字
            user => "elastic" # ES接入用户
            password => "elastic" # ES接入密码
          }
          stdout {
            codec => rubydebug
          }
    }
}

# alertmanager 配置文件详解  --  暂时没心情搞 alertmanager 报警(貌似用ESalert更加方便一些 )

global:
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@example.org'         #用于邮件通知的P发件人
route:                                          #每个输入警报进入根路由
  receiver: 'team-X-mails'                      #根路由不得包含任何匹配项,因为它是所有警报的入口点
  group_by: ['alertname', 'cluster']            #将传入警报分组的标签。例如,将有个针对cluster = A和alertname = LatencyHigh的警报进入批处理成一个组
  group_wait: 30s                               #当传入的警报创建了一组新的警报时,请至少等待多少秒发送初始通知
  group_interval: 5m                            #发送第一个通知时,请等待多少分钟发送一批已开始为该组触发的新警报
  repeat_interval: 3h                           #如果警报已成功发送,请等待多少小时以重新发送警报
  routes:                                       #子路由,父路由的所有属性都会被子路由继承
  - match_re:                                   #此路由在警报标签上执行正则表达式匹配,以捕获与服务列表相关的警报
      service: ^(foo1|foo2|baz)$
    receiver: team-X-mails
    routes:                                     #服务有严重警报,任何警报子路径不匹配,即通过父路由配置直接发送给收件人
    - match:
        severity: critical
      receiver: team-X-pager
    routes:                                      #此路由处理来自数据库服务的所有警报
    - match:
        severity: critical
      receiver: team-Y-pager
  - match:
      service: database
    receiver: team-DB-pager                       #还可以按受影响的数据库对警报进行分组
    group_by: [alertname, cluster, database]
    routes:
    - match:
        owner: team-X
      receiver: team-X-pager
#如果另一个警报正在触发,则禁止规则允许将一组警报静音,如果同一警报已经严重,我们将使用此选项禁用任何警告级别的通知 
inhibit_rules:
- source_match:
    severity: 'critical'
  target_match:
    severity: 'warning'
  equal: ['alertname']
#如果警报名称相同,则应用抑制,如果源警报和目标警报中均缺少“equal”中列出的所有标签名称,则将应用禁止规则!
receivers:
- name: 'team-X-mails'
  email_configs:
  - to: 'team-X+alerts@example.org, team-Y+alerts@example.org'
- name: 'team-X-pager'
  email_configs:
  - to: 'team-X+alerts-critical@example.org'
  pagerduty_configs:
  - routing_key: <team-X-key>

es日志告警插件 python3开发- ElastAlert : 

推荐阅读1:ELK基于ElastAlert实现日志的微信报警 - 哈喽哈喽111111 - 博客园  

# 启动命令样例
python -m elastalert.elastalert --verbose --config /app/elastalert/config.yaml --rule /app/elastalert/example_rules/sms-applog.yaml

规则阅读2:ElastAlert配置和告警规则各种用法 - 哈喽哈喽111111 - 博客园

Prometheus告警插件 - alertmanager : Alertmanager 安装与使用 - 肖祥 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值