Нивоа script-security у OpenVPN-у од 0 до 3 и шта свако од њих отвара
Сваки ниво script-security проширује шта профил сме да извршава: прво административни помагачи, затим корисничке скрипте, па лозинке у окружењу. Прочитајте директиве.
Увезите профил у десктоп клијент и прва грешка је често линија коју клијент одбија да испоштује: скриптна кука коју неће покренути или вредност script-security коју сматра превише дозвољавајућом. Подизање броја уклања дијалог. Али оно проширује и оно што тај профил сме да извршава на вашем рачунару, што је чудна ствар дати само да би се затворило упозорење. Пратите увоз до директиве и одлука постаје конкретна.
Од дијалога за увоз до директиве
Профил је текстуална датотека са директивама, а клијент их чита пре него што икакав тунел постоји. Директива као up, down или tls-verify именује спољни програм који OpenVPN треба да покрене у одређеном тренутку. Да ли је OpenVPN спреман да га покрене, посебна је поставка звана script-security, а профил је обично такође поставља.
Дакле упозорење није о криптографији или сертификатима. Оно је о конфигурационој датотеци која тражи од клијента да изврши нешто на хосту, и о клијенту који проверава да ли његов тренутни ниво дозвола допушта тај захтев.
У овој фази два различита квара изгледају слично. Профил који тражи ниво који клијент неће дати производи одбијање. Профил који тражи ниво који клијент даје, али скрипта недостаје, производи уместо тога квар у време извршавања, и то двоје се меша у темама подршке. Једно је питање дозвола, а друго питање паковања.
Шта сваки ниво заиста отвара
Ниво 0 потпуно забрањује позиве спољних програма, што је доследно за клијент који сам конфигурише свој интерфејс без помоћи, а недоследно за онај који се обраћа оперативном систему. Ниво 1, подразумевани, допушта уграђене извршне датотеке потребне за конфигурацију интерфејса и рута. Ниједан ниво не покреће ништа што је корисник дао.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
Ниво 2 је занимљива граница, јер допушта скрипте које дефинише корисник. Од те тачке привилегије клијента важе за код који можда никад нисте прочитали, позван у тренуцима које нисте одабрали, у окружењу које садржи детаље везе. Ниво 3 иде даље и допушта преношење лозинки кроз променљиве окружења, због чега га приручник описује као потенцијално небезбедан.
Ниједан од ових бројева није поставка снаге. Профил на нивоу 3 нема боље шифровање од оног на нивоу 1; једноставно има већу површину извршавања, а тунел је идентичан.
Одлучите шта профил заслужује
Питајте чему скрипта служи пре него што питате који ниво јој треба. Кука која гура DNS поставке или поправља руту након повезивања легитиман је разлог да се нешто покрене. Кука која позива непознати бинарни фајл у привременом директоријуму разлог је да се зауставите.
Путања скрипте важна је колико и сама скрипта. Релативна путања решава се према директоријуму који клијент користи, а директоријум у који се може писати претвара једнократни увоз у трајан слот за извршавање. Апсолутне путање у директоријуму који корисник не може да мења облик су који треба преферирати.
Скрипте такође наслеђују окружење клијента, где живе акредитиви и метаподаци везе. Управо то наслеђивање чини ниво 3 опасним у комбинацији са скриптом која бележи своје окружење, и то је разлог зашто дијагностички испис из клијента са омогућеним скриптама заслужује други поглед пре него што се залепи у тикет. Очистите окружење пре него што га поделите.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnПромените једну ствар, па пазите и на расклапање
Ако профилу заиста треба скрипта, промените само ниво и само за тај профил. Покрените клијент у првом плану са опширним излазом како би грешке саме скрипте биле видљиве уместо да их прогута менаџер сервиса.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Тестирајте цео животни циклус, не само повезивање. Кука за прекид која не успе оставља руте према мртвом тунелу, што даје машину која изгледа повезано и не може да стигне нигде. Поново се повежите једном и одспојите једном пре него што промену прогласите завршеном, и проверите табелу рута након сваког.
Чувајте копију оригиналног профила. Ако клијент платформе не примењује исти модел скрипти, брисање директива док увоз не успе може уклонити DNS или рутну интеграцију која је тунелу била потребна, а резултујућа веза ће се савршено аутентификовати док ништа не разрешава.
Одлука коју треба забележити уска је: која скрипта, на којој путањи, на ком нивоу одобрена, за који профил. Све остало у профилу остаје непромењено, и то је реченица коју рецензент може да провери.