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