Бір OpenVPN клиентін кідірту: неге кері қайтару дұрыс емес тұтқа
Сеансты өлтіруді қайтаруға болады; сертификатты кері қайтаруға болмайды. Іске қай тұтқа керегін шешіңіз, CRL-ді тек сәйкес келгенде қайта жасаңыз.
Бір клиенттің қатынауын кідірту мен оны біржола жою, екеуінің біреуін қайтаруға тырыспағанша бірдей жұмыс сияқты көрінеді. Сертификатты кері қайтару сервер соңғы деп санайтын жазба жазады, және оны қайтару эмитенттің дерекқорын қолмен өңдеуді білдіреді. Жұмыс істеп тұрған туннельді тастау сенімге ештеңе өзгертпейтін басқару командасы. Тұтқаны кілттің әлі сенімді екенін сұрап таңдаңыз, сұраныстың қаншалықты шұғыл көрінетінін сұрап емес.
Сенім: кері қайтарылған мен тоқтатылған бір нәрсе
Мердігерді бір аптаға тоқтатады және бірінші реакция кері қайтару болады, өйткені кері қайтару бірдеңені өшіруге ұқсайды. Ол жинақы көрінеді, он секунд алады, және қайтудың жалғыз жолы ретінде дерекқорды өңдеуді қалдырады. Реакция түсінікті және ол есікті жабуға қарағанда паспортты өртеуге жақын. Тоқтатылған құрылғы мен бұзылған кілтке басқаша қарау керек, және олардың тек біреуін ғана арзан қайтаруға болады.
Айырмашылық адамда емес, куәлікте. Әлі де дұрыс қолдағы кілтті сенім жоғалтпай тоқтатып, қайта жалғастыруға болады. Көшірілген болуы мүмкін кілтті ешқашан қалпына келтіруге болмайды, өйткені қалпына келтіру көшірменің жоқ екенін бекітеді.
Екі жүйенің біріне де тиіспес бұрын жауапты жазып қойыңыз. Кілттің ашылғанын айта алмасаңыз, консервативті жауап ауыстыру.
Жұмыс істеп тұрған сеансты басқару интерфейсімен тастаңыз
OpenVPN сеанстарды тізімдеп, біреуін ортақ атауы бойынша өлтіре алатын басқару интерфейсін ұсынады. Оны localhost-та қосыңыз, жалпыға ашық интерфейстен алыс ұстаңыз, және сеанс дәл қазір жоғалуы керек болса, өлтіру командасын жіберіңіз. Команда тек сол туннельді жабады, ал қалған клиенттер жұмысын жалғастырады.
Бұл белсенді мәселеге жауап, тоқтату саясаты емес. Сол профиль бір минутта қайта қосыла алады, өйткені оның куәлігінде ештеңе өзгерген жоқ. Сеанс кетуі керек, ал тұрақты шешім әлі қабылданып жатқанда қолданыңыз.
Өлтірер алдында сеанстың қосылғанын растаңыз, сонда ешқашан қосылмаған клиентті іздемейсіз. Төмендегі күй командасы қазір не қосылғанын шығарады.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506Егер өлтіру мұндай клиент жоқ деп хабарласа, сертификаттағы ортақ атау сіз терген жол емес. Профиль файлының атауын емес, күй шығысын оқыңыз.
CRL шын мәнінде нені басқарады
Сервер сертификатта сақталған кері қайтару жалауына жүгінбейді. Ол crl-verify-те аталған сертификаттарды кері қайтару тізімін әр жаңа қосылымда оқиды және сериялық нөмірі сол тізімде бар сертификатты қабылдамайды. Одан екі салдар туындайды, екеуі де операциялық маңызды. Файл сервер өз өкілеттіктерін беретін тіркелгіге оқылатын болуы керек, ал қосылып қойған клиент қайта қосылғанша жұмысын жалғастырады.
Екінші салдар апат кезінде адамдарды таңырқатады. Сертификатты кері қайтару оны дәл қазір пайдаланып жатқан туннельді жаппайды. Егер сеанс бірден аяқталуы керек болса, кері қайтаруды басқару өлтіруімен қатар жүргізіңіз, және екі әрекетті нұсқаулықта бөлек қадамдар деп қараңыз.
Тізімді қарап, сервердің шын мәнінде нені күшіне ендіретінін көріңіз, соңғы көшірген файлдың уақыт белгісіне сенудің орнына. Маңызды бөлігі сериялық нөмірлер саны.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemЖазбасы жоқ тізім мен дұрыс жазбалары бар тізім каталог тізімінде бірдей көрінеді, сондықтан сериялық нөмірлер санын шығарудың мәні бар. Рұқсаттар жолы да соншалықты маңызды, өйткені демон оқи алмайтын файл қабылданбаған клиентке ұқсайтын істен шығуды тудырады.
Жазбаны қалпына келтіру, абайлап
Сертификатты қалпына келтіру беру дерекқорындағы жазбаны кері айналдырып, жаңа тізім жариялауды білдіреді. easy-rsa 3 бұл дерекқорды PKI каталогының астында index.txt ретінде ұстайды, ал ескірген құрылымдар басқа ретті пайдаланған. Жол күй әрпі мен мерзімінің аяқталу күнінен басталады. Кері қайтарылған жол сериялық нөмір, сертификат файлының атауы және ерекшеленетін атпен жалғаспас бұрын кері қайтарудың уақыт белгісін қояды. Жолды орнына қайтару сол уақыт белгісін жоюды және әріпті кері айналдыруды білдіреді, қалғанын тиіспеу керек.
Алдымен файлдың сақтық көшірмесін жасаңыз, және өңдеуді мәтіндік редакторда теруге емес, скрипт түрінде орындаңыз. Жолдың қанша өріс алып жүретінін өзгертетін теру қатесі кейін қосылған әрбір сертификаттың берілуін бұзады. Сондықтан өзгерісті автоматтандырып, файлды тиіспес бұрын көшіру керек.
Сол атты екінші кері қайтару да жиі сәтсіз болады, өйткені бірінші жүріс сол сертификат пен оның кілтін құрал күтетін каталогтардан тысқары жылжытқан. Сонда құрал кері қайтару сұралған нәрсені таба алмайды, ал қате хабарламасы себебін әрдайым анық түсіндірмейді.
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Жаңа тізімді жариялаңыз, оның иелігін түзетіңіз, және серверге оны оқытуға мәжбүр етіңіз. Көптеген орнатуларда қайта жүктеу жеткілікті, бірақ растау жаңа қосылымнан келуі керек, өйткені бар сеанс ештеңені қайта тексерген жоқ.
Іске қай тұтқа лайық екенін тексеріңіз
Бүкіл нұсқаулықты шешетін бір сұрақ қойыңыз: жеке кілт әлі де тек өз орнында ма. Егер солай болса, сеансты өлтіру және құжатталған кідіріс істі жабады және тұрақты жазба қалдырмайды. Егер олай болмаса, жалғыз қауіпсіз жауап жаңа кілт, ал ескі сертификат кері қайтарылған күйінде қалады.
Сосын нәтижені конфигурация айырмасымен емес, қосылу әрекетімен тексеріңіз. Айырма сіздің неге ниеттенгеніңізді айтады, ал қосылу сервердің нені күшіне ендіретінін айтады.
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Қалпына келтірілген клиент қосылып, күй шығысында көрінсе, жазбаны өңдеу жұмыс істеді. Кері қайтарылған клиент қабылданбай, журнал CRL-ді атаса, кері қайтару жұмыс істеді. Олардың арасындағының бәрі рұқсат немесе қайта жүктеу мәселесі, және оны келесі сұраныс келмей тұрып түзеткен жөн.