Избацивање једног OpenVPN клијента: kill, deny или опозив сертификата?
Три радње OpenVPN-а уклањају клијента, али свака завршава нешто друго: живу сесију, један покушај пријаве или право да се поново повеже. Изаберите према идентитету.
У белешкама имате common name и адресу и три команде које све изгледају као да уклањају клијента. Само једна чини оно што желите, а избор зависи од тога да ли треба да прекинете сесију која сада ради, одбијете следећу пријаву или потпуно одузмете право на повезивање. Прочитајте идентитет који заиста имате пре него што било шта дотакнете, јер OpenVPN базен касније додељује исту тунелску адресу другој сесији.
Који идентитет заиста имате
Датотека стања верзије 3 уобичајено је полазиште. Одељак CLIENT_LIST носи common name, стварну адресу, бројаче бајтова и време повезивања; одељак ROUTING TABLE пресликава виртуелну адресу на common name са временском ознаком последње референце. Common name је стабилан идентитет. Виртуелна адреса је додела, а стварна адреса иза NAT-а може се променити између сесија без икакве промене на серверу.
Интерфејс за управљање нуди сличан приказ кроз своју команду status и додаје ID клијента по сесији. Тај ID очекује client-kill, и то није тунелска адреса. Ако треба да знате који је 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 и поправите слој акредитива када одговор мора да траје дуже од сесије.