一家互聯(lián)網(wǎng)金融公司的安全保護實踐

前言

我們是一家普通的 P2P 網(wǎng)貸平臺,隨著用戶量和交易量的上漲,十幾個人的研發(fā)團隊面臨了很大的挑戰(zhàn)。雙十一開始,平臺受到了不少黑客的攻擊,保證安全的重任也落到了我們研發(fā)團隊的身上。
看到過一個數(shù)字,在2014年,超過160家 P2P 平臺由于黑客攻擊造成系統(tǒng)癱瘓、數(shù)據(jù)被惡意篡改、資金被洗劫一空。為了讓平臺更好的抵御外部侵襲,我們做了很多努力,下面就分享下我們在安全保護方面的一些實踐。

成熟的企業(yè)主要通過以下幾個方面的工作來保障安全:

  • 制定代碼規(guī)范和安全代碼規(guī)范,培訓相關開發(fā)人員熟悉代碼規(guī)范,在源頭保障代碼質量
  • 制定統(tǒng)一開發(fā)模板,確保每個人編寫 code 格式一致
  • 進行嚴格的功能設計,技術設計,架構設計和代碼的評審,確保設計和代碼質量
  • 在代碼提交時用類似 checkstyle 等工具對代碼規(guī)范進行檢查,確保代碼規(guī)范。
  • 使用代碼靜態(tài)、動態(tài)分析工具進行掃描,比如 Java 使用 Findbugs,PWD 等工具。
  • 最后就是購買商業(yè)掃描工具進行漏洞檢測。比如 Qualys 是特別好的漏洞掃描工具

不過感覺做了這么多,其實還是不能確保平臺的安全。第一、項目中通常會使用大量的第三方軟件,包括開源的和商業(yè)軟件,這些軟件漏洞不是自己能掌控的。其次、所有的檢查都是有局限性和時效性的,只能確保修復這些軟件掃描出來的漏洞,無法保障運行時新出現(xiàn)的漏洞,而通常這些新的攻擊也會經(jīng)常遇到。

而且在我們這種創(chuàng)業(yè)公司,這些安全方式很難實踐。作為 P2P 的平臺,尤其是在創(chuàng)業(yè)階段,要求產(chǎn)品的迭代周期非常的快,實現(xiàn)功能和保障質量是第一優(yōu)先級。人才招聘也是非常難的一件事情,尤其是找到能書寫安全代碼的程序員幾乎是不可能的事情。如何保障產(chǎn)品安全,讓我們一直非常頭疼。沒有足夠的資源和時間,來按照大公司的安全實踐來保障產(chǎn)品的安全。但是安全又是互聯(lián)網(wǎng)金融產(chǎn)品至關重要的事情,一旦受到攻擊,進而導致信息泄密或者數(shù)據(jù)庫破壞,后果不堪設想。

于是我們嘗試了以下兩種方法:

第一種是通過流程和靜態(tài)、動態(tài)掃描工具來確保代碼符合安全規(guī)范。因為面對功能和上線的壓力,再加上程序員的實操能力,都使我們的嘗試沒辦法較好的實施。通過代碼質量來保障安全,就是0和1的游戲,減少漏洞是唯一的選擇。沒有漏洞被發(fā)現(xiàn)就是1,發(fā)現(xiàn)一個漏洞并被利用就是0。

第二種是通過掃描和滲透工具,感覺應該是一種方便快捷的方式。它從使用者的角度來攻擊系統(tǒng),這樣的攻擊是非常實時和有針對性的。

我們使用了幾種在線的掃描工具:

1.阿里的掃描工具: http://sts.aliyun.com/ ,經(jīng)過掃描是安全的。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

2.百度云測 http://ce.baidu.com/ ,掃描結果同樣是安全的。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐
一家互聯(lián)網(wǎng)金融公司的安全保護實踐

3.這樣的結果讓我們非常疑慮,沒有經(jīng)過安全流程考驗的代碼居然沒有任何安全問題,我有點懷疑這些掃描工具的效果了。于是下載了Nessus家庭版安裝到本地,對我們的服務平臺進行掃描,結果也并不理想,沒有發(fā)現(xiàn)特別有意義的漏洞。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

4.還有一種解決方案就是購買Web應用程序防火墻(WAF)。但通常 WAF 非常昂貴,比較好的 WAF 一般在幾十萬上下。這對一般的創(chuàng)業(yè)企業(yè)是一筆很大的開支。我們暫時還下不了這個決心去購買。

使用這些掃描器后沒有發(fā)現(xiàn)嚴重的問題,并沒有讓我們安心。

憑經(jīng)驗感覺,沒有經(jīng)過嚴格安全流程的代碼是不可能沒有漏洞的。于是我們就想通過類似 SQL 注入的工具,通過單項滲透測試來檢查是否有漏洞。在百度上搜索「sql注入」的關鍵字,發(fā)現(xiàn)了一種實時應用防護的方式 RASP。以前也曾經(jīng)關注過國外這方面的資訊,沒有想到,國內(nèi)公司現(xiàn)在也有了類似產(chǎn)品 OneRASP,于是趕緊 down 下來試試。

