Vieno kliento prieigos sustabdymas ir visam laikui pašalinimas atrodo kaip ta pati užduotis, kol nepabandai atšaukti vieno iš jų. Sertifikato atšaukimas įrašo įrašą, kurį serveris laiko galutiniu, o jo atšaukimas reiškia rankinį išdavėjo duomenų bazės redagavimą. Veikiančio tunelio numetimas yra valdymo komanda, kuri pasitikėjime nieko nekeičia. Svirtį rinkitės klausdami, ar raktas vis dar patikimas, o ne klausdami, kiek skubus atrodo prašymas.

Įsitikinimas: atšauktas ir suspenduotas yra tas pats

Subrangovui suteikiama savaitės pertrauka, o refleksas yra atšaukti, nes atšaukimas skamba kaip kažko išjungimas. Tai atrodo tvarkingai, trunka dešimt sekundžių ir palieka duomenų bazės redagavimą kaip vienintelį kelią atgal. Refleksas suprantamas ir jis arčiau paso sudeginimo nei durų uždarymo. Sustabdytas įrenginys ir kompromituotas raktas reikalauja skirtingo elgesio, ir tik vieną iš jų pigiai atšaukti.

Skirtumas yra dėl prisijungimo duomenų, o ne dėl asmens. Raktą, kuris dar teisingose rankose, galima sustabdyti ir pratęsti neprarandant pasitikėjimo. Raktas, kuris galėjo būti nukopijuotas, neturėtų būti atkurtas, nes atkūrimas teigia, kad kopijos nėra.

Užrašykite atsakymą prieš liesdami bet kurią iš dviejų sistemų. Jei negalite pasakyti, ar raktas atskleistas, konservatyvus atsakymas yra pakeitimas.

Numeskite veikiančią sesiją per valdymo sąsają

OpenVPN siūlo valdymo sąsają, kuri gali išvardyti sesijas ir nužudyti vieną iš jų pagal bendrą pavadinimą. Įjunkite ją localhost adresu, laikykite toliau nuo viešosios sąsajos ir siųskite žudymo komandą, kai sesija turi dingti dabar. Komanda uždaro tik tą tunelį, o visi kiti klientai toliau dirba.

Tai atsakas į aktyvią problemą, o ne sustabdymo politika. Tas pats profilis gali vėl prisijungti per minutę, nes jo prisijungimo duomenyse nieko nepasikeitė. Naudokite tai, kai sesija turi išnykti, o ilgalaikis sprendimas dar priimamas.

Prieš žudydami patvirtinkite, kad sesija buvo prisijungusi, kad negaudytumėte kliento, kuris niekada neprisijungė. Žemiau esanti būsenos komanda išveda, kas šiuo metu prisijungę.

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

Jei žudymas praneša, kad tokio kliento nėra, bendras pavadinimas sertifikate nėra ta eilutė, kurią įvedėte. Skaitykite būsenos išvestį, o ne profilio failo pavadinimą.

Ką CRL iš tikrųjų kontroliuoja

Serveris nesikreipia į sertifikate saugomą atšaukimo vėliavėlę. Jis kiekvieno naujo ryšio metu nuskaito sertifikatų atšaukimo sąrašą, nurodytą crl-verify, ir atmeta sertifikatą, kurio serijos numeris yra tame sąraše. Iš to kyla dvi pasekmės, ir abi svarbios operacijų požiūriu. Failas turi būti skaitomas paskyros, kuriai serveris perleidžia privilegijas, o jau prisijungęs klientas veikia toliau, kol neprisijungs iš naujo.

Antroji pasekmė nustebina žmones incidentų metu. Sertifikato atšaukimas neuždaro tunelio, kuris jį naudoja šiuo metu. Jei sesija turi baigtis nedelsiant, derinkite atšaukimą su valdymo žudymu, o abu veiksmus laikykite atskirais žingsniais vadove.

Apžiūrėkite sąrašą, kad pamatytumėte, ką serveris iš tikrųjų vykdys, o ne pasikliaukite paskutinio nukopijuoto failo laiko žyma. Svarbi dalis yra serijos numerių skaičius.

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

Sąrašas be įrašų ir sąrašas su teisingais įrašais katalogo sąraše atrodo vienodai, todėl verta išvesti serijos numerių skaičių. Leidimų eilutė taip pat svarbi, nes failas, kurio demonas negali perskaityti, sukelia gedimą, kuris atrodo kaip atmestas klientas.

Įrašo atkūrimas, atsargiai

Atkurti sertifikatą reiškia apversti įrašą išdavimo duomenų bazėje ir paskelbti naują sąrašą. easy-rsa 3 laiko tą duomenų bazę kaip index.txt PKI kataloge, o senesni išdėstymai naudojo kitokią tvarką. Eilutė prasideda būsenos raide ir galiojimo pabaigos data. Atšaukta eilutė įterpia atšaukimo laiko žymą prieš tęsdama serijos numeriu, sertifikato failo pavadinimu ir skiriamuoju vardu. Grąžinti eilutę reiškia ištrinti tą laiko žymą ir apversti raidę, o visa kita palikti ramybėje.

Pirmiausia padarykite failo atsarginę kopiją, o pakeitimą atlikite scenarijumi, o ne rašydami teksto redaktoriuje. Rašybos klaida, kuri pakeičia, kiek laukų turi eilutė, sugadina išdavimą kiekvienam vėliau pridėtam sertifikatui. Todėl pakeitimą verta automatizuoti ir failą nukopijuoti prieš jį liečiant.

Antrasis to paties pavadinimo atšaukimas taip pat dažnai nepavyksta, nes pirmasis paleidimas perkėlė tą sertifikatą ir jo raktą iš katalogų, kuriuose įrankis tikisi juos rasti. Tada įrankis neranda to, ką prašė atšaukti, o klaidos pranešimas ne visada aiškiai paaiškina priežastį.

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

Paskelbkite naują sąrašą, pataisykite jo nuosavybę ir priverskite serverį jį perskaityti. Daugumoje diegimų pakanka perkrovimo, tačiau patvirtinimas turi ateiti iš naujo ryšio, nes esama sesija nieko pakartotinai netikrino.

Patikrinkite, kurios svirties nusipelno atvejis

Užduokite vieną klausimą, kuris nusprendžia visą vadovą: ar privatusis raktas vis dar tik ten, kur turi būti. Jei taip, sesijos žudymas ir dokumentuota pertrauka padengia atvejį ir nepalieka nuolatinio įrašo. Jei ne, vienintelis saugus atsakymas yra naujas raktas, o senas sertifikatas lieka atšauktas.

Tada patikrinkite rezultatą prisijungimo bandymu, o ne konfigūracijos skirtumu. Skirtumas pasako, ką ketinote, o ryšys pasako, ką serveris vykdo.

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

Kai atkurtas klientas prisijungia ir pasirodo būsenos išvestyje, įrašo redagavimas suveikė. Kai atšauktas klientas atmetamas ir žurnalas nurodo CRL, atšaukimas suveikė. Viskas tarp jų yra leidimų arba perkrovimo problema, ir ją verta sutvarkyti prieš ateinant kitam prašymui.

Susiję straipsniai