Linux怎么排查服务器是否被添加了未知的恶意SSH公钥到authorized_keys

阿瑶小哥_9697

阿瑶小哥_9697

2026-11-05

365人浏览

原创

应逐个检查所有用户(含系统账户)的 authorized_keys 文件,重点排查异常行数、陌生邮箱、无注释公钥、可疑指纹及登录日志匹配情况,并清洗后比对哈希,避免误报。

linux怎么排查服务器是否被添加了未知的恶意ssh公钥到authorized_keys

检查所有用户的 authorized_keys 文件是否被篡改

攻击者一旦获得低权限账户(如普通用户或被爆破成功的账号),第一件事常是往其 ~/.ssh/authorized_keys 里追加自己的公钥,实现长期免密登录。这个文件本身不记录修改时间,且权限宽松时容易被覆盖,所以不能只看“有没有改动”,而要看“有没有不该有的内容”。

  • 逐个检查所有可登录用户的 authorized_keys:用 find /home -name authorized_keys -path "*/.ssh/*" 2>/dev/null 找出路径,再对每个结果执行 cat $file | grep -v "^#" | sed '/^$/d' | wc -l 统计有效公钥行数——正常用户通常只有 1–3 行,若发现某用户有 10+ 行,尤其包含陌生邮箱或无注释的长字符串,高度可疑
  • 特别注意 /root/.ssh/authorized_keys:即使你没配 root 免密,也要查;有些攻击脚本会直接写入 root 目录,且因权限问题(如 cp: Permission denied)可能失败但留下痕迹,需用 sudo ls -l /root/.ssh/ 确认是否存在、是否可读
  • 对比可信备份:如果你有历史备份(比如 Git 管理的配置仓库),用 diff -u backup_authorized_keys current_authorized_keys 快速定位新增行;没有备份就重点看每行末尾的注释字段(如 user@host),陌生 host 名或随机字符串(如 ubuntu@ip-172-31-xx-xx)大概率是攻击者留的

识别公钥是否来自已知可信来源

公钥本身是明文,但无法靠肉眼判断是否恶意。关键不是“它长得像不像”,而是“它该不该在这儿”。

  • 提取所有公钥的指纹做比对:ssh-keygen -lf ~/.ssh/authorized_keys 会输出每行公钥的 SHA256 指纹和类型(ssh-ed25519 或 ssh-rsa),把输出存为 fingerprints.txt,再跟你自己生成的私钥对应指纹(ssh-keygen -lf ~/.ssh/id_ed25519)逐条核对
  • 过滤掉已知无效或过期密钥:旧项目用的 ssh-rsa 密钥在 OpenSSH 8.8+ 默认被禁用,如果 sshd_config 已升级但 authorized_keys 里还留着大量 ssh-rsa 公钥,它们虽不能登录,却可能是攻击者早期植入、尚未清理的残留
  • 警惕空注释或无注释公钥:合法运维团队一般会在公钥末尾写明用途(如 jenkins-deploy@ci 或 alice-laptop@macbook),纯公钥末尾为空或只有随机字符(如 4x9zQm)基本可判定为恶意

结合登录日志反向验证可疑公钥是否被实际使用

光看 authorized_keys 不够,得确认这些公钥是不是真被用来登过系统。很多后门公钥长期闲置,但只要存在,就是风险敞口。

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
  • 查 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)中近期的 Accepted publickey 记录:grep "Accepted publickey" /var/log/auth.log | tail -20
  • 把日志里出现的用户名和 IP 提取出来,跟 authorized_keys 所在路径交叉验证:比如日志显示 Accepted publickey for alice from 203.0.113.5,那就去查 /home/alice/.ssh/authorized_keys,看里面是否有对应指纹的公钥;若日志有记录、但该用户文件里没这公钥,说明可能被动态加载(如通过 AuthorizedKeysCommand),需进一步查 sshd_config
  • 注意时间偏差:攻击者常选业务低峰期登录(如凌晨 2–4 点),用 awk '$0 ~ /Accepted publickey/ && $3 ~ /(root|admin|deploy)/ {print $1,$2,$3,$9,$11}' /var/log/auth.log | sort 快速筛出高危账户+异常时段组合

自动化扫描脚本的关键检查点

手动排查适合单台服务器,批量管理时建议用脚本,但必须避开几个常见误报陷阱:

  • 不要只依赖 ls -la ~/.ssh 判断权限:攻击者可能把 authorized_keys 改成 644 权限,但服务端仍能读取;真正要盯的是 ~/.ssh 目录是否为 700、家目录是否被组写(stat -c "%a %n" ~ 输出不能是 775/777)
  • 避免用 cat authorized_keys | md5sum 做完整性校验:文件末尾可能被追加空行或注释,导致哈希值变但内容无实质变化;应先用 sed '/^[[:space:]]*#/d; /^[[:space:]]*$/d' authorized_keys | sha256sum 清洗后再比对
  • 忽略 .ssh/ 下的非常规文件:有些后门会新建 .ssh/authorized_keys2 或 .ssh/config.bak 并诱导管理员误操作,find /home -path "*/.ssh/*" -type f ! -name "authorized_keys" -name "*.pub" -o -name "id_*" 2>/dev/null 可辅助发现异常文件

最易被忽略的一点:攻击者添加的公钥可能不在你常规管理的用户下,而是在一个你早已遗忘的测试账户、CI 机器人账户,甚至 nobody 或 daemon 这类系统账户的 home 目录里——这些路径默认不被 find /home 覆盖,得额外加 getent passwd | awk -F: '$3 >= 1000 && $6 != "/nonexistent" {print $6}' | xargs -I{} find {} -path "*/.ssh/authorized_keys" 2>/dev/null 才能扫全。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

980

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3392

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1116

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

989

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

534

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3136

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5892

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

907

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习