Paŭzigi unu OpenVPN-klienton: kial revoko estas la malĝusta levilo
Mortigi la seancon estas reigebla; revoki la atestilon ne. Decidu, kiun levilon la kazo bezonas, kaj rekonstruu la CRL nur kiam ĝi konvenas.
Paŭzigi la aliron de unu kliento kaj forigi ĝin por ĉiam aspektas kiel la sama tasko ĝis vi provas malfari unu el la du. Revoki atestilon skribas rikordon, kiun la servilo traktas kiel finan, kaj malfari tion signifas mane redakti la datumbazon de la eldoninto. Forlasi la vivan tunelon estas administra ordono, kiu ŝanĝas nenion pri fido. Elektu la levilon demandante, ĉu la ŝlosilo ankoraŭ estas fidata, ne demandante, kiom urĝa la peto ŝajnas.
La kredo: revokita kaj suspendita estas la sama afero
Subkontraktanto estas paŭzigata por semajno kaj la reflekso estas revoki, ĉar revoko sonas kiel malŝalti ion. Ĝi aspektas ordema, ĝi daŭras dek sekundojn, kaj ĝi lasas datumbazan redakton kiel la solan vojon reen. La reflekso estas komprenebla kaj ĝi estas pli proksima al bruligi pasporton ol al fermi pordon. Paŭzigita aparato kaj kompromitita ŝlosilo bezonas malsaman traktadon, kaj nur unu el ili estas malmultekosta malfari.
La distingo temas pri la legitimilo, ne pri la persono. Ŝlosilo ankoraŭ en la ĝustaj manoj povas esti paŭzigita kaj daŭrigita sen ajna perdo de fido. Ŝlosilo, kiu eble estis kopiita, neniam restarigindas, ĉar restarigo asertas, ke la kopio ne ekzistas.
Skribu la respondon antaŭ ol tuŝi iun el la du sistemoj. Se vi ne povas diri, ĉu la ŝlosilo estas elmontrita, la konservativa respondo estas anstataŭigo.
Forlasu la vivan seancon per la administra interfaco
OpenVPN disponigas administran interfacon, kiu povas listigi seancojn kaj mortigi unu el ili laŭ la komuna nomo. Ŝaltu ĝin sur localhost, tenu ĝin for de la publika interfaco, kaj sendu la mortigan ordonon kiam seanco devas malaperi tuj. La ordono fermas nur tiun tunelon, kaj ĉiu alia kliento daŭre funkcias.
Tio estas respondo al aktiva problemo, ne suspendpolitiko. La sama profilo povas rekonekti en unu minuto, ĉar nenio en ĝia legitimilo ŝanĝiĝis. Uzu ĝin kiam la seanco devas foriri kaj la daŭra decido ankoraŭ estas farata.
Konfirmu, ke la seanco estis konektita antaŭ ol mortigi ĝin, por ne ĉasi klienton, kiu neniam konektiĝis. La statusa ordono sube presas, kio estas nuntempe konektita.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506Se la mortigo raportas, ke ne ekzistas tia kliento, la komuna nomo en la atestilo ne estas la signoĉeno, kiun vi tajpis. Legu la statusan eligon anstataŭ la nomon de la profila dosiero.
Kion la CRL efektive regas
La servilo ne konsultas revokan flagon konservitan sur la atestilo. Ĝi legas la atestilan revokliston nomitan en crl-verify ĉe ĉiu nova konekto kaj malakceptas atestilon, kies seria numero aperas en tiu listo. Du konsekvencoj sekvas, kaj ambaŭ gravas opere. La dosiero devas esti legebla de la konto, al kiu la servilo cedas privilegiojn, kaj jam konektita kliento daŭre funkcias ĝis ĝi rekonektos.
Tiu dua konsekvenco surprizas homojn dum incidentoj. Revoko de atestilo ne fermas la tunelon, kiu ĝin nuntempe uzas. Parigu la revokon kun administra mortigo se la seanco devas finiĝi tuj, kaj traktu la du agojn kiel apartajn paŝojn en la gvidilo.
Ekzamenu la liston por vidi, kion la servilo vere plenumos, anstataŭ fidi la tempostampon de la lasta dosiero, kiun vi kopiis. La nombro de seriaj numeroj estas la grava parto.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemListo sen rikordoj kaj listo kun la ĝustaj rikordoj aspektas identaj en dosieruja listigo, tial indas presi la nombron de seriaj numeroj. La permesa linio same gravas, ĉar dosiero, kiun la demono ne povas legi, produktas malsukceson, kiu aspektas kiel malakceptita kliento.
Restarigi rikordon, singarde
Restarigi atestilon signifas renversi rikordon en la eldona datumbazo kaj publikigi novan liston. easy-rsa 3 tenas tiun datumbazon kiel index.txt sub la PKI-dosierujo, dum pli malnovaj aranĝoj uzis alian ordigon. Vico komenciĝas per statusa litero kaj findato. Revokita vico enmetas tempostampon por la revoko antaŭ ol daŭri per la seria numero, la dosiernomo de la atestilo kaj la distinga nomo. Remeti vicon signifas forviŝi tiun tempostampon kaj renversi la literon, lasante ĉion alian trankvila.
Unue kopiu la dosieron, kaj skriptu la ŝanĝon anstataŭ tajpi en tekstredaktilo. Tajperaro, kiu ŝanĝas kiom da kampoj vico portas, rompas eldonadon por ĉiu atestilo aldonita poste. Tial indas aŭtomatigi la ŝanĝon kaj kopii la dosieron antaŭ ol tuŝi ĝin.
Dua revoko de la sama nomo ankaŭ ofte malsukcesas, ĉar la unua rulo movis tiun atestilon kaj ĝian ŝlosilon ekster la dosierujojn, kie la ilo atendas trovi ilin. La ilo tiam ne povas trovi tion, kion oni petis ĝin revoki, kaj la erarmesaĝo ne ĉiam klarigas kial.
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-crlPublikigu la novan liston, korektu ĝian posedon, kaj igi la servilon legi ĝin. Reŝargo sufiĉas en plej multaj instaloj, sed la konfirmo devas veni de freŝa konekto, ĉar la ekzistanta seanco neniam rekontrolis ion.
Kontrolu, kiun levilon la kazo meritas
Demandu la unu demandon, kiu decidas la tutan gvidilon: ĉu la privata ŝlosilo ankoraŭ estas nur tie, kie ĝi devas esti. Se jes, la mortigo de la seanco plus dokumentita paŭzo kovras la kazon kaj lasas neniun daŭran rikordon. Se ne, la sola sekura respondo estas nova ŝlosilo kun la malnova atestilo lasita revokita.
Poste kontrolu la rezulton per konektoprovo anstataŭ per agorda diferenco. La diferenco diras al vi, kion vi intencis, kaj la konekto diras al vi, kion la servilo plenumas.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506Kiam restarigita kliento konektiĝas kaj aperas en la statusa eligo, la redakto de la rikordo funkciis. Kiam revokita kliento estas rifuzata kaj la protokolo nomas la CRL, la revoko funkciis. Ĉio intere estas permesa aŭ reŝarga problemo, kaj indas ripari ĝin antaŭ ol la sekva peto alvenos.