查看單個文章
舊 2005-12-12, 12:13 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 如何讓開放的連接阜port更安全~~~~

允許遠端訪問伺服器上的服務如SSH,同時可以維護伺服器的安全性。


所有在防火牆和路由器上開放的連接阜都是一種安全風險。這也是一種稱之為"連接阜碰撞(port knocking )"技術的價值所在。連接阜碰撞技術是一種允許訪問預先組態好"碰撞"的防火牆服務的技術。所謂的碰撞是由一個嘗試訪問系
統上關閉連接阜的序列組成。這些嘗試要麼記錄在一個日誌中,要麼儲存在一個後台工作中,通過預先組態這個日誌或者工作來監視開啟相應連接阜的序列,如果嘗試序列與預先設定的序列相符合,就可以開啟某個連接阜。

通過這種方式可以讓一個連接阜在需要的時候才開啟,從而具有一定的技術優勢。對於黑客來說,很難在遠端利用處於關閉狀態連接阜的相關服務來攻擊系統。例如,對於遠端管理來說,在一個公開的伺服器上開放SSH服務是很方便的,但是這也使得系統允許任何人都有可能嘗試訪問該系統。當然,對於這個連接阜的訪問,你可以給定一個IP位址範圍的限制,但是這樣一來,還是帶來了安全問題和訪問挑戰方面的問題。連接阜碰撞技術讓你在這兩個方面都會處理的很好:在大多數時間裡,這個連接阜都是關閉的,但是知道這種方法的可以在任何時候任何地方開啟這個連接阜。

概述
由於有些大家都很熟悉的服務存在一定的安全方面的問題,因此,大多數的的安全破壞都是從外網利用這些安全問題來實現的。FTP和SSH使用的是大家都很熟悉的連接阜,因此長期以來,這些服務一直都存在著各種各樣的攻擊方法。而在大多數情況下,這些服務都是讓內部用戶來使用的,因此內部用戶是使用連接阜碰撞技術的主要候選人。

很顯然,對於那些你需要公開的訪問服務,例如HTTP和SMTP服務,連接阜碰撞技術則不適合用於這種場合。因為網頁服務和電子郵件服務需要允許來自任何地方的連接。然而,對於所有其他的服務來說,最好的實際操作是將所有非必須的連接阜都關閉。因而,從存在安全方面的問題的角度來考慮,像SSH這樣一種非常有用的服務也常常需要處於關閉狀態。

這就是連接阜碰撞技術非常有用的地方。首先,通過探測技術是不會發現這種關於連接阜碰撞技術組態的伺服器的。防火牆軟體將會自動拒絕所有的連接阜掃瞄或者任何直接連接嘗試。並且通過選項一系列非連續的連接阜號來實現連接阜碰撞(我們將在隨後介紹),你可以減輕對安全問題的顧慮,因為一個標準的連接阜掃瞄器一般不太可能得到一個正確的碰撞序列。通過使用這種方法,在得到良好的安全性的同時,還可以實現遠端訪問。

你可能會問自己,我為什麼需要這種方法?事實上你可能用不上這種技術。這種技術只是增加當前網路的安全性,在可能存在的黑客和需要保護的服務之間新增一個不易覺察的安全層。如果遠端用戶不知道伺服器在監聽一個特定的連接阜,那麼你將大大減少通過這個連接阜危及系統的次數。更進一步地,遠端用戶不太可能確定伺服器是否使用了連接阜碰撞技術,因此也不太可能來使用暴力嘗試來猜測正確地序列。

連接阜碰撞的細節問題
可以使用不同的方法來組態連接阜碰撞。你可以使用關於靜態連接阜序列的方式來實現使用權訪問。例如,伺服器可以這樣設定,在它按順序接收到與連接阜2033、3022、6712、4998、以及4113的連接嘗試後,開啟TCP連接阜22。如果伺服器接收到一個不正確的序列則關閉該連接阜,或者使用一個定時器來關閉該連接阜。監控防火牆日誌的後台工作在截獲這些被拒絕的嘗試後,將在防火牆中增加一個新的防火牆規則來開啟必要的連接阜,使用權用戶訪問該連接阜。

