日志审计-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 sshd20129: 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 sshd20129: Failed password for root from 192.168.0.108 port 61432 ssh2 | 第二阶段首次密码验证失败阶段 |
| Aug 21 07:01:00 a sshd20129: message repeated 4 times: Failed password for root from 192.168.0.108 port 61432 ssh2 | 第三阶段多次重复的密码验证失败阶段 |
| Aug 21 07:01:25 a sshd20129: Failed password for root from 192.168.0.108 port 61432 ssh2 | 第四阶段最终的密码验证失败阶段 |
| Aug 21 07:01:26 a sshd20129: error: maximum authentication attempts exceeded for root from 192.168.0.108 port 61432 ssh2 preauth | 第五阶段超过最大尝试次数阶段。SSH 服务决定断开连接并阻止进一步的尝试 |
| Aug 22 02:27:32 a sshd26318: Disconnecting authenticating user root 192.168.0.108 port 60267: Too many authentication failures preauth | 第六阶段断开连接 |
| Aug 22 02:27:32 a sshd26318: 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,那么这个应该匹配告警的日志,就不会产生告警,只能在之后继续收日志的时候才能继续工作上报告警,存在漏报的问题。(不过实际场景,日志应该会很多,持续上报,不存在这个问题)

相关推荐
^yi4 分钟前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os
Kina_C20 分钟前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs
Android洋芋43 分钟前
PrintFriendly网页文章转PDF插件工具及技术分析
运维·服务器·pdf·网页转pdf
Elastic 中国社区官方博客1 小时前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
RoboWizard1 小时前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
hkj88081 小时前
Ubuntu 20.04 安装 OpenJDK 17
linux·运维·ubuntu
sulikey1 小时前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
许彰午1 小时前
17-22-运维与高级主题
运维·网络
万联WANFLOW1 小时前
外贸独立站:服务器放海外国内后台卡,放国内海外客户打不开——这道两头难怎么破?
运维·网络·数据库·经验分享
跨境小彭1 小时前
Temu 店群自动化核价落地实践:告别人工熬夜议价,依托智能核价极速版规避操作亏损
运维·自动化·跨境电商·temu