Het image start, de dienst begint en clients verbinden. Dat is het moment om stil te staan en te vragen welke van twee heel verschillende bewerkingen zojuist heeft plaatsgevonden. Ofwel de kopie herstelt één logische gateway die eerder bestond, ofwel voegt zij een tweede gateway aan de vloot toe. Beide zijn legitiem, en ze hebben verschillende gevolgen voor identiteit en toegang. Een machine die schoon opkomt bewijst geen van beide.

Drie voorwaarden bepalen het antwoord, en het zijn de drie emmers materiaal die een image kan dragen. Sorteer ze voordat het image wordt gebouwd, niet nadat het twee keer is uitgerold.

Bepaal eerst welke van de twee bewerkingen u uitvoert

Een herstel behoudt één dienstidentiteit. De oude instantie is weg, de naam en het certificaat blijven, en clients blijven hetzelfde eindpunt vertrouwen. Een toevoeging maakt een tweede identiteit die clients, logboeken en intrekking allemaal moeten onderscheiden.

Het onderscheid is niet cosmetisch. Als twee levende hosts hetzelfde gateway-certificaat presenteren, kan een client ze niet onderscheiden, een auditspoor ook niet, en het intrekken van dat certificaat verwijdert beide tegelijk. Dat is misschien precies wat een bewust ontwerp voor hoge beschikbaarheid wil, en het is zelden wat een haastige imagekopie bedoelt.

De eerste beslissing is dus een zin, opgeschreven voordat het image de buildhost verlaat: deze kopie herstelt gateway A, of deze kopie wordt gateway B. Alles daarna is boekhouding tegen die zin. Als niemand hem kan schrijven, is de kopie niet klaar om te worden gebouwd.

Herbruikbare invoer, identiteit en bevoegdheid, uitrolstatus

De herbruikbare emmer is de makkelijke: pakketten, herziene configuratie zonder geheimen, dienstsjablonen, verhardingsinstellingen. Daar is een image echt goed in, en het kan onbeperkt worden gereproduceerd.

De emmer identiteit en bevoegdheid is waar kopieën misgaan. De privésleutel en het certificaat van een gateway identificeren die gateway bij elke client. De ondertekeningssleutel van de certificaatautoriteit is een ander object met een andere macht: hij geeft identiteiten uit. Een uitgever vertrouwen betekent niet dat elke nieuwe gateway de mogelijkheid nodig heeft om uit te geven, en de ondertekeningssleutel in een image meesturen geeft die mogelijkheid aan alles wat het image kan lezen.

De emmer uitrolstatus is degene die mensen vergeten omdat hij op configuratie lijkt. Luisteradressen, adrespoelen, gepushte routes, resolverinstellingen en lokale integratie coderen allemaal aannames over de eerste host. Een tweede node die ze kopieert kan toewijzen uit een poel die een andere gateway al bezit, of clients naar een bron sturen die alleen naast het origineel bestaat.

Wat een nieuwe node moet krijgen, en van wie

Een zelfstandig beheerde node zou zijn eigen inloggegevens moeten krijgen via het goedgekeurde registratieproces, waarbij de ondertekeningsbewerking plaatsvindt waar de ondertekeningssleutel woont en niet op de nieuwe host. Noteer welke identiteit kan worden ingetrokken zonder de andere nodes te storen; als het antwoord "alle" is, heeft het ontwerp één identiteit die zich voordoet als twee.

Netwerkwaarden verdienen dezelfde behandeling. Kies een poel, een luisteradres en een set gepushte routes die niet botsen met de bestaande gateway, en schrijf ze in de provisioning-invoer in plaats van in het image. De invoer is herzienbaar; het image niet.

Er is een legitiem tussenliggend geval. Een ondersteund herstel- of replicatieontwerp kan bewust één logische dienstidentiteit over hosts aanhouden, met gecontroleerde toegang tot de oude kopie en een rotatieplan. Dat is een beslissing met een eigenaar, niet een standaard die gebeurt omdat het image handig was.

openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20

De eerste opdracht vertelt welke identiteit de node werkelijk presenteert en wie die heeft ondertekend. De tweede is een begininventaris, geen bewijs: privémateriaal kan buiten die map leven, in een applicatiedatabase of in een snapshotlaag die het draaiende bestandssysteem niet meer toont.

Wat een kopie van het image stil met zich meedraagt

Een bestand uit de nieuwste revisie van een image verwijderen haalt het niet uit oudere revisies, lagercaches of snapshots die zijn gemaakt terwijl het bestond. Daarom moeten images met inloggegevens hun hele leven als gevoelige objecten worden behandeld, niet alleen op het moment dat ze worden gebouwd.

Controleer de image-inhoud en de provisioning-invoer als afzonderlijke vragen. Het image beantwoordt "wat zit er in dit artefact", de invoer beantwoordt "wat wordt deze instantie bij de eerste start". Een schoon image met een bootstrapscript dat een gedeelde sleutel ophaalt, beantwoordt de eerste vraag goed en de tweede slecht.

Houd herstelimages die rechtmatig geheimen bevatten beperkt tot de mensen die ze nodig hebben, en noteer waar ze worden opgeslagen. Het alternatief, een image dat handig is omdat het zonder enige provisioning werkt, is hetzelfde image dat iedereen die het vindt de identiteit van de gateway geeft. Slechts één van die twee taken verschijnt in een buildlog.

Toelatingscontroles voor productie

Voordat de node verkeer aanneemt, bevestig vier dingen: de identiteit die hij presenteert, de clients die hij accepteert, de bronnen die hij mag bereiken en het retourpad voor de adressen die hij uitgeeft.

systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'

Controleer daarna het negatieve geval, dat ongelukken opvangt: heeft de nieuwe node beheerders- of clienttoegang die voor het origineel bedoeld was? Een gekopieerde configuratie kan een extra clientvermelding, een geërfde beheerroute of een push-richtlijn bevatten die op de eerste host zinvol was.

Als een image met levende geheimen al buiten zijn goedgekeurde grens is geraakt, vervang de inloggegevens en beperk de kopieën. Het bestand uit de laatste build verwijderen is niet hetzelfde als de inloggegevens buiten gebruik stellen die oudere kopieën nog hebben, en de kloof tussen die twee feiten is precies het venster dat een aanvaller nodig heeft.

Gerelateerde artikelen