Нэг клиентийн хандалтыг түр зогсоох, түүнийг бүрмөсөн устгах нь хоёрын аль нэгийг буцаахыг оролдох хүртэл нэг ажил мэт санагдана. Сертификатыг хүчингүй болгох нь сервер эцсийн гэж үздэг бичлэг бичдэг бөгөөд түүнийг буцаах нь олгогчийн мэдээллийн санг гараар засахыг хэлнэ. Ажиллаж буй туннелийг унагах нь итгэлцэлд юу ч өөрчлөхгүй удирдлагын команд юм. Хөшүүргийг түлхүүр одоо ч итгэмжлэгдэхүү эсэхийг асууж сонго, хүсэлт хэр яаралтай санагдаж байгааг асууж биш.

Итгэл: хүчингүй болгосон ба зогсоосон нь ижил

Гэрээлэгчийг долоо хоног зогсоох үед эхний хариу үйлдэл нь хүчингүй болгох байдаг, учир нь хүчингүй болгох нь ямар нэг зүйлийг унтраах мэт сонсогддог. Цэвэрхэн харагдана, арван секунд зарцуулна, буцах цорын ганц зам болгон мэдээллийн санг засахыг үлдээдэг. Энэ хариу үйлдэл ойлгомжтой бөгөөд хаалга хаахаас илүү паспорт шатаахтай ойр юм. Зогсоосон төхөөрөмж ба эвдэрсэн түлхүүр өөр хандлага шаарддаг бөгөөд тэдгээрийн зөвхөн нэгийг нь хямдхан буцааж болно.

Ялгаа нь хүн биш, итгэмжлэлд байна. Зөв гарт байгаа түлхүүрийг итгэлцэл алдалгүй зогсоож, үргэлжлүүлж болно. Хуулагдсан байж болох түлхүүрийг хэзээ ч сэргээж болохгүй, учир нь сэргээх нь хуулбар байхгүй гэж баталдаг.

Хоёр системийн алийг нь ч хүрэхээс өмнө хариултыг бичиж аваарай. Түлхүүр ил болсон эсэхийг хэлж чадахгүй бол консерватив хариулт нь солих юм.

Удирдлагын интерфейсээр ажиллаж буй сессийг унага

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-ийг нэрлэвэл хүчингүй болголт ажилласан. Тэдгээрийн хооронд байгаа бүхэн зөвшөөрөл эсвэл дахин ачааллын асуудал бөгөөд дараагийн хүсэлт ирэхээс өмнө засах нь үнэ цэнэтэй.

Холбоотой нийтлэлүүд