一年一度的“雙11”即將到來了!各家電商網(wǎng)站已經(jīng)使出“渾身解數(shù)”來刷屏做廣告,不斷刺激那些“剁手黨”的腦神經(jīng)。畢竟前期投入了巨額的資金,所以電商網(wǎng)站最怕網(wǎng)站因流量猛增導(dǎo)致宕機(jī)或者遭遇DDos攻擊。如果系統(tǒng)存在安全漏洞,導(dǎo)致用戶數(shù)據(jù)泄露,那就更要命了。
在當(dāng)今時代,IT技術(shù)更新迭代的速度很快,攻擊的方式也變得越來越隱蔽和致命,系統(tǒng)的安全問題被越來越多的企業(yè)所重視。如果電商網(wǎng)站“雙11”當(dāng)天出現(xiàn)安全問題,就會導(dǎo)致前期所有的資金都“打水漂”了。所以,我們需要給網(wǎng)站加上“保護(hù)盾”。以下列舉了5種安全問題的解決策略:
1. 全站上SSL,并且做SSL安全檢查
相信很多人都聽說過SSL和HTTPS。SSL是目前最常用的的一種安全解決方案,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,其中HTTPS中的“S”指的就是SSL。但是SSL也分三六九等,不是所有的SSL都是安全的。
如果實(shí)施SSL來加強(qiáng)網(wǎng)站的安全性,可以首先訪問https://www.ssllabs.com,在線檢查一下網(wǎng)站的安全等級。這也是國際上比較權(quán)威的一家認(rèn)證機(jī)構(gòu),當(dāng)然,不是所有的電商網(wǎng)站,都能夠達(dá)到A的評級。讀者感興趣的話,可以自己去動手去查詢一下,你可能會發(fā)現(xiàn)有幾個非常知名電商網(wǎng)站的安全等級并不是很高。
為什么SSL這么重要呢?因?yàn)镾SL證書不僅可以顯示網(wǎng)站的真實(shí)性,還可以在網(wǎng)站用戶輸入密碼與用戶名時對信息進(jìn)行加密,而不被黑客截取。即使能夠截取到也是密文,也看不到真實(shí)的用戶名與密碼。同時SSL還能夠有效抵御中間人攻擊。所以,如果我們訪問一個帶有SSL安全認(rèn)證的網(wǎng)站,從安全性考慮,對我們自己的數(shù)據(jù)安全是一種很好的保護(hù)策略。
如果想使用這種安全策略,那么就需要進(jìn)行SSL認(rèn)證。通過SSL認(rèn)證后,可以實(shí)現(xiàn)數(shù)據(jù)信息在客戶端和服務(wù)器之間的加密傳輸,可以防止數(shù)據(jù)信息的泄露。保證了雙方傳遞信息的安全性,而且用戶可以通過服務(wù)器證書驗(yàn)證他所訪問的網(wǎng)站是否是真實(shí)可靠。對于電商網(wǎng)站來說,高安全的加密技術(shù)及嚴(yán)格的身份驗(yàn)證機(jī)制可以確保部署SSL證書的網(wǎng)站安全可靠,所以建議電商網(wǎng)站在全站使用HTTPS,不要再用HTTP了。
這里也多補(bǔ)充一點(diǎn),就是谷歌2014年8月份,在其官方博客上就宣布他們將HTTPS/SSL納入其搜索算法機(jī)制中,采用HTTPS/SSL安全認(rèn)證的網(wǎng)站將會被谷歌給予更多的信任,從而有利于網(wǎng)站在谷歌搜索結(jié)果中的排名提升。
當(dāng)然,SSL證書也是國際通用的,目前主要國際上比較知名的有GlobalSign、VeriSign、GeoTrust這三家,筆者也發(fā)現(xiàn)了幾個新的認(rèn)證網(wǎng)站,包括Instant SSL、RapidSSL等等。
2. WAF:可以有效抵抗DDos攻擊,保障高可用
Web Application Firewall(WAF)也稱網(wǎng)站應(yīng)用級入侵防御系統(tǒng),利用國際上公認(rèn)的一種說法:Web應(yīng)用防火墻是通過執(zhí)行一系列針對HTTP/HTTPS的安全策略來專門為Web應(yīng)用提供保護(hù)的一款產(chǎn)品。
當(dāng)然,WAF也代表了一類新興的信息安全技術(shù),用以解決諸如防火墻一類傳統(tǒng)設(shè)備束手無策的Web應(yīng)用安全問題。因?yàn)閃AF工作在應(yīng)用層,因此對Web應(yīng)用防護(hù)具有先天的技術(shù)優(yōu)勢。基于對Web應(yīng)用業(yè)務(wù)和邏輯的深刻理解,WAF對來自Web應(yīng)用程序客戶端的各類請求進(jìn)行內(nèi)容檢測和驗(yàn)證,確保其安全性與合法性,對非法的請求予以實(shí)時阻斷,從而對各類網(wǎng)站站點(diǎn)進(jìn)行有效防護(hù)。WAF的特點(diǎn)主要包括異常檢測協(xié)議、增強(qiáng)的輸入驗(yàn)證、及時補(bǔ)丁、狀態(tài)管理等等,當(dāng)然WAF還有一些安全增強(qiáng)的功能,可以用來解決WEB程序員過分信任輸入數(shù)據(jù)帶來的問題。
目前國內(nèi)主要采用WAF這種解決方案的廠商有安全寶(已被百度收購)和加速樂(知道創(chuàng)宇系騰訊所投)。這兩家公司一個有了“親爹”,一個認(rèn)了“干爹”;,在行業(yè)內(nèi)的知名度也比較高。當(dāng)然,他們提供的產(chǎn)品也很類似,都能夠幫助企業(yè)客戶防范黑客入侵和DDoS攻擊,以及其他一系列針對Web系統(tǒng)的安全威脅。在保障網(wǎng)站的可用性方面,WAF的解決方案還是比較強(qiáng)的。
3. 保護(hù)數(shù)據(jù)安全:動態(tài)防御的安全解決方案RASP(實(shí)時應(yīng)用自我防護(hù))
RASP(Runtime Application Self-Protection)工作原理如下圖所示,這種安全策略在可疑行為進(jìn)入應(yīng)用程序時并不攔截,而是先對其進(jìn)行標(biāo)記,在輸出時再檢查是否為危險(xiǎn)行為,所以能夠大大減少誤報(bào)和漏報(bào)的概率。
RASP也是目前業(yè)界已知的對SQL注入防護(hù)最高的一種手段,而且識別率非常高,它能夠有效地解決電商網(wǎng)站的數(shù)據(jù)安全和泄露問題。眾所周知,對電商的而言,最重要的資產(chǎn)就是“數(shù)據(jù)”,如果數(shù)據(jù)篡改或者泄露,就會導(dǎo)致災(zāi)難性的后果。
由于RASP對技術(shù)的要求很高,目前國內(nèi)外真正做這個方面的公司極少。國外的廠商有Waratek,國內(nèi)也有一家公司OneASP在做此類的產(chǎn)品。他們主要提供了基于云的應(yīng)用程序自我保護(hù)服務(wù),能夠?yàn)檐浖a(chǎn)品提供實(shí)時保護(hù),使其免受安全漏洞所累。
4. 使用靜態(tài)檢查工具,在上線之前檢查代碼問題
靜態(tài)檢查工具就是在代碼上線之前,進(jìn)行充分的靜態(tài)檢查,也應(yīng)該把靜態(tài)檢查成為系統(tǒng)持續(xù)集成的一部分。比如數(shù)組越界或者空指針問題都可以使用靜態(tài)檢查工具來搞定。商業(yè)級的靜態(tài)檢查工具包括惠普的Fortify、IBM Security AppScan Source Edition、BugScout、Insight、Contrast from Contrast Security、Parasoft Test、Seeker等等。也有一家新興的公司Coverity,他們的產(chǎn)品能夠解決影響源代碼分析有效性的很多關(guān)鍵問題,諸如構(gòu)建集成、編譯兼容性、高誤報(bào)率、有效的錯誤根源分析等等。
其實(shí)大多數(shù)商業(yè)產(chǎn)品的功能上也很類似,只是支持的語言有所差別。當(dāng)然,這些產(chǎn)品有一個共同的特點(diǎn)就是“貴”,如果不想投入太多的話,也可以使用開源的產(chǎn)品。以下簡單介紹幾款比較知名的開源工具:
PMD:是一種開源分析Java代碼錯誤的工具,它附帶了許多可以直接使用的規(guī)則,利用這些規(guī)則可以找出源程序的許多問題。目前它支持 Java、JavaScript、PLSQL、Apache Velocity、XML、XSL等多種語言。
FindBugs:FindBugs是一個開源的靜態(tài)代碼分析工具,主要尋找java中的bug。它檢查類或者 JAR 文件,將字節(jié)碼與一組缺陷模式進(jìn)行對比以發(fā)現(xiàn)可能的問題。FindBugs的當(dāng)前版本是3.0.1,需要在JRE(或JDK)1.7.0或更高版本上才能運(yùn)行。
SonarQube:是一個用于代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量,可以從七個維度檢測代碼質(zhì)量;通過插件形式,可以支持包括java、C#、C/C++、PL/SQL、Cobo、JavaScrip、Groovy等等二十幾種編程語言的代碼質(zhì)量管理與檢測。
限于篇幅的原因,本文不再一一列舉,大家可以訪問維基百科中的Source Code Analysis Tools (源代碼分析工具)可以進(jìn)行詳細(xì)的了解。其中開源工具還包括谷歌的CodeSearchDiggity、微軟的PreFast和FxCop、RATS、OWASPSWAAT Project、Flawfinder、Brakeman、RIPS、Codesake Dawn、VCG等等。
不過,整體而言,由于靜態(tài)檢查工作無法在程序運(yùn)行時進(jìn)行檢查,所以存在一些“先天性”的不足,而且商業(yè)級的產(chǎn)品費(fèi)用過于昂貴,如果使用開源的產(chǎn)品,誤報(bào)率也很高。所以建議電商網(wǎng)站,可以作為一個安全策略的補(bǔ)充。如果電商網(wǎng)站“不差錢”的話,完全也可以部署使用商業(yè)級的解決方案。
5. 在主機(jī)上安裝“安全審計(jì)”,并且定期執(zhí)行
最后介紹一個“鮮為人知”的安全策略,就是在主機(jī)上安裝“安全審計(jì)”的組件。這種方式的好處在于:一旦發(fā)生變動,對系統(tǒng)進(jìn)行非法訪問的話,就會發(fā)生報(bào)警。對電商網(wǎng)站的系統(tǒng)管理員來說,為了保證系統(tǒng)的安全,每天都需要進(jìn)行軟件補(bǔ)丁管理、惡意軟件掃描、文件完整性檢查、安全審查、配置錯誤檢查等等工作。為了幫他們在“雙11”能夠稍微輕松一點(diǎn),這里推薦一款開源的安全審計(jì)工具Lynis。
Lynis能夠幫助系統(tǒng)管理員和安全顧問來評估Linux / Unix系統(tǒng)的安全等級。因?yàn)樗旧碇苯舆\(yùn)行在主機(jī)之上,所以它的性能要遠(yuǎn)超過一般的漏洞掃描功能。Lynis能夠運(yùn)行在幾乎所有的Unix版本上,包括AIX、FreeBSD、HP-UX、Linux、Mac OS、NetBSD、OpenBSD、Solaris等等。甚至還可以運(yùn)行在Raspberry Pi(樹莓派)或者QNAP的存儲設(shè)備上。
一旦lynis開始掃描系統(tǒng),它就會執(zhí)行許多類別的審查工作:包括系統(tǒng)工具,內(nèi)核,內(nèi)存和進(jìn)程,用戶、用戶組和驗(yàn)證,同時還有文件系統(tǒng)、存儲、數(shù)據(jù)庫、日志和文件等等。因?yàn)閘ynis有一個檢查列表,所以它執(zhí)行的非常詳細(xì),就像政府部門的審計(jì)工作一樣,非常的細(xì)致。但是需要定期執(zhí)行,并及時修補(bǔ)指出的問題,才能保證網(wǎng)站的高安全性。
關(guān)于作者
程顯峰,OneAPM公司首席運(yùn)營官,之前曾任積木盒子技術(shù)VP,擅長軟件研發(fā)團(tuán)隊(duì)的管理。作為知名技術(shù)顧問,曾服務(wù)于花旗銀行、藍(lán)色光標(biāo)、國家電網(wǎng)等多家大型集團(tuán)。致力于推動開源軟件在國內(nèi)的發(fā)展,是MongoDB和Docker技術(shù)在國內(nèi)早期的推動者,并翻譯有《MongoDB權(quán)威指南》和《深入學(xué)習(xí)MongoDB》等書籍。經(jīng)常在技術(shù)會議發(fā)表演講或擔(dān)任出品人,擁有悉尼大學(xué)碩士學(xué)位和哈爾濱工業(yè)大學(xué)學(xué)士學(xué)位。(責(zé)編/仲浩)