文/王玉平
Web內(nèi)容安全指南
——以Drupal為例
文/王玉平
2017年6月1日,《中華人民共和國網(wǎng)絡(luò)安全法》正式頒布實施,其中明確提出對關(guān)鍵信息基礎(chǔ)設(shè)施保護,避免其受攻擊、侵入、干擾和破壞,維護網(wǎng)絡(luò)空間安全和秩序。在網(wǎng)絡(luò)空間中,最直接受到影響也是最容易攻擊的就是各類Web站點。針對該項法律法規(guī),很多高校采取了各類措施,如嚴格按照等保制度來定級測評整改、在網(wǎng)絡(luò)拓撲結(jié)構(gòu)中增加Web應(yīng)用防火墻、安裝防篡改軟件以及部署站群系統(tǒng)等,但是其中最根本的核心在于站點和站群系統(tǒng)本身是否有漏洞,是否安全有缺陷,這一點因為不是通過購買系統(tǒng)或服務(wù)就可以解決的,也就在各類整改措施中很少提及。本文以Drupal為例來講解一個安全的內(nèi)容管理系統(tǒng)應(yīng)該具備的幾個特性,供高校同行參考。
根據(jù)維基百科的描述,Drupal是一個由Dries Buytaert創(chuàng)立的自由開源的內(nèi)容管理系統(tǒng),用PHP語言寫成。在業(yè)界,Drupal常被視為內(nèi)容管理框架(CMF),而非一般意義上的內(nèi)容管理系統(tǒng)(CMS)。整套平臺把所有內(nèi)容視為一個“節(jié)點”(node),背后由大量“模塊”(module)控制其顯示、修改、排列、分類等方式。這種設(shè)計令Drupal不只可以創(chuàng)建普通的博客網(wǎng)站,只要配合適當組件,控制內(nèi)容顯示及處理權(quán)限的方式,它馬上能變成論壇、Wiki、社區(qū)網(wǎng)絡(luò)。迄今,Drupal的社區(qū)已編寫了超過24,000個模塊(module)。至2017年6月,全球約有2.3%的網(wǎng)站均由Drupal制作,在內(nèi)容管理系統(tǒng)中約占7%。Drupal在政府組織、教育機構(gòu)、開源社區(qū)中得到廣泛應(yīng)用。
安全是Drupal社區(qū)非常關(guān)注的一個方面。Drupal社區(qū)有一個安全工作小組,該小組會發(fā)布安全公告,并對現(xiàn)有Drupal核心和模塊進行安全審計,若是代碼有安全問題,則會提醒系統(tǒng)用戶進行更新。大部分模塊都會被安全公告覆蓋,在下載模塊時,Drupal會提醒用戶該模塊是否已經(jīng)被列入安全公告范圍。
Drupal的更新分為兩類:普通更新和安全更新。如果是不涉及安全問題的普通升級,則不會主動提醒用戶系統(tǒng)有更新;若是涉及到安全更新,系統(tǒng)會對所有具有發(fā)布內(nèi)容權(quán)限的用戶在界面醒目的位置進行提醒,從而讓管理員盡快升級該安全漏洞。
根據(jù)國家信息系統(tǒng)等級安全防護能力的要求,一個二級系統(tǒng)需要包含安全審計、邊界完整性檢查、入侵防范、資源控制以及通信保密性等控制點。身份鑒別則要求在系統(tǒng)的整個生命周期,每一個用戶具有唯一標識,使用戶對自己的行為負責,具有可查性。同時,要求訪問控制具有更細的訪問控制粒度等。管理方面,增加了審核和檢查、管理制度的評審和修訂、人員考核、密碼管理、變更管理和應(yīng)急預(yù)案管理等控制點。而三級系統(tǒng)的要求則重點在網(wǎng)絡(luò)惡意代碼防范、剩余信息保護等方面。
一個安全內(nèi)容管理系統(tǒng)應(yīng)該具有以下幾個方面功能:
1.提供編碼標準。在互聯(lián)網(wǎng)社區(qū)大環(huán)境下,一個優(yōu)秀的CMS系統(tǒng)由很多開發(fā)者共同參與開發(fā),這就需要有一個規(guī)范的代碼編寫標準。即便是商用公司產(chǎn)品,開發(fā)公司也需要在團隊中普及編碼標準,并嚴格要求代碼工程師按照標準進行編寫,從而在編碼層面盡量杜絕安全漏洞。Drupal作為開源社區(qū)軟件,參與者眾多,為此提供了代碼標準(https://drupal.org/ coding-standards),編寫安全代碼(https:// drupal.org/writing-secure-code)和可訪問性代碼編寫最佳實踐(https://drupal.org/ node/1637990)。
2.源代碼審計。開源軟件在源代碼審計方面具有先天優(yōu)勢,目前大部分開源軟件在github.com上進行源代碼托管,任何人都可以參與項目代碼審計,可以對代碼提出自己的建議和修改請求,這種通過人海戰(zhàn)術(shù)進行的源代碼復(fù)核是最有效的方式,但卻因為沒有固定的分工而容易對部分代碼缺失眾人復(fù)核。但是組織架構(gòu)良好的開源項目,其代碼本身是有復(fù)核的。另外,一個完善的項目中應(yīng)該引入自動化代碼審計工具,對于常見的SQL注入、跨站腳本攻擊、CSRF、文件操作、代碼命令執(zhí)行、變量覆蓋、會話認證以及邏輯處理等漏洞代碼進行審計。Drupal作為開源軟件,本身提供了模塊代碼編寫指南,提供了防止低級漏洞錯誤的封裝函數(shù),防止開發(fā)人員任意編寫代碼造成漏洞。此外,Drupal提供了代碼審計模塊Coder來對用戶開發(fā)的模塊進行自動化審計,并給出修改建議。這個是目前國內(nèi)CMS系統(tǒng)缺少的。
3.運行時安全審核。一個內(nèi)容管理系統(tǒng)的正常運行需要操作系統(tǒng)、Web應(yīng)用服務(wù)器、內(nèi)容管理系統(tǒng)、文件、數(shù)據(jù)庫的多方面支持。因此,內(nèi)容管理系統(tǒng)的安全性不能只看內(nèi)容管理系統(tǒng),還需要嚴格審計操作系統(tǒng)、Web應(yīng)用服務(wù)器以及其他多方面的安全加強。從縱向來說,內(nèi)容管理系統(tǒng)建設(shè)部署時安全,后續(xù)運行一段時間后,需要持續(xù)保障安全,持續(xù)檢查安全。這一點是很多內(nèi)容管理系統(tǒng)缺失的,很多系統(tǒng)在部署后,通過各類漏洞掃描設(shè)備進行掃描,通過安全等級評定,即認為安全,后續(xù)只管內(nèi)容維護。而Drupal系統(tǒng)認為安全是一個持續(xù)的過程,隨時可能會因為各種操作而產(chǎn)生安全隱患,譬如臨時文件目錄具備了可執(zhí)行權(quán)限,系統(tǒng)配置文件可寫屬性沒有去掉,這些都是Drupal在運行時需要檢查的,并及時在顯著位置提醒管理員修改安全隱患。此外,Drupal還提供了多個安全監(jiān)測模塊以及安全指導(dǎo)建議模塊,這些模塊對于安全防范技術(shù)能力不強的管理者來說,提供了有力的指導(dǎo)和規(guī)范建議,從而確保普通管理員也可以提供一個安全的內(nèi)容管理系統(tǒng)。
4.用戶行為審計功能。一個完善的內(nèi)容管理系統(tǒng),還需要對用戶所有操作進行審計,以便后續(xù)追蹤事件的發(fā)生過程,定位事件責任人。目前市面上流行的內(nèi)容管理系統(tǒng)已經(jīng)具備該項審計功能。但是普通的內(nèi)容管理系統(tǒng)的查詢功能基本局限于系統(tǒng)內(nèi)部,而Drupal的審計日志可以集成到其他日志服務(wù)器,譬如syslog服務(wù)器,便于在其他系統(tǒng)中集成監(jiān)控分析。
5.有效的內(nèi)容過濾機制。內(nèi)容管理系統(tǒng)的安全不僅體現(xiàn)在系統(tǒng)的安全上,還體現(xiàn)在內(nèi)容的安全上。根據(jù)國家涉密機密信息管理辦法,涉密信息一律不準上網(wǎng)。另外,內(nèi)容管理系統(tǒng)應(yīng)當杜絕發(fā)布非法信息、不當言論以及敏感事件信息。因此內(nèi)容管理系統(tǒng)需要添加必要的敏感詞過濾機制。在過濾主體方面,一則信息所涉及的標題、正文和附件等可填寫內(nèi)容都應(yīng)加入過濾功能,有效防止不當用戶發(fā)布受限內(nèi)容。Drupal提供了多個模塊(如word filter、Profanity、Bad Word Filter等)進行敏感詞過濾。
6.及時的安全公告機制。無論軟件開發(fā)商如何努力去完善修改系統(tǒng),都不可避免產(chǎn)生安全漏洞。一旦出現(xiàn)安全漏洞,及時的告知是非常必要的。所以一個安全的內(nèi)容管理系統(tǒng)應(yīng)具備周期性檢查安全通知公告的功能,官方應(yīng)當提供安全公告列表和郵件列表,以便及時通知管理員升級系統(tǒng)。在這方面,部分軟件供應(yīng)商沒有提供該項功能,僅僅是在被廣而告之有漏洞時才對現(xiàn)有系統(tǒng)進行升級維護,修正漏洞。Drupal安全工作小組則采取了及時發(fā)布安全通知,系統(tǒng)自身周期性檢查安全公告,以郵件和系統(tǒng)顯著位置通知的形式提醒管理員盡快升級系統(tǒng)。
一個安全的內(nèi)容管理系統(tǒng)不僅體現(xiàn)在開發(fā)部署階段,也體現(xiàn)在系統(tǒng)運維階段,完善的系統(tǒng)部署過程、優(yōu)秀的規(guī)章制度、最佳的操作指南都是保障系統(tǒng)安全不可或缺的過程。本文針對內(nèi)容管理系統(tǒng)在安全保障方面進行了探討,提出了多個方面的建議,但隨著技術(shù)的發(fā)展,破壞手段也層出不窮,內(nèi)容管理系統(tǒng)應(yīng)及時作出應(yīng)用的調(diào)整和完善,這樣才能持續(xù)保障一個內(nèi)容管理系統(tǒng)的安全。
(責編:王左利)
(作者單位為上海海事大學(xué)信息化辦公室)