團隊經(jīng)過頭腦風暴,決定把 Nessus 和 OneRASP 結合起來。Nessus 作為攻擊方,將 OneRASP 放入到應用程序中,作為防御方(只啟動監(jiān)控模式),這樣應該能夠找到平臺的一些漏洞。說干就干,安裝過程還是挺簡單的。
首先需要注冊一個賬號,然后下載一個探針,將探針解壓到tomcat目錄下。配置catalina.bat:set CATALINA_OPTS="-javaagent:C:\Users\one\Downloads\agent_a3483efc-a4ed-4a86-bde1-910012383309\OneAppDefender\lib\RaspAgent.jar %CATALINA_OPTS%"。最后重啟tomcat就 ok 了。

好了,萬事俱備。看看效果怎么樣。啟動 Nessus 對加了探針的程序再次進行掃描,毫無疑問,得到的掃描結果沒有什么變化。不過我們最關心的還是 OneRASP 抓到什么內(nèi)容,于是登錄官網(wǎng)進入后臺頁面。心里還真有點小激動,頁面雖然非常簡單,但是抓到了不少漏洞,沒有讓我們的努力白費。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

所有漏洞一目了然,最有價值的就是可以將漏洞定位到應用程序的代碼行。比如SQL注入發(fā)生在哪一行代碼里面,是哪個 SQL 語句造成的,一目了然。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

跨站攻擊發(fā)生在那個 JSP 頁面也非常清楚。

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

有了這些信息,程序員就可以非常方便的知道,去哪行代碼里面修改這個漏洞。然后我們下載了幾個比較好的掃描工具,比如 Qualys,ZAP,AppScan 等,分別對我們的程序(綁定 OneRASP 探針)進行掃描,兩天時間所有漏洞全部修復完畢。

通過這種組合掃描/修復的方式,對我們產(chǎn)品的安全性信心提高了很多,同時對 RASP 這種方式也充滿了興趣。掃描工具畢竟是只能針對固定的攻擊手段,在實際的環(huán)境里攻擊手段是多種多樣的。很多攻擊是有針對性的攻擊,不是掃描工具能夠覆蓋的。

既然在監(jiān)控模式下能檢查出這么多的問題,能不能把它放在我們的生產(chǎn)環(huán)境呢?任何東西放入生產(chǎn)環(huán)節(jié)都是有風險的,可能影響我們系統(tǒng)的性能以及穩(wěn)定性。為了避免這種風險,我們對注入 OneRASP 安全探針的系統(tǒng)進行為其兩天的高并發(fā)性能和壓力測試,結果和官方性能報告出入不大。對內(nèi)存、CPU 和響應時間的影響在 5% 左右,沒有發(fā)生系統(tǒng)崩潰和內(nèi)存泄露問題。系統(tǒng)啟動時間增加了 4% 左右,這種性能消耗完全可以接受。以下是性能數(shù)據(jù):
內(nèi)存影響:

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

CPU 影響(我們這個程序對CPU使用比較高):

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

我們將 OneRASP 應用到線上環(huán)境,為了避免誤殺,啟用了監(jiān)控模式運行了大概一個禮拜。結果真是讓我們大吃一驚,一個禮拜的時間發(fā)現(xiàn)了不少攻擊行為,幸好問題都不算太嚴重。在確認沒有誤殺的情況,我們開啟了保護模式。到現(xiàn)在為止基本沒有導致性能和系統(tǒng)問題,防護效果也挺不錯。下圖是初期監(jiān)控模式下,半個小時的攻擊情況:

一家互聯(lián)網(wǎng)金融公司的安全保護實踐

經(jīng)過這么多的嘗試,發(fā)現(xiàn)將 OneRASP 的產(chǎn)品和掃描工具結合起來,應用在開發(fā)和測試階段,是一種有效的滲透檢測手段。目前我們在持續(xù)使用,很容易上手,不需要專業(yè)的安全管理人員,而且不需要購買額外的服務器和修改任何應用程序代碼。

重點是,目前還免費開放使用,這對我們這種創(chuàng)業(yè)公司來說,是非常贊的。OneRASP 在非常短的時間里,可以將代碼安全等級提升一個檔次。不過唯一的代價,就是額外消耗一些系統(tǒng)資源。不足的地方就是,現(xiàn)在支持的保護規(guī)則偏少,只有 XSS、SQL 注入、已知漏洞掃描工具檢測等6 種。而且頁面設計交互性不強,沒有自定義規(guī)則等。不過對于大多數(shù)創(chuàng)業(yè)公司來講,第一階段的應用防護應該夠用了。

【編者按】本文經(jīng)過作者同意,已經(jīng)授權 OneAPM 官方技術博客進行轉載和發(fā)布。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 第五章 漏洞掃描 作者:Justin Hutchens 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 盡管可以...
    布客飛龍閱讀 4,506評論 1 7
  • 自從 Web 應用能給訪問者提供豐富的內(nèi)容之后,黑客們就把目光轉向任何他們能夠破壞,損毀,欺騙的漏洞。通過網(wǎng)絡瀏覽...
    OneAPM閱讀 280評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,301評論 25 708
  • 網(wǎng)絡安全是指網(wǎng)絡系統(tǒng)的硬件、軟件及其系統(tǒng)中的數(shù)據(jù)受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、泄露,系統(tǒng)連...
    不吃土豆的洋芋閱讀 3,260評論 0 42
  • 進入《自我仁慈》練習的最后一周,讓我們學習“用和父母不一樣的方式對待自己” 曾飽受忽視的人,常會看著那些很有動力照...
    子祐閱讀 411評論 0 1