मेरी बिल्ली ने मुझे DDoS हमले के बारे में बताया
(dannyguo.com)- जब औपचारिक on-call rotation नहीं था, तब सुबह 3 बजे बिल्ली ने सोए हुए व्यक्ति को जगा दिया, जिससे AWS CloudWatch alert और वेबसाइट outage तुरंत देख लिया गया
- load balancer के unhealthy targets alert के बाद साइट खुल नहीं रही थी, और कई देशों से जुड़े बहुत सारे IP से भारी मात्रा में requests आ रही थीं
- प्रोडक्ट केवल अमेरिका के users के लिए उपलब्ध था, इसलिए international traffic असामान्य था, और परिस्थितियों से यह DDoS attack लग रहा था
- सर्वर पर IP को एक-एक करके block करना अप्रभावी हो सकता था, लेकिन पहले से configured AWS WAF के country blocking rule से लगभग 1 घंटे तक लाखों requests में से कई लाख requests को block किया गया
- हमले की शुरुआत के आसपास customer support mailbox में एक धमकी भरा mail आया, जिसमें दावा किया गया कि Apache vulnerability से साइट रोक दी गई है और Bitcoin में 5,000 डॉलर मांगे गए; कंपनी ने जवाब नहीं दिया
सुबह 3 बजे सामने आया outage
- उस समय startup में औपचारिक on-call rotation नहीं था, और टीम emergency alerts पर सामूहिक रूप से नज़र रखने के तरीके से काम कर रही थी
- सुबह लगभग 3 बजे बिल्ली ने बालों को groom करते हुए जगा दिया, और फोन देखने पर पता चला कि कुछ मिनट पहले AWS CloudWatch alert आया था
- alert का कारण load balancer के unhealthy targets थे, और वेबसाइट वास्तव में load नहीं हो रही थी
- monitoring dashboard पर कई देशों से जुड़े बहुत सारे IP addresses से आने वाली भारी मात्रा की requests दिखाई दे रही थीं
- प्रोडक्ट केवल अमेरिका के users के लिए उपलब्ध था, इसलिए international traffic सामान्य से अलग था, और परिस्थितियों के आधार पर इसे DDoS attack माना गया
AWS WAF से रोकी गई requests की बाढ़
- सबसे पहले जो response सूझा, वह सर्वर स्तर पर IP addresses को block करना था, लेकिन अगर attacker और अधिक source IPs इस्तेमाल कर सकता हो, तो यह मेहनतभरा और सीमित प्रभाव वाला हो सकता था
- पहले से configured AWS Web Application Firewall का उपयोग करते हुए, तत्काल outage response के लिए दूसरे देशों से आने वाली requests को block करने वाला rule जोड़ा गया
- rule लागू होने के बाद लगभग 1 घंटे तक कई लाख requests block हुईं, और वेबसाइट फिर से काम करने लगी
- requests की बाढ़ भी रुक गई, जिससे तत्काल outage खत्म हो गया
हमले के तुरंत बाद आया धमकी भरा mail
- उस सुबह, हमले की शुरुआत के आसपास customer support mailbox में आए mail की जांच की गई
- भेजने वाले ने दावा किया कि उसने वेबसाइट की vulnerability ढूंढकर Apache को crash कर दिया, लेकिन कंपनी Apache इस्तेमाल ही नहीं करती थी
- उसने कहा कि वेबसाइट का पूरा traffic रोक दिया गया है और इसे कई महीनों तक जारी रखा जा सकता है, और Bitcoin में 5,000 डॉलर भेजने पर वह “solution file” देगा
- कंपनी ने जवाब नहीं दिया
- फोन रात में Do Not Disturb mode में था, इसलिए यह मानना सही नहीं था कि AWS notification की vibration या sound ने बिल्ली को पहले जगा दिया होगा
- लेखक का मानना है कि बिल्ली ने somehow महसूस कर लिया कि यह ऐसा मामला है जो सुबह तक इंतज़ार नहीं कर सकता, और यह PagerDuty alarm की तुलना में जागने का कहीं कम अप्रिय तरीका था
1 टिप्पणियां
Hacker News की राय
हमेशा की तरह insider threat को नज़रअंदाज़ करना आसान होता है। संदिग्ध grammar वाला धमकी भरा ईमेल? Bitcoin में ransom की मांग? क्या कभी सोचा कि उस हमले के पीछे असल में बिल्ली हो सकती थी?
Kansas में भूकंप ज़्यादा नहीं आते, लेकिन जो पहला और इकलौता भूकंप मैंने महसूस किया था, वह आज भी याद है
मैं गहरी नींद में था, तभी मेरी Siamese बिल्ली ने पंजे से मेरा चेहरा थपथपाकर मुझे जगाया, और बिस्तर के किनारे बैठकर सामान्य से अलग, आक्रामक तरीके से गुर्राने लगी
30 सेकंड से भी कम समय में झटके शुरू हो गए। उसे कैसे पता चला, नहीं जानता, लेकिन वह काफी हैरान करने वाला था; वह 2020 में चली गई, और आज भी उसकी याद आती है
हाल में NYC भूकंप के दौरान भी ऐसे वीडियो थे जिनमें लोगों के कंपन महसूस करने से पहले कुत्ते हुआं-हुआं कर रहे थे, और यह काफी आम घटना लगती है
कुछ हफ्ते पहले Taipei में 7.4 magnitude का भूकंप झेलते समय मेरे दिमाग में बस यही था कि वादे के मुताबिक मुझे अपने कुत्ते के पास वापस जाना है। निकलने से पहले कुत्ता बेचैन था; पता नहीं उसने मेरे जाने को भांप लिया था या उस भूकंप को जिसकी ओर मैं जा रहा था
चट्टानों में दो तरह की ध्वनि तरंगें होती हैं: P-waves और S-waves। P-wave pressure wave होती है इसलिए तेज़ होती है, और S-wave बाएं-दाएं हिलती है और थोड़ी धीमी होती है। बहुत संभव है कि बिल्ली उस P-wave की सरसराहट से जाग गई हो, जो इंसानों के भूकंप महसूस करने से थोड़ा पहले पहुंचती है
दो तरह की waves होती हैं और P-wave पहले पहुंचती है, यह https://manoa.hawaii.edu/exploringourfluidearth/physical/oce... पर देखा जा सकता है
फोन silent पर रहा होगा, लेकिन screen शायद लगातार blink कर रही थी। मेरा भी उस mode में ऐसा ही करता है
मेरी पहली नौकरी में एक व्यक्ति था जो monitoring dashboard से outage आने से पहले ही उसे भांप लेता था। वह खुद भी समझा या बता नहीं पाता था कि वह क्या देख रहा है, और कोई दूसरा भी उसे दोहरा नहीं पाता था, लेकिन जब वह कहता कि कुछ गड़बड़ है, तो अक्सर थोड़ी ही देर में alert आ जाता था
मैंने एक construction site supervisor के बारे में पढ़ा था, जो ज़मीन के अंदर या दीवारों के भीतर pipes को असामान्य रूप से अच्छे से ढूंढ लेता था, इसलिए workers उसका सम्मान करते थे। शुरुआत में वह इसे psychic ability मानने लगा था, लेकिन बाद में उसने निष्कर्ष निकाला कि उसने अनजाने में common patterns और कभी-कभी दिखने वाले non-intuitive clues सीख लिए थे। जैसे किसी building wall में vent देखकर यह भांप लेना कि basement में sewer pipe होने की संभावना है
मैं उस point तक पहुंच गया था जहां काफी accurate तरीके से समझ जाता था कि “यह game अभी crash होने वाला है, save कर लेना चाहिए।” save करके 10 सेकंड बाद दोबारा शुरू करता, तो सचमुच crash हो जाता था; आज भी नहीं जानता कैसे पता चलता था
5,000 डॉलर तो काफी राजकुमारों जैसी रकम है। 2016 में हमारी company से भी ऐसी मांग की गई थी
हम पर DDoS हुआ और हमने उसे ignore करने का फैसला किया, लेकिन एहतियातन थोड़ा BTC खोजकर रखा था। उसके बाद DDoS defense खूब लागू करने में 5,000 डॉलर से कहीं ज़्यादा खर्च हो गया, लेकिन extortionist को पैसा न देना इसके लायक है
हमने किसी भी email का जवाब नहीं दिया। attackers भी काफी बेवकूफ थे, क्योंकि उन्होंने सिर्फ उस web server पर हमला किया जो अच्छी connectivity वाली जगह पर था
असल में पैसा कमाने वाली service Caribbean में थी, और उसके पास सिर्फ 1.5Mbps T1 और 0.5Mbps satellite backup था। वहां को वे कहीं ज़्यादा आसानी से और लंबे समय तक saturate कर सकते थे, और तब प्रति घंटे revenue loss लगभग 10 लाख डॉलर होता
किसी attacker को 5,000 डॉलर देना defenses बनाने से सस्ता लग सकता है, लेकिन defense होने पर आगे हमले झेलने की संभावना कम हो जाती है। और जैसा कहा, criminals को पैसा न देना अपने-आप में भी मूल्यवान है
“मैंने जवाब नहीं दिया, लेकिन पीछे मुड़कर देखें तो उन्हें चिढ़ाना मज़ेदार होता” वाले हिस्से पर, कोई जवाब न देना ही इकलौता सही जवाब है
चिढ़ाने से आप उल्टा ज़्यादा नजर में आ सकते हैं और दूसरे हमलों का target बन सकते हैं। उससे हासिल क्या होगा?
फिर भी कल्पना करना मज़ेदार था, खासकर article में link किए इस video को देखने के बाद: https://www.youtube.com/watch?v=dWzz3NeDz3E
पहले मेरे परिवार के एक सदस्य को dishwasher से पानी leak होने का पता बिल्ली alert की वजह से चला था
निष्कर्ष यह था कि बिल्ली या तो उन्हें बचाने की कोशिश कर रही थी, या मारने की—दो में से एक
बाहर सो रहा एक व्यक्ति कौए की आवाज़ से जागता है, और ठीक उसी समय एक बड़ी बिल्ली-प्रजाति का जानवर, शायद बाघ, चुपके से पास आ रहा होता है
एक पात्र मानता है कि कौआ उस व्यक्ति को चेतावनी देने की कोशिश कर रहा था, जबकि दूसरा मानता है कि पक्षी ने सोए हुए व्यक्ति के बारे में बाघ को इसलिए बताया ताकि भोजन के बाद बचा हुआ हिस्सा खा सके
“भयानक grammar” कहना, सच में ChatGPT से पहले का दौर लगता है
थोड़ा ज़्यादा गंभीरता से कहें तो, क्या कभी DDoS हमलों को हमेशा के लिए रोकने का कोई तरीका निकलेगा? सभी threats बुरे होते हैं, लेकिन DDoS सबसे घटिया किस्म का attack लगता है। इसमें कोई खास skill या knowledge नहीं चाहिए; बस script चला दो, या किसी ऐसे व्यक्ति को पैसे दे दो जो इसे service के तौर पर चला दे
IP addresses, और IPv6 हो तो subnets, आम users के लिए सीमित resources हैं, और bandwidth भी वैसी ही है। ज़्यादातर amplification attacks में IP spoofing चाहिए होती है, जो सामान्य connections में अक्सर संभव नहीं होती
अगर attack capacity-based है, तो जिसके पास ज़्यादा bandwidth है वही जीतता है। attacker यहाँ amplification इस्तेमाल कर सकता है। अगर यह load-based या application-layer attack है, तो firewall level पर attacker IPs को block करके हल किया जा सकता है। इस मामले में पहले से WAF/Cloudfront था, इसलिए यह शुद्ध capacity attack नहीं, बल्कि application-layer attack के ज़्यादा करीब है
block किए जाने वाले attacker IPs ढूँढना असल में यह समस्या है कि source IP के हिसाब से cost को सही-सही attribute किया जाए, legitimate user activity के benefit को भी source IP के हिसाब से सही-सही attribute किया जाए, और फिर जिन IPs या ranges की cost benefit से बहुत ज़्यादा हो, उन्हें block किया जाए
कहना आसान है, करना नहीं। cost कई रूपों में आती है: open connections memory रोकते हैं, TLS handshakes, web server के लिए parse करना महँगा पड़ने वाले requests, महँगी database queries trigger करने वाले requests, I/O bandwidth वगैरह। इसलिए ज़्यादातर लोग Cloudflare या यहाँ की तरह Cloudfront को आगे रखते हैं, और इस case की तरह manual rules से bypass करते हैं
protocol layer पर DDoS-resilient बनाने का कोई तरीका हो तो शानदार होगा, लेकिन पता नहीं वह संभव है या नहीं
और capacity-based DDoS भी होता है। इसे आप सबसे ज़्यादा bandwidth रखकर रोक सकते हैं, लेकिन यह काफी मुश्किल है और आप खुद भी संभावित attacker बन जाते हैं
यहाँ innovation यह है कि BGP के जरिए traffic filters फैलाए जाएँ। null routing minimum viable product जैसा है। मतलब, यह IP attack के तहत है, इसलिए जितनी जल्दी हो सके उस तरफ का traffic drop कर दो। मैंने और granular systems भी देखे हैं, जैसे UDP drop करना, fragmented packets drop करना, UDP/TCP के specific ports पर आने-जाने वाले packets drop करना
ऐसे systems में से ज़्यादातर इस तरह design किए जाते हैं कि special routes सीधे peer से आगे propagate न हों, लेकिन कुछ मामलों में propagate होना desirable भी हो सकता है
मेरे ज़्यादातर customers Mexico में हों और Canada DDoS करे, जिससे मेरे और Canada के बीच की line भर जाए, तो शायद यह बड़ी problem न हो। बशर्ते Mexico की तरफ़ के consumer routers उस Canada bottleneck की “मदद” करने न लगें
मुझे लगा था cat feeder को alert से connect किया गया होगा
खैर, cute है। बिल्ली का नाम क्या था?
उसका नाम Bamboo था। दुख की बात है कि cancer से वह चला गया। adoption के बाद उसने सबसे पहले जो कामों में से एक किया, वह था मेरे bamboo plant को खाने की कोशिश करना, इसलिए उसका नाम ऐसा रखा
एक wireless cat feeder internet पर निर्भर था, और जब खाना नहीं निकला, तो बिल्ली administrator से शिकायत करने चली गई
यह किताब याद आई: Dogs that Know When their Owners are Coming Home https://www.sheldrake.org/books-by-rupert-sheldrake/dogs-tha...
token bucket से DDoS रोकना इतना आसान है कि आम तौर पर मेरी बिल्ली को मुझे जगाने की ज़रूरत सिर्फ तब पड़ती है जब मेरा Discord raid हो रहा हो
यह कुछ ऐसा लगता है जैसे firewall या ingress पर application server तक पहुँचने से पहले excessive load बनाने वाले packets drop कर दिए जाएँ
अगर connection requests की मात्रा या unique IP addresses की संख्या काफी बड़ी हो, तो attack अब भी service को overload कर सकता है
token bucket आम तौर पर पूरी resilience strategy का हिस्सा होता है, हर denial-of-service problem का universal solution नहीं