雖然筆者提倡采用一種基于原則的方法來維護系統安全,并不重視所謂典型的“最佳方法”的檢查清單,但這并不意味著安全檢查的清單一文不值。采用一個安全的過程檢查清單是保障資源安全的唯一首要措施。有時,一個安全檢查列表在影響安全策略方面也是很有用的。
這里要解決一些Web站點上及Web服務器上非常普通的一些安全問題。因為一些差勁的安全方法的使用頻率如此之高,筆者覺得有必要收集一些很好方法來正確地解決這些問題,并使其對Web服務器管理員、Web開發人員和Web站點管理員都可用。對于那些還沒有在管理Web資源方面考慮過這些因素的人員來說,筆者建議你還是盡早地解決還沒有考慮的有關問題。
1. 登錄頁面必須加密
有很多次,筆者看到一些站點在用戶的認證完成后僅使用SSL(即在URL中使用https協議),這真令人不安。在登錄之后實施加密有可能有用,這就像把大門關上以防止馬兒跑出去一樣,不過他們并沒有對登錄會話加密,這就有點兒像在你鎖上大門時卻將鑰匙放在了鎖眼里一樣。即使你的登錄會話被傳輸到了一個加密的資源,在許多情況下,這仍有可能被一個惡意的黑客攻克,他會精心地偽造一個登錄表單,借以訪問同樣的資源,并訪問敏感數據。
2. 數據有效性、合法性檢查必須在服務器端完成
許多Web表單包含一些JavaScript的數據合法性、有效性檢查。如果這種合法性檢查包括目的在于提供改善的安全性的任何內容, 那么這種合法性檢查幾乎毫無用處。一個惡意的黑客可以在網頁的表單活動中偽造一個自己的表單,而這并不會包括任何的合法性檢查。更糟的是,在許多情況下,通過在瀏覽器中禁用JavaScript或使用一個并不支持JavaScript的瀏覽器,這種JavaScript的有效性、合法性檢查就形同虛設。有時,筆者看到一些登錄頁面的口令合法性檢查是在客戶端完成的,這會將口令暴露給終端用戶,他可以查看頁面的源代碼;或者,這種頁面允許終端用戶調整表單以使其總可以報告成功的合法性檢查。請不要讓你的網站安全成為客戶端數據合法性檢查的犧牲品。而服務器端的合法性和有效性檢查并不存在客戶端檢查的缺點,因為黑客必須獲得對服務器的訪問權才能損害它。
3. 通過加密連接管理你的站點
使用不加密的連接(或僅使用輕度加密的連接),如使用不加密的FTP或HTTP用于Web站點或Web服務器的管理,就會將自己的大門向“中間人”攻擊和登錄/口令的嗅探等手段敞開大門。因此 請務必使用加密的協議,如SSH等來訪問安全資源,要使用經證實的一些安全工具如OpenSSH等。否則,一旦某人截獲了你的登錄和口令信息,他就可以執行你可做的一切操作。
4. 使用強健的、跨平臺的兼容性加密
根據目前的發展情況,SSL已經不再是Web網站加密的最先進技術。可以考慮TLS,即傳輸層安全,它是安全套接字層加密的繼承者。要保證你所選擇的任何加密方案不會限制你的用戶基礎。同樣的原則也適用于后端的管理,在這里SSH等跨平臺的強加密方案要比微軟的Windows遠程桌面等較弱的加密工具要更可取、更有優越性。
5. 從一個安全有保障的網絡連接
避免從安全特性不可知或不確定的網絡連接,也不要從安全性差勁的一些網絡連接,如一些開放的無線訪問點等。無論何時,只要你必須登錄到服務器或Web站點實施管理,或訪問其它的安全資源時,這一點尤其重要。如果你連接到一個沒有安全保障的網絡時,還必須訪問Web站點或Web服務器,就必須使用一個安全代理,這樣你到安全資源的連接就會來自于一個有安全保障的網絡代理。
6. 不要共享登錄的機要信息
共享登錄機要信息會引起諸多安全問題。這不但適用于網站管理員或Web服務器管理員,還適用于在網站擁有登錄憑證的人員,客戶也不應當共享其登錄憑證。登錄憑證共享得越多,就越可能更公開地共享,甚至對不應當訪問系統的人員也是如此;登錄機要信息共享得越多,要建立一個跟蹤索引借以跟蹤、追查問題的源頭就越困難,而且如果安全性受到損害或威脅因而需要改變登錄信息時,就會有更多的人受到影響。
7. 采用基于密鑰的認證而不是口令認證
口令認證要比基于密鑰的認證更容易被攻破。設置口令的目的是在需要訪問一個安全的資源時能夠更容易地記住登錄信息。不過如果使用基于密鑰的認證,并僅將密鑰復制到預定義的、授權的系統(或復制到一個與授權的系統相分離的獨立介質中,直接需要它時才取回。),你將會得到并使用一個更強健的難于破解的認證憑證。
8. 維護一個安全的工作站
如果你從一個客戶端系統連接到一個安全的資源站點,而你又不能完全保證其安全性,你就不能保證某人并沒有在監聽你所做的一切。因此鍵盤記錄器、受到惡意損害的網絡加密客戶以及黑客們的其它一些破壞安全性的伎倆都會準許某個未得到授權的個人訪問敏感數據,而不管網絡是否有安全措施,是否采用加密通信,也不管你是否部署了其它的網絡保護。因此保障工作站的安全性是至關重要的。
9. 運用冗余性保護網站
備份和服務器的失效轉移可有助于維持最長的正常運行時間。雖然失效轉移可以極大地減少服務器的宕機時間,但這并不是冗余性的唯一價值。用于失效轉移計劃中的備份服務器可以保持服務器配置的最新,這樣在發生災難時你就不必從頭開始重新構建你的服務器。備份可以確保客戶端數據不會丟失,而且如果你擔心受到損害系統上的數據落于不法之徒手中,就會毫不猶豫地刪除這種數據。當然,你還必須保障失效轉移和備份方案的安全,并定期地檢查以確保在需要這些方案時不至于使你無所適從。
10. 確保對所有的系統都實施強健的安全措施,而不僅運用特定的Web安全措施
在這方面,可以采用一些通用的手段,如采用強口令,采用強健的外圍防御系統,及時更新軟件和為系統打補丁,關閉不使用的服務,使用數據加密等手段保證系統的安全等。
以上并非保障Web安全的全面措施,而是一些網站容易忽略的或已經出錯的基本方面。您不妨對照檢查一下。


