在SSH代理中实现秘密握手的方法
恰好今天看到所用的ssh代理服务供应商开始在server上部署和测试obfuscation功能,以增强抵御某怪物干扰用户正常使用ssh代理的能力。
1. 原理
以下是isp提供的说明:
in cryptography, obfuscation refers to encoding the input data before it is sent to a hash function or other encryption scheme. this technique helps to make brute force attacks unfeasible, as it is difficult to determine the correct cleartext. 从密码学角度上讲,obfuscation(混淆)指的是在将所输入的数据发送至哈希公式或者其他加密公式 前对其进行编码,该技术使得暴利破解难以见效,因为要确认正确的明文非常困难。
概念蛮绕口的,然后我那烂翻译也……不过意思还是很清楚的,实际上就是将handshake易容,这样怪物就看不出来数据传输用的ssh协议了,然后ssh代理满血归来。
2. 解决方案
牛人bruce leidl为openssh写了个很给力的补丁。它可以在创建加密ssh连接时将握手信号(handshake)进行混淆处理。这样一个加密的握手信号就可以骗过怪物所用的深度包检测设备,顺利完成使命,进而保证了网络的安全性与稳定性。
(1)准备
你需要有一台位于怪物控制范围的linux服务器,然后在服务器上配置好obfuscated-openssh补丁。
obfuscated-openssh点此下载,然后执行下述命令编译安装:
建议将其与常规的ssh守护进程分开安装。
(2)配置
作为ssh代理的话,没有必要让用户通过ssh登陆服务器,因此需要将此部分权限给限制掉,让用户只能使用socks代理。要做到这点,需要创建专用的用户账号。
以下即为添加一个名为“golengssh”而密码为“goleng.com”用户的命令,该用户无法远程登入服务器。