Який двійковий файл openvpn працює? Перевірте шлях запуску
Ім'я команди, шлях служби та файл пакунка можуть бути трьома різними об'єктами. Перевірте шлях запуску, перевірте файли пакунка, а потім приберіть обгортку.
Старе обхідне рішення перемістило виконуваний файл 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 документує, що перевірка порівнює встановлені файли з локально записаними метаданими, використовуючи збережені контрольні суми там, де вони є. Вона помічає змінений файл пакунка і не може сказати, чи запускається замість нього інший двійковий файл.
Запишіть стан до виправлення
Зберіть розв'язаний шлях запуску, зв'язок файлу з пакунком, розташування обгортки та запис зміни, який її впровадив. Скопіюйте обгортку в захищене місце, якщо вона містить інтеграційну роботу, яка знадобиться пізніше.
Не вставляйте вміст обгортки в тему підтримки, доки не прочитаєте його, бо ці скрипти іноді несуть облікові дані або відомості про шлюз.
Запишіть, які профілі використовує служба і хто підключений, поки ви працюєте, бо перезапуск тунелю може перервати сеанс, через який ви адмініструєте хост.
Перевірте запуск, а потім приберіть обгортку
Після виправлення запустіть службу й переконайтеся, що процес працює за потрібним шляхом. Запит версії, виконаний вручну, доводить, що файл працює; він не доводить, що юніт його використовує.
Потім знову підключіть клієнт і перевірте, чи профіль досі проходить автентифікацію, бо заміна двійкового файлу, що ігнорує початкові параметри, завершиться невдачею так, що це виглядатиме як проблема із сертифікатом.
Приберіть витіснену обгортку через той самий запис зміни, що її впровадив. Завершене виправлення вказує, який виконуваний файл працює, чому і який файл було видалено; відновити ім'я файлу й сподіватися — це не те саме.