如何讓開放端口更安全?
所有在防火墻和路由器上開放的端口都是一種安全風險。這也是一種稱之為"端口碰撞(port knocking )"技術的價值所在。端口碰撞技術是一種允許訪問預先配置好"碰撞"的防火墻服務的技術。所謂的碰撞是由一個嘗試訪問系統上關閉端口的序列組成。這些嘗試要么記錄在一個日志中,要么保存在一個后臺進程中,通過預先配置這個日志或者進程來監視打開相應端口的序列,如果嘗試序列與預先設置的序列相符合,就可以打開某個端口。 通過這種方式可以讓一個端口在需要的時候才打開,從而具有一定的技術優勢。對于黑客來說,很難在遠程利用處于關閉狀態端口的相關服務來攻擊系統。例如,對于遠程管理來說,在一個公開的服務器上開放SSH服務是很方便的,但是這也使得系統允許任何人都有可能嘗試訪問該系統。當然,對于這個端口的訪問,你可以給定一個IP地址范圍的限制,但是這樣一來,還是帶來了安全問題和訪問挑戰方面的問題。端口碰撞技術讓你在這兩個方面都會處理的很好:在大多數時間里,這個端口都是關閉的,但是知道這種方法的可以在任何時候任何地方打開這個端口。 概述 由于有些大家都很熟悉的服務存在一定的安全方面的問題,因此,大多數的的安全破壞都是從外網利用這些安全問題來實現的。FTP和SSH使用的是大家都很熟悉的端口,因此長期以來,這些服務一直都存在著各種各樣的攻擊方法。而在大多數情況下,這些服務都是讓內部用戶來使用的,因此內部用戶是使用端口碰撞技術的主要候選人。 很顯然,對于那些你需要公開的訪問服務,例如HTTP和SMTP服務,端口碰撞技術則不適合用于這種場合。因為網頁服務和電子郵件服務需要允許來自任何地方的連接。然而,對于所有其他的服務來說,最好的實際操作是將所有非必須的端口都關閉。因而,從存在安全方面的問題的角度來考慮,象SSH這樣一種非常有用的服務也常常需要處于關閉狀態。 這就是端口碰撞技術非常有用的地方。首先,通過探測技術是不會發現這種基于端口碰撞技術配置的服務器的。防火墻軟件將會自動拒絕所有的端口掃描或者任何直接連接嘗試。并且通過選擇一系列非連續的端口號來實現端口碰撞(我們將在隨后介紹),你可以減輕對安全問題的顧慮,因為一個標準的端口掃描器一般不太可能得到一個正確的碰撞序列。通過使用這種方法,在得到良好的安全性的同時,還可以實現遠程訪問。 你可能會問自己,我為什么需要這種方法?事實上你可能用不上這種技術。這種技術只是增加當前網絡的安全性,在可能存在的黑客和需要保護的服務之間創建一個不易覺察的安全層。如果遠程用戶不知道服務器在監聽一個特定的端口,那么你將大大減少通過這個端口危及系統的次數。更進一步地,遠程用戶不太可能確定服務器是否使用了端口碰撞技術,因此也不太可能來使用暴力嘗試來猜測正確地序列。 端口碰撞的細節問題 可以使用不同的方法來配置端口碰撞。你可以使用基于靜態端口序列的方式來實現授權訪問。例如,服務器可以這樣設置,在它按順序接收到與端口2033、3022、6712、4998、以及4113的連接嘗試后,打開TCP端口22。如果服務器接收到一個不正確的序列則關閉該端口,或者使用一個定時器來關閉該端口。