短信發(fā)送接口被惡意訪問(wèn)的網(wǎng)絡(luò)攻擊事件(二)肉搏戰(zhàn)-阻止惡意請(qǐng)求

<h1>前言</h1>

承接前文《短信發(fā)送接口被惡意訪問(wèn)的網(wǎng)絡(luò)攻擊事件(一)緊張的遭遇戰(zhàn)險(xiǎn)勝》,在解決了短信發(fā)送的問(wèn)題后菌赖,長(zhǎng)長(zhǎng)地舒了口氣伴郁,也就各忙各的事情去了,本以為應(yīng)該是個(gè)完美的收?qǐng)鼋胀眩闹乐皇悄酀舻缆返那耙欢温浒請(qǐng)鍪鞘詹涣肆耍€是要去應(yīng)付接下來(lái)的爛攤子摊唇,因?yàn)楣粽卟](méi)有停止攻擊咐蝇,雖然惡意請(qǐng)求已經(jīng)可以被識(shí)別并且不會(huì)被業(yè)務(wù)服務(wù)器處理,也不會(huì)去觸發(fā)短信發(fā)送接口巷查,但是請(qǐng)求依然會(huì)源源不斷的到達(dá)服務(wù)器有序,而且絲毫沒(méi)有停止的意思。

像前文中說(shuō)的岛请,那種感覺(jué)就像葛大爺被麻匪給劫了旭寿,既然被賊給盯上了,你覺(jué)得是那么輕而易舉的就能夠掙脫的了么崇败?


geyou

<h1>問(wèn)題分析</h1>

公司用的是阿里云的云服務(wù)器ECS盅称,在ECS控制臺(tái)中查看入網(wǎng)流量:


入網(wǎng)統(tǒng)計(jì)曲線

雖然在程序中加入邏輯判斷可以阻止非法請(qǐng)求對(duì)短信接口的觸發(fā),但是卻無(wú)法阻止攻擊者持續(xù)的向ECS發(fā)送請(qǐng)求后室,通過(guò)上圖ECS的入網(wǎng)流量可以看到缩膝,在流量上升之后,并沒(méi)有降下來(lái)的意思岸霹,得疾层,這狗皮膏藥真的一時(shí)沒(méi)法撕下來(lái)了,雖然說(shuō)這些個(gè)攻擊者無(wú)聊贡避,但還是得跟他們杠上了痛黎,心累。

所以剛剛開(kāi)心了沒(méi)多久贸桶,又陷入了困頓之中舅逸,剛剛踩完一個(gè)坑,爬上來(lái)沒(méi)多久皇筛,發(fā)現(xiàn)眼前又是一個(gè)坑,坑坑復(fù)坑坑坠七,開(kāi)發(fā)的坑是何其多水醋,運(yùn)維也一樣旗笔,都是一家人。


bug

魯迅說(shuō)過(guò):

你盡管說(shuō)拄踪,說(shuō)得有用算我輸蝇恶,坑還是得踩,誰(shuí)讓你做開(kāi)發(fā)的惶桐。

luxun

我們都知道流量攻擊撮弧,攻擊者用大流量來(lái)壓垮網(wǎng)絡(luò)設(shè)備和服務(wù)器,或者有意制造大量無(wú)法完成的不完全請(qǐng)求來(lái)快速耗盡服務(wù)器資源姚糊,現(xiàn)在看來(lái)這次的短信接口攻擊稱不上流量攻擊贿衍,因?yàn)閿?shù)量級(jí)不在一個(gè)概念上,雖然也存在大量的非法請(qǐng)求救恨,但是并不足以癱瘓?jiān)O(shè)備贸辈,當(dāng)然,這些話都是寫(xiě)在事件結(jié)束之后的肠槽,與事件發(fā)生時(shí)的想法可能有些出入擎淤,因?yàn)楫?dāng)時(shí)并不確定攻擊者的請(qǐng)求是否會(huì)持續(xù)增加、是否會(huì)打滿服務(wù)器的帶寬秸仙,是否會(huì)影響正常請(qǐng)求嘴拢,是否會(huì)使服務(wù)器癱瘓.....

看著持續(xù)不減的入網(wǎng)流量,思考了半天寂纪,最終是打算加入防火墻席吴,通過(guò)封掉這些惡意請(qǐng)求的IP,讓ECS直接拒絕請(qǐng)求弊攘,在請(qǐng)求的第一步就把它弄死抢腐,將入口堵住應(yīng)該可以一定程度的阻止攻擊者繼續(xù)攻擊,也使得流量降低不會(huì)影響到處理正常請(qǐng)求所用到的系統(tǒng)資源襟交。

前文提到的只是針對(duì)具體的系統(tǒng)模塊迈倍,在應(yīng)用層降低攻擊的危害,因?yàn)橐婚_(kāi)始認(rèn)為這次攻擊只會(huì)影響短信接口捣域,但是如果是流量攻擊的話啼染,則是影響整個(gè)服務(wù)器層面,會(huì)影響所有在這臺(tái)服務(wù)器上的基礎(chǔ)設(shè)施焕梅,這個(gè)就比較麻煩了迹鹅,想法只有一個(gè):阻止入網(wǎng)請(qǐng)求

