Нэг OpenVPN клиентийг гаргах: kill, deny эсвэл сертификатыг хүчингүй болгох уу?
OpenVPN-ийн гурван үйлдэл клиентийг хасдаг ч тус бүр өөр зүйлийг дуусгадаг: ажиллаж буй сесс, нэг нэвтрэх оролдлого эсвэл дахин холбогдох эрх. Таних тэмдгээр сонгоно уу.
Тэмдэглэлдээ common name болон хаяг байгаа бөгөөд бүгд клиентийг хасдаг мэт харагдах гурван команд байна. Зөвхөн нэг нь таны хүссэнийг хийдэг бөгөөд сонголт нь одоо ажиллаж буй сессийг дуусгах, дараагийн нэвтрэлтийг татгалзах эсвэл холбогдох эрхийг бүрмөсөн авах шаардлагатай эсэхээс хамаарна. Ямар нэгэн зүйлд хүрэхээс өмнө таны үнэхээр эзэмшиж буй таних тэмдгийг уншина уу, учир нь OpenVPN-ийн усан сан дараа нь мөн тэр туннелийн хаягийг өөр сессд өгдөг.
Таны үнэхээр эзэмшиж буй таних тэмдэг
3-р хувилбарын төлөвийн файл нь ердийн эхлэх цэг. CLIENT_LIST хэсэг нь common name, бодит хаяг, байт тоолуур болон холбогдсон хугацааг агуулна; ROUTING TABLE хэсэг нь виртуал хаягийг сүүлийн лавлагааны цагийн тэмдэгтэйгээр common name-тэй холбоно. Common name бол тогтвортой таних тэмдэг. Виртуал хаяг бол хуваарилалт бөгөөд NAT-ын ард байгаа бодит хаяг сервер дээр юу ч өөрчлөгдөхгүйгээр сессүүдийн хооронд өөрчлөгдөж болно.
Удирдлагын интерфейс status командаараа ижил төстэй дүр зургийг харуулж, сесс бүрт клиентийн ID нэмдэг. client-kill яг тэр ID-г хүлээдэг бөгөөд энэ нь туннелийн хаяг биш. Холбогдох үед аль common name аль хаягийг авсныг мэдэх шаардлагатай бол client-connect скриптийн орчинд хоёулаа, итгэмжлэгдсэн гадаад хаягийн хамт байдаг, гэхдээ тэр скрипт OpenVPN хэрэглэгчийн хувьд ажиллаж, бичигдэх боломжтой логын зам шаарддаг.
| What you hold | Where it came from | What it can act on |
|---|---|---|
| Common name | CLIENT_LIST, or the auth hook | kill, and credential revocation |
| Client ID | status on the management socket | client-kill, that one session |
| Tunnel address | ROUTING TABLE, client-connect environment | Nothing durable, the address is recycled |
Одоо ал, нэвтрэх үед татгалз, бүрмөсөн хүчингүй болго
Удирдлагын интерфейс дэх хоёр хасах команд хоёулаа сессийн үйлдэл. kill common name эсвэл бодит хаяг болон портыг авна; client-kill клиентийн ID-г авч, тэр хувилбарыг даруй дуусгана. Аль нь ч блок биш: хүчинтэй сертификат, нууц үгтэй гаргасан клиент хэдхэн секундын дотор дахин холбогддог нь туршилтын peer-ийг дахин ашиглахад сайн, харин зөөврийн компьютер хулгайлагдсан үед ашиггүй.
client-deny бол өөр төрлийн шийдвэр. Ихэвчлэн баталгаажуулалт эсвэл client-connect дэгээнээс гаргаж, сессийг шалтгаантайгаар татгалздаг тул холболтыг тасалдаг бус, нэвтрэлтийг татгалздаг бодлогод тохирно. Баримт бичиг нь мөн TLS дахин хэлэлцээрийн үед гаргасан татгалзал нь дахин тохирсон түлхүүрийг хүчингүй болгох бөгөөд одоо байгаа сесс шилжилтийн цонх хаагдах хүртэл үргэлжилж болно гэж анхааруулдаг. Шаардлага нь клиент одоо байхгүй байх явдал бол баримтжуулсан хариулт нь client-kill.
Байнгын устгал энэ бүхний доор оршино. Сертификатыг хүчингүй болгож, crl-verify серверийн үнэхээр дахин ачаалдаг жагсаалт руу зааж байгааг баталгаажуул, ccd хавтас дахь клиентэд хамаарах тохиргооны файлыг идэвхгүй болго, эсвэл баталгаажуулалтын дэгээ асуудаг backend дахь бүртгэлийг идэвхгүй болго. Хүчингүй болгох нь ч шуурхай биш: анхдагч reneg-sec тохиргоотой үед тогтсон сесс дахин хэлэлцэх хүртэл үргэлжилж болох тул сессийн үйлдэл болон итгэмжлэлийн үйлдэл бие биеийг нөхдөг, орлуулагч биш.
Удирдлагын сокет чөлөөтэй юу?
Удирдлагын интерфейс нэг удаад нэг клиентэд үйлчилдэг. Хэрэв GUI эсвэл хяналтын демон холболтыг аль хэдийн эзэмшиж байвал таны скрипт түүний хажууд холбогдож чадахгүй бөгөөд клиентээс хамааран цэвэрхэн бүтэлгүйтэхийн оронд одоо байгааг нь түлхэж болно. Түүний нууц үг тэр сокет дээр нээлттэй текстээр явдаг тул локал хаяг эсвэл unix сокетод хамаарна, хэзээ ч нийтийн интерфейст хамаарахгүй.
Сокетыг авч чадахгүй үед танд сонголтууд байсаар байгаа бөгөөд бүгд удаан. Хэрэв хянаж байгаа бол эхлээд GUI-ийн сессийг тавь, эсвэл итгэмжлэлийн давхаргын замыг хүлээн авч дараагийн дахин хэлэлцээрийг хүлээ. Хийх ёсгүй зүйл бол нэг клиентийг зайлуулахын тулд үйлчилгээг дахин эхлүүлэх явдал, учир нь энэ нь бусад бүх сессийг ч дуусгаж, энэ сессийн төлөвийн файлын нотолгоог устгана.
Амьд сервер дээр миний ажиллуулдаг дараалал
Холбогд, одоогийн төлөвийг унш, дөнгөж уншсан ID дээр үйлдэл хий, дараа нь дахин унш. Баримт бичгээс хуулсан утгууд нь буруу хүнийг алах хамгийн түгээмэл арга.
status # note the client ID and common name
client-kill 3 # end that session now
kill Test-Client # alternative: by common name
status # confirm the session is goneДээрх нэр, дугаар нь орлуулагч бөгөөд ID-г бусад клиент салсны дараа дахин ашигладаг. Ямар нэг зүйлийг дууссан гэж бичихээс өмнө мөр байхгүйг баталгаажуулж, холбогдсон клиентийн тоо хэд хэдээр бус нэгээр шилжсэнийг шалга.
Тэр гадуур үлдсэнийг баталгаажуул
Common name, туннелийн хаяг, гадаад хаяг болон хассаны минутыг тэмдэглэ. Хэрэв ижил common name нэг минутын дараа дахин гарч ирвэл сессийн үйлдэл ажилласан, итгэмжлэлийн давхарга ажиллаагүй бөгөөд энэ нь хэзээ ч хүчин төгөлдөр болоогүй командыг засвараас огт өөр юм.
Дараа нь клиентийн талаас турш. Хүчингүй болгосон сертификат дараагийн гар барихад бүтэлгүйтэх ёстой; хэрэв холбогдсоор байвал CRL огт уншигдахгүй байгаа бөгөөд энэ нь мэдээлэх үнэ цэнэтэй илрүүлэлт юм. Юуг дуусгах шаардлагатайгаар үйлдлээ сонгож, хоёр дахь status-ээр баталгаажуул, хариулт сессээс удаан үргэлжлэх ёстой бол итгэмжлэлийн давхаргыг зас.