Samenvatting
Op 14 oktober 2020, tussen 02:41 en 02:52 UTC, was elk exemplaar op AMS-01 onbereikbaar. Een volumetrische aanval gericht op een enkel klantadres piekte op 340 Gbit/s en verzadigde de uplinks van de site. We losten dit op door upstream te vragen al het verkeer naar het doeladres te verwerpen, wat de site herstelde en die ene klant nog vijftig minuten offline liet. Er ging geen data verloren en er werd geen exemplaar beschadigd. De site had op dat moment geen scrubcapaciteit, en dat was een aankoopbeslissing in plaats van een ongeluk.
Tijdlijn
Alle tijden UTC, 14 oktober 2020.
| Tijd | Gebeurtenis |
|---|---|
| 02:41:04 | Verkeer naar een enkel klantadres stijgt van ongeveer 200 Mbit/s naar 90 Gbit/s in minder dan twintig seconden. |
| 02:41:30 | Beide site-uplinks raken verzadigd. Pakketverlies wordt totaal voor alle prefixen op de site, niet alleen het doelwit. |
| 02:42 | Geautomatiseerde meldingen gaan af op bereikbaarheid vanaf drie externe probes. |
| 02:44 | Online dienstdoende engineer. De aanval is zichtbaar op de portgrafieken en nergens anders, omdat onze flowverzameling was gesampled met een snelheid die het niet kon bijbenen. |
| 02:46 | Piek gemeten op 340 Gbit/s. Samenstelling is gereflecteerde UDP, meestal DNS en NTP, van tienduizenden bronnen. |
| 02:47 | Besluit genomen om een upstream-discard van al het verkeer naar het doeladres aan te vragen. Dit was het enige beschikbare middel voor ons. |
| 02:49 | Discard verspreidt zich bij de eerste upstream. |
| 02:51 | Tweede upstream past het toe. Uplinkbezetting zakt onder capaciteit. |
| 02:52:10 | Site volledig bereikbaar. Totale klantzichtbare uitval, elf minuten en zes seconden. |
| 03:20 | Betrokken klant gecontacteerd en een nieuw adres aangeboden. |
| 03:42 | Klant verhuisd naar een nieuw adres; hun service keert terug. |
Grondoorzaak
De directe oorzaak was een aanval die we niet konden absorberen. Wat het werkelijk veroorzaakte, is dat we hosting verkochten in een stad waar aanvallen van deze omvang routine waren, met tweehonderd gigabit aan uplink en helemaal geen filtering, en een upstream-discardovereenkomst als een plan behandelden.
Dat is geen pech. Het was een beslissing, genomen in 2019 ten gunste van het uitgeven van het geld aan hardware, en die was fout.
Twee secundaire fouten maakten het erger. Onze flowverzameling was gesampled met een snelheid die ons geen nuttig detail gaf tijdens een echte gebeurtenis, dus de eerste vier minuten gingen op aan het lezen van interface-tellers. En de discard was handmatig, waarvoor een mens wakker, geauthenticeerd en zelfverzekerd moest zijn, wat drie vereisten te veel zijn om drie uur 's nachts.
Wat dit de klant kostte
Om eerlijk te zijn: we losten ons probleem op door hun service uit te schakelen. Een discardroute is een beslissing dat één klant onbereikbaar zal zijn, zodat alle anderen dat niet zijn. Het was de juiste oproep met de middelen die we hadden, en het was nog steeds hun uitval in plaats van de onze, en ze hadden geen product van ons gekocht dat iets anders beloofde.
Ze bleven. We rekenden hen oktober niet aan.
Wat we veranderden
- Altijd-aan-scrubbing aan de edge, binnen drie weken gekocht, vanaf 1,2 Tbit/s capaciteit. Filtering staat permanent in het pad, dus er is geen detectievertraging en geen knop voor iemand om om 02:47 in te drukken. Dit is nu standaard op elke site, tot 12 Tbit/s op de grootste.
- Uplink bij AMS-01 verhoogd, eerst met 200 Gbit/s extra capaciteit en later naar de 400 Gbit/s die de site vandaag draait.
- Niet-gesampelde flowtelemetrie op elke site-edge, zeven dagen bewaard voor operationele doeleinden. Dit is verkeersmetadata voor onze eigen poorten; het is geen instanceverkeer en het is niet de inhoud van wat dan ook.
- De discardroute werd automatisch, met een gedocumenteerde drempel, een aangekondigd beleid en een e-mail aan de betrokken klant binnen zestig seconden in plaats van negenendertig minuten.
- Aanvallen worden gepubliceerd op de statuspagina, met omvang en duur, ongeacht of iemand het opmerkte.
Wat we niet veranderden, en waarom
We zijn niet gaan rekenen voor filtering. Basis-scrubbing is inbegrepen op elk plan op elke site en is dat altijd geweest sinds de dag dat we het kochten. Een aanval is geen service die het slachtoffer vroeg. Layer-7-filtering met aangepaste regels bestaat als add-on, omdat het een mens aan onze kant nodig heeft, en dat is iets anders dan een volumetrische overstroming.
We hebben de discardroute niet verwijderd. Twaalf terabit per seconde is een getal, geen oneindigheid, en doen alsof we het botte middel nooit meer nodig zullen hebben, zou oneerlijk zijn. Wat veranderde, is dat het nu de gedocumenteerde laatste redmiddel is in plaats van de enige stap.
We hebben geen per-klant verkeersplafonds opgelegd. Het beperken van elke klant tot een veilig deel van de uplink zou dit hebben voorkomen en zou ook elke legitieme piek hebben afgeremd. De filtering hoort aan de edge, op de aanval, niet op de klant.
We hebben de klant niet naar een ander product verplaatst. Ze draaiden wat ze hadden betaald, op het plan dat bij hen paste, en het was niet hun schuld dat iemand een botnet op hen richtte.