新聞中心
互聯(lián)網(wǎng)公司工作,很難避免不和黑客們打交道,我呆過的兩家互聯(lián)網(wǎng)公司,幾乎每月每天每分鐘都有黑客在公司網(wǎng)站上掃描。

創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,行業(yè)涉及成都純水機(jī)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
有的是尋找 Sql 注入的缺口,有的是尋找線上服務(wù)器可能存在的漏洞,大部分都是各個(gè)黑客檢測工具來掃描,當(dāng)然更高級一點(diǎn)的入侵需要很多人工協(xié)助。
一般情況下,網(wǎng)站被黑客入侵都是因?yàn)殚_發(fā)人員平時(shí)沒有安全意識導(dǎo)致的,厲害的黑客往往會對平臺的業(yè)務(wù)和內(nèi)部流程非常熟悉,很多漏洞是從邏輯上分析出來的。
當(dāng)然了,所有的黑客攻擊行為都是有目的,99% 都是因?yàn)槠渲须[藏著暴利。比如2015-2017年,很多互聯(lián)網(wǎng)金融公司遭遇黑客敲詐,最后都是打錢了事。
今天給大家分享的是,去年一家公司發(fā)生的事情。
1.一個(gè)客戶反饋操作很慢引發(fā)的事件
第 1 天
2018年的某一天,客服接到個(gè)別用戶反饋,公司某款 App 操作時(shí)某個(gè)界面響應(yīng)很慢,客服將此問題反饋給了公司的相關(guān)技術(shù)人員。
技術(shù)人員接到這個(gè)反饋之后,在生產(chǎn)環(huán)境多次測試并沒有復(fù)現(xiàn)這個(gè)問題,于是給客戶反饋有可能是網(wǎng)絡(luò)的問題,可以換個(gè)網(wǎng)絡(luò)再試試。
第 2 天
客服接到更多用戶反饋,手機(jī)操作某個(gè)功能時(shí)很慢,最長時(shí)間要等待超過 1 分鐘??头謱⑾嚓P(guān)信息反饋到技術(shù),并且將問題級別提高了一級。
技術(shù)這邊將問題上升到技術(shù)經(jīng)理,開始排查問題原因,技術(shù)經(jīng)理通過大量測試發(fā)現(xiàn),這個(gè)緩慢現(xiàn)象在測試 10 次會復(fù)現(xiàn) 1 次。
看來又是一個(gè)偶現(xiàn)的問題,偶現(xiàn)的 Bug 是最難處理的,技術(shù)經(jīng)理帶著研發(fā)人員在服務(wù)器調(diào)了一下前端業(yè)務(wù)日志,分析之后也沒有找到具體的原因。
第 3 天
公司有一個(gè)核心代理商將此問題反饋到技術(shù)老總,老總安排技術(shù)總監(jiān)來關(guān)注此問題。技術(shù)總監(jiān)要求把訪問路徑的關(guān)鍵節(jié)點(diǎn)都打上日志,看看具體是哪部分操作慢了。
經(jīng)過技術(shù)經(jīng)理的排查,是在 App 操作某一個(gè)功能的時(shí)候出現(xiàn)偶發(fā)性的慢,但是這塊的操作也有緩存作為支撐,緩存的使用率并不是很高。
既然問題是偶發(fā)并且后面的緩存使用率并不高,那么應(yīng)該不是程序哪塊出現(xiàn) Bug 了,應(yīng)該是其它方面的問題,遂要求排查是否是服務(wù)器問題。
先給大家畫一下一張圖,方便大家了解一下技術(shù)背景。
前端用戶使用手機(jī)操作某一個(gè)功能時(shí),請求經(jīng)過防火墻路由器分發(fā)到最前端的 Nginx,Nginx 又通過均衡負(fù)載分發(fā)到后面的五臺業(yè)務(wù)服務(wù)器。
業(yè)務(wù)操作的時(shí)候需要調(diào)用一組數(shù)據(jù),這些數(shù)據(jù)會根據(jù)業(yè)務(wù)規(guī)則緩存到背后的緩存服務(wù)器集群中,用來緩解后端數(shù)據(jù)庫的壓力。
第 4 天
經(jīng)過和運(yùn)維人員配合調(diào)查發(fā)現(xiàn),在分發(fā)的這 5 臺業(yè)務(wù)服務(wù)器中,其中有 1 臺服務(wù)器的壓力比較大,凡是請求分發(fā)到這臺服務(wù)器的時(shí)候就會出現(xiàn)慢的情況。
因?yàn)榫€上的服務(wù)器已經(jīng)用了很多年,懷疑是不是服務(wù)器配置老化導(dǎo)致的問題,隨后將壓力比較大的服務(wù)器進(jìn)行下線,無縫切換到新的服務(wù)器上。
過了半個(gè)小時(shí)后繼續(xù)觀察,又發(fā)現(xiàn)另外的一臺服務(wù)器也出現(xiàn)負(fù)載壓力大的問題。后面變了很多方案,比如減少到 3 臺服務(wù)器來支撐,或者增加到 9 臺服務(wù)器來支撐。
總是切換半個(gè)小時(shí)到兩個(gè)小時(shí)的時(shí)候,其中的 1-2 臺服務(wù)器的壓力會突然上來,一直保持比較高的訪問量,經(jīng)過這些測試排除是服務(wù)器的問題。
緊接著排除 Nginx 是不是分發(fā)的策略有問題,導(dǎo)致某個(gè)服務(wù)器分發(fā)的請求過多,試著變了幾次 Nginx 的分發(fā)策略后,還是會復(fù)現(xiàn)出問題,排除 Ngingx 分發(fā)異常。
第 5 天
技術(shù)人員繼續(xù)跟蹤,負(fù)載壓力比較高的服務(wù)器線程 Down 出來和正常的服務(wù)器對比,發(fā)現(xiàn)在負(fù)載壓力比較大的服務(wù)器上某個(gè)線程的調(diào)用數(shù)量異常的高。
再繼續(xù)跟蹤這個(gè)線程,原來是某一個(gè)忘記密碼的功能被頻繁的調(diào)用,忘記密碼應(yīng)該是一個(gè)普通的接口,為什么會被這樣高頻率的調(diào)用呢?
然后再繼續(xù)跟蹤是哪些 IP 在頻繁的調(diào)用這些接口,不跟蹤不知道,一跟蹤嚇一跳,把調(diào)用最頻繁的 Top 100 IP 列出來查了一下,發(fā)現(xiàn)都是國外的 IP。
什么 巴黎、孟買、菲律賓、泰國,幾乎所有的外國的IP都有,但是作為一家國內(nèi)的第三方支付公司,怎么可能會出現(xiàn)國外的 IP 呢?
大家都知道在手機(jī)上填忘記密碼的時(shí)候,絕大部分平臺都是使用手機(jī)號作為其中的一個(gè)條件,如果你沒有在這家平臺注冊,那么就會反饋手機(jī)號不存在。
這是一個(gè)非常常見的功能,但是對于黑客來講,這個(gè)功能夠暴利了。
很多同行業(yè)的競爭者需要挖角其它公司客戶,但是怎么知道這些平臺的客戶有哪些?
直接通過這個(gè)接口,暴力破解就可以了。
是不是很黃很暴力!
因?yàn)楣咎幚淼臉I(yè)務(wù)都是國內(nèi)業(yè)務(wù),所以只要直接在 Nginx 寫腳本,把所有來自國外的IP 都給屏蔽,可以暫時(shí)解決被國外 IP 攻擊的問題。上線后果然消停了,服務(wù)器也不過載了,App 訪問也正常了。
第 6 天
可能黑客過了一晚上也反應(yīng)過來了,又開始使用國內(nèi)的服務(wù)器代理 IP 高頻調(diào)用此接口,既然黑客使用了國內(nèi)的 IP 地址,肯定不能把國內(nèi) IP 都封了吧。
不過在 Nginx 之后還有一個(gè)前置服務(wù)器,在前置服務(wù)器中加一個(gè)非常簡單的過濾器:設(shè)置一個(gè) IP 地址在某個(gè)時(shí)間段內(nèi)(可配置)只能訪問此接口 5 次,即可解決此問題。
然后再以用戶為維度加限制,一個(gè)用戶在某個(gè)時(shí)間段內(nèi)(可配置)只能訪問此接口 5 次。
上面這些手段都上完之后,一切都安靜了,再也沒有出現(xiàn)過服務(wù)過載或者用戶反饋操作反應(yīng)慢的問題了。
但是如果黑客有足夠多的國內(nèi) IP 呢,為了防止出現(xiàn)這樣的問題,我們再接著對產(chǎn)品進(jìn)行升級,來防止黑客的這種可能性。
我們都知道現(xiàn)在很多 APP 頁面,為了方便用戶操作在忘記密碼的時(shí)候沒有圖形驗(yàn)證碼,或者有圖形驗(yàn)證碼卻比較簡單可以機(jī)器破解。
所以需要升級新一代的智能驗(yàn)證措施,現(xiàn)在很多創(chuàng)業(yè)公司都可以提供這種服務(wù),這樣就從各個(gè)維度防止了黑客通過暴力手段獲取客戶信息。
2.總結(jié)
其實(shí)據(jù)我所知,很多互聯(lián)網(wǎng)公司到現(xiàn)在仍然存在這種漏洞,很容易讓黑客通過暴力破解就拿到用戶注冊的手機(jī)號,只要拿到了用戶的手機(jī)號后面就可以采用各種營銷策略。
這是目前很多公司,采用的一種競爭手段。
有的時(shí)候,產(chǎn)品的易用性和安全性其實(shí)是有沖突的,產(chǎn)品在設(shè)計(jì)的時(shí)候,其實(shí)就應(yīng)該和技術(shù)多考慮風(fēng)控的相關(guān)設(shè)計(jì),不然在產(chǎn)品運(yùn)營的后期容易出現(xiàn)問題。
一個(gè)大型互聯(lián)網(wǎng)公司中風(fēng)險(xiǎn)點(diǎn)非常多,服務(wù)器風(fēng)險(xiǎn)點(diǎn)、業(yè)務(wù)風(fēng)險(xiǎn)點(diǎn)都需要做提前考慮,同時(shí)公司必須配備相應(yīng)的安全人員,對公司網(wǎng)站做常規(guī)安全巡檢。
監(jiān)控公司所有的訪問接口頻次,定期把公司里面所有的 IP 訪問情況做成圖表進(jìn)行分析,看哪些是正常的請求,哪些是異常的訪問。
定期排查統(tǒng)計(jì)分析訪問的所有請求,可以提前發(fā)現(xiàn)很多問題。
開發(fā)人員和黑客斗爭其實(shí)是一個(gè)長期的工作,任何一個(gè)訪問量比較大的公司都會遇到類似的問題,遇到問題不要驚慌,仔細(xì)排查每一個(gè)細(xì)節(jié),最終肯定會找到問題的答案。
在我的職場經(jīng)歷中,和黑客有過非常多交手的經(jīng)歷,現(xiàn)在回過頭來看,這些經(jīng)歷才是我提升最快的最好養(yǎng)分。
解決問題是程序員成長的第一動力,解決大問題是成為大牛的關(guān)鍵。程序員的一生,也就是不斷解決問題的一生。
這樣看來,我們要感謝職場上遇到的那些困難!
所有能爬過去的問題都成為了經(jīng)歷和談資,只有那些越不過的 BUG 才能稱之為問題。
標(biāo)題名稱:和黑客斗爭的6天!
網(wǎng)頁鏈接:http://m.fisionsoft.com.cn/article/cdgjegp.html


咨詢
建站咨詢
