文/鄭海山
廈門大學重大活動時期網站安全防護手冊
文/鄭海山
在大型活動保障期間,為了提高網站的安全性,較少運維壓力,信息部門會選擇盡量關閉一些存在安全隱患的網站,縮小需要運維的機器的數(shù)量,把保障力量集中于最重要的部分系統(tǒng)和服務器上。門戶網站作為學校的第一入口,往往是攻擊者的首要目標。如何提高門戶網站的安全性成為大型活動保障的重要工作。
將整個網站靜態(tài)化,可以規(guī)避服務端動態(tài)腳本語言帶來的諸如SQL注入、權限繞過、XSS、CSRF等安全風險,然而靜態(tài)化并不能完全規(guī)避所有風險。通常意義的靜態(tài)化方法指的是純HTML和圖片、JavaScript、CSS代碼,而前端JavaScript還是有動態(tài)執(zhí)行的代碼。一般現(xiàn)在的網站群也會生成靜態(tài)網頁,網站群系統(tǒng)生成的靜態(tài)網頁與產品高度耦合,中間件不能隨意變更,操作系統(tǒng)補丁如果更新到最新可能會對網站功能造成影響。如果能搭建一個純靜態(tài)的網站,安全性必將更高。本文將介紹如何打造高安全性的靜態(tài)網站的方法和靜態(tài)網站面臨的安全問題和防護手段。
一個網站頁面,從服務器到瀏覽者之間會經過非常多步驟,中間任何一個環(huán)節(jié)都有可能被攻擊。防護應當考慮所有環(huán)節(jié),包括引入的安全設備是否同時也會引入安全隱患等。一般來說,只要做好靜態(tài)化,基本上不會被普通的攻擊者攻擊,本文提到的一些防護措施存在重復和無效的可能,然而基于縱深防御的概念,通過多層重疊的安全防護達到冗余的結果,即使某一個防線由于技術失誤造成失效,也可以通過其他防御彌補。
如果網站本身是由網站群系統(tǒng)生成的靜態(tài)化頁面,則可以直接在網站群生成的靜態(tài)化頁面服務器上做好安全防護。通過URL重寫技術的偽靜態(tài)與動態(tài)頁面的安全性一樣,這些站點可以使用wget開源軟件一條命令鏡像整個站點。對于靜態(tài)頁面還必須做以下內容方面的檢查:
1.如果網頁文本本身帶有惡意文本,靜態(tài)化會將其原封不動的鏡像過來??梢酝ㄟ^漏洞掃描工具掃描關鍵字和隱藏文本來檢查。
2.JavaScript文件是否官方下載,是否已經被植入了惡意代碼??赏ㄟ^重新在官方下載或者使用程序MD5檢查所有的第三方JavaScript代碼。
3.是否引用了其他站點的圖片或JavaScript。如果其他站點圖片內容被篡改,會導致網站也被篡改。檢查圖片是否帶有隱藏信息。
4.是否引用了IFrame嵌入第三方網站內容。
網站應當對靜態(tài)化友好,為了讓鏡像網站可以在本地或者服務器上直接瀏覽,wget會更改頁面的HTML后綴名,可能導致JavaScript腳本運行不正常。wget也會更改URL的相對路徑和絕對路徑。所以做完靜態(tài)化后應當多次檢查,如果有需要,應當調整原始網站模板,或者在wget后使用腳本語言改寫內容,使得靜態(tài)化可以持續(xù)自動化執(zhí)行,使得動態(tài)網站的更改可以更快反應到靜態(tài)網站上。
一旦做好了相對安全的靜態(tài)網站后,針對可能的攻擊可以再實現(xiàn)以下縱深防御。
1.網絡層面
網站服務器網絡層面的攻擊包括可能DNS解析被修改導致瀏覽者訪問了攻擊者偽造的網站,可能IP被同VLAN攻擊者控制的服務器搶占,或者是同VLAN被攻擊者控制的服務器發(fā)動ARP攻擊導致網頁內被嵌入其他內容。對于網絡層面的防護,應當加強DNS服務器的管理,保證DNS服務器的安全性,同時盡量減少同VLAN內服務器的數(shù)量,在服務器和交換機上綁定IP和MAC信息,同時使用HTTPS傳輸減少被篡改的風險。
2.操作系統(tǒng)和HTTP服務器層面
操作系統(tǒng)應當使用最新的版本,最小化安裝,所有安全補丁更新到最新。啟用嚴格的防火墻。可以在網絡層面限制服務器主動對外發(fā)起連接,定期安全更新可采用HTTP代理更新。HTTP服務器應當最小化安裝,去除不需要的模塊,隱藏HTTP服務器版本。
對于服務器的其他防護,以Linux為例,安裝多個開源安全軟件。可在服務器安裝Lynis、OpenScap等進行配置核查,使用nmap進行掃描,安裝ClamAV定期檢查病毒,安裝chkrookit或RootKit Hunter定期查后門。
對于可能的DDoS攻擊和慢連接攻擊,應當臨時性調高靜態(tài)服務器的CPU和內存資源,調大HTTP服務器的連接數(shù),減小超時時間,做好緩存,使用Fail2ban、mod_evasive、mod_reqtimeout、mod_qos等模塊做好資源限制。
對于掃描攻擊的防御,可以安裝OSSEC、mod_security等檢測攻擊。
3.文件目錄
通常的防篡改軟件能防止頁面所在的目錄不被篡改,但是無法預防通過修改HTTP服務器配置文件指向其他目錄或者直接寫Python腳本用HTTP服務的情況,所以以上的防護應當交由操作系統(tǒng)來執(zhí)行。對于文件目錄的防篡改,可以安裝開源OSSEC、Tripwire等軟件檢查篡改情況,同時可以設置wwwroot只讀,不可執(zhí)行,甚至可以為wwwroot目錄單獨分區(qū),在掛載時在/etc/fstab內設置只讀,或者使用chattr +i設置目錄只讀。
4.安全設備
即使服務器已經做好了安全防護,也應當在網絡層面增加WAF、IPS、防火墻、防DDoS等安全設備增加安全性。應當使用漏洞掃描設備對服務器和網站內容進行漏洞掃描。需要注意的是,由于WAF安全設備需要接管客戶端和服務器之間的通信并進行阻斷等操作,應當保證WAF服務器的安全性,注意WAF緩存可能帶來的影響。
5.防篡改云服務
購買第三方的遠程頁面防篡改提醒服務。防篡改提醒服務提供商會從世界各地訪問被監(jiān)控網站,發(fā)現(xiàn)篡改行為會通過電話、短信、郵件等多渠道通知。需要注意的是防篡改必須檢查所有頁面的所有內容(JavaScript、圖片、CSS)的修改,并且修改比例應當為0%。也可自行在互聯(lián)網云平臺搭建防篡改檢查程序,通過定期爬蟲下載所有內容進行MD5比對和修改通知。
6.管理人員
相關的管理人員應當做好安全培訓,保證管理終端的安全性,不使用盜版軟件,不安裝不必要的瀏覽器插件,啟用強密碼規(guī)則,管理客戶端專用,關閉外網訪問,對服務器的管理采用堡壘機。
7.演練、應急預案和巡檢
大型活動保障期間應當定期巡檢,安排人員24小時值班,并做好事前演練和應急預案。巡檢內容包括以上所有做過的安全防護軟件運行情況,系統(tǒng)更新狀態(tài)。檢查各個軟件的運行狀態(tài)和結果分析,檢查系統(tǒng)賬戶、性能、進程、端口、啟動項、病毒、后門、漏洞掃描結果、WAF和IPS攔截日志。查看日志傳輸是否完整,備份是否正常查看,各個服務器的通常運行狀況。檢查所有軟件和安全設備的軟硬件工作狀態(tài),配置更改情況。對攻擊IP進行封禁等。并做好配置變更和巡檢報告。
1.使用Ansible等自動化配置工具
為確保操作系統(tǒng)、HTTP服務器的安全配置靈活,方便檢查配置和審計,方便系統(tǒng)重建,減少人為失誤和變更工作量。應當使用Ansible、Puppet等自動化配置工具自動配置整個服務器環(huán)境。同時也可以使用Ansible等腳本執(zhí)行自動化巡檢任務。
2.一鍵斷網
為了減少被攻擊后傳播所造成的不良影響,應當有一鍵斷網措施。一鍵斷網可以從傳輸?shù)母鱾€層面上執(zhí)行。比如在操作系統(tǒng)增加防火墻、關機、在Web服務器設定訪問某個特定頁面自動關閉服務器;虛擬機關閉網絡;實體機拔掉網線;網關使用ACL控制、網關關機;網絡層面WAF、IPS、防火墻攔截。在出現(xiàn)疑似攻擊后應當盡快將服務器下線,檢查無誤后方才上線。
3.應對虛假攻擊
由于網絡傳輸?shù)逆溌愤^長,各個環(huán)節(jié)都可能造成網站疑似被攻擊,比如云DNS投毒、CDN投毒、客戶端本身ARP攻擊、客戶端接入商隨意插入廣告甚至被人截圖后PS修改等。如發(fā)現(xiàn)應當及時下線,并執(zhí)行檢查,如果確定非自身因素則應當及時上線,并在頁面上顯著位置公布以消除不良影響。
4.攻擊溯源
安全措施無法做到百分百安全,在攻擊發(fā)生后,為了為下一次工作積累經驗,同時收集犯罪證據(jù),應當做好攻擊溯源準備。應當保存好所有相關日志。比如網絡設備日志、安全設備日志、主機日志等。所有的日志應當進入專門的遠程日志服務器。服務器做到分鐘級別的備份以防止攻擊者擦除攻擊痕跡。
5.網站關閉的通知頁面
對于一些存在安全隱患而被暫時性下線的網站,可使用應用交付設備或者把DNS導入到一個特定的通知頁面,以減少突然給對網站管理員和瀏覽者帶來的不便。同時為避免臨時性替換網站頁面內容導致搜索引擎刪除原有網站信息,通知頁面應當返回503 HTTP狀態(tài)碼,也可根據(jù)恢復時間指定Retry-After返回值。
通過以上的安全防護,可以大大提高門戶網站的安全性,減少在大型活動保障期間的運維壓力。以上措施也可實施于動態(tài)網站,然而動態(tài)網站還需要其他包括代碼審計等安全措施。由于存在管理人員和0day漏洞等的風險,所有的安全措施無法做到百分百安全,只能是提高攻擊者攻擊的難度,同時,網站還應根據(jù)政策法規(guī)要求做好備案和信息系統(tǒng)安全等級保護等工作。
(責編:王左利)
為廈門大學信息與網絡中心)