Bijgehouden sinds oktober 2019

Post-mortem: AMS-01, elf minuten, 14 oktober 2020

Een aanval van 340 Gbit/s gericht op één klant haalde de hele Amsterdamse site elf minuten van het netwerk. De filtering die wij sindsdien draaien bestaat daardoor.

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.

TijdGebeurtenis
02:41:04Verkeer naar een enkel klantadres stijgt van ongeveer 200 Mbit/s naar 90 Gbit/s in minder dan twintig seconden.
02:41:30Beide site-uplinks raken verzadigd. Pakketverlies wordt totaal voor alle prefixen op de site, niet alleen het doelwit.
02:42Geautomatiseerde meldingen gaan af op bereikbaarheid vanaf drie externe probes.
02:44Online 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:46Piek gemeten op 340 Gbit/s. Samenstelling is gereflecteerde UDP, meestal DNS en NTP, van tienduizenden bronnen.
02:47Besluit genomen om een upstream-discard van al het verkeer naar het doeladres aan te vragen. Dit was het enige beschikbare middel voor ons.
02:49Discard verspreidt zich bij de eerste upstream.
02:51Tweede upstream past het toe. Uplinkbezetting zakt onder capaciteit.
02:52:10Site volledig bereikbaar. Totale klantzichtbare uitval, elf minuten en zes seconden.
03:20Betrokken klant gecontacteerd en een nieuw adres aangeboden.
03:42Klant 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

  1. 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.
  2. Uplink bij AMS-01 verhoogd, eerst met 200 Gbit/s extra capaciteit en later naar de 400 Gbit/s die de site vandaag draait.
  3. 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.
  4. 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.
  5. 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.

Klaar wanneer jij dat bent

Kies een stad. Kies een formaat. Betaal in munt.

Geen formulieren over wie je bent, geen wachten op een mens die je goedkeurt, geen telefoontje om iets te verifiëren. De factuur wordt betaald en de inloggegevens belanden in je inbox.