Et certifikat, der valideres mod en delt autoritet, har bestået en test af tillid, ikke en test af medlemskab. De to beslutninger bliver ofte slået sammen, fordi de begge sker ved forbindelsestidspunktet, og sammenblandingen forbliver usynlig, indtil nogen, der ikke burde være på en tjeneste, bliver lukket ind på den. Rettelsen er ikke en anden autoritet; det er en anden beslutning, truffet pr. tjeneste og noteret der, hvor daemonen læser den. Hold de to adskilt, og det meste af forvirringen på dette område forsvinder.

En betroet kæde siger intet om tjenestemedlemskab

To tjenester kan acceptere samme udstedende hierarki og alligevel have forskellige populationer. En bærbar computer hører til den første og må ikke nå den anden, mens andre klienter fra samme hierarki faktisk hører til der. At fjerne autoriteten fra den tjeneste ville låse alle ude, der lovligt bruger den, så arbejdet er adgang, ikke tillid.

Det hjælper at forestille sig to låse på én dør. Certifikatet åbner den ydre lås, og en beslutning pr. tjeneste åbner den indre; ingen af dem erstatter den anden. En tjeneste med kun den ydre lås håndhæver slet ikke medlemskab, den autentificerer blot. Skriv begge beslutninger ned, før du ændrer noget, for en politik, der kun findes i form af en fungerende forbindelse, kan ikke revideres. Det følgende handler om den indre lås.

Gør valgfrie tilsidesættelser til en adgangsport

En klientkonfigurationsmappe er normalt en bekvemmelighed: filer i den tilsidesætter indstillinger for de klienter, de navngiver, og en klient uden fil kører ganske enkelt med serverens standardindstillinger. Et direktiv gør den bekvemmelighed til en port, så en manglende fil betyder, at forbindelsen afvises.

client-config-dir /etc/openvpn/service-a/clients
ccd-exclusive

Fællesskabsudgaven af OpenVPN 2.6 ccd-exclusive i sin manualside dokumenterer netop denne betingelse, og opslaget af den navngivne fil afhænger af klientens effektive identitet. Andre builds og produktstyrede servere kan afvige, så bekræft den installerede version, før du stoler på samme semantik andre steder.

Behandl stien ovenfor som et eksempel, og kontroller det udrullede layout i stedet for at oprette en mappe, som en guide har opfundet. Lad de eksisterende certifikatkontroller, serveridentitetskontroller og kontogodkendelse være præcis som før, fordi fragmentet tilføjer en betingelse og fjerner intet. Forbered ændringen før produktion, da en afvisning, der rejses på det forkerte sted, ligner en certifikatfejl og sender undersøgelsen mod autoriteten. Bekræft derefter, at loglinjen for en afvist klient nævner den manglende konfigurationsfil og ikke kæden.

Én mappe pr. tjeneste, ikke én fælles liste

Medlemskab hører til den tjeneste, der håndhæver det, så hver tjeneste har sin egen mappe og sine egne filer. At pege to tjenester på én liste får dem til at dele medlemskab uanset om nogen havde til hensigt det, og den resulterende ændring er svær at spore tilbage til en beslutning. Den delte autoritet kan forblive delt; adgangsfilerne kan ikke. At holde dem adskilt betyder også, at en fejl i én tjeneste ikke stiltiende kan udvide en anden.

En DEFAULT-post er det tilfælde, der vildleder folk. Den leverer reserveindstillinger, når ingen navngivet fil findes, men det er ikke den navngivne fil, som porten kræver, så den kan ikke lukke en klient ind alene. Test en klient, der slet ingen post har, og bekræft afvisningen; hvis den klient bliver lukket ind, anvendes reserven, og ccd-exclusive er ikke i kraft i den instans.

Den effektive identitet afgør, hvilken fil der læses

Opslaget bruger den identitet, klienten faktisk autentificerede som, hvilket normalt er certifikatets common name. Hvor serveren også verificerer et brugernavn og en adgangskode og mapper det navn til common name, skal filen i stedet matche det autentificerede brugernavn. En uoverensstemmelse efterlader en mappe fuld af plausible filnavne, der aldrig bliver valgt.

Læsning er den anden halvdel. Daemonen dropper normalt privilegier efter opstart, så den reducerede konto har brug for læseadgang til mappen og hver post i den. Klienter må ikke kunne oprette deres egen post gennem nogen skrivbar sti, fordi selvbetjeningsadgang fuldstændigt underminerer mekanismen. Kontroller monterings- og delingstilladelser og ikke kun filtilstanden, da en mappe, der ser lukket ud for én konto, kan være åben for en anden. Bekræft derefter, hvilken konto den kørende proces virkelig bruger, i stedet for hvilken konto unit-filen nævner. De to er kun ens, når intet andet har ændret dem.

Observer afvisning, adgang og tilbagekaldelse hver for sig

Prøv en identitet, der hører til tjenesten, og bekræft, at den opretter forbindelse. Prøv et gyldigt certifikat uden post, og bekræft, at det afvises. Prøv en identitet, der er lukket ind på den anden tjeneste, og bekræft, at den ikke lukkes ind her. Noter tjenesteinstansen og den effektive identitet ved hvert resultat, for et resultat uden den sammenhæng kan ingen andre genskabe.

Tilbagetrækning er en anden operation end tilbagekaldelse. Redigering af en adgangsfil fjerner én tjenestebemyndigelse, mens identiteten forbliver gyldig alle andre steder, hvorimod en kompromitteret nøgle kræver organisationens tilbagekaldelsesrespons. Beslut på forhånd, hvad der sker med sessioner, der allerede er oppe, da hverken en mapperedigering eller en tilbagekaldelsesliste afslutter dem af sig selv.

Adgang er også kun den første port. At tilslutte sig en tjeneste siger intet om de undernet, databaser eller administrationsgrænseflader, der ligger bagved, og den ressourcepolitik skal skrives og testes for sig.

Relaterede artikler