Jan1508:23:45 webserver sshd[12345]: Accepted password for admin from 192.168.1.100 port 52341 ssh2
各字段含义:
Jan 15 08:23:45 — 时间戳(注意:默认不含年份!跨年分析需注意)
webserver — 主机名
sshd[12345] — 产生日志的进程及 PID
后面是具体的日志消息
2.2 SSH 相关日志格式详解
密码登录成功
1
Jan1508:23:45 server sshd[12345]: Accepted password for admin from 10.0.0.50 port 52341 ssh2
关键词:Accepted password
包含:用户名、来源 IP、来源端口、协议版本
密钥登录成功
1
Jan1508:24:01 server sshd[12346]: Accepted publickey for deploy from 10.0.0.51 port 43210 ssh2: RSA SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
关键词:Accepted publickey
额外包含密钥类型和指纹,可用于追踪具体是哪个密钥
密码登录失败
1
Jan1508:25:33 server sshd[12350]: Failed password for admin from 203.0.113.50 port 61234 ssh2
关键词:Failed password
大量连续出现 = 暴力破解特征
无效用户登录尝试
1 2
Jan1508:25:35 server sshd[12351]: Invalid user oracle from 203.0.113.50 port 61235 Jan1508:25:35 server sshd[12351]: Failed password for invalid user oracle from 203.0.113.50 port 61235 ssh2
关键词:Invalid user
攻击者在尝试猜测用户名
连接断开
1
Jan1508:30:00 server sshd[12345]: Disconnected from user admin 10.0.0.50 port 52341
可以配合登录记录计算会话时长
连接关闭(未认证)
1
Jan1508:25:40 server sshd[12355]: Connection closed by 203.0.113.50 port 61240 [preauth]
[preauth] 表示在认证前就断开了,常见于端口扫描
最大认证尝试次数超限
1 2
Jan1508:26:00 server sshd[12360]: error: maximum authentication attempts exceeded for admin from 203.0.113.50 port 61250 ssh2 [preauth] Jan1508:26:00 server sshd[12360]: Disconnecting authenticating user admin 203.0.113.50 port 61250: Too many authentication failures [preauth]
2.3 sudo 日志分析
成功执行 sudo 命令:
1
Jan 15 09:01:22 server sudo: admin : TTY=pts/0 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/cat /etc/shadow
sudo 认证失败:
1
Jan 15 09:02:15 server sudo: webuser : user NOTin sudoers ; TTY=pts/1 ; PWD=/home/webuser ; USER=root ; COMMAND=/bin/bash
user NOT in sudoers — 该用户没有 sudo 权限却尝试使用
应急关注点:非管理员用户尝试 sudo 可能是攻击者在提权探测
sudo 配置修改:
1
Jan 15 09:05:00 server sudo: admin : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/usr/sbin/visudo
2.4 su 切换日志
成功切换:
1 2
Jan1509:10:00 server su[13000]: Successful su for root by admin Jan1509:10:00 server su[13000]: + pts/0 admin:root
失败切换:
1 2
Jan1509:10:30 server su[13001]: FAILED su for root by webuser Jan1509:10:30 server su[13001]: - pts/1 webuser:root
+ 表示成功,- 表示失败
2.5 用户管理日志
创建用户(useradd)
1 2
Jan 15 10:00:00 server useradd[13100]: new group: name=hacker, GID=1001 Jan 15 10:00:00 server useradd[13100]: new user: name=hacker, UID=1001, GID=1001, home=/home/hacker, shell=/bin/bash
删除用户(userdel)
1 2
Jan1510:05:00 server userdel[13200]: delete user 'hacker' Jan1510:05:00 server userdel[13200]: removed group 'hacker' owned by 'hacker'
修改密码(passwd)
1
Jan1510:01:00 server passwd[13150]: pam_unix(passwd:chauthtok): password changed for hacker
修改用户属性(usermod)
1 2
Jan 15 10:02:00 server usermod[13160]: add'hacker'to group 'sudo' Jan 15 10:02:00 server usermod[13160]: add'hacker'to shadow group 'sudo'
将用户加入 sudo 组 = 授予 root 权限,这是非常严重的后门行为
2.6 PAM 认证日志
PAM(Pluggable Authentication Modules)是 Linux 认证框架
认证失败:
1
Jan 15 08:25:33 server sshd[12350]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.50 user=admin
会话打开:
1
Jan1508:23:45 server sshd[12345]: pam_unix(sshd:session): session opened for user admin(uid=1000) by (uid=0)
会话关闭:
1
Jan1508:30:00 server sshd[12345]: pam_unix(sshd:session): session closed for user admin
# ===== 阶段一:暴力破解探测(攻击者 IP: 203.0.113.100)===== # 攻击者首先尝试常见用户名 Jan1502:13:01 prod-web-01 sshd[8801]: Invalid user test from 203.0.113.100 port 45210 Jan1502:13:01 prod-web-01 sshd[8801]: pam_unix(sshd:auth): check pass; user unknown Jan1502:13:03 prod-web-01 sshd[8801]: Failed password for invalid user test from 203.0.113.100 port 45210 ssh2 Jan1502:13:05 prod-web-01 sshd[8803]: Invalid user oracle from 203.0.113.100 port 45212 Jan1502:13:07 prod-web-01 sshd[8803]: Failed password for invalid user oracle from 203.0.113.100 port 45212 ssh2 Jan1502:13:09 prod-web-01 sshd[8805]: Invalid user postgres from 203.0.113.100 port 45214 Jan1502:13:11 prod-web-01 sshd[8805]: Failed password for invalid user postgres from 203.0.113.100 port 45214 ssh2 # ↑ 间隔约2秒一次,使用字典中的常见用户名 —— 典型的自动化暴力破解工具特征
# ===== 阶段二:针对已知用户名 admin 进行密码爆破 ===== Jan1502:13:15 prod-web-01 sshd[8810]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.100 user=admin Jan1502:13:17 prod-web-01 sshd[8810]: Failed password for admin from 203.0.113.100 port 45220 ssh2 Jan1502:13:19 prod-web-01 sshd[8812]: Failed password for admin from 203.0.113.100 port 45222 ssh2 Jan1502:13:21 prod-web-01 sshd[8814]: Failed password for admin from 203.0.113.100 port 45224 ssh2 Jan1502:13:23 prod-web-01 sshd[8816]: Failed password for admin from 203.0.113.100 port 45226 ssh2 Jan1502:13:25 prod-web-01 sshd[8818]: Failed password for admin from 203.0.113.100 port 45228 ssh2 Jan1502:13:27 prod-web-01 sshd[8820]: Failed password for admin from 203.0.113.100 port 45230 ssh2 Jan1502:13:29 prod-web-01 sshd[8822]: Failed password for admin from 203.0.113.100 port 45232 ssh2 Jan1502:13:31 prod-web-01 sshd[8824]: Failed password for admin from 203.0.113.100 port 45234 ssh2 # ↑ 8次失败,间隔恒定2秒 —— 机器行为,不是人工操作
# ===== 阶段三:暴力破解成功!===== Jan1502:13:33 prod-web-01 sshd[8826]: Accepted password for admin from 203.0.113.100 port 45236 ssh2 Jan1502:13:33 prod-web-01 sshd[8826]: pam_unix(sshd:session): session opened for user admin(uid=1000) by (uid=0) Jan1502:13:33 prod-web-01 systemd-logind[521]: New session 42 of user admin. # ↑ 关键!攻击者在大量失败后突然成功登录 —— 密码被猜中 # ↑ 注意 session ID = 42,后续操作可以通过这个关联
# ===== 阶段四:攻击者在系统内操作 ===== # 4.1 尝试提权 Jan1502:14:05 prod-web-01 sudo: admin : TTY=pts/0 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/bash Jan1502:14:05 prod-web-01 sudo: pam_unix(sudo:session): session opened for user root(uid=0) by admin(uid=1000) # ↑ admin 有 sudo 权限,攻击者获得了 root shell
# 4.2 创建后门用户 Jan1502:15:22 prod-web-01 useradd[9001]: new group: name=support, GID=1002 Jan1502:15:22 prod-web-01 useradd[9001]: new user: name=support, UID=1002, GID=1002, home=/home/support, shell=/bin/bash Jan1502:15:25 prod-web-01 passwd[9005]: pam_unix(passwd:chauthtok): password changed for support # ↑ 创建了名为 support 的后门用户 —— 名称刻意伪装成运维账号
# 4.3 将后门用户加入 sudo 组 Jan1502:15:30 prod-web-01 usermod[9010]: add 'support' to group 'sudo' Jan1502:15:30 prod-web-01 usermod[9010]: add 'support' to shadow group 'sudo' # ↑ 后门用户获得 root 权限 —— 即使 admin 密码被改,攻击者仍可通过 support 登录
# 4.4 攻击者通过后门用户验证登录 Jan1502:16:00 prod-web-01 sshd[9050]: Accepted password for support from 203.0.113.100 port 45300 ssh2 Jan1502:16:00 prod-web-01 sshd[9050]: pam_unix(sshd:session): session opened for user support(uid=1002) by (uid=0) # ↑ 确认后门可用
# 4.5 关闭原始会话 Jan1502:16:30 prod-web-01 sshd[8826]: pam_unix(sshd:session): session closed for user admin Jan1502:16:30 prod-web-01 systemd-logind[521]: Session 42 logged out. Waiting for processes to exit. Jan1502:16:30 prod-web-01 systemd-logind[521]: Removed session 42. # ↑ 攻击者退出 admin 会话,后续使用 support 后门账号活动
分析要点总结
阶段
时间
行为
关键证据
探测
02:13:01-02:13:11
用户名枚举
Invalid user
爆破
02:13:15-02:13:31
密码暴力破解
Failed password x 8
入侵
02:13:33
成功登录
Accepted password
提权
02:14:05
sudo 获取 root
COMMAND=/bin/bash
持久化
02:15:22-02:15:30
创建后门用户
useradd + usermod
验证
02:16:00
后门登录测试
新用户 SSH 登录
完整攻击链:侦察 → 暴力破解 → 初始访问 → 提权 → 持久化
3. 系统日志分析
3.1 系统日志文件
Ubuntu/Debian:/var/log/syslog
CentOS/RHEL:/var/log/messages
包含大量系统运行信息,是除认证日志外最重要的日志文件
3.2 关键事件类型
服务启动与停止
1 2 3
Jan1503:00:01 server systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. Jan1503:00:05 server systemd[1]: Stopping nginx.service - A high performance web server and a reverse proxy server... Jan1503:00:06 server systemd[1]: nginx.service: Deactivated successfully.
应急关注:服务在非预期时间启动/停止,可能被攻击者操作
硬件错误
1
Jan 1504:12:00 server kernel: [12345.678] EXT4-fs error (device sda1): ext4_lookup: inode #12345: comm process_name: directory has been corrupted
内核告警
1
Jan1505:00:00 server kernel: [23456.789] TCP: request_sock_TCP: Possible SYN flooding on port 80. Sending cookies.
admin pts/010.0.0.50 Mon Jan 1508:23:452024 - Mon Jan 1508:30:002024 (00:06) support pts/1203.0.113.100 Mon Jan 1502:16:002024 - Mon Jan 1505:45:002024 (03:29) admin pts/0203.0.113.100 Mon Jan 1502:13:332024 - Mon Jan 1502:16:302024 (00:02)
Username Port From Latest root pts/010.0.0.1 Mon Jan 1510:00:00 +08002024 admin pts/0203.0.113.100 Mon Jan 1502:13:33 +08002024 support pts/1203.0.113.100 Mon Jan 1502:16:00 +08002024 www-data **Never logged in**