還可以使用動態組態技術來開啟連接阜。首先,你需要建立一個連接阜集合,在本文的例子中,我們將使用連接阜1040到連接阜1049。通過提供一個開始序列--例如1042、1044、1043--隨後,對於你希望開啟的連接阜,你可能還需要給伺服器提供相應的接收訊息。在序列1042、1044、以及1043後,你需要讓伺服器知道你想讓它開啟連接阜443。之所以採用這種設計,是為了增加開啟不同伺服器必要連接阜的靈活性和選項而不需要採用靜態組態。

加密通信可能也可以增加額外層次的安全性。如果你擔心別人嗅探你的資料包或者擔心有人盜竊你的碰撞序列的話,採用這種加密方式將非常有益。對於連接阜碰撞來說,使用加密技術是一種最安全的方法,並且我們將在隨後的文章中看到,加密技術是在原型中經常使用的一種方法。

使用knockclient和knockdaemon
Portknocking.org公司已經用Perl語言實現了連接阜碰撞技術,現在可以從該公司的網站下載這個工具。文件portknocking-0.1.tgz中包含knockclient和knockdaemon兩個程序。該版本允許遠端用戶開啟連接阜0到255,並且自動使用Crypt::Blowfish執行加密工作。你只需要在遠端系統上使用必要的指令選項來使用knockclient程序即可。例如,要在遠端系統上開啟特定IP上的連接阜22,你可以使用這樣的指令:knockclient -client 192.168.0.1 -remote 10.1.42.1 -port 22 -time 0。

在這個例子中,我們要開啟IP位址為10.1.42.1的伺服器上的連接阜22,並且只允許IP位址為192.168.0.1d的主機與這個伺服器之間只能有一個連接。由於-time的標幟為0,因此我們要開啟的連接阜在開放時間上沒有限制。如果time的時間為255的話,那麼該指令就是要關閉這個連接阜。其他從1到254之間的time值表示連接阜開啟的時間(以分鍾計算)。在knockclient和knockdaemon之間的共享密碼用於加密碰撞序列,並且使得遠端主機和本機主機之間的訊息只有他們自己能夠理解。另外,在這種實現中,要使用遠端主機的連接阜745 到連接阜1000。伺服器的連接阜開啟之後,需要關閉遠端主機的這些連接阜,並且防火牆的日誌需要開啟。然後後台工作預設狀態下就會監聽這些連接阜的8個碰撞。Perl模式 File::Tail 用於檢測增加到防火牆日誌上的新的行訊息,並且knockdaemon將會分析這些行訊息。

雖然這僅僅是一個原型,但是卻執行的很好。很顯然,連接阜碰撞技術的核心是遠端主機發起的碰撞序列是否能夠開啟一個連接阜。寫出這樣的一個程序或者將其加入到當前可用的資源中是一件並不困難的事情,並且可以很容易的實現各個系統的設定。例如,如果訪問一個NATIP位址,你可以根據碰撞序列來組態原則,實現動態轉發對內部主機的SSH訪問。另外,根據你的組態,使用連接阜碰撞技術還可以實現制作備份或者執行其他的作業。

總結
連接阜碰撞技術對於增加一層看不見的認證來說還是非常有益處的。只有提供了正確的連接阜序號的用戶才可以有一次獲得可用服務如SSH等的機會。這使得伺服器可以具有從任意IP--如一個移動或者動態的IP--上接受連接的能力,並且可以新增一定的信任等級--這種信任關於遠端系統知道正確的碰撞序列。對於那些已經實現了比較好的安全性的伺服器來說,連接阜碰撞技術是一種最好的補充。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次