Zaustaviti enega odjemalca OpenVPN: zakaj je preklic napačni vzvod
Ubiti sejo je povratno; preklicati potrdilo ni. Odločite se, kateri vzvod primer potrebuje, in CRL znova zgradite le takrat, ko to ustreza.
Zaustavitev dostopa enega odjemalca in njegova trajna odstranitev se zdita ista naloga, dokler ne poskusite preklicati enega od tega. Preklic potrdila zapiše zapis, ki ga strežnik obravnava kot dokončnega, in njegovo razveljavitev pomeni ročno urejanje zbirke podatkov izdajatelja. Opustitev živega predora je upravljalni ukaz, ki v zaupanju ne spremeni ničesar. Vzvod izberite z vprašanjem, ali je ključ še vedno vreden zaupanja, ne z vprašanjem, kako nujna se zdi zahteva.
Prepričanje: preklicano in začasno ustavljeno je isto
Izvajalec se zaustavi za teden dni in refleks je preklic, ker preklic zveni kot izklop nečesa. Izgleda urejeno, traja deset sekund in kot edino pot nazaj pusti urejanje zbirke podatkov. Refleks je razumljiv in je bližje sežigu potnega lista kot zaprtju vrat. Zaustavljena naprava in ogrožen ključ potrebujeta drugačno obravnavo, in samo eno od tega je poceni razveljaviti.
Razlika je v poverilnici in ne v osebi. Ključ, ki je še v pravih rokah, je mogoče zaustaviti in nadaljevati brez kakršne koli izgube zaupanja. Ključa, ki je bil morda kopiran, nikoli ne bi smeli obnoviti, ker obnovitev trdi, da kopija ne obstaja.
Odgovor zapišite, preden se dotaknete katerega od dveh sistemov. Če ne morete reči, ali je ključ razkrit, je konzervativni odgovor zamenjava.
Opustite živo sejo z upravljalnim vmesnikom
OpenVPN ponuja upravljalni vmesnik, ki lahko našteje seje in eno od njih ubije po skupnem imenu. Omogočite ga na localhost, držite ga stran od javnega vmesnika in pošljite ukaz za ubijanje, ko mora seja takoj izginiti. Ukaz zapre samo ta predor, vsi drugi odjemalci pa delujejo naprej.
To je odgovor na dejaven problem, ne politika zaustavljanja. Isti profil se lahko znova poveže v minuti, ker se v njegovi poverilnici ni nič spremenilo. Uporabite ga, ko mora seja oditi in se trajna odločitev še sprejema.
Preden jo ubijete, potrdite, da je bila seja povezana, da ne lovite odjemalca, ki se ni nikoli povezal. Ukaz za stanje spodaj izpiše, kaj je trenutno povezano.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506Če ubijanje sporoči, da takega odjemalca ni, skupno ime v potrdilu ni niz, ki ste ga vtipkali. Berite izpis stanja in ne imena datoteke profila.
Kaj CRL dejansko nadzoruje
Strežnik ne pogleda zastavice preklica, shranjene na potrdilu. Prebere seznam preklicanih potrdil, naveden v crl-verify, pri vsaki novi povezavi in zavrne potrdilo, katerega serijska številka je na tem seznamu. Iz tega sledita dve posledici in obe sta operativno pomembni. Datoteka mora biti berljiva za račun, ki mu strežnik odstopi svoje pravice, in že povezan odjemalec deluje naprej, dokler se znova ne poveže.
Druga posledica preseneti ljudi med incidenti. Preklic potrdila ne zapre predora, ki ga prav zdaj uporablja. Če se mora seja končati takoj, preklic povežite z upravljalnim ubijanjem in oba dejanja obravnavajte kot ločena koraka v priročniku.
Preglejte seznam, da vidite, kaj bo strežnik v resnici uveljavil, namesto da zaupate časovnemu žigu zadnje kopirane datoteke. Pomemben je del s številom serijskih številk.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemSeznam brez vnosov in seznam s pravimi vnosi sta v izpisu imenika videti enako, zato je število serijskih številk vredno izpisati. Vrstica z dovoljenji je prav tako pomembna, ker datoteka, ki je demon ne more prebrati, povzroči okvaro, ki je videti kot zavrnjen odjemalec.
Obnovitev zapisa, previdno
Obnoviti potrdilo pomeni obrniti zapis v zbirki podatkov izdajanja in objaviti nov seznam. easy-rsa 3 hrani to zbirko kot index.txt v imeniku PKI, medtem ko so starejše postavitve uporabljale drugačen red. Vrstica se začne s črko stanja in datumom poteka. Preklicana vrstica vstavi časovni žig preklica, preden nadaljuje s serijsko številko, imenom datoteke potrdila in razločevalnim imenom. Vrniti vrstico pomeni izbrisati ta časovni žig in obrniti črko, vse ostalo pa pustiti pri miru.
Najprej naredite varnostno kopijo datoteke, popravek pa izvedite s skriptom, namesto da bi tipkali v urejevalniku besedila. Tipkarska napaka, ki spremeni, koliko polj ima vrstica, pokvari izdajanje za vsako pozneje dodano potrdilo. Zato je spremembo vredno avtomatizirati in datoteko kopirati, preden se je dotaknete.
Drugi preklic istega imena pogosto tudi ne uspe, ker je prvi zagon premaknil to potrdilo in njegov ključ iz imenikov, kjer orodje pričakuje, da ju bo našlo. Orodje potem ne najde tega, kar je bilo zahtevano za preklic, in sporočilo o napaki ne pove vedno jasno, zakaj.
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-crlObjavite nov seznam, popravite njegovo lastništvo in poskrbite, da ga strežnik prebere. Ponovno nalaganje zadostuje pri večini namestitev, a potrditev mora priti iz nove povezave, ker obstoječa seja ni ničesar znova preverila.
Preverite, kateri vzvod si primer zasluži
Postavite eno vprašanje, ki odloči celoten priročnik: je zasebni ključ še vedno samo tam, kjer bi moral biti. Če je, ubijanje seje in dokumentiran premor pokrijeta primer in ne pustita trajnega zapisa. Če ni, je edini varen odgovor nov ključ, staro potrdilo pa ostane preklicano.
Nato preverite izid s poskusom povezave in ne z razliko v konfiguraciji. Razlika vam pove, kaj ste nameravali, povezava pa vam pove, kaj strežnik uveljavlja.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506Ko se obnovljeni odjemalec poveže in se pojavi v izpisu stanja, je urejanje zapisa delovalo. Ko je preklicani odjemalec zavrnjen in dnevnik navede CRL, je preklic deloval. Karkoli vmes je težava z dovoljenji ali ponovnim nalaganjem, in to je vredno popraviti, preden prispe naslednja zahteva.