《網路安全體系結構》一1.8不要通過隱匿來提高系統的安全性

非同步社群發表於2017-05-02

本節書摘來自非同步社群《網路安全體系結構》一書中的第1章,第1.8節,作者【美】Sean Convery,更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視

1.8 不要通過隱匿來提高系統的安全性

網路安全體系結構
在翻閱介紹安全原則的出版物和報導時,你常常會聽到有人認為“通過隱匿實現的安全並不安全”。由於這個說法非常有名,因此該說法常常遭到誤解,並被當作各種安全問題的藉口或理由。讓我們考慮一個新的場景來更好理解這個公理。

紙幣是我們許多日常交易的基礎,偽造紙幣是大家關心的問題。國家本可以通過對生產紙纖維和墨水成份等材料的工藝進行保密來防止偽造鈔票,但是並沒有國家這麼做。實際上,政府採取了其他措施來增加了偽造貨幣的難度。這些方法包括水印、螢光油墨、能在紫外燈光下發光的聚合安全線和難以複製的縮微文字。在這個例子中,防止偽造的方式就不是依靠隱匿來實現的。不過,對於過兩天就能在美國財政部網站上看到印製100美元的詳細流程這一點,我也不抱什麼希望。
對於聰明的攻擊者來說,想要在公共網路中找到一樣工具(例如www.insecure.org上的nmap)來對防火牆取樣(fingerprinte)並以此摸清防火牆品牌並不難。因此,正確的安全心態不是保密這一資訊,而是讓防火牆正確地執行它的訪問控制功能。進一步說,如果發現了針對防火牆產品的攻擊時,必須迅速打上補丁。不要寄希望於也許沒人知道防火牆品牌,或針對某種技術的特殊攻擊方式不會奏效—這只是通過隱匿實現的安全。不過,倒也不用四處宣傳你的防火牆品牌,不用完全放棄針對防火牆品牌型號的保密工作。
前面的例子著重介紹了是否要對你所部署的安全技術和安全產品品牌進行保密。下一個例子旨在討論對你在網路中全面使用的某項安全技術進行保密所帶來的價值。

在過去幾年中,有相當多的方法旨在找到在網路中是否部署了NIDS。這樣做的目的是如果發現了NIDS,攻擊者可能會找到避免被掃描引擎探測到的方法。這種方法通常包括迫使NIDS狀態表錯誤表示目標系統所處的實際狀態,例如通過調整IP生存期(Time-to-Live)欄位或故意對資料包進行分片來試圖迷惑NIDS。知道你部署了NIDS的人有可能把這個訊息透露出去,那部署NIDS就沒有什麼意義了,因此對於NIDS的具體配置及其位置,你還是應該保密。這時,你的所作所為並不是“通過隱匿來實現安全”,因為這種做法是基本的常識。
注意 下面地址有一篇關於欺騙NIDS的優秀論文: http://secinf.net/info/ids/idspaper/idspaper.html

網路地址轉換(Network Address Translation,NAT)有時會被人錯誤地拔高為一種安全特性。實際上,它真正實現的功能是隱藏第3層的地址。當你在Internet閘道器上使用NAT時,仍然需要在這裡配置訪問控制。真正的狀態化防火牆可以提供第3層和第4層上的訪問控制,也能提供一些更復雜的功能,例如序列號驗證、分片濫用檢查和IP選項誤用識別。雖然這些功能與NAT無關但還是應該使用,因為黑客有可能偽裝轉換後的地址。在進行多對一的轉換時,也要考慮到類似的問題。詳細內容參見第6章,瞭解為何不能信任NAT的安全功能。
警告 由於使用者執行的應用程式會試圖通過你放行的埠(例如TCP埠80)封裝隧道,因此NAT(在一定程度上,也包括防火牆)會降低你整個網路的安全性,它會使流量分類更加困難。當然,大部分情形下防火牆的優點還是大於缺點,但在設計訪問控制策略時要了解這些問題。

這些示例的目的旨在說明確保你的設計儘可能不被他人所知的重要性。以加密為例:在安全領域中,加密是一種得到了廣泛應用的方式,它的做法是將演算法公開給所有的人,同時確保自己的金鑰足夠強健,而不是寄希望於攻擊者不瞭解加密採用的演算法。

但這並不代表你可以公開一切。這裡強調的是,隱匿的方式不值得依賴。如果對一些特性或設計元素進行保密不會造成管理負擔,保密也不無裨益。但如果隱匿會加重管理負擔,通常不值得為這點額外的利好而實施隱匿。

例如,對裝置上的登入標識進行保密幾乎不會造成管理困難,因此不妨這樣去做。對你的系統設計和裝置選型保密也是個不賴的選擇。不過,讓所有內部簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)伺服器在TCP埠2525上執行而不是在TCP埠25執行,這樣做就不值得提倡了。因為這種做法必須修改所有主機應用程式,才能讓它們使用新的埠,這隻會讓你不斷接到客戶的求助電話,或者讓你一次又一次撥通安全廠商的求助電話。


相關文章