Додавањето на --csd-wrapper во профил предава локална скрипта на демонот што ја извршува за време на најавувањето, па одлуката пред вас е преглед на код, а не прекинувач за поставка. Опцијата постои за да може да се замени компонентата за проверка на домаќинот на портата, и прима патека до скрипта што ја обезбедувате вие. Сето подолу претпоставува дека сопственикот на распоредувањето веќе кажал која проверка на состојбата е потребна; ако тој дел уште е отворен, решете го прво. Прирачникот има четири чекори: пронајдете ја фазата што не успеа, прочитајте ја скриптата, изберете го идентитетот под кој се извршува и докажете го исходот.

Чекор 1: Пронајдете ја фазата што не успеа

Последната порака на клиентот обично е за колаче, што е крај на синџир, а не почеток. HTTPS најавување, проверка на сертификатот на серверот, размена на автентикација и компонента за состојба стојат пред таа порака.

Забележете ја верзијата и адресата за најавување што се користат, потоа повторете го обидот со детален излез задржан на вашиот терминал. Прочитајте ја првата грешка што не е повторен обид, а не последната линија од записот. Ако дневникот запре пред да биде именувана која било компонента за оценување, тогаш обвивката уште не е ваш проблем. Нејзиното додавање во тој момент само ја проширува површината што подоцна ќе треба да ја браните.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Чувајте го записот локално, бидејќи колачињата и одговорите за автентикација се пристапен материјал. Трагата залепена во разговор е истекување на акредитиви дури и кога чекорот за оценување изгледа безопасен. Споделете го текстот на грешката и точката во текот каде што се појави, никогаш товарот.

Чекор 2: Прочитајте ја скриптата пред да влезе во профил

Обвивката е доверлива онолку колку прегледаната ревизија, затоа закачете ја таа ревизија и чувајте го нејзиниот хеш до белешката за одобрување. Двете команди подолу ви даваат отпечаток и евтина синтаксна проверка пред да прочитате и една линија. Тие му даваат и на следниот човек фиксна референца, што е важно кога датотеката живее надвор од управувањето со пакети. Ниту една команда не кажува што прави скриптата, затоа извршете ги и продолжете да читате.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Прочитајте ја целата датотека со четири прашања во главата: дали прави излезни HTTP повици, дали чита датотеки со акредитиви или променливи на околината, дали пишува надвор од привремен директориум, и дали која било гранка известува за помината состојба без да измери нешто. Последниот образец е заобиколување на политиката со прикачена линија во дневникот. Копираните обвивки имаат тенденција да го прошверцуваат зад проверка што изгледа уверливо. Ако скриптата одлучи дека уредот е во ред пред да го погледне уредот, застанете таму.

Проверете и за спакувани товари, бидејќи читливото заглавие не докажува ништо за остатокот од датотеката. Преземањето скрипта од форумска тема не ја прави доверлива само затоа што нејзиното име потсетува на вистинска компонента за проверка на домаќин. Забележете кој ја инсталирал, од каде дошла и како ќе се ажурира.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Чекор 3: Изберете го идентитетот под кој се извршува обвивката

--csd-user ги намалува привилегиите додека се извршува програмата CSD, TNCC или HIP. Таа сметка е дел од локалното уредување за извршување, а не корисничкото име поднесено до портата.

Дајте ѝ на обвивката посебна сметка без интерактивна школка, без sudo права и без членства во групи што не ѝ се потребни. Дајте пристап за читање до скриптата и до конкретните датотеки што ги прегледува, потоа тестирајте го намалувањето пред да го допрете VPN профилот. Наоѓањето на проблемот овде е поевтино отколку внатре во клиентот.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Намалувањето на привилегиите го ограничува штетниот ефект што лошата скрипта може да го предизвика. Тоа не го прегледува кодот, не го прави извештајот вистинит и не утврдува дека администраторот на портата го прифаќа ова реализирање како исполнување на политиката за уреди.

Чекор 4: Чувајте ја промената повратна

Направете резервна копија од профилот пред да го уредувате и чувајте ја обвивката под контрола на верзии, за да враќањето обнови познат хеш наместо да бара копија. Забележете ја патеката на скриптата, хешот, корисникот за извршување и одобрувачот на едно место.

За да вратите, отстранете ја опцијата, рестартирајте го клиентот и потврдете дека првобитната грешка се враќа. Ако портата уште го одбива најавувањето по враќањето, се променило и нешто друго, а наоѓањето на таа разлика доаѓа пред повторното обидување со обвивката. Чувајте ја претходната копија за целото време на прозорецот за промени, што за повеќето тимови значи до поминувањето на следниот прозорец за одржување.

По успешно распоредување проверете две работи, а не една: тунелот се подига, и уредот што треба да не ја помине проверката на состојбата уште се одбива. Врската што работи за сите не е доказ дека оценувањето ја преживеа вашата промена.

Кратенки што создаваат втор проблем

Не дозволувајте помошникот да извести за усогласена состојба без да ги изврши потребните проверки, и не го надминувајте идентитетот на платформата за да одговара на друг оперативен систем. Тврдењето за друга платформа не е доказ дека вистинскиот уред ја исполнува политиката. Тоа ве остава со клиент што лаже при секое идно најавување.

Исклучувањето на проверката на серверот, повторното пуштање старо колаче и натрупувањето непроверени скрипти сите заменуваат видлив неуспех со невидлив. Ако инсталираниот клиент не може да го заврши поддржаниот тек, побарајте одобрена алтернатива наместо да го свиткате постојниот.

Прирачникот за OpenConnect одделно ги документира --csd-wrapper и --csd-user, и тоа е важниот навестување: скриптата и идентитетот се две одлуки. Прегледајте ги одделно и запишете ги двете. Тогаш поканата за најавување престанува да биде загатка што ја решавате со лепење код.

Поврзани статии