Bitta OpenVPN mijozini chiqarib yuborish: kill, deny yoki sertifikatni bekor qilish?
OpenVPN'ning uchta amali mijozni olib tashlaydi, lekin har biri boshqa narsani tugatadi: tirik sessiyani, bitta kirish urinishini yoki qayta ulanish huquqini. Identifikatsiya bo'yicha tanlang.
Eslatmalaringizda common name va manzil bor, hamda uchtasi ham mijozni olib tashlayotgandek ko'rinadigan uchta buyruq. Faqat bittasi xohlaganingizni qiladi va tanlov hozir ishlab turgan sessiyani tugatish, keyingi kirishni rad etish yoki ulanish huquqini butunlay olib qo'yish kerakligiga bog'liq. Biror narsaga tegishdan oldin haqiqatda ega bo'lgan identifikatsiyani o'qing, chunki OpenVPN hovuzi keyinchalik o'sha tunnel manzilini boshqa sessiyaga beradi.
Haqiqatda qaysi identifikatsiyaga egasiz
3-versiya holat fayli odatiy boshlanish nuqtasidir. CLIENT_LIST bo'limi common name, haqiqiy manzil, bayt hisoblagichlari va ulanish vaqtini olib yuradi; ROUTING TABLE bo'limi virtual manzilni oxirgi murojaat vaqt tamg'asi bilan common name'ga bog'laydi. Common name barqaror identifikatsiyadir. Virtual manzil bu tayinlash, NAT orqasidagi haqiqiy manzil esa serverda hech narsa o'zgarmasdan sessiyalar orasida o'zgarishi mumkin.
Boshqaruv interfeysi status buyrug'i orqali shunga o'xshash ko'rinishni taqdim etadi va har bir sessiya uchun mijoz ID'sini qo'shadi. client-kill aynan shu ID'ni kutadi va bu tunnel manzili emas. Agar ulanish paytida qaysi common name qaysi manzilni olganini bilish kerak bo'lsa, client-connect skriptining muhitida ikkalasi ham, ishonchli tashqi manzil bilan birga mavjud, lekin bu skript OpenVPN foydalanuvchisi sifatida ishlaydi va yoziladigan log yo'lini talab qiladi.
| 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 |
Hoziroq o'ldiring, kirishda rad eting, butunlay bekor qiling
Boshqaruv interfeysidagi ikkala olib tashlash buyrug'i ham sessiya amalidir. kill common name yoki haqiqiy manzil va portni oladi; client-kill mijoz ID'sini oladi va o'sha instansiyani darhol tugatadi. Hech biri blok emas: haqiqiy sertifikat va parolga ega chiqarib yuborilgan mijoz bir necha soniyada qayta ulanadi, bu test peerini qayta ishlatganda yaxshi va noutbuk o'g'irlanganda foydasiz.
client-deny boshqa turdagi qaror. Odatda autentifikatsiya yoki client-connect ilgagidan beriladi va sessiyani sabab bilan rad etadi, shuning uchun ulanishni to'xtatuvchi emas, kirishni rad etuvchi siyosatga mos keladi. Hujjatlar shuningdek, TLS qayta muzokaralari paytida berilgan rad qayta muzokara qilingan kalitni bekor qilishini, mavjud sessiya esa o'tish oynasi yopilgunga qadar ishlashda davom etishi mumkinligini ogohlantiradi. Talab mijozning hozir yo'q bo'lishi bo'lsa, hujjatlashtirilgan javob client-kill.
Doimiy olib tashlash bularning barchasi ostida. Sertifikatni bekor qiling va crl-verify server haqiqatda qayta yuklaydigan ro'yxatga ishora qilishiga ishonch hosil qiling, ccd katalogidagi mijozga xos konfiguratsiya faylini o'chiring yoki autentifikatsiya ilgagi so'raydigan backendda hisobni o'chiring. Bekor qilish ham bir zumda emas: standart reneg-sec sozlamalari bilan o'rnatilgan sessiya qayta muzokara qilgungacha ishlashda davom etishi mumkin, shuning uchun sessiya amali va hisob ma'lumotlari amali bir-birini to'ldiradi, alternativ emas.
Boshqaruv soketi bo'shmi?
Boshqaruv interfeysi bir vaqtda bitta mijozga xizmat qiladi. Agar GUI yoki monitoring daemoni ulanishni allaqachon ushlab turgan bo'lsa, skriptingiz uning yoniga qo'shila olmaydi va mijozga qarab toza muvaffaqiyatsizlik o'rniga mavjudini siqib chiqarishingiz mumkin. Uning paroli o'sha soketda ochiq matnda ketadi, shuning uchun u mahalliy manzilga yoki unix soketiga tegishli, hech qachon ochiq interfeysga emas.
Soketni ololmaganingizda ham variantlaringiz bor va ularning barchasi sekinroq. Agar nazorat qilsangiz, avval GUI sessiyasini qo'yib yuboring yoki hisob ma'lumotlari qatlami yo'lini qabul qilib, keyingi qayta muzokarani kuting. Qilmasligingiz kerak bo'lgan narsa bitta mijozdan qutulish uchun xizmatni qayta ishga tushirishdir, chunki bu boshqa barcha sessiyalarni ham tugatadi va bu sessiya uchun holat fayli dalillarini yo'q qiladi.
Tirik serverda ishlatadigan ketma-ketligim
Ulanib, joriy holatni o'qing, hozir o'qigan ID ustida harakat qiling, keyin uni yana o'qing. Hujjatdan ko'chirilgan qiymatlar noto'g'ri odamni o'ldirishning eng keng tarqalgan usulidir.
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 goneYuqoridagi nom va raqam joy egallovchilardir va ID'lar boshqa mijozlar uzilgandan keyin qayta ishlatiladi. Biror narsani bajarilgan deb yozishdan oldin qator yo'qligini tasdiqlang va ulangan mijozlar soni bir nechta emas, bitta o'zgarganini tekshiring.
Uzoqda qolganini tasdiqlang
Common name, tunnel manzili, tashqi manzil va olib tashlash daqiqasini yozib oling. Agar o'sha common name bir daqiqadan keyin yana paydo bo'lsa, sessiya amali ishladi, hisob ma'lumotlari qatlami esa ishlamadi, bu hech qachon kuchga kirmagan buyruqning tuzatishidan butunlay boshqacha.
Keyin mijoz tomonidan sinab ko'ring. Bekor qilingan sertifikat keyingi handshake'da muvaffaqiyatsiz bo'lishi kerak; agar u hali ham ulanayotgan bo'lsa, CRL umuman o'qilmayapti va bu xabar qilishga arziydigan topilma. Amalni nima tugatish kerakligiga qarab tanlang, ikkinchi status bilan tasdiqlang va javob sessiyadan uzoqroq turishi kerak bo'lganda hisob ma'lumotlari qatlamini tuzating.