“網(wǎng)癮少年”小王正百無聊賴地刷新著天涯雜談。
小王吸了一口冰紅茶,鼠標(biāo)滾輪飛快滑動(dòng)。
突然,一個(gè)標(biāo)紅的帖子標(biāo)題抓住了他的眼球。
《驚天內(nèi)幕!那個(gè)爆火的快看網(wǎng),竟是盜版起家的毒瘤?!》
標(biāo)題很驚悚。
在這個(gè)標(biāo)題黨還沒泛濫的年代,這種字眼有著致命的吸引力。
小王點(diǎn)了進(jìn)去。
帖子洋洋灑灑幾千字,圖文并茂。
雖然圖片有些模糊,但邏輯“嚴(yán)密”。
文章聲稱快看網(wǎng)利用流氓插件竊取用戶信息,所謂的智能推薦其實(shí)是監(jiān)控用戶**,甚至還暗示快看網(wǎng)的原始積累涉嫌洗錢。
“我靠,真的假的?”小王嘟囔了一句。
他往下一拉評(píng)論區(qū)。
好家伙。
這帖子才發(fā)出來十幾分鐘,回復(fù)已經(jīng)破了五百樓。
“我就說這網(wǎng)站怎么知道我喜歡買什么,原來是偷窺!”—— ID:正義路人甲。
“抵制快看網(wǎng)!還我**!”—— ID:守護(hù)天使。
“這種垃圾網(wǎng)站怎么還不倒閉?有關(guān)部門不管管嗎?”—— ID:在這個(gè)冷漠的世界。
回復(fù)整齊劃一,情緒激動(dòng)。
小王不知道什么是“水軍”,他只覺得大家都這么說,那肯定是有問題。
他隨手也跟了一句:“太黑了,以后不用了。”
同樣的場(chǎng)景,發(fā)生在貓撲、百度貼吧,以及各大垂直論壇。
一場(chǎng)精心策劃的輿論風(fēng)暴,正在成型。
就像是烏云壓頂,黑云摧城。
……
夏冬對(duì)此一無所知。
或者說,暫時(shí)還不知道。
采訪車隊(duì)剛剛離開工廠,揚(yáng)起一陣塵土。
夏冬站在廠門口,目送著那輛印著電視臺(tái)LOgO的面包車遠(yuǎn)去。
轉(zhuǎn)身打車回家。
剛走進(jìn)屋子,口袋里的手機(jī)就震動(dòng)起來。
屏幕上顯示著兩個(gè)字:周毅。
夏冬心里咯噔一下。
周毅是技術(shù)狂人,六個(gè)大神之一,負(fù)責(zé)服務(wù)器的維護(hù)。平時(shí)有事都是在群里溝通,沒事絕不會(huì)打電話。
除非,出事了。
“喂?”夏冬接通電話,手上沒停,按下了電腦開機(jī)鍵。
“夏冬!出事了!”
周毅的聲音不大,卻帶著明顯的焦急。
“怎么了?慢慢說。”
“服務(wù)器炸了!”
周毅吼道,“就在剛才,流量突然暴漲!本來以為是正常的訪問流量增長(zhǎng),結(jié)果不對(duì)勁!”
“怎么不對(duì)勁?”
“太快了!曲線是垂直拉升的!而且全是無效請(qǐng)求,帶寬瞬間被打滿了!”
夏冬瞇起眼睛。
他沒掛電話,夾在脖子上,雙手飛快地登錄QQ。
“有人在搞我們。”夏冬的聲音很冷,“看來是有些人坐不住了。”
“肯定是競(jìng)爭(zhēng)對(duì)手!”周毅罵了一句,“現(xiàn)在怎么辦?NginX已經(jīng)扛不住了,由于連接數(shù)太多,正常用戶已經(jīng)進(jìn)不來了!”
夏冬看著電腦屏幕右下角那個(gè)跳動(dòng)的企鵝頭像。
那是他們的核心技術(shù)群。
群里的其他人顯然都已經(jīng)知道了消息。
此時(shí),群里的消息刷得飛快。
張濤:“Web服務(wù)器CPU 100%了!”
楊大海:“數(shù)據(jù)庫(kù)連接池爆了!寫入隊(duì)列堵死!”
吳澤明:“是DDOS,混合了CC攻擊。這幫孫子夠狠的。”
夏冬坐下來,深吸了一口氣。
DDOS,分布式拒絕服務(wù)攻擊。
如果跟小白讀者解釋,這就好比你開了一家飯店,生意正紅火。
突然,競(jìng)爭(zhēng)對(duì)手雇了一千個(gè)流氓沖進(jìn)來。
這一千個(gè)人不打人,也不砸東西。
他們就坐在桌子上,拿著菜單不點(diǎn)菜,或者每個(gè)人只點(diǎn)一杯免費(fèi)的白開水。
真正的客人想進(jìn)來吃飯,卻發(fā)現(xiàn)門口堵滿了人,座位也被占光了。
飯店的每一個(gè)服務(wù)員(CPU線程)都在忙著招呼這些流氓,端茶遞水,結(jié)果累得半死,一分錢掙不到。
最后,飯店只能癱瘓。
而在網(wǎng)絡(luò)世界里,這“一千個(gè)流氓”,就是成千上萬臺(tái)被黑客控制的“肉雞”電腦。
這是一種簡(jiǎn)單、粗暴,但極其有效的攻擊方式。
甚至是無解的。
除非你的門口足夠大,或者你有足夠多的保鏢把流氓扔出去。
“夏冬,你在聽嗎?”電話里周毅有些急了。
“在聽。”夏冬冷靜地說,“別慌,陳默呢?”
“陳默在搞,但他不說話,不知道在干嘛!”
夏冬掛斷了電話。
他在群里敲了一行字。
夏冬:“@陳默 情況怎么樣?”
群里安靜了一秒。
陳默:“給我五分鐘。”
……
京城,陳默坐在電腦前。
房間里沒有開燈,只有屏幕的藍(lán)光映照著他那張蒼白、疲憊的臉。
他的眼神,卻亮得嚇人。
那種眼神,就像是饑餓的狼看到了獵物。
或者是,絕世劍客遇到了對(duì)手。
“有點(diǎn)意思。”陳默喃喃自語。
他的手指在鍵盤上飛舞,速度快到只能看到殘影。
他沒有用鼠標(biāo)。
對(duì)于他這種級(jí)別的架構(gòu)師來說,鼠標(biāo)是累贅。
黑色的終端窗口里,綠色的代碼如瀑布般流淌。
他在寫腳本。
LUa腳本。
在這個(gè)年代,NginX剛剛嶄露頭角,很多人甚至還在用老舊的ApaChe。
而陳默,已經(jīng)開始嘗試將LUa嵌入NginX中進(jìn)行動(dòng)態(tài)流量清洗。
這是一種極其超前的思路。
“想用海量請(qǐng)求淹沒我?”陳默嘴角勾起一抹冷笑。
就像是那個(gè)飯店的比喻。
既然流氓混在客人里分不清楚,那就設(shè)一道“安檢門”。
他在腳本里寫下了一套復(fù)雜的邏輯。
識(shí)別那些請(qǐng)求特征。
正常的客人進(jìn)店,會(huì)看菜單,會(huì)猶豫,會(huì)有眼神交流,也就是瀏覽器的一些記錄的正常的行為。
而流氓,進(jìn)門只會(huì)喊同一個(gè)字。
陳默的代碼邏輯很嚴(yán)謹(jǐn)。
他不是直接封IP,因?yàn)閷?duì)方用的是動(dòng)態(tài)肉雞,封IP效率太低。
他做了一個(gè)“人機(jī)驗(yàn)證”的雛形。
所有請(qǐng)求,先返回一個(gè)極其微小的JavaSCript計(jì)算題。
正常瀏覽器會(huì)在毫秒內(nèi)算出來并返回結(jié)果。
而那些簡(jiǎn)單的攻擊腳本,是沒有腦子的,它們根本不執(zhí)行JS,只會(huì)傻乎乎地繼續(xù)發(fā)請(qǐng)求。
“走你。”
陳默敲下了回車鍵。
配置文件熱加載。
那一瞬間,仿佛一道無形的墻,在千軍萬馬前轟然落下。
……
快看網(wǎng)后臺(tái)監(jiān)控室。
周毅死死盯著屏幕上的流量圖。
那條紅色的線,原本像是一根筆直的柱子,直沖云霄,壓得人喘不過氣。
突然。
它折斷了。
斷崖式下跌。
流量瞬間跌去了90%。
那是被清洗掉的垃圾流量。
剩下的10%,平穩(wěn)、健康,那是真實(shí)的用戶。
CPU占用率從100%迅速回落到40%。
數(shù)據(jù)庫(kù)連接池釋放。