不是,大哥,咱這小門小戶的,別搞我CDN流量啊
分享是最有效的學習方式。
最近遇上事兒了,老貓的小小博客網站【程序員老貓的博客】被人盜刷CDN流量了。開始的時候收到了欠費的短信也沒有怎么去重視。雖然說費用沒有多少,但是也是一個教訓。

博客從最初地搭建到現在確實也經過好幾年了,天真地以為確實很長時間了,差不多快四年都沒有充錢了,缺個兩塊錢應該也是正常的,補上就行,然而讓人沒有想到的是補償充值之后的一個小時,有顯示欠費了。于是就立馬引起了我的重視。于是深夜開始進行排查問題。
(期間其實又陸陸續續充值了一些,發現充值之后瞬間就又沒有了,前后算了算,雖然痛失30塊。)

寫博客的初衷
寫博客其實也沒有想著去盈利,或者說等網站的流量大了想著去接廣告,因為也沒有指望博客會有很大的流量。事實也沒有讓我失望,通過百度統計,發現每天也就幾個IP。多的時候會有幾十個。

那有小伙伴肯定要問了,不賺錢,又沒有流量,那寫個雞屎球啊。那么多第三方平臺不用,偏偏要用自己搭建的服務器去搞,那不是費時費力費錢。
哎,之所以想要自己用服務器去搭建博客平臺主要原因還是一名技術人員最簡單而又淳樸地追求,因為感覺自己搞服務器,自己寫文章,就會讓人覺得這是在經營自己的東西。另外的話,自己搭建博客的話自由度更加高一點,想要搞成什么樣子都可以,使用第三方平臺的話,總是覺得限制還是比較多的。指不定哪天平臺涼了,自己的東西也就沒有了(雖然實際情況往往是平臺的壽命比自己個人搭建博客的壽命可能更長一些。)
關于老貓個人博客的技術棧其實也換了好幾撥,以前用過wordpress,后來又換成了hexo,到后來差不多是20年左右的時候接觸到了vue技術,后來又換成比較熟悉的vuepress,一直到現在用的都是vdonig的模版。
起因-草率地部署
最原始的部署方式,就是在阿里云上,通過nginx服務進行搭建,比較簡單,端口用的也是默認端口。部署是完成了,但是外圍訪問的速度是相當慢的,后來排查原因主要是由于有些圖片比較大,另外的話,有的還使用到了第三方的一些js,加載的時候也比較慢,當時也沒有想到圖床啊什么的,后來就想著優化一下,于是用到了騰訊云的CDN進行全站緩存,包括一些圖片。
這次CDN流量被刷排查下來也是一張圖片所致,當然圖片我也沒有經過壓縮,本身大小差不多是500k了。排查下來兩天這個圖片一共刷了我89個G的CDN流量。

這個圖片訪問次數也達到了62.77w次

然后又看了一下主要的請求歸屬地,所屬地主要是來自于山西,山西的那位大哥,真心求放過啊,咱這小門小戶的。

其實我一直挺好奇的,為什么要刷我的CDN流量呢?這玩意兒應該算是流量攻擊?那為啥要攻擊我呢?咱這才多少流量,大膽一點,不會是內部人員為了業績?(⊙o⊙)…(細思極恐,感覺自己是不是想太多了,老馬應該也不差我這30塊錢吧。。。)
當然也是出于好奇,于是在網上逛了一下,發現還真有朋友遇到和老貓一樣的情況,當然那個比較慘可能,是一家創業型的公司,老貓估計也是個菜雞運維配置的CDN。他們居然還報警了,至于有沒有下文,好像文章里面也沒有提及。文章的內容大概是下面這樣的。

從上面的文章中,看起來,這是個最近需要關注的事情,另外的話好像和運營商打擊PCDN有點關系。具體的細節老貓后續也沒有再深入去研究。看完文章,想想可能是誤會老馬了(有點以小人之心度君子之腹)
反正如果大家和老貓一樣,也是個小站長,那么其實也是時候檢查一波自己的網站配置了。
采取一些措施,解決流量盜刷
事情呢,已經發生了,30塊巨額也回不來了,但是事情么總歸也還是需要解決的,如何解決?
查找盜刷流量的IP地址,并且設置黑名單
老貓查看了之前對CDN請求的top100,發現消耗流量比較多的是下面的IP

沒錯,我要曝光我大哥。從地址上來看一個是江蘇、一個是山西大哥。
相關的圖片資源進行遷移,并且設置相關防盜鏈
于是半夜三更開始進行圖片遷移,由于老貓其實還用了某云的第三方的圖床CDN,于是老貓就把原來的圖片遷移到了某云的圖床上,并且給這些圖片設置了防盜鏈。
另外的,當前cdn的相關的圖片也進行了清除,清除的方式也比較簡單,因為是全站緩存的,所以老貓直接登錄到了部署的服務中,將相關的圖片進行刪除,然后重新刷新cdn的緩存,這樣再次去訪問該圖片的時候就是404了,原始圖片地址:https://blog.ktdaddy.com/img/ui.png
設置單位時間全站的封頂流量
當然為了防止全局其他資源的cdn流量被刷,于是重新設置用量封頂規則,這個規則相當于是為了不讓自己受到損失熔斷整個網站具體如下:

老貓也知道自己的小站幾斤幾兩,所以感覺設置這么高的瞬時封頂也就夠了。這層也算是最后的防線了。
現在回過頭來在想想,小小網站由于目前有CDN圖床,現在再做相關的CDN的全站緩存好像意義并不是很大。所以后面還是考慮將全站緩存到CDN這層給干掉,直接服務器+圖片圖床即可。
一些想法
算是個人的小小損失吧,但是細思極恐,如果當時cdn上面充錢比較多,另外的話,盜刷的也不僅僅這一個資源的話,那么其最終損失就大了。上圖中提及的“快科技”就是一個比較好的例子,作為一個資深碼農,這件事情上真的是疏忽了,做事情不夠嚴謹,應該自我批評一番。哪怕說是幾年前部署的。
當然上面文章中有些疑問也歡迎其他小伙伴能夠聊聊,當然還有哪些注意點,老貓這里沒有想到的,也歡迎大家可以提出建議。
寫到這里也差不多了,相信有很多小伙伴應該會來問老貓當前的博客是如何搭建起來的,用到了哪些東西,在這里,老貓把相關的技術以及資源分享給大家。
技術采用:vuepress,官網地址:https://vuepress.vuejs.org/zh/
博客模版用的是vuepress-theme-vdoing,相關的gitlab地址是:https://github.com/xugaoyi/vuepress-theme-vdoing,
上述博客模版對應的官方教學主站:https://doc.xugaoyi.com/pages/a2f161/
創作不易,當然如果你看到了也歡迎給這位作者github上點個star。
上述有提及某云的圖床,其實這里也不賣關子,主要用到的是七牛云。感興趣的小伙伴可以研究一下。
總結一下
當我們遇到CDN流量盜刷的情況下,我們應該從哪些方面入手去做呢?我們可以按照下面的流程來應對:
-
立即監測和分析:盡快確定流量被盜刷的模式、時間、來源和去向等信息。通過 CDN 服務提供商提供的監控工具和數據分析,了解異常流量的特征。
-
暫停服務:在情況未明之前,為避免進一步損失,可以暫時停止相關的 CDN 服務。
-
通知 CDN 服務提供商:及時向 CDN 服務提供商報告被盜刷的情況,他們通常具有一定的應對機制和經驗,能夠協助調查和采取措施。
-
加強安全防護:檢查和強化自身的網絡安全措施,例如更新密碼、加強認證機制、修補可能存在的安全漏洞等。
-
審查授權和訪問控制:檢查所有的授權和訪問權限設置,確保只有合法的用戶和應用能夠訪問和使用 CDN 服務。
-
保留證據:保存與流量被盜刷相關的所有數據和記錄,以備后續可能的調查和法律行動。
-
法律手段:如果損失較大,可以考慮通過法律途徑來追究盜刷者的責任,維護自身的合法權益。
總之,CDN 流量被盜刷是一個嚴重的問題,需要及時、果斷地采取措施來應對,以減少損失并防止再次發生。

浙公網安備 33010602011771號