Twee verschillende klussen worden als een verkocht: een machine omvormen tot VPN-server, en een VPN-client toevoegen aan een laptop die moet aansluiten bij de gateway van iemand anders. Een installatiescript beantwoordt de eerste en kan de tweede niet beantwoorden, wat de README ook suggereert. Neem het project setup-ipsec-vpn als concreet voorbeeld: het bouwt een IPsec/L2TP-, Cisco IPsec- of IKEv2-server op een ondersteunde Linux-host met Libreswan en xl2tpd. Dat is een implementatiecontract voor een server, geen algemeen recept voor elke machine. Bepaal welke klus je hebt voordat het script draait, want alles daarna gaat over de server.

Wees eerlijk over de host

Een machine die ook iets anders termineert, of waarvan de firewall door een cloudcontrolelaag in plaats van het besturingssysteem wordt beheerd, is een andere installatie dan een schone virtuele machine. Schrijf het protocol op dat je inschakelt en de release die je gebruikt, en controleer beide tegen de ondersteuningslijst van het project, niet tegen een blogpost van vorig jaar.

De dienst inschakelen opent niet de weg ernaartoe. Voor IPsec moet het netwerk voor de host UDP 500 en 4500 doorlaten en, afhankelijk van de uitrol, het ESP-protocol zelf. Een script dat succesvol eindigt achter een beveiligingsgroep die protocol 50 laat vallen, heeft een server gemaakt die niemand bereikt, en niets in de uitvoer van de installateur zal dat zeggen.

Wat de installateur echt overneemt

Verwacht een IPsec-configuratie en geheimenbestand, een L2TP-daemonconfiguratie, PPP-opties en systemd-units die nu die poorten bezitten. De README van het project stelt dat bestaande configuratiebestanden voor wijzigingen worden geback-upt, wat nuttig is en niet hetzelfde als een back-up van de host. Bepaal welke componenten door de pakketten van de distributie worden bijgewerkt en welke door het script opnieuw te draaien of te herschrijven, want dat zijn twee onderhoudspaden met verschillende faalwijzen.

Pin de revisie die je hebt goedgekeurd. Een download-URL die de huidige standaardtak levert, kan volgende maand andere inhoud retourneren, dus noteer de commit of release die je hebt gedraaid en bewaar er een kopie van. Die ene gewoonte maakt van een niet-toe te schrijven toestand iets waar een tweede persoon om twee uur in de nacht over kan nadenken.

Wat het script je niet kan geven

Automatisering levert een werkende installatie op en stopt daar. Het beslist niet welke privéresources de tunnel moet bereiken, wat een kwestie van toegangsbeleid is waarover zowel de firewall van de host als het netwerk erboven een mening heeft. Het beslist niet wie inloggegevens ontvangt, hoe ze worden geleverd of hoe iemands toegang wordt verwijderd wanneer die vertrekt. En het beslist niet hoe de machine wordt hersteld na een slechte update, wat het deel is dat meestal op het slechtst denkbare moment wordt ontdekt.

Clientprofielen en getoonde geheimen zijn toegangsmateriaal, geen installatielogs. Een gegenereerd profiel dat in een gedeeld kanaal wordt geplakt, is een account, en dezelfde standaard geldt voor schermafbeeldingen van de installatiesamenvatting. Houd een beschermde inventaris bij van de identiteitstoestand die nodig is om de dienst te herstellen, en noteer welke van die inloggegevens sindsdien zijn ingetrokken.

De eerste client is de acceptatietest

Accepteer de uitrol vanaf één geautoriseerde client, met het protocol dat je daadwerkelijk hebt ingeschakeld. Controleer dat de privénaam wordt omgezet, dat het retourpad werkt, dat opnieuw verbinden zich correct gedraagt en dat een bestemming buiten de toegestane set wordt geweigerd. Een geslaagde login vanaf een andere clientapplicatie is geen bewijs voor degene die je hebt geleverd.

Als de combinatie die je wilt niet langer wordt ondersteund, kies dan voor de installatie een onderhouden pad. Een oude release nieuw leven inblazen, authenticatie verzwakken of een onverklaard script opnieuw draaien zijn uitstellingen, geen onderhoudsplannen, en elk ervan maakt de overdracht moeilijker.

Schrijf de overdrachtspagina

Houd het kort: de server, de revisie die hem heeft gebouwd, de poorten die hij nodig heeft, de componenten en hun update-eigenaren, de toegestane resources, het pad van de inloggegevens en de herstelprocedure. Voeg de console- of out-of-band-route toe die je gebruikt wanneer een wijziging aan de tunnel de toegang heeft gebroken. Dan erft de volgende persoon een dienst in plaats van een commando dat hij bang is twee keer te draaien.

Herzie die pagina wanneer de host verandert, en niet alleen wanneer er iets kapotgaat. Een overdrachtsdocument dat nooit wordt gelezen, is een document dat stil is opgehouden waar te zijn.

Gerelateerde artikelen