Клијентска кука или серверска кука? Где се извршава OpenVPN скрипта
Путања скрипте у серверској конфигурацији је путања на серверу. Изаберите куку према машини која треба да обави посао и престаните да очекујете да ће push покренути код на преносном рачунару.
Задатак је јасан: када се преносни рачунар повеже, нешто на њему треба да се промени. Конфигурација која се уређује припада серверу, и управо ту претпоставка пада. Путања у серверској датотеци именује датотеку на том серверу, и никаква количина push-а не мења чији процес је извршава. Избор између две куке је углавном одлука која машина поседује посао и прихватање ограничења која из тога следе.
Две машине, два питања на која треба прво одговорити
Питајте где треба да се догоди промена стања, па питајте који догађај јој одговара. Ако је промена ауторизација за појединачног корисника или одлука о конфигурацији за појединачног клијента, она припада тамо где је познат кориснички директоријум: на сервер. Ако је промена рута, подешавање resolver-а или локални помоћник на крајњој тачки, припада крајњој тачки, и само је крајња тачка може извести.
Одговарање на ова два питања обрнутим редоследом је начин на који људи заврше покушавајући да прогурају batch датотеку на Windows преносни рачунар. Сервер зна ко се повезао; преносни рачунар зна како изгледа његов сопствени мрежни стек. Ниједан нема податке оног другог, а покушај обично тихо пропадне уместо уз јасну грешку.
Пре оба вреди поставити треће питање: да ли платформа уопште нуди куку коју желите? Уређај који сам генерише конфигурацију можда не нуди исте називе догађаја, а десктоп клијент који увози .ovpn датотеку није нужно исти клијент за који је датотека написана. Провера платформе унапред штеди вас од пројектовања око куке која тамо не постоји. Такође вам каже која се документација заиста односи на машину пред вама.
Серверска опција: догађај по вези
client-connect скрипта се извршава у контексту процеса сервера када се аутентификовани клијент повеже и прима документоване детаље везе као што су common name и додељена адреса. То је право место за писање конфигурационог фрагмента за појединачног клијента, спровођење одлуке политике или бележење стања које сервер поседује.
Разлика коју људи превиде је разлика између те куке и серверске up куке. up кука се активира када сервер отвори свој тунелски уређај, што се на серверу са више клијената догоди једном при покретању демона. То није догађај по пријави, и код тамо се извршава при покретању сервиса, а не када се корисници повезују.
На уређају са веб интерфејсом користите подржани механизам проширења уместо да уређујете генерисане датотеке демона. Генерисане датотеке се преписују при следећем чувању, а преписивање тихо уклања вашу промену у најгорем могућем тренутку. Држите копију текста проширења изван уређаја како ажурирање фирмвера не би изгубило и намеру.
Клијентска опција: посао који мора да ради локално
Клијент из заједнице може да покрене локалну скрипту када се тунелски уређај подигне и поново када се инсталирају руте. То су два различита тренутка, а избор погрешног ствара класичну трку у којој се помоћник покреће пре него што постоји рута од које зависи.
Помоћник мора да постоји на том клијенту, да буде читљив и извршив за налог који покреће клијента и да буде дозвољен експлицитним script-security подешавањем. Скрипта која ради када клијента покренете као администратор не говори ништа о сервису пре пријаве или о сесији другог корисника.
И именовање је важно. up кука одговара стварању уређаја, а route-up инсталацији рута, али задатак који захтева доступну приватну мрежу треба да провери доступност уместо да претпостави да стварање уређаја значи да су свака рута, унос resolver-а и апликација спремни.
Зашто гурање извршног кода није међу опцијама
Опције које се шаљу push-ом намерно су ограничене, а опције које извршавају скрипте спадају у категорије које сервер не сме да пренесе. То ограничење постоји зато што би алтернатива омогућила компромитованом или погрешно конфигурисаном серверу да извршава произвољне команде на сваком клијенту који се икада повеже.
Омогућавање извршавања скрипти локално то не мења. Ваше script-security подешавање дозвољава локалне скрипте које сте сами изабрали; оно не овлашћује сервер да испоручи нове.
Ако је циљ само инсталирање VPN рута, користите подржану конфигурацију рута уместо да измишљате шему даљинског извршавања. Ако циљ заиста захтева локални код, дистрибуирајте га кроз алате организације за управљање крајњим тачкама и прегледајте га као сваки други софтвер који ради са корисничким привилегијама.
Шта проверити пре него што поверите било којој од две куке
Запишите четири ствари за сваку куку: машину, назив догађаја, налог под којим се извршава и промену стања коју треба да произведе. Затим тестирајте везу, поновну везу и путању чишћења, јер кука која губи стање при поновној вези је гора од оне која се никада није извршила.
Тестирајте под налогом који ће је заиста извршавати, у тренутку када ће се заиста извршити. Приручник openvpn(8) документује обе породице кука и push ограничења; платформа на коју постављате документује да ли их уопште излаже. Скрипта која успе у интерактивном администраторском терминалу је хипотеза, а не провера.