安全強化
在電腦安全領域中的安全強化(hardening)也稱為安全固化,是指減少系統的攻擊表面,提昇系統安全性的作法。若系統的功能越多,攻擊表面就越大。理論上單一功能的系統會比多功能的系統要安全。減少攻擊可能性的方式一般包括有更換預設密碼、移除不必要的軟體、不必要的用戶或是登入、關閉或是移除不必要的服務。
依照NIST的定義,安全強化是指:「利用增加漏洞的修補程式,關閉不必要的服務來消除攻擊表面的作法。」[1]
有許多對Unix及Linux系統安全強化的方式。這些包括有在內核增加像是Exec Shield或是PaX的修補程式,關閉通訊埠、架設入侵檢測系統(IDS)、防火牆及入侵預防系統(IPS)。不過也有來源認為防火牆、入侵檢測系統及入侵預防系統不算是安全強化。
也有用來安全強化的腳本語言和工具,像是Lynis、 Bastille Linux、Solaris系統的JASS以及Apache/PHP Hardener,這些工具可以在組態檔案中關閉不必要的功能,或是進行其他保護性的措施。
目的
實務上,安全強化的目的有以下幾點:
- 減少漏洞被利用的可能性
- 減少可能的攻擊方式
- 在駭客攻擊成功後,減少其可用的工具
- 在駭客攻擊成功後,減少其可取得的權限
- 增加系統偵測駭客攻擊的能力
安全強化也可能會降低系統的複雜度以及維護時需要花的心力,這也可以看成安全強化的另一個目的,可以增加系統受控的程度,減少管理錯誤的可能性。
二進制強化
二進制強化(Binary hardening)是一種分析並且修改二進制文件以避免常見暴露的安全技術。二進制強化和編譯器無關,和工具鏈(toolchain)有關。例如,有一種二進制強化技術是偵測潛在的緩衝區溢位,將已有的程式改為較安全的程式。處理二進制檔的優點是可以直接處理既有程式碼的漏洞,不需要其原始碼(原始碼可能已無法取得或是不完整。再者,相同的技術可以應用在由多個編譯器產生的二進制檔中,其中可能有些是比較不安全的。
二進制強化常伴隨著非確定性的,對控制流及指令位置的修改,其目的是避免駭客可以復用程式碼來進行攻擊。常見的強化技術有:
- 緩衝區溢位保護
- 堆疊溢位保護
- 地址無關執行檔及位址空間配置隨機載入
- Binary stirring(亂數化基礎區塊的地址)
- Pointer masking(避免代碼注入)
- 控制流亂數化(避免control flow diversion)
相關條目
參考資料
外部連結
- Hardening Your Computing Assets (PDF). [2023-12-13]. (原始內容存檔 (PDF)於2023-12-13). at globalsecurity.org