最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SSH 密钥审计日志如何做
时间:2026-08-11 20:48:49 编辑:袖梨 来源:一聚教程网
SSH密钥审计需配置LogLevel VERBOSE记录指纹、用auditd捕获命令执行、外发日志防篡改,并通过日志关联实现“密钥→用户→操作”全链路追踪。
SSH 密钥审计日志不是“开个开关就自动出来”的事情,它需要把密钥使用行为、认证过程、命令执行三者串起来看。光靠 /var/log/auth.log 或 /var/log/secure 里的几行记录,根本看不出谁用哪把密钥、连了几次、执行了什么命令。真正有效的密钥审计,得从配置、捕获、关联三个层面动手。
确认密钥登录已被详细记录
默认的 LogLevel INFO 只记“Accepted publickey”,不记密钥指纹、算法类型、甚至用户实际用的是哪一把密钥。必须改到 VERBOSE:
- 编辑
/etc/ssh/sshd_config,确保有这一行:LogLevel VERBOSE - 重启服务:
sudo systemctl restart sshd - 成功登录后,检查日志是否出现类似字段:
sshd[12345]: debug1: key_parse_private_pem: PEM_read_PrivateKey failedsshd[12345]: Accepted publickey for alice from 192.168.1.10 port 56789 ssh2: RSA SHA256:AbCdEf...GhIj注意最后的
RSA SHA256:...就是公钥指纹,这是溯源关键
捕获密钥对应的具体操作行为
日志里写了“Accepted”,但用户登进去干了什么?删库?改配置?默认 SSH 日志不记录这些。需要用 auditd 补上这一环:
- 启用 audit 规则,监控 execve 系统调用:
sudo auditctl -a always,exit -F arch=b64 -S execve -k ssh_cmd(
b64适配 x86_64;如是 32 位系统用b32) - 确保
auditd开机自启:sudo systemctl enable auditd - 后续可通过
sudo ausearch -k ssh_cmd -i查到某次登录后执行的所有命令,再结合前面的 SSH 日志时间戳和用户,就能把“哪把密钥→哪个用户→执行了什么”串起来
防止日志被篡改或绕过
攻击者一旦拿到权限,第一件事就是清日志。密钥审计的前提是日志可信:
- 锁定本地日志权限:
sudo chmod 600 /var/log/auth.log /var/log/secure(RHEL/CentOS)或/var/log/auth.log(Debian/Ubuntu) - 配置
rsyslog外发日志到独立日志服务器(不能和业务主机同机),例如在/etc/rsyslog.d/50-remote.conf中加:*.* @10.0.1.100:514(TCP)或*.* @@10.0.1.100:514(可靠传输) - 禁用普通用户对
journalctl的访问:sudo groupadd -r adm,再把仅限运维加入该组,避免journalctl --no-pager -u ssh被滥用
日常核查与快速定位
有了数据,还得能快速查。几个实用命令:
- 查所有用密钥登录成功的记录(含指纹):
sudo grep "Accepted publickey" /var/log/secure | awk '{print $9, $11, $(NF-1)}'输出示例:
alice RSA SHA256:AbCdEf...GhIj - 统计各密钥指纹的使用频次(可用于发现共享密钥或僵尸密钥):
sudo grep "Accepted publickey" /var/log/secure | awk '{print $(NF-1)}' | sort | uniq -c | sort -nr - 查某个指纹最近三次登录来源 IP:
sudo grep "SHA256:AbCdEf...GhIj" /var/log/secure | tail -3 | awk '{print $11}'
相关文章
- 迅捷 FW351R 无线路由器上网时间控制 08-12
- jm天堂漫画官网入口 08-12
- Moonlit Celestial Palace Gate 08-12
- Memcached gets 命令 08-12
- 迅捷 FW351R 无线路由器网速限制设置 08-12
- ZipZap-ZipZap是一款免费的AI 助手 08-12