恰好今天看到所用的ssh代理服務(wù)供應(yīng)商開始在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. 從密碼學(xué)角度上講,Obfuscation(混淆)指的是在將所輸入的數(shù)據(jù)發(fā)送至哈希公式或者其他加密公式 前對其進行編碼,該技術(shù)使得暴利破解難以見效,因為要確認正確的明文非常困難。
概念蠻繞口的,然后我那爛翻譯也……不過意思還是很清楚的,實際上就是將handshake易容,這樣怪物就看不出來數(shù)據(jù)傳輸用的ssh協(xié)議了,然后ssh代理滿血歸來。
2. 解決方案
牛人Bruce Leidl為openssh寫了個很給力的補丁。它可以在創(chuàng)建加密SSH連接時將握手信號(handshake)進行混淆處理。這樣一個加密的握手信號就可以騙過怪物所用的深度包檢測設(shè)備,順利完成使命,進而保證了網(wǎng)絡(luò)的安全性與穩(wěn)定性。
(1)準備
你需要有一臺位于怪物控制范圍的Linux服務(wù)器,然后在服務(wù)器上配置好Obfuscated-openssh補丁。
Obfuscated-openssh點此下載,然后執(zhí)行下述命令編譯安裝:
./configure make make install
建議將其與常規(guī)的SSH守護進程分開安裝。
(2)配置
作為SSH代理的話,沒有必要讓用戶通過ssh登陸服務(wù)器,因此需要將此部分權(quán)限給限制掉,讓用戶只能使用SOCKS代理。要做到這點,需要創(chuàng)建專用的用戶賬號。
以下即為添加一個名為“golengssh”而密碼為“goleng.com”用戶的命令,該用戶無法遠程登入服務(wù)器。
sudo useradd -m -s /usr/sbin/nologin -p goleng.com golengssh