<h1>應(yīng)急方案--iptables防火墻</h1>

一開(kāi)始想到的是用iptables來(lái)作為這次的防火墻工具贞言,花了些時(shí)間斜棚,寫(xiě)了一個(gè)分析日志的shell腳本,把攻擊者的IP定位出來(lái),然后把這些IP放到iptables的策略中給封掉弟蚀,以下為iptables策略設(shè)置的腳本蚤霞,運(yùn)行腳本的前提是你的linux服務(wù)器中安裝了iptables工具。

#!/bin/sh

#iptables設(shè)置
#author:13

iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT

iptables -I INPUT -s 111.147.220.88 -j DROP
iptables -I INPUT -s 101.68.56.76 -j DROP
iptables -I INPUT -s 106.6.90.58 -j DROP
iptables -I INPUT -s 111.147.212.230 -j DROP
......
(這里省略了大部分的IP义钉,因?yàn)樘嗔耍?
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#保存設(shè)置
service iptables save
#重啟iptables服務(wù)
systemctl restart iptables.service

雖然選擇了這個(gè)方式昧绣,但是也知道這種方式比較笨拙和被動(dòng),而且不能完全的做到自動(dòng)化捶闸,以后有時(shí)間會(huì)試著用nginx+lua+redis寫(xiě)一個(gè)攔截器夜畴,作為限制惡意IP訪問(wèn)的小工具,近期也會(huì)找一下其他的解決方案删壮。

由此贪绘,最新阻止攻擊的方式已經(jīng)變成了下圖中的模式:

iptables防火墻

根據(jù)日志文件來(lái)分析請(qǐng)求,一旦被識(shí)別為惡意IP的話醉锅,之后的所有請(qǐng)求都會(huì)被iptables防火墻攔截兔簇,請(qǐng)求不會(huì)被處理,半天時(shí)間限制了500多個(gè)IP的訪問(wèn)硬耍,但是依然會(huì)有新的IP加入到攻擊之中垄琐,散列IP攻擊真的很煩,限制了短信發(fā)送后经柴,已經(jīng)不會(huì)進(jìn)一步造成損失狸窘,而今天又做了IP訪問(wèn)限制,更進(jìn)一步確保了攻擊造成的影響降低坯认,同時(shí)也降低了流量陡增給系統(tǒng)帶來(lái)的危害翻擒。

這次攻擊并沒(méi)有造成進(jìn)一步的影響,應(yīng)該也算是送了一口氣牛哺,從數(shù)量級(jí)上來(lái)看陋气,倒不是特別大的攻擊,就是這兩天的日志文件比較大引润,因?yàn)樵跊](méi)有限制IP訪問(wèn)時(shí)巩趁,這幾百個(gè)IP搭配無(wú)數(shù)的手機(jī)號(hào)碼,發(fā)送的請(qǐng)求數(shù)量是挺驚人的淳附。而至于這次的攻擊者到底是什么人议慰,出于什么目的,完全不得而知奴曙,人民幣損失也是有的别凹,但是還好發(fā)現(xiàn)和解決的及時(shí),并沒(méi)有造成太大的影響洽糟,肯定不至于丟了工作炉菲,哈哈哈哈堕战。

<h1>防火墻效果</h1>

流量攻擊由第一天的每分鐘1000次左右的惡意請(qǐng)求(統(tǒng)計(jì)對(duì)象僅包含非法請(qǐng)求,正常請(qǐng)求不包含在內(nèi))颁督,通過(guò)采用封鎖IP的方法來(lái)進(jìn)行防御之后践啄,目前為每分鐘10-20次左右的惡意請(qǐng)求浇雹,雖然已經(jīng)攔截掉大部分的攻擊沉御,但是依然不斷會(huì)有新的偽裝IP加入到攻擊當(dāng)中,暫時(shí)也想不到其他辦法來(lái)應(yīng)對(duì)昭灵,因?yàn)镮P是一直在變的吠裆,雖然在半天內(nèi)已經(jīng)封鎖掉了500多條IP,不過(guò)依然還是會(huì)有新的IP帶著新的請(qǐng)求進(jìn)來(lái)烂完,但是好消息是试疙,現(xiàn)在的流量已經(jīng)不像剛開(kāi)始那樣,像是開(kāi)了閘口的洪水一樣噴涌而來(lái)了抠蚣,目前已經(jīng)是銳減成涓涓細(xì)流了祝旷,他奶奶的。

ip

整個(gè)過(guò)程你來(lái)我往的嘶窄,看似熱鬧怀跛,其實(shí)就是菜雞互啄,攻擊者通過(guò)工具發(fā)送惡意請(qǐng)求柄冲,惡意請(qǐng)求進(jìn)來(lái)并被記錄到日志文件中吻谋,被腳本檢測(cè)到之后加入到iptables策略中封鎖IP,然后攻擊者又會(huì)利用新的IP做攻擊现横,檢測(cè)到之后再次封鎖漓拾,周而復(fù)始。說(shuō)難度嘛戒祠,倒是沒(méi)什么技術(shù)難度骇两,至于麻煩嘛,是有一些小麻煩姜盈,再說(shuō)損失低千,通過(guò)參數(shù)驗(yàn)證后,應(yīng)該不會(huì)請(qǐng)求短信服務(wù)商再造成損失了贩据,關(guān)鍵是被惡心到了栋操,畢竟這個(gè)事情沒(méi)法徹底的解決掉,除非停掉這一個(gè)服務(wù)饱亮,這是不可能的矾芙,也只能等下次更新了,中間這段時(shí)間只能被惡心了近上。

<h1>防火墻的方案</h1>

雖然當(dāng)時(shí)是選擇使用iptables來(lái)作為主要的防火墻工具剔宪,但是現(xiàn)在想想,也有其他方法的,事后諸葛亮一下葱绒,總結(jié)了以下四種方式感帅,希望大家補(bǔ)充:

  • iptables
  • hosts.deny
  • 阿里云的ECS安全策略
  • WAF(這個(gè)是前一篇文章中一位朋友留言提到的方案)

<h1>結(jié)語(yǔ)</h1>

也想過(guò)在APP重新發(fā)版時(shí),重新設(shè)計(jì)一套u(yù)rl地淀,將原來(lái)的url廢棄掉失球,或者關(guān)閉一些服務(wù)器以杜絕這些攻擊,但是帮毁,這些都是沖動(dòng)和極端的想法和做法实苞,即使APP重新發(fā)版,也不可能立即關(guān)閉后端服務(wù)器烈疚,關(guān)閉后端服務(wù)意味著完全拋棄對(duì)上一個(gè)版本的支持黔牵,但是正確做法不可能對(duì)沒(méi)有更新版本的用戶不管不問(wèn),即使他們不更新也要保證原來(lái)的整體功能可用爷肝。不能因?yàn)橐粋€(gè)服務(wù)的錯(cuò)誤猾浦,讓用戶去承受錯(cuò)誤,不能讓用戶來(lái)為我們埋單灯抛,停掉服務(wù)器的做法不可行金赦,沒(méi)有到那個(gè)地步,因此只能是自己去解決和維護(hù)。

每次發(fā)生這種意料之外的事件,都會(huì)提醒自己做好安全保障工作值桩,不可掉以輕心螟加,不要給心懷惡意之人有可乘之機(jī),這次損失一塊錢(qián)RMB,下次可能是一千塊,一萬(wàn)塊,金錢(qián)的損失可以衡量沽甥,如果是給系統(tǒng)帶來(lái)影響或者給團(tuán)隊(duì)招來(lái)不必要的麻煩就真的百口莫辯了。

目前來(lái)看乏奥,雖然是解決了一部分問(wèn)題摆舟,用請(qǐng)求驗(yàn)證阻止發(fā)送短信,用iptables阻止惡意IP的訪問(wèn)邓了,但是并沒(méi)有根本解除掉攻擊恨诱,不排除攻擊者會(huì)進(jìn)一步攻擊的可能性,因此只能被動(dòng)的防守骗炉,同時(shí)也做好web和服務(wù)器的安全防護(hù)照宝。

首發(fā)于我的個(gè)人博客,地址在這里

security
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末句葵,一起剝皮案震驚了整個(gè)濱河市厕鹃,隨后出現(xiàn)的幾起案子兢仰,更是在濱河造成了極大的恐慌,老刑警劉巖剂碴,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件把将,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡忆矛,警方通過(guò)查閱死者的電腦和手機(jī)察蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洪碳,“玉大人递览,你說(shuō)我怎么就攤上這事⊥纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵镜雨,是天一觀的道長(zhǎng)嫂侍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)荚坞,這世上最難降的妖魔是什么挑宠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮颓影,結(jié)果婚禮上各淀,老公的妹妹穿的比我還像新娘。我一直安慰自己诡挂,他們只是感情好碎浇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著璃俗,像睡著了一般奴璃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上城豁,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天苟穆,我揣著相機(jī)與錄音,去河邊找鬼唱星。 笑死雳旅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的间聊。 我是一名探鬼主播攒盈,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼甸饱!你這毒婦竟也來(lái)了沦童?” 一聲冷哼從身側(cè)響起仑濒,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎偷遗,沒(méi)想到半個(gè)月后墩瞳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氏豌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年喉酌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泵喘。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泪电,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纪铺,到底是詐尸還是另有隱情相速,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布鲜锚,位于F島的核電站突诬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芜繁。R本人自食惡果不足惜旺隙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骏令。 院中可真熱鬧蔬捷,春花似錦、人聲如沸榔袋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)摘昌。三九已至速妖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聪黎,已是汗流浹背罕容。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稿饰,地道東北人锦秒。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像喉镰,于是被迫代替她去往敵國(guó)和親旅择。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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