日志审计-graylog ssh登录超过6次告警

2024-08-23 01:44

本文主要是介绍日志审计-graylog ssh登录超过6次告警,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Apt 设备通过UDP收集日志,在gray创建接收端口192.168.0.187:1514

1、ssh登录失败次数大于5次

ssh日志级别默认为INFO级别,通过系统rsyslog模块处理,日志默认存储在/var/log/auth.log。

将日志转发到graylog

vim /etc/rsyslog.conf

文件末尾追加

if $programname == 'sshd' then @192.168.0.187:1514

重启rsyslog服务

sudo systemctl restart rsyslog

以错误密码登录

graylog查看,自动刷新日志

错误密码登录

页面可以看见产生的日志

完整的日志内容

Aug 21 07:00:18 a sshd[20129]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.108  user=root

[第一阶段]身份验证失败阶段

Aug 21 07:00:20 a sshd[20129]: Failed password for root from 192.168.0.108 port 61432 ssh2

[第二阶段]首次密码验证失败阶段

Aug 21 07:01:00 a sshd[20129]: message repeated 4 times: [ Failed password for root from 192.168.0.108 port 61432 ssh2]

[第三阶段]多次重复的密码验证失败阶段

Aug 21 07:01:25 a sshd[20129]: Failed password for root from 192.168.0.108 port 61432 ssh2

[第四阶段]最终的密码验证失败阶段

Aug 21 07:01:26 a sshd[20129]: error: maximum authentication attempts exceeded for root from 192.168.0.108 port 61432 ssh2 [preauth]

[第五阶段]超过最大尝试次数阶段。SSH 服务决定断开连接并阻止进一步的尝试

Aug 22 02:27:32 a sshd[26318]: Disconnecting authenticating user root 192.168.0.108 port 60267: Too many authentication failures [preauth]

[第六阶段]断开连接

Aug 22 02:27:32 a sshd[26318]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.108  user=root

[第七阶段]由PAM模块产生,提示认证失败一次基础上,又尝试了5次。即一共失败6次

在最后一个阶段产生的日志,PAM模块会记录首次失败后,继续尝试连接失败次数,

PAM 5 这里次数为5,即首次失败1次,加上后续尝试次数5,一共6次失败产生。

这个日志产生的条件

1、达到ssh服务配置最大尝试次数上限,服务器主动断开连接,PAM模块产生后续尝试次数

2、客户端主动断开连接,PAM统计后续尝试次数。

对于ssh登录失败,使用最后一个日志作为目标日志,因为他在下面每个场景都会产生

1、用户登录失败1次,断开连接。这里失败没有继续尝试,操作没有风险

2、用户多次尝试失败,断开连接,产生PAM,根据尝试次数决定是否告警

3、用户尝试多次,服务器主动段考连接,产生PAM,根据尝试次数,决定是否告警

这里有一个问题,如果客户在同一客户端,一直用不同的连接尝试访问,就不会产生PAM,也有暴力破解的风险,对这个情况,要加一个告警日志聚合,就是针对第二个的日志对ip聚合统计。如果超过规定次数也告警。

Graylog pipline清洗数据追加问题字段

ssh登录失败N次就告警

  • 聚合场景一:存在PAM日志

配置 extractor提取,在数据进入stream前先解析,拿到次数,并追加failedtime:[次数]字段

对原始日志,配置json解析

到这里随便加载一个就行

选择正则表达式提取

正则表达式,可以提取次数

PAM (\d+) more authentication failure

转换成数值,后面告警进行聚合操作时,需要判断决定是否告警

  • 聚合场景二:不存在PAM

Failed password字段存在,统计源目的ip出现次数,

pipline规则

提取服务器IP

rule "gl2_remote_ip rename"
when
  has_field(
"gl2_remote_ip")
then
  set_field(
"server_ip", to_string($message.gl2_remote_ip));
end

 

提取源IP

rule "ssh password for from"
when
  contains(value: to_string($message.message), search:
"ssh", ignore_case: false)
then
  let m = regex(
"(Failed|Accepted) password for (\\S+) from (\\S+)\\s+port\\s+(\\d+)",to_string($message.message));
  set_field(
"command", to_string(m["0"]));
  set_field(
"account", to_string(m["1"]));
  set_field(
"remote_addr", to_string(m["2"]));
  set_field(
"remote_port", to_string(m["3"]));
end

总结:

PAM日志将会追加

trytime

1

Failed password将会追加

remote_addr

192.168.0.108

server_ip

192.168.0.18

 

Graylog Alert聚合规则

PAM日志聚合规则

1、字段匹配

首先过滤日志中的字段

message: "sshd" AND message: "PAM" AND message: "more authentication"

在进行聚合匹配前先对周期内的日志根据源目的IP分类

对同类日志,配置聚合规则,失败次数大于4就告警

测试

尝试登录,且填写错误密码,登录6次

查看告警内容

问题:

1、graylog运行状态

graylog所有的功能都是基于日志的,如果不能连续提供日志,grayLog所有功能就会暂停;比如,现在存在匹配告警的日志,但此刻没有新的日志到graylog,那么这个应该匹配告警的日志,就不会产生告警,只能在之后继续收日志的时候才能继续工作上报告警,存在漏报的问题。(不过实际场景,日志应该会很多,持续上报,不存在这个问题)

这篇关于日志审计-graylog ssh登录超过6次告警的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097995

相关文章

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R