前言SSH连接端口222,账号:root,密码:toor
SSH日志分析常用思路SSH日志分析是应急响应与安全审计的核心。通过审查配置文件和登录日志,可以快速发现未授权访问、定位攻击源并核查安全基线。标准的分析流程如下:
1. 审查配置:确认“规则”
分析日志前,先看SSH服务的核心配置文件 /etc/ssh/sshd_config,了解允许哪些行为
访问控制:检查 AllowUsers, AllowGroups 等指令,确定谁可以登录
认证方式:检查 PasswordAuthentication 是否开启,是否仅允许密钥登录
高危设置:检查 PermitRootLogin 是否允许root直接登录
2. 分析日志:发现“事件”
根据系统,主要分析以下认证日志(包括 .1, .gz 等归档文件):
Debian/Ubuntu: /var/log/auth.log
CentOS/RHEL: /var/log/secure
重点关注包含以下关键字的日志条目:
成功登录:Accepted password 或 Accepted publickey 等
登录失败:Failed password 、Failed publickey 或 invalid user 等
用户切换/提权:session opened for user (常用于追踪sudo等操作)
3. 聚合统计:提取“情报”
使用命令行工具(如 grep, awk, sort, uniq)从海量日志中提取有价值的信息,回答关键问题:
攻击来源:哪个IP发起了最多的失败尝试?
爆破目标:哪个用户名被攻击次数最多?
成功渗透:哪些用户和IP成功登录了系统?
行为画像:梳理单个IP或用户的完整活动时间线
索引
题目列表步骤#1可以登录 SSH 的账号数量是多少
我们先了解什么是sshd_config文件
sshd_config 是 SSH 服务器(sshd)的主配置文件,用于配置 SSH 服务端的各种参数和行为
设置 SSH 服务器监听的端口号(默认22端口)
指定允许或禁止的登录方式(密码认证、公钥认证等)
是否允许 root 账户远程登录
配置登录超时时间、日志级别、安全策略等
控制哪些用户或用户组可以通过SSH登录
查看/etc/ssh/sshd_config文件
1cat /etc/ssh/sshd_config
在最下面那里可以看到只允许SSHD_USER用户组和root用户组进行ssh登录
然后在/etc/group筛选出这两个组
1grep -E '^(root|SSHD_USER):' /etc/group
这个命令的意思是:
-E 参数表示启用扩展正则表达式,支持更多高级符号和语法,如“|”表示或、“()”用于分组、“+”表示重复等,使表达式更简洁易读,匹配功能更强大
^(root|SSHD_USER): 表示匹配以“root:”或“SSHD_USER:”开头的行
root组后面为空,表示这个组没有附加用户(也就是没有把别的用户名手动加进组内),默认为root。然后SSHD_USER组有两个用户,分别为toor和root,去重之后可以登录 SSH 的账号就只有toor和root用户
1flag{2}
步骤#2SSH日志中登录成功的日志条数是多少(去除自己登陆产生的两次)
auth.log 是Linux系统记录身份认证相关信息的日志文件,包括用户登录成功、失败、ssh连接、公钥认证和使用sudo等操作的记录。它帮助管理员监控登录情况和发现安全问题,是安全审计的重要依据
其中auth.log表示最新日志,auth.log.1表示上一轮未压缩归档,auth.log.N.gz表示更早的归档(N为数字)
进入log日志文件夹,查看当前目录文件
1cd /var/log && ls
我们要分析的是已归档文件,也就是auth.log.1和auth.log.2.gz
先解压auth.log.2.gz文件
1gzip -d auth.log.2.gz
用gzip命令解压后,会删除原本的.gz压缩文件,并生成新的文件
然后筛选出包含Accepted password或Accepted publickey的日志记录即可
Accepted password:表示通过密码验证成功登录
Accepted publickey:表示通过公钥认证成功登录
1grep -E "Accepted password|Accepted publickey" auth.log.1 auth.log.2 | wc -l
1flag{103}
步骤#3SSH日志中登录成功次数最多的用户的用户名是什么
用awk筛选登录成功的日志记录即可
1grep -E "Accepted password|Accepted publickey" auth.log.1 auth.log.2 | awk '{print $9}' | sort | uniq -c
可以看到SSH日志中登录成功次数最多的用户名是toor
1flag{toor}
步骤#4SSH日志中登录失败次数最多的用户以及登录使用的ip是什么(flag:flag{用户名,ip})
直接筛选出包含Failed password或Failed publickey的记录,然后awk查看用户名和IP地址即可
1grep -E "Failed password|Failed publickey" auth.log.1 auth.log.2 | awk '{print $9, $(NF-3)}' | sort | uniq -c | sort -n
awk '{print $9, $(NF-3)}' 表示打印第9列(用户名)和倒数第4列(登录来源IP,通常日志中IP在倒数第4列)
sort 对结果进行排序
uniq -c 统计相同用户名和IP的出现次数
sort -n 表示按照 数字大小 进行排序,而不是按字母ASCII顺序
可以看到SSH日志中登录失败次数最多的用户是root,登录使用的ip是87.163.111.11
1flag{root,87.163.111.11}