5 postmortems/2022 11 08 nextcloud
kiara edited this page 2022-11-15 22:03:08 +00:00

Samenvatting

Een poging tot handmatige upgrade van de nextcloud op cloud.bij1.org liep mis, waarna een backup van de host van anderhalve dag eerder is hersteld. Bestanden bleven versleuteld en hiermee onleesbaar. Een voorbeeld hiervan begint met:

HBEGIN:oc_encryption_module:OC_DEFAULT_MODULE:cipher:AES-256-CTR:signed:true:HEND----------------

Impact

  • Nextcloud systeem van dinsdagavond tot donderdagmiddag onbruikbaar.
  • Backup hersteld waarmee anderhalve dag aan wijzigingen verloren zijn gegaan.

Tijdlijn

2022-11-07 avond-nacht

  • Kiara onderzoekt mogelijkheden tot veilige uitrol in de organisatie van Nextcloud, begin met documenteren van wat/hoe en veiligheidsmaatregelen hierbij.
  • Om de uitrol schaalbaar te houden, zoekt een manier om mensen zelf een account aan te laten maken, enkele maanden eerder even gebruikt maar teruggedraaid om privacy overwegingen verder te overdenken.
  • Ondervindt dat registratie nu kapot blijkt, kijkt naar updaten van nextcloud als potentiele oplossing, van 24.0.4 naar 25 (25.0.1), via 24.0.7.
  • Nextcloud updater lijkt ook op beta channel de updates niet te willen faciliteren.

2022-11-08

  • Middag: Werkt verder aan documentatie om verdere uitrol te ondersteunen.
  • ~20:00: Begint poging tot handmatige update.
  • Echter, maakt omwille van storage enkel een kopie van de database en config, niet van de third-party apps of data. Concludeert dat het daarmee niet praktisch is om gebruik te maken van de ingebouwde maintenance mode, die naar buiten verwachtingen kan helpen stellen over het onderhoud, bij gebrek aan ruimte voor meer kopieën en instructies over de upgrade om de server tijdens de upgrade neer te halen.
  • Ondervindt dat apps op 24.0.7 nog ondersteund zijn, maar ons thema kapot blijkt. Herinnert zich echter dat nextcloud downgraden niet ondersteund is, en zet door met de update naar 25.0.1 in hoop op verbetering.
  • Nacht: Eenmaal op 25.0.1 blijken verschillende apps nog gemarkeerd als niet met versie 25 getest. Dit brengt tevens problemen met 2FA, daar de TOTP app nog niet met versie 25 blijkt te werken.
  • Komt er achter dat bestanden versleuteld blijken en hiermee onleesbaar. Doet vergeefse pogingen tot herstel, zie onder.
  • Overweegt email notificatie via het systeem, maar vindt dat o.b.v. non-triviale hoeveelheid opslag slechts twee gebruikers buiten (oud-)beheerders, en besluit om een breder bericht te laten wachten.
  • Licht collega's van ICT per groepschat in over het incident, waaronder het bijbehorende bestuurslid.

2022-11-09

  • ~8:30: Neemt contact met host op om te vragen over gemaakte backups, in lijn met de dienst die we hiertoe voor deze server afnemen.
  • ~10:00: Begint met downloaden van een kopie van de gegevens (van alle drie de Nextcloud versies) voor eventuele verdere analyse.
  • Overweegt gebruik van maintenance mode om duidelijker verwachtingen te stellen, al lijkt deze niet handig te combineren met lopende zaken als backup of analyse.
  • ~17:00: Licht niet-gestopte gebruikers met non-triviale hoeveelheid opslag in om verwachtingen te stellen.
  • Maakt begin aan schrijven van post-mortem.
  • ~17:42: Host mailt terug over beschikbare backup en kosten, biedt aan te adviseren over Nextcloud problemen o.b.v. interne ervaring.
  • ~18:00: Maakt poging tot contact met bestuurslid ICT om kosten te bevestigen. Bij gebrek aan bevestiging of advies van host, doet verdere poging tot uitzoeken van het incident. Kiest er om deze twee lopende zaken voor om voor het moment nog niet verder door te escaleren.
  • ~19:00: Afdelingenteam, een groep van gebruikers met enkel agenda's in het systeem, zoekt zelf contact voor verheldering.
  • 19:48: Legt de situatie verder uit aan de host n.a.v. hun aanbod tot advies.
  • 20:24: Vindt bij tweede poging contact met bestuurslid, krijgt akkoord en geeft deze door aan host voor herstel van backup.
  • Herstelt maintenance mode om extern verwachtingen te stellen nu dit niet langer clasht met backups of analyse.

2022-11-10

  • ~14:30~: systeem via backup hersteld

Andere pogingen tot herstel

  • Versleutelde bestanden openen van binnen nextcloud, van synchroniserende apparaten, of vanuit de web interface.
  • Proberen terug te gaan naar de eerdere versie 24.0.4, zij het zonder de third-party apps (inmiddels geupgrade naar nieuwere versies voor 25.0.1) en met de data map overgenomen van 25.0.1, bij gebrek aan kopie van voor de update.
  • Programmatische ontsleuteling proberen (occ encryption:decrypt-all) om dan in ieder geval de files veilig te stellen, wat ook bij een ander niets bleek te doen.
  • Admin instellingen over versleuteling.

Open vragen

  • Hoe kon de data van gebruikers bij een handmatige upgrade versleutelen? Te maken met encryptie module?

Oorzaken

  • Waarom raakte onze data versleuteld?
    • Een (handmatige) update naar een nieuwe (major) versie brak onze Nextcloud.
  • Waarom deden we een handmatige update?
    • Onze registratie plugin bleek niet langer te werken, en liep een major versie achter die om de nieuwste major versie van Nextcloud vroeg.
  • Waarom moesten we terugvallen op een oudere backup?
    • Tijdens de upgrade waren de gedocumenteerde procedures rondom backup niet naar behoren nageleefd.
  • Waarom waren de backup procedures niet naar behoren nageleefd?
    • Disks bij onze host kunnen niet tijdelijk vergroot of (triviaal) gekloond worden.
    • Redeneerde dat de source code third-party apps vervangbaar was.
    • Redeneerde dat de data in principe intact zouden blijven, daar deze niet direct overschreven werd door de update files.
  • Waarom werd het systeem beheerd door iemand die nog onvoldoende kennis van het systeem had genomen?
    • De eerste vrijwilliger die het systeem had opgezet was destijds uitgevallen.
    • Het systeem zelf was nooit breed in gebruik genomen, waardoor het lager in de prioriteiten kwam.
    • Capaciteit is een issue gebleken in het team, wat voor veel zaken veelal draait op een enkele vrijwilliger, met wisselvallig resultaat bij het onboarden van potentiële versterking.

Lessen

  • We kunnen er niet van uit gaan dat te peilen is wie het systeem gebruikt enkel o.b.v. of ze opslag hebben gebruikt.
  • Lock-in met 2FA valt programmatisch op te lossen, door de 2FA methoden elk uit te zetten voor de gebruiker.
  • Reguliere file transfer is traag voor handmatige backups, overweeg comprimeren of gespecialiseerde methoden (clone VPS / restic / robocopy?).
  • (Gedeeltelijke) kopieën gebruiken om via maintenance mode al iets beter verwachtingen over onderhoud te kunnen stellen.
  • Uitbesteden gaat potentieel wat minder snel voor het herstel van backups dan als we dit (ook) zelf konden doen.
  • Waar een optie, handmatige Nextcloud upgrades mijden om genoegen te nemen wanneer wachten tot versies beschikbaar komen in de web/command-line updaters.
  • (Handmatige) upgrades naar nieuwe major versie enkel uitvoeren onder adequate procedures: adequate backups vooraf, maintenance mode aan op het origineel, updates juist uitvoeren op de backup, om na bevestiging van het resultaat pas de nieuwe versie live te zetten, idealiter met nog tijdelijk behoud van de vorige versie.
  • Erken problemen bij semver-trivial versie updates als een teken om niet (zonder de nodige procedures) een major update te beginnen.
  • Alvorens een systeem te beheren lijkt het handig om hierover een kennisoverdracht aan te vragen van eerdere beheerders.
  • Het lijkt wenselijk onder de limitaties van deze host om systemen te kunnen poolen om te impact te reduceren van de limitatie dat disks er niet meer verkleind kunnen worden.

Actiepunten

  • Zoeken naar minder indringende methoden om gebruikers bericht te geven, d.w.z. via in-app of push notificatie i.p.v. per email.
    • Nextcloud Notificaties laten je kiezen of je email notificaties wilt.
  • Intern periodieke backups regelen om kosten van herstel via host te voorkomen.
    • bezig backups van host ook te regelen via R-storage
  • Overgaan op containers om extra variabelen bij het reproduceren van omgevingen weg te nemen. - getrackt via https://trello.com/c/5mqNXDci/75-applicaties-draaien-via-containers
  • Uitzoeken of de host API gebruikt kan worden om een kloon van een disk te simuleren (via kloon VPS).
    • Lijkt helaas nog niet een optie, zou handmatig gesimuleerd moeten worden.
  • Documenteer procedures voor toekomstige (major) updates.
  • Capaciteit in team IT verbeteren. - behoefte doorgegeven aan vrijwilligerscommissie
  • Kennisoverdracht starten op gebied van beheerde systemen waar nodig.
  • Uitzoeken of de onboarding in team IT verbeterd kan worden.