Імпартуйце профіль у праграму-кліент для працоўнага стала, і першая памылка часта аказваецца радком, які кліент адмаўляецца выконваць: хук скрыпта, які ён не запусціць, або значэнне script-security, якое ён лічыць занадта дазвольным. Павышэнне ліку прыбірае дыялог. Яно таксама пашырае тое, што гэты профіль мае права выконваць на вашай машыне, а гэта дзіўна даваць толькі каб закрыць папярэджанне. Прасачыце імпарт да дырэктывы, і рашэнне стане канкрэтным.

Ад дыялогу імпарту да дырэктывы

Профіль — гэта тэкставы файл з дырэктывамі, і кліент чытае іх перш чым існуе які-небудзь тунель. Дырэктыва накшталт up, down ці tls-verify называе знешнюю праграму, якую OpenVPN павінен запусціць у пэўны момант. Ці гатовы OpenVPN яе запусціць — гэта асобная налада пад назвай script-security, і профіль звычайна таксама яе задае.

Такім чынам, папярэджанне не пра крыптаграфію ці сертыфікаты. Яно пра тое, што файл канфігурацыі просіць кліент выканаць нешта на хаспе, а кліент правярае, ці дазваляе гэты запыт яго бягучы ўзровень дазволаў.

На гэтым этапе дзве розныя няўдачы выглядаюць падобна. Профіль, які просіць узровень, якога кліент не дасць, дае адмову. Профіль, які просіць узровень, які кліент дае, але скрыпт адсутнічае, дае збой падчас выканання, і гэтыя дзве сітуацыі блытаюць у абмеркаваннях падтрымкі. Адна — пытанне дазволаў, другая — пытанне ўпакоўкі.

Што кожны ўзровень насамрэч адкрывае

Узровень 0 цалкам забараняе выклікі знешніх праграм, што паслядоўна для кліента, які сам наладжвае свой інтэрфейс без дапамогі, і непаслядоўна для таго, хто звяртаецца да аперацыйнай сістэмы. Узровень 1, прадвызначаны, дазваляе ўбудаваныя выконвальныя файлы, патрэбныя для налады інтэрфейса і маршрутаў. Ні адзін узровень не запускае нічога, што дадаў карыстальнік.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials 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 ці маршрутаў, якая была патрэбна тунелю, і атрыманае злучэнне будзе бездакорна аўтэнтыфікавацца, нічога не развязаючы.

Рашэнне, якое варта запісаць, вузкае: які скрыпт, па якім шляху, на якім узроўні дазволены, для якога профіля. Усё астатняе ў профілі застаецца нязменным, і гэта сказ, які рэцэнзент можа праверыць.

Падобныя артыкулы