Ваш файл .ovpn можа выконваць код, а не толькі маршрутызаваць трафік
Профіль, які называе памочнік up або down, выконвае код з вашымі прывілеямі. Праверце шлях, уласнасць, ачыстку і наладу script-security.
Большасць людзей чытаюць файл .ovpn гэтак жа, як чытаюць старонку налад роўтара: адрасы, маршруты, спіс шыфраў. Частка, якая выконвае код, стаіць бліжэй да нізу, побач з дырэктывамі, што выглядаюць як сантэхніка, і працуе з тымі прывілеямі, якія кліент ужо мае. Гэта тая шчыліна, якой карыстаецца неахайны або зламысны профіль, і гэта таксама шчыліна, якая праз тры тыдні ператварае карысны памочнік DNS у праблему падтрымкі. Дырэктыва падзеі, узровень бяспекі і ўласнік файла вырашаюць, што можа адбыцца; змест сцэнара вырашае, што адбываецца насамрэч. Прачытайце ўсе чатыры перад падключэннем.
Профіль, які запускае памочнік, — гэта праграма, а не файл налад
Дырэктывы накшталт route і dhcp-option апісваюць стан, які кліент павінен усталяваць, і кліент ставіцца да іх як да даных. Сцэнар up іншы: кліент запускае яго як працэс і перадае асяроддзе, поўнае звестак пра злучэнне, таму ўсё напісанае аўтарам працуе з правамі вашага ўліковага запісу. На ноўтбуку, дзе карыстальнік — адміністратар, гэта шырокія дзверы для файла, які прыйшоў укладаннем або ўстаўкай з тэмы форуму. Розніца не стылістычная, гэта розніца паміж канфігурацыяй і кодам.
Міф, які варта адкінуць, — гэта тое, што профіль можа толькі перанакіроўваць трафік. Памочнік, які выконвае ip route add, і той, што выконвае curl супраць аддаленага хоста, — гэта адзін механізм, і профіль звонку выглядае аднолькава. Нішто ў выглядзе файла не кажа, які з іх у вас, таму праверка павінна дайсці да самога сцэнара.
Што насамрэч вырашае выкананне і як выглядаюць дазваляльныя радкі
Памочнік залежыць ад трох рэчаў: дырэктывы падзеі, якая яго называе, узроўню script-security, які дазваляе яго, і ўласнай рэалізацыі платформы кліента. Профіль можа запытаць хук і ўсё роўна нічога не ўбачыць, бо мабільны кліент або ўрэзаная зборка для працоўнага стала могуць зусім не рэалізоўваць гэтую падзею. Гэтак жа профіль, які просіць больш правоў, чым патрабуе яго функцыя, нешта кажа пра сваё паходжанне. Узровень правоў — гэта магчымасць, а не адабрэнне. Дазваляльныя радкі выглядаюць так, шлях замяняе ваш.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shУзровень 0 адмаўляе знешнім праграмам, а ўзровень 1, прадвызначаны, дазваляе толькі ўбудаваныя выканальныя файлы кліента, таму хуку патрэбны 2 або вышэй; узровень 3 існуе галоўным чынам для перадачы старых пароляў і яго лепш пазбягаць. Профіль, які пастаўляецца з хукам, патрабуе і дырэктывы, і гэтага ўзроўню, таму адзін радок ля нізу файла заслугоўвае такой жа ўвагі, як блок сертыфіката. Кіраўніцтва OpenVPN пералічвае ўзроўні правоў, і яго фармулёўку варта чытаць побач з тым, што профіль насамрэч просіць.
Уласнасць, шлях і што атрымлівае памочнік
Профіль, якому вы давяраеце і які паказвае на сцэнар, які можа перапісаць іншы ўліковы запіс, не з'яўляецца давераным парадкам, бо праверка, зробленая ўчора, ужо не апісвае тое, што працуе сёння. Праверце ўласніка і рэжым памочніка і пераканайцеся, што наладжаны шлях вядзе да файла, які вы аглядалі, а не да імя, якое нешта іншае можа засланіць. Аргументы і асяроддзе заслугоўваюць такога ж позірку: кліент перадае хуку звесткі пра злучэнне, і памочнік, які запісвае ўсё асяроддзе, можа пісаць уліковыя даныя ў заяўку падтрымкі. Аддавайце перавагу дакументаванай інтэграцыі ад аператара або платформы перад сцэнарам DNS, скапіяваным з непавязанага артыкула, бо два кіраўнікі рэзалвераў, якія б'юцца за адзін файл, даюць збой, падобны да зламанага VPN.
Калі вы паведамляеце пра хук, які збаіў, адрэдагуйце асяроддзе, перш чым устаўляць яго куды-небудзь. Дэмп, які дапамагае ў адладцы, можа таксама несці токен, што вас аўтэнтыфікуе.
Збоі ачышчэння праяўляюцца пасля знікнення тунэля
Памочнік up дадае маршруты і налады рэзалвера, а памочнік down павінен зноў іх прыбраць. Калі хук down адсутнічае, моўчкі збаіць або ніколі не запускаецца, бо кліент быў забіты, рэшткі перажываюць сеанс. Тады трафік ідзе шляхам, якога ніхто не планаваў, а імёны развязаваюцца праз рэзалвер, які павінен быў быць выдалены, пакуль сам тунэль выглядае здаровым. Гэтыя сімптомы прыходзяць пасля адключэння, таму вінавацяць сетку, а не профіль.
Праверце демантаж як асобны крок: узніміце тунэль, запішыце маршруты і рэзалвер, апусціце яго, затым пераканайцеся, што абодва зніклі. Профіль, які чыста падключаецца, усё роўна можа пакінуць стан, і нулявы код выхаду памочніка не даказвае, што рэзалвер апынуўся там, дзе вы думаеце.
Агляд памочніка і захаванне выйсця
Прачытайце сцэнар ад пачатку да канца, шукаючы тры рэчы: каманды, якім патрэбны прывілеі, зашытыя шляхі, якіх можа не быць у вашай сістэме, і любыя сеткавыя выклікі. Затым паглядзіце, як ён збаіць, бо памочнік, які глытае памылкі, ператварае памылку канфігурацыі ў загадку. Калі вы не можаце сказаць адным сказам, што робіць сцэнар і хто можа яго змяніць, вы не гатовыя яго ўключыць. Профіль, які просіць больш прывілеяў, чым патрабуе гэты сказ, — гэта сігнал спыніцца.
Захоўвайце апошні працоўны профіль і памочнік, на які ён спасылаўся, у абароненым сховішчы, запісаўшы абедзве версіі, каб адкат быў копіяй, а не перабудовай у найгоршы магчымы момант. Калі памочнік існуе толькі для дыстрыбутыва або версіі кліента, якой ён больш не патрэбны, выведзіце яго ў канфігурацыі, якая валодае наладай, а не падымайце прывілеі, пакуль памылкі не спыняцца. Вось выйсце: менш рухомых частак, а не больш правоў.