SSH 代理转发
SSH 代理转发 是什么?
SSH 代理转发OpenSSH 的一项功能,使用 -A 或 ForwardAgent yes 启用,会在远程主机上暴露一个 UNIX 套接字,使远端命令可借助本地 SSH 代理完成对后续主机的认证。
SSH 代理转发允许用户在本地运行 ssh-agent,然后从一台服务器跳转到另一台,而无需拷贝私钥。当用户以 ForwardAgent yes 连接时,openssh 会在远程主机上创建一个 UNIX 域套接字(路径在 SSH_AUTH_SOCK 中),将签名请求代理回本地代理。风险在于:任何在远程主机上拥有 root 权限者都可以劫持该套接字,在用户会话期间以其名义对任意可达目标发起签名请求。matrix.org 在 2019 年的事件、GitHub.com 的供应链告警等高知名度事件推动了相关建议:优先使用 ProxyJump(-J)、短期 TTL 的 SSH 证书或硬件支持的密钥(FIDO ed25519-sk),并在不得不转发时配置 IdentityAgent 或要求 ssh-agent 在签名时弹出确认。
● 示例
- 01
在跳板机上获得 root 的攻击者利用 SSH_AUTH_SOCK,以用户身份对下游生产服务器发起认证签名。
- 02
用 ssh -J jump admin@target 代替 ssh -A admin@jump,使私钥永远不到达跳板机。
● 常见问题
SSH 代理转发 是什么?
OpenSSH 的一项功能,使用 -A 或 ForwardAgent yes 启用,会在远程主机上暴露一个 UNIX 套接字,使远端命令可借助本地 SSH 代理完成对后续主机的认证。 它属于网络安全的 网络安全 分类。
SSH 代理转发 是什么意思?
OpenSSH 的一项功能,使用 -A 或 ForwardAgent yes 启用,会在远程主机上暴露一个 UNIX 套接字,使远端命令可借助本地 SSH 代理完成对后续主机的认证。
SSH 代理转发 是如何工作的?
SSH 代理转发允许用户在本地运行 ssh-agent,然后从一台服务器跳转到另一台,而无需拷贝私钥。当用户以 ForwardAgent yes 连接时,openssh 会在远程主机上创建一个 UNIX 域套接字(路径在 SSH_AUTH_SOCK 中),将签名请求代理回本地代理。风险在于:任何在远程主机上拥有 root 权限者都可以劫持该套接字,在用户会话期间以其名义对任意可达目标发起签名请求。matrix.org 在 2019 年的事件、GitHub.com 的供应链告警等高知名度事件推动了相关建议:优先使用 ProxyJump(-J)、短期 TTL 的 SSH 证书或硬件支持的密钥(FIDO ed25519-sk),并在不得不转发时配置 IdentityAgent 或要求 ssh-agent 在签名时弹出确认。
如何防御 SSH 代理转发?
针对 SSH 代理转发 的防御通常结合技术控制与运营实践,详见上方完整定义。
SSH 代理转发 还有哪些其他名称?
常见的别称包括: ForwardAgent, ssh -A。
● 相关术语
- network-security№ 1089
SSH 密钥类型
OpenSSH 支持的用户与主机身份认证非对称算法:RSA、ECDSA(NIST 曲线),以及目前的现代默认 Ed25519。
- network-security№ 594
known_hosts 文件
OpenSSH 客户端文件(~/.ssh/known_hosts),用于固定服务器公钥,以便 SSH 在主机密钥变化时识别潜在的中间人攻击。
- identity-access№ 414
FIDO2
FIDO 联盟推出的开放认证标准,结合 WebAuthn(浏览器 API)和 CTAP(认证器协议),实现抗钓鱼的无密码登录。
- identity-access№ 861
特权访问管理(PAM)
一套用于保护、控制、监控和审计具有管理员或更高权限账户与系统访问的实践与工具。
- defense-ops№ 606
横向移动
MITRE ATT&CK 战术 TA0008,涵盖攻击者从一个被攻陷主机扩展到环境中其他系统的各种技术。
- network-security№ 1087
SSH
RFC 4251 定义、运行在 22 端口的加密网络协议,在不可信网络上提供经过身份验证、加密且完整性保护的远程登录、命令执行与隧道。