Uw client maakt nog verbinding op de dag dat het buitendienststellingsticket opengaat. Er zit een profiel in de app, het onderhandelt, en de tunnel komt omhoog alsof er niets is veranderd. Dat is het moment om in de tegenovergestelde richting te werken van hoe u de dienst hebt gebouwd: begin bij de clientlijst, ga naar buiten naar de listener, dan naar de firewall, en eindig met de inloggegevens die dat allemaal overleven. De VM uitzetten is de laatste stap, niet de eerste. Deze handleiding gaat ervan uit dat u consoletoegang tot de host hebt en de bevoegdheid om clientgegevens en DNS te bewerken.

Loop eerst de clientlijst door

Open wat uw profielen ook distribueert en lees de lijst voordat u de server aanraakt. Elke vermelding is een apparaat dat denkt dat het toegang heeft: telefoons, laptops, een filiaalrouter, een container die elke nacht synchroniseert. Exporteer die lijst naar het ticket, want zodra de host weg is, is er geen wg show meer dat u vertelt wie er verbonden was.

Sorteer elk apparaat als vervangend eindpunt, niet meer nodig of onbekend. De onbekende bak is degene die ertoe doet, want dat zijn de profielen die iemand over maanden in een la vindt en probeert. Stuur de kennisgeving op hetzelfde kanaal dat u voor toegangsverzoeken gebruikt, en zet er een datum in voor wanneer het oude eindpunt stopt met antwoorden.

Trek de identiteit in, niet alleen het bestand

Twee verschillende handelingen heten beide intrekking. Op WireGuard is een peer alleen geautoriseerd door zijn publieke sleutel die in een peer-sectie met een AllowedIPs-item verschijnt, dus het verwijderen van het configuratiebestand van de laptop verandert niets op de server. Verwijder het peer-blok en pas het bestand opnieuw toe zonder de peers te laten vallen die u houdt, zoals de wg(8)-handleiding beschrijft:

wg show
wg set wg0 peer <CLIENT_PUBLIC_KEY> remove
wg syncconf wg0 <(wg-quick strip wg0)

wg syncconf is het deel dat u een onderhoudsvenster bespaart. Het bouwt de interface uit het bestand ter plaatse opnieuw op, zodat het verwijderen van één peer de tunnel niet neerhaalt die alle anderen gebruiken. Als u de hele host buiten dienst stelt in plaats van één peer, is de volgorde nog steeds belangrijk, omdat die sleutels elders vertrouwd kunnen zijn.

Bij een X.509-opzet is de intrekkingsstap het certificaat, niet het bestand: openssl ca -revoke client.crt en dan openssl ca -gencrl -out crl.pem. Dat heeft alleen effect waar de verifier het leest, wat betekent dat een OpenVPN server met crl-verify geconfigureerd en daarna opnieuw geladen. Als deze gateway de enige gebruiker van die CA is, verliest de CRL zijn betekenis op de dag dat hij sterft; als dezelfde CA voor een tweede gateway tekent, blijft een certificaat dat u nooit hebt ingetrokken daar werken.

Accounts zijn het derde geval en het geval dat het vaakst wordt overgeslagen. Toen de gateway zich authenticeerde tegen RADIUS, LDAP of een gehoste identiteitsprovider, leeft het account buiten de VPN. Schakel het uit in de directory. Het verwijderen van een gebruikersstanza op de server laat geldige inloggegevens achter die het vervangende eindpunt accepteert op het moment dat het naar dezelfde directory wijst.

Sluit de listeners en de paden ernaartoe

Stop de dienst op een manier die een herstart overleeft, en bevestig dan met een socketlijst in plaats van de unitstatus. systemctl disable --now wg-quick@wg0 stopt de interface en verwijdert de routes en regels die wg-quick heeft toegevoegd; systemctl disable --now openvpn-server@server doet hetzelfde voor een sjabloonmatige OpenVPN-instantie. Volg beide met ss -lunp en ss -ltnp. Een leeg resultaat voor de oude poort is het enige bewijs dat telt.

Wat wg-quick heeft toegevoegd, verwijdert wg-quick. Wat u met de hand hebt toegevoegd, blijft: een permanente NAT-regel, een firewalltoestemming, een router-portforwarding, een ingress-regel van een cloudbeveiligingsgroep, een loadbalancer-listener. Die moeten expliciet worden verwijderd, en het DNS-record ook, dat wil zeggen de A, de AAAA en elke CNAME die naar de naam wijst. Een naam die naar een dode host resolvet, faalt anders dan een naam die niet resolvet, en dat verschil kost iemand een middag.

De kopie die u vergeet, is de kloon. Een snapshot of een VM die uit een back-up is hersteld, bevat nog de hostsleutels en de oude peerlijst, en als iets hem op hetzelfde adres terugbrengt, verbinden clients opnieuw met een dienst waarvan u denkt dat die buiten dienst is. Label de back-upset als behorend bij een uitgefaseerde dienst en houd hem buiten automatische herstelpaden.

Jaag op wat nog naar het oude eindpunt wijst

Gecachte profielen overleven DNS. Een opgeslagen configuratie met een numeriek adres blijft bellen nadat het record weg is, en een altijd actieve client probeert opnieuw bij elke netwerkwijziging. Dat is ruis en geen toegang, omdat de listener gesloten is, maar weten naar welke van de twee u kijkt, bepaalt hoe u het ticket beantwoordt.

Vee daarna de afhankelijkheden uit die niemand onder VPN archiveert: uptimecontroles die de poort aftasten, back-uptaken die configuraties van de host haalden, automatiseringsgegevens die werden gebruikt om peer-items te pushen, herstelaccounts die alleen voor dit eindpunt zijn aangemaakt. Elk is een toegangspad met zijn eigen levensduur en zijn eigen eigenaar, dus elk krijgt een beslissing in plaats van een stille verwijdering.

Controleer, en schrijf het dan op

De buitendienststelling is klaar wanneer een test van buitenaf faalt zoals u verwacht. Verbind vanaf een netwerk dat u niet beheert met het oude adres en de oude poort. Een gefilterd of geweigerd resultaat is het succesgeval. Bevestig in de client-app dat het profiel is verwijderd en niet alleen uitgeschakeld, en dat geen enkel beheerprofiel het stilzwijgend weer toevoegt.

Schrijf daarna op wat u hebt gedaan: eindpunt, datum, ingetrokken sleutels en certificaten, uitgeschakelde accounts, waar de back-ups staan. Wie de volgende keer een oude configuratie vindt, moet zonder gokken kunnen antwoorden of die is ingetrokken of alleen verwijderd, en een korte tabel in het ticket doet dat.

Voordat u het ticket sluit:

  • clientprofielen verwijderd of vervangen, onbekende apparaten opgelost
  • peers verwijderd en de configuratie opnieuw toegepast, of certificaten ingetrokken en de CRL gepubliceerd
  • directoryaccounts uitgeschakeld, niet alleen lokale bestanden verwijderd
  • dienst uitgeschakeld, geen listener meer op de oude poort
  • firewall, portforwarding, beveiligingsgroep en DNS-items verwijderd
  • back-ups gelabeld, snapshot uitgesloten van herstelpaden
  • monitoring- en automatiseringsgegevens buiten dienst gesteld

Controleer de vervanging apart, vanaf een client die het oude profiel nooit heeft gehad. Die ene test vertelt u of u een dienst buiten dienst hebt gesteld of alleen het probleem hebt hernoemd.

Gerelateerde artikelen