“拯救網站運維趙明”—網站安全的外圍防護調整方案
原創【51CTO.com獨家特稿】有很多人都認可“沒有Web,就沒有Internet”。Web 服務是一種可以用來解決跨越網絡應用集成問題的開發模式,這種模式為實現“軟件作為服務”提供了技術保障。觀看了趙明同學設計的網絡拓撲結后,我只能說這個哥們的膽子是在太大了,在沒有任何防御手段前,就干利用一臺負載均衡器直接掛接在Internet上,看來他抽煙還是抽的少。而“軟件作為服務”實質上是一種提供軟件服務的機制,這種機制可以在網絡上暴露可編程接口,并通過這些接口來共享站點開放出來的功能。可是在很多情況下,Web應用程序及 Web站點往往易遭受到各種各樣的攻擊,數據在網絡傳輸過程中也很容易被竊取或盜用。
Web的外圍防御何等重要
◆Web服務的安全涉及了很多內容,我們可以從他可能受到的攻擊上看,例如對WEB應用程序的破壞、繞過驗證與Session驗證、獲取管理權限、獲取資源、針對主機漏洞與WEB安全漏洞攻擊、跨站腳本攻擊及SQL注射攻擊等等。另外,硬件與物理環境的錯誤,也都會導致資源無法被客戶端訪問到。安全面的Web安全防御要從以下幾個方面入手,構建出一個安全的防御架構:
◆資源保護:對于重要資源,如數據庫中或文件系統上的數據;物理環境,如UPS供電、磁盤冗余、雙機冗余;Internet訪問接口的訪問控制,數據的授權與認證訪問。
◆威脅和威脅建模:所有類型的威脅包括網絡威脅、主機威脅、與應用的威脅;重點放在Web應用的威脅,如:SQL注入、跨網站腳本、輸入篡改、劫獲會話等;掌握威脅建模的方法與步驟,使你能系統地全面地了解Web應用可能的威脅。
◆程序缺陷與服務漏洞:包括操作系統在某方面的弱點或特性,以及它有可能造成威脅的發生。網絡、主機或應用程序編寫過程中可能存在缺陷。
◆攻擊與對策:100%的安全是不存在的,當某人或者設備采取的危害資源的行為之后,應對威脅、減小危險的安全措施。最后是應急響應、犯罪證據的取證,以及災難恢復工作的執行效率。
缺少防火墻保護
趙明連最基本的防護都沒有建立起來,我想還是讓我們也從最基礎的安全設備來慢慢解決問題吧。我試問趙明一個問題,如今的網絡中,還有那個網絡是沒有防火墻的呢?
防火墻是指設置在不同網絡(如可信任的企業內部網和不可信的公共網)或網絡安全域之間的一系列部件的組合。大多數對外部提供服務的Web服務器都放在DMZ區域或內部網絡中,對外部和內部用戶授予不同的訪問權限。對于配備了專用防火墻的網絡,此項任務可以在防火墻上完成,這樣可以減輕路由器的負擔。對于沒有配備專用防火墻的簡易網絡,采用動態分組過濾技術建立對重要服務器的訪問限制就顯得尤為重要。
圖:最普通的硬件防火墻內部結構
當然,無論是基于路由器實現,還是在防火墻上完成設置,首先都應該制定一套訪問規則。如:允許外部用戶到Web服務器的向內連接請求,已經允許Web服務器到外部用戶的向外答復等等。在多數的網絡中,我們不可能將Web主機直接曝露在Internet上,所以使用NAT(Network Address Translation,網絡地址翻譯)技術,將局域網中Web服務器的內部地址翻譯成合法的Internet IP地址使用,這是提高Web主機安全性的普遍做法。
反向代理與防火墻的集成應用
不過話又說回來了,即使使用了防火墻技術,我們還有可能遭受入侵攻擊導致服務器癱瘓或網頁被篡改,這是因為無法避免Web服務器的真實數據暴露在網絡外部。而大多管理員都在使用包過濾型的防火墻保護對外發布Web的信息,但傳統意義上的包過濾防火墻有很多弊病,歸納起來有三點:
◆通信方面:包過濾防火墻只能訪問部分數據包的頭信息;
◆狀態監管:包過濾防火墻是無狀態的,所以它不可能保存來自于通信和應用的狀態信息;
◆信息處理:包過濾防火墻處理信息的能力是有限的。
比如,教科書上都講IIS Unicode攻擊,以及最近流行的“注入技術”,因為這種攻擊是選擇了防火墻所允許的80端口,而包過濾的防火墻無法對數據包內容進行核查,此時防火墻等同于虛設,即使在防火墻的屏障之后,也會被攻擊者輕松拿下超級用戶的管理權限。
另外一種做法就是使用反向代理技術,反向代理服務器可以避免有效的減少上述攻擊。它對外就表現為一個Web服務器,不同之處在于的這個服務器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程序,都保存在內部的Web服務器上。因此對反向代理服務器的攻擊并不會使得網頁信息遭到破壞,這樣就增強了Web服務器的安全性。
反向代理方式和包過濾方式或普通代理方式并無沖突,因此可以在防火墻設備中同時使用這兩種方式,其中反向代理用于外部網絡訪問內部網絡時使用,正向代理或包過濾方式用于拒絕其他外部訪問方式并提供內部網絡對外部網絡的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。
綜合反向代理功能和普通拒絕外部訪問的普通防火墻軟件相結合,就能構成一個既具有保護內部網絡、又能對外提供Web信息發布的能力的防火墻系統。由于反向代理能力需要軟件實現,因此不能使用現有的防火墻系統,需要使用相關軟件進行開發改進。Unix顯然是首選平臺,我們基于FreeBSD系統,提出一種基于ipfw、natd與squid的防火墻設置方式。其中ipfw可以基于ip地址、端口、協議等對ip包進行過濾,natd提供網絡地址轉換功能,這樣就隱藏了內部網絡的拓撲等信息,ipfw和natd結合就構成了強大的包過濾網關。而squid是Internet上最流行的Web代理服務器之一,雖然它提供的是普通的正向代理能力,但其為開放源代碼軟件,并且具有強大的可配置性,因此很容易可以將其更改為反向代理服務器。
網絡架構的調整與部署
針對趙明設計的拓撲,如下圖:
我們可以從客戶端的角度(正常訪問和黑客攻擊)重新修改此網絡結構,做到外圍安全調整的目的。基本順序為:客戶端 →防火墻→負載均衡器→反向代理(緩存)→WEB服務器→數據庫服務器,其結構如下:
假設,原來設計上的負載均衡服務器采用了Nginx,那么這個網站就可以建立在“混元”或者是硬件“防火墻+開源”的基礎上重新設計和部署,例如采用:
◆Cisco的防火墻:建立基本Web通信和訪問防護
◆eAccelerator:加速PHP引擎,同時也可以加密PHP源程序
◆memcache:用于高速緩存常用數據
◆libevent:memcache工作機制所需
◆MySQL:原數據庫
◆Nginx:用做負載均衡器
◆Squid:做反向代理的同時提供專業緩存功能防止網頁篡改 至此,我已經大致的Web外圍防護中的一些概念、用途以及實現的方法,而基于篇幅的原因,有一些內容需要趙明自行去查閱更多的技術資料才能找到答案,不過也都是以上這些軟件具體的安裝步驟了。但愿趙明能夠“軟硬兼施”,確保網站的安全運維。
【51CTO.COM 獨家特稿,轉載請注明出處及作者!】
【編輯推薦】