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

Што турма прыбірае, а демону гэта ўсё яшчэ патрэбна

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

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

Якое выпраўленне патрэбна, вырашаюць тры ўмовы

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

Другая — абслугоўванне. Турму са скапіяванымі бінарнікамі трэба абнаўляць кожны раз, калі абнаўляецца пакет, які іх пастаўляе, інакш першае абнаўленне пакіне пасля сябе зламаны тунэль. Трэцяя — ці сапраўды канкрэтны механізм патрабуе chroot; калі патрабаванне насамрэч пра падзел прывілеяў, самога змянення ўліковага запісу можа быць дастаткова.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Што мусіць змяшчаць працоўная турма

Турме, якая запускае каманды, патрэбен бінарнік, кожная бібліятэка, з якой ён злінкаваны, і любы вузел прылады, які демон адкрывае позна. Скапіюйце часткі і праверце іх без VPN у карціне:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

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

Скапіюйце ў турму таксама канфігурацыю, сертыфікаты і любы CRL, бо файл, які демон разлічвае перачытаць пасля запуску, не будзе знойдзены пасля змены кораня. Запішыце, што скапіявалі, паколькі наступнае абнаўленне сеткавага пакета заменіць арыгіналы і пакіне турму на старой копіі.

Замест гэтага паслабце ўзмацненне

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

Запішыце, што засталося і чаму. Канфігурацыя, якая ціха страціла кантроль без нататкі, — гэта шлях дрэйфу ўзмацнення, і наступны аўдыт спытае, чаму радок знік.

Падзяліце тры радкі, перш чым выбіраць

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

Калі маршрутызацыя зноў працуе, запусціце адзін сеанс кліента з вышэйшай падрабязнасцю і прачытайце радок, які называе каманду або адсутнае права. Гэты радок каштоўнейшы за тайм-аўт, які кліент урэшце паведамляе.

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