Iedereen die een VPN-profiel in een forumthread plakt, begint bij dezelfde overtuiging. Het bestand bevat alleen een serveradres en een paar opties, dus het delen ervan voelt als het delen van een telefoonnummer. Dan leest iemand het en vindt op de vierde regel een onversleutelde privésleutel.

Het profiel is geen documentatie over de tunnel. Het is de identiteit van de tunnel, uitgeschreven.

De objecten in het bestand hebben niet hetzelfde geheimhoudingsniveau

Een openbaar CA-certificaat is bedoeld om te reizen. Een privésleutel van een client niet. Als beide in hetzelfde bestand staan, laat het onschuldige de hele bijlage veilig lijken. Dat is de valstrik.

OpenVPN maakt dit door zijn ontwerp erger. Het staat toe certificaten, sleutels en authenticatiemateriaal rechtstreeks in te bedden. Dat is handig voor uitrol en rampzalig voor delen. Het bestand dat begint met een leesbaar certificaatblok loopt door in de private helft.

WireGuard is er duidelijker over. Het interfacedeel draagt een privésleutel, en elke peer kan daarbovenop een vooraf gedeelde sleutel dragen. Er is geen onduidelijkheid over welke regels ertoe doen. Bijna elke regel doet ertoe.

Een screenshot is dezelfde lek in een ander formaat

Een configuratie als QR-code coderen maakt er geen voorbeeld van. De code draagt dezelfde bytes, en elke telefooncamera in de kamer kan hem decoderen. Hetzelfde geldt voor een screenshot van het configuratievenster van een client, waar de sleutel in de hoek leesbaar is.

Authenticatiebestanden en gerefereerde sleutelpaden horen bij dezelfde audit. Een profiel dat naar een extern bestand wijst, is niet automatisch veiliger, omdat het pad ergens kan uitkomen waar een lezer bij kan. Een token in een authenticatiebestand is net zo bruikbaar als een wachtwoord, en het lijkt er zelden op.

Stuur de fouttekst, niet de sleutel

De diagnose heeft de fouttekst, de clientversie en de namen van de geprobeerde opties nodig. De sleutel is niet nodig. Schrijf de vraag met die drie dingen, en vervang elk geheim en elke onnodige netwerkidentificatie voordat het bestand je machine verlaat.

Het handboekgedeelte van OpenVPN over inline-bestanden is een nuttige kaart van waar die objecten zitten. Het herinnert er ook aan hoeveel een enkel profiel kan bevatten.

# which lines in this profile look like secrets?
grep -n -E 'PrivateKey|PresharedKey|password|auth-user-pass|BEGIN .*PRIVATE KEY' wg0.conf

# OpenVPN: show the structure without printing key material
awk '/BEGIN/{print NR": "$0} /^[a-z-]+ /{print NR": "$1}' office.ovpn

Lees daarna de definitieve bijlage in plaats van op je geheugen van de bewerking te vertrouwen. Sleutels verstoppen zich in latere blokken, in een niet-geredigeerd commentaar en in een regel die je als structureel had aangemerkt.

Na blootstelling is rotatie de enige reparatie

Het bericht verwijderen trekt niets in. Wie het bestand heeft ontvangen, heeft nog steeds werkende inloggegevens, daarom moet de uitgever ze via het eigen proces van de dienst intrekken of vervangen. Een lokale kopie verwijderen verandert niets aan de andere kant.

Bewaar werkende profielen met een beschermde methode, en verwijder verouderde geïmporteerde items bewust in plaats van drie kopieën in een downloadmap achter te laten. Een profiel dat je niet meer gebruikt, is nog steeds een inloggegeven tot het wordt ingetrokken.

De gewoonte die de moeite waard is om op te bouwen, is klein. Voordat een profiel de machine verlaat, vraag wat er nog meer in zit naast het adres, en antwoord door het bestand te lezen in plaats van het te onthouden.

Gerelateerde artikelen