恰好今天看到所用的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點此下載,然後執行下述命令編譯安裝:
復制代碼代碼如下:./configure make make install
建議將其與常規的SSH守護進程分開安裝。
(2)配置
作為SSH代理的話,沒有必要讓用戶通過ssh登陸服務器,因此需要將此部分權限給限制掉,讓用戶只能使用SOCKS代理。要做到這點,需要創建專用的用戶賬號。
以下即為添加一個名為“golengssh”而密碼為“goleng.com”用戶的命令,該用戶無法遠程登入服務器。
復制代碼代碼如下:sudo useradd -m -s /usr/sbin/nologin -p goleng.com golengssh