Å setje tilgangen til ein klient på pause og å fjerne han for godt ser ut som same oppgåva heilt til du prøver å angre ein av dei. Tilbakekalling av eit sertifikat skriv ei oppføring som tenaren behandlar som endeleg, og å reversere henne betyr å redigere databasen til utferdaren for hand. Å sleppe den levande tunnelen er ein administrasjonskommando som ikkje endrar noko med tillit. Vel spaken ved å spørje om nøkkelen framleis er til å stole på, ikkje ved å spørje kor mykje det hastar med førespurnaden.

Trua: tilbakekalla og suspendert er det same

Ein underleverandør blir sett på pause i ei veke, og refleksen er å tilbakekalle, fordi tilbakekalling høyrest ut som å slå noko av. Det ser ryddig ut, det tek ti sekund, og det lèt ei databaseendring bli den einaste vegen tilbake. Refleksen er forståeleg, og han er nærare å brenne eit pass enn å lukke ei dør. Ein eining på pause og ein kompromittert nøkkel treng ulik handsaming, og berre éin av dei er billeg å reversere.

Skilnaden gjeld legitimasjonen og ikkje personen. Ein nøkkel som framleis er i dei rette hendene kan setjast på pause og takast opp att utan tap av tillit. Ein nøkkel som kan ha vorte kopiert bør aldri gjenopprettast, fordi gjenoppretting hevdar at kopien ikkje finst.

Skriv ned svaret før du rører nokon av dei to systema. Viss du ikkje kan seie om nøkkelen er eksponert, er det konservative svaret utskifting.

Slepp den levande økta med administrasjonsgrensesnittet

OpenVPN tilbyr eit administrasjonsgrensesnitt som kan liste økter og drepe éi av dei etter fellesnamn. Slå det på på localhost, hald det unna det offentlege grensesnittet, og send drep-kommandoen når ei økt må forsvinne no. Kommandoen lukkar berre den tunnelen, og alle andre klientar held fram med å verke.

Dette er eit svar på eit aktivt problem, ikkje ein suspensjonspolicy. Den same profilen kan kople til på nytt i løpet av eit minutt, fordi ingenting ved legitimasjonen er endra. Bruk han når økta må bort og den varige avgjerda framleis blir teken.

Stadfest at økta var tilkopla før du drep henne, så du ikkje jaktar ein klient som aldri kopia til. Statuskommandoen nedanfor skriv ut det som er tilkopla akkurat no.

printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506

Viss drepinga rapporterer at det ikkje finst ein slik klient, er fellesnamnet i sertifikatet ikkje strengen du skreiv. Les statusutdataa i staden for namnet på profilfila.

Kva CRL-en faktisk styrer

Tenaren rådspør ikkje eit tilbakekallingsflagg som er lagra på sertifikatet. Han les tilbakekallingslista for sertifikat som er namngitt i crl-verify, ved kvar ny tilkopling, og avviser eit sertifikat der serienummeret står på den lista. To konsekvensar følgjer, og begge betyr noko driftsmessig. Fila må vere lesbar for kontoen tenaren gir frå seg privilegia til, og ein klient som alt er tilkopla held fram med å køyre til han koplar til på nytt.

Den andre konsekvensen overraskar folk under hendingar. Tilbakekalling av eit sertifikat lukkar ikkje tunnelen som brukar det akkurat no. Para tilbakekallinga med eit administrasjonsdrap viss økta må avsluttast med det same, og handsam dei to handlingane som separate steg i runboka.

Inspiser lista for å sjå kva tenaren faktisk vil handheve, i staden for å stole på tidsstempelet til den siste fila du kopierte. Talet på serienummer er den delen som betyr noko.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pem

Ei liste utan oppføringar og ei liste med dei rette oppføringane ser identiske ut i ei katalogoppføring, og difor er det verdt å skrive ut talet på serienummer. Løyvelinja betyr like mykje, fordi ei fil som daemonen ikkje kan lese gir ein feil som ser ut som ein avvist klient.

Gjenopprette ei oppføring, forsiktig

Å gjenopprette eit sertifikat betyr å snu ei oppføring i utferdardsdatabasen og publisere ei ny liste. easy-rsa 3 held den databasen som index.txt under PKI-katalogen, medan eldre oppsett brukte ei anna ordning. Ei line byrjar med ein statusbokstav og ein utløpsdato. Ei tilbakekalla line set inn eit tidsstempel for tilbakekallinga før ho held fram med serienummeret, filnamnet til sertifikatet og det distinkte namnet. Å setje ei line tilbake betyr å slette det tidsstempelet og snu bokstaven, medan alt anna får vere i fred.

Tak sikkerheitskopi av fila fyrst, og gjer endringa som eit skript i staden for å skrive i ein teksthandsamar. Ein skrivefeil som endrar kor mange felt ei line har, øydelegg utferdinga for kvart sertifikat som blir lagt til etterpå. Det er grunnen til å automatisere endringa og kopiere fila før du rører henne.

Ei ny tilbakekalling av same namn mislukkast ofte òg, fordi den fyrste køyringa flytta det sertifikatet og nøkkelen ut av katalogane verktøyet ventar å finne dei i. Verktøyet finn då ikkje det det vart bedt om å tilbakekalle, og feilmeldinga er ikkje alltid tydeleg på kvifor.

cp /etc/easy-rsa/pki/index.txt /root/index.txt.$(date +%F-%H%M)
grep -c '^R' /etc/easy-rsa/pki/index.txt
easyrsa gen-crl

Publiser den nye lista, rett opp eigarskapet, og få tenaren til å lese henne. Ei omlasting er nok på dei fleste installasjonane, men stadfestinga må kome frå ei fersk tilkopling, sidan den eksisterande økta aldri sjekka noko på nytt.

Sjekk kva spak saka fortener

Still det eine spørsmålet som avgjer heile runboka: er den private nøkkelen framleis berre der han skal vere. Viss han er det, dekkjer drapet på økta pluss ein dokumentert pause saka og lèt ingen varig oppføring bli etter. Viss han ikkje er det, er det einaste trygge svaret ein ny nøkkel medan det gamle sertifikatet blir ståande tilbakekalla.

Stadfest deretter resultatet med eit tilkoplingsforsøk i staden for med ein konfigurasjonsskilnad. Skilnaden fortel deg kva du meinte, og tilkoplinga fortel deg kva tenaren handhevar.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506

Når ein gjenoppretta klient koplar til og visest i statusutdataa, verka redigeringa av oppføringa. Når ein tilbakekalla klient blir avvist og loggen nemner CRL-en, verka tilbakekallinga. Alt imellom er eit løyve- eller omlastingsproblem, og det er verdt å rette før den neste førespurnaden kjem.

Relaterte artiklar