日志审计-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

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log