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

Пачніце са шляху, які запускае служба

Тэрмінал і модуль systemd не развязваюць выканальныя файлы аднолькава. Абалонка шукае ў PATH; модуль называе шлях, і drop-in-перакрыцці могуць замяніць яго, не кранаючы файл, які вы чытаеце. Гэтая розніца тлумачыць большую частку блытаніны ў гэтай задачы. Яна таксама вызначае, на які файл павінен быць накіраваны ваш рамонт.

Спытайце ў модуля, што ён запускае, уключаючы drop-in-перакрыцці, якія яго змяняюць, і чытайце атрыманы радок ExecStart, а не фрагмент, які вы лічыце аўтарытэтным. Затым прасачыце гэты шлях праз любую сімвалічную спасылку да канчатковага файла. Абгортка, якая заканчваецца exec у схаваны каталог, — звычайная канструкцыя з гэтых старых выпраўленняў.

Запішыце развязаны шлях, перш чым нешта змяняць.

systemctl cat [email protected] | grep -n 'ExecStart'
readlink -f "$(command -v openvpn)"

Параўнайце імя каманды са шляхам службы

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

Важна ведаць, які ўладальнік запускае працэс, што абслугоўвае трафік. Калі модуль запускае /usr/local/sbin/openvpn-wrapper, а ваша абалонка развязвае /usr/sbin/openvpn, выпраўленне другога файла нічога не змяняе ў службе.

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

Няхай база даных пакетаў гаворыць пра файлы пакета

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

Запусціце праверку і чытайце вынік, а не ўспрымайце пусты вынік як доказ чаго-небудзь.

dpkg -S /usr/sbin/openvpn
dpkg --verify openvpn

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

Запішыце стан перад рамонтам

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

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

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

Праверце запуск, затым прыбярыце абгортку

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

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

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

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