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

Што затворот одзема, а на демонот сѐ уште му треба

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

Преминот на непривилегирана сметка е одделно ограничување. Процес што се откажал од 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. Чекорот каде тунелот се крши ја означува границата, и избегнувате преизградба на затвор што никогаш не бил причината.

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

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