3 पॉइंट द्वारा GN⁺ 2024-04-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • जब औपचारिक 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 टिप्पणियां

 
GN⁺ 2024-04-15
Hacker News की राय
  • हमेशा की तरह insider threat को नज़रअंदाज़ करना आसान होता है। संदिग्ध grammar वाला धमकी भरा ईमेल? Bitcoin में ransom की मांग? क्या कभी सोचा कि उस हमले के पीछे असल में बिल्ली हो सकती थी?

    • तो फोन घर के अंदर से ही आ रहा था!
    • Bitcoin में “Bite” डाल दिया गया, कह सकते हैं
    • सही है, बिल्लियां grammar में खराब होने के लिए बदनाम हैं
  • 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 आ जाता था

    • अगर किसी इंसान को काफी लंबे समय तक बहता हुआ data देखने दो, तो वह patterns से tune हो जाता है। इंसान patterns खोजने के लिए बने हैं, और यह ज़रूरी नहीं कि वे उन्हें सचेत रूप से समझा भी सकें। किसी पल signal बस “ठीक नहीं” लगता है
    • ऐसे लोगों को canary कहते हैं, और उन्हें खदान की गहराई में रखते हैं
    • कुछ signals दिमाग के उन हिस्सों को bypass कर देते हैं जो साफ-साफ तथ्यों से निपटते हैं
      मैंने एक construction site supervisor के बारे में पढ़ा था, जो ज़मीन के अंदर या दीवारों के भीतर pipes को असामान्य रूप से अच्छे से ढूंढ लेता था, इसलिए workers उसका सम्मान करते थे। शुरुआत में वह इसे psychic ability मानने लगा था, लेकिन बाद में उसने निष्कर्ष निकाला कि उसने अनजाने में common patterns और कभी-कभी दिखने वाले non-intuitive clues सीख लिए थे। जैसे किसी building wall में vent देखकर यह भांप लेना कि basement में sewer pipe होने की संभावना है
    • Cyberpunk 2077 को PS4 के शुरुआती launch version पर खेलते समय मेरे साथ भी ऐसा ही था
      मैं उस point तक पहुंच गया था जहां काफी accurate तरीके से समझ जाता था कि “यह game अभी crash होने वाला है, save कर लेना चाहिए।” save करके 10 सेकंड बाद दोबारा शुरू करता, तो सचमुच crash हो जाता था; आज भी नहीं जानता कैसे पता चलता था
  • 5,000 डॉलर तो काफी राजकुमारों जैसी रकम है। 2016 में हमारी company से भी ऐसी मांग की गई थी
    हम पर DDoS हुआ और हमने उसे ignore करने का फैसला किया, लेकिन एहतियातन थोड़ा BTC खोजकर रखा था। उसके बाद DDoS defense खूब लागू करने में 5,000 डॉलर से कहीं ज़्यादा खर्च हो गया, लेकिन extortionist को पैसा न देना इसके लायक है

    • करीब 20 साल पहले sysadmin team में मैं किसी तरह DDoS हमलों को handle करने वाला व्यक्ति बन गया था। लगभग 2 हफ्तों तक धमकी भरे ईमेल आते रहे
      1. 50,000 डॉलर नहीं दिए तो हमला — कुछ खास नहीं हुआ
      2. 25,000 डॉलर नहीं दिए तो तैयार रहो — servers पर थोड़ी overload थी, लेकिन गंभीर नहीं
      3. 10,000 डॉलर नहीं दिए तो तैयार रहो — service पर बड़ा असर डालने वाला गंभीर हमला हुआ
      4. 5,000 डॉलर, अब सच में गुस्सा आ गया — इस बार London के Tier2 ISP और पूरे data center को एक दिन के लिए down कर दिया। London Internet Exchange पर peering कर रहे दूसरे carriers को हमारे service provider की तरफ traffic blackhole करना पड़ा, और आखिर में हमारा एक IP भी कुछ समय तक blackhole में रहा। हमें जल्दबाज़ी में DDoS mitigation service, नया data center और servers खोजने पड़े
        हमने किसी भी email का जवाब नहीं दिया। attackers भी काफी बेवकूफ थे, क्योंकि उन्होंने सिर्फ उस web server पर हमला किया जो अच्छी connectivity वाली जगह पर था
        असल में पैसा कमाने वाली service Caribbean में थी, और उसके पास सिर्फ 1.5Mbps T1 और 0.5Mbps satellite backup था। वहां को वे कहीं ज़्यादा आसानी से और लंबे समय तक saturate कर सकते थे, और तब प्रति घंटे revenue loss लगभग 10 लाख डॉलर होता
    • extortion money या ransom देने में दिक्कत यह है कि इससे attackers को फिर लौटकर वही करने का incentive मिलता है
      किसी attacker को 5,000 डॉलर देना defenses बनाने से सस्ता लग सकता है, लेकिन defense होने पर आगे हमले झेलने की संभावना कम हो जाती है। और जैसा कहा, criminals को पैसा न देना अपने-आप में भी मूल्यवान है
  • “मैंने जवाब नहीं दिया, लेकिन पीछे मुड़कर देखें तो उन्हें चिढ़ाना मज़ेदार होता” वाले हिस्से पर, कोई जवाब न देना ही इकलौता सही जवाब है
    चिढ़ाने से आप उल्टा ज़्यादा नजर में आ सकते हैं और दूसरे हमलों का target बन सकते हैं। उससे हासिल क्या होगा?

    • सही है, पता है कि इससे बस और बड़ी समस्या बुल सकती है
      फिर भी कल्पना करना मज़ेदार था, खासकर article में link किए इस video को देखने के बाद: https://www.youtube.com/watch?v=dWzz3NeDz3E
  • पहले मेरे परिवार के एक सदस्य को dishwasher से पानी leak होने का पता बिल्ली alert की वजह से चला था
    निष्कर्ष यह था कि बिल्ली या तो उन्हें बचाने की कोशिश कर रही थी, या मारने की—दो में से एक

    • Neil Gaiman के उपन्यास Anansi Boys में एक मिलता-जुलता किस्सा है
      बाहर सो रहा एक व्यक्ति कौए की आवाज़ से जागता है, और ठीक उसी समय एक बड़ी बिल्ली-प्रजाति का जानवर, शायद बाघ, चुपके से पास आ रहा होता है
      एक पात्र मानता है कि कौआ उस व्यक्ति को चेतावनी देने की कोशिश कर रहा था, जबकि दूसरा मानता है कि पक्षी ने सोए हुए व्यक्ति के बारे में बाघ को इसलिए बताया ताकि भोजन के बाद बचा हुआ हिस्सा खा सके
    • “बचाने की कोशिश कर रही थी, या मारने की” — यह तो उलटी Schrödinger की बिल्ली हो गई
  • “भयानक grammar” कहना, सच में ChatGPT से पहले का दौर लगता है
    थोड़ा ज़्यादा गंभीरता से कहें तो, क्या कभी DDoS हमलों को हमेशा के लिए रोकने का कोई तरीका निकलेगा? सभी threats बुरे होते हैं, लेकिन DDoS सबसे घटिया किस्म का attack लगता है। इसमें कोई खास skill या knowledge नहीं चाहिए; बस script चला दो, या किसी ऐसे व्यक्ति को पैसे दे दो जो इसे service के तौर पर चला दे

    • यह “बस एक script चलाने” जितना simple नहीं है
      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 करते हैं
    • Cloudflare कुछ centralization cost स्वीकार करने पर काफी अच्छे से रोक देता है
      protocol layer पर DDoS-resilient बनाने का कोई तरीका हो तो शानदार होगा, लेकिन पता नहीं वह संभव है या नहीं
    • application-layer DDoS को आम तौर पर ऐसे रोका जाता है कि जिस client ने कोई महँगा काम करके नहीं दिखाया, उसके लिए आप महँगा काम न करें। कहना आसान है, लेकिन असल में कभी-कभी मुश्किल होता है
      और 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 भी हो सकता है
    • topic की वजह से ChatGPT मुझे CatGPT पढ़ा, और अब यह दिमाग से निकल नहीं रहा
    • अगर network कहीं ज़्यादा distributed और low-bandwidth हो, तो शायद संभव हो
      मेरे ज़्यादातर customers Mexico में हों और Canada DDoS करे, जिससे मेरे और Canada के बीच की line भर जाए, तो शायद यह बड़ी problem न हो। बशर्ते Mexico की तरफ़ के consumer routers उस Canada bottleneck की “मदद” करने न लगें
  • मुझे लगा था cat feeder को alert से connect किया गया होगा
    खैर, cute है। बिल्ली का नाम क्या था?

    • यह लिखते समय मैंने सोचा कि अगर कोई अच्छी तरह trained dog हो, तो monitoring service को किसी खास sound निकालने वाली device से जोड़ा जा सकता है, और वह sound सुनकर dog किसी इंसान को alert कर दे
      उसका नाम Bamboo था। दुख की बात है कि cancer से वह चला गया। adoption के बाद उसने सबसे पहले जो कामों में से एक किया, वह था मेरे bamboo plant को खाने की कोशिश करना, इसलिए उसका नाम ऐसा रखा
    • मज़ेदार बात यह है कि Australian telecom company Optus के down होने का पहला customer को पता चलने का तरीका भी यही था
      एक wireless cat feeder internet पर निर्भर था, और जब खाना नहीं निकला, तो बिल्ली administrator से शिकायत करने चली गई
    • Purrvice की Danielle का सुझाव दूँगा
  • यह किताब याद आई: Dogs that Know When their Owners are Coming Home https://www.sheldrake.org/books-by-rupert-sheldrake/dogs-tha...

  • token bucket से DDoS रोकना इतना आसान है कि आम तौर पर मेरी बिल्ली को मुझे जगाने की ज़रूरत सिर्फ तब पड़ती है जब मेरा Discord raid हो रहा हो

    • पहली बार सुना, इसलिए खोजा: https://en.wikipedia.org/wiki/Token_bucket
      यह कुछ ऐसा लगता है जैसे firewall या ingress पर application server तक पहुँचने से पहले excessive load बनाने वाले packets drop कर दिए जाएँ
    • DDoS की सिर्फ कुछ types के लिए ही ;)
      अगर connection requests की मात्रा या unique IP addresses की संख्या काफी बड़ी हो, तो attack अब भी service को overload कर सकता है
      token bucket आम तौर पर पूरी resilience strategy का हिस्सा होता है, हर denial-of-service problem का universal solution नहीं