Керуючий сокет OpenVPN: канал керування, а не метрики
Допущений клієнт керування тримає команди керування, а не подання лише для читання. Володійте сокетом Unix, обходьтеся без сесії для знімків і тримайте TCP осторонь.
Запитайте в інтерфейсу керування статус один раз, і він починає виглядати як порт статусу. Але це не так. Щойно клієнта допущено, він може видавати команди керування протоколу, і обліковий запис, що запускає цього клієнта, успадковує все, що ці команди можуть зробити з демоном. Ставлення до нього як до потоку лише для читання — це помилка, яка перетворює інтеграцію моніторингу на консоль без автентифікації.
Переконання і його ціна
Переконання полягає в тому, що слухач керування рівнозначний кінцевій точці метрик: під'єднайте збирач, прочитайте лічильники, рухайтеся далі. Насправді збирач відкриває сесію з можливостями керування, і кожне інше припущення про розгортання тепер залежить від того, чи добре поводиться цей збирач.
Ніщо в інтерфейсі не заявляє режим лише для читання. Немає ролі спостерігача, яку можна вибрати, і ім'я користувача в конфігурації її не створює.
Що насправді тримає допущений клієнт
Демон спільноти приймає лише одного активного клієнта керування одночасно. Одне місце означає, що GUI, скрипт і агент моніторингу не можуть підключитися всі; другий чекає або зазнає невдачі, поки перший тримає сесію. Якщо ваш проєкт розраховує на одночасних читачів, він уже неправильний.
Там, де достатньо періодичного знімка, вивід у файл стану дає ті самі числа без живої сесії. Запис цього файлу через інтервали й читання його зі звичайними файловими правами повністю виводить збирач за межі площини керування, і саме така схема справді потрібна більшості систем моніторингу.
Власний сокет, а не відкритий
Сокет домену Unix утримує шлях керування поза мережею, що прибирає з проблеми змінну адресу тунелю. Це не знімає питання прав. Батьківський каталог має бути доступним для запису службовому обліковому запису й досяжним для облікового запису контролера, і це два окремі дозволи:
management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observerФайл пароля зберігає секрет керування в першому рядку. Захищайте цей файл як будь-які інші облікові дані та тримайте його вміст поза журналами й заявками до підтримки. Обмеження користувача й групи — це перевірки на іншому боці сокета Unix, а не права файлової системи, тому потрібному процесу потрібні і доступ до файлу, і відповідна ідентичність.
Зробити сокет доступним усьому світу, щоб прибрати помилку прав, — це єдине виправлення, якого слід уникати. Воно перетворює локальний канал керування на те, чим може керувати будь-який процес на хості.
Публікація через TCP — це не той самий проєкт
Перенесення слухача на TCP-порт не робить його безпечнішим чи зручнішим. Пароль керування передається відкритим текстом, тому TCP-слухач розкриває і облікові дані, і сесію кожному, хто може спостерігати за шляхом. Доступ до нього з іншого хоста потребує авторизованого каналу адміністрування або невеликого локального агента, який показує лише потрібні вам спостереження.
Пароль поверх транспорту з відкритим текстом — це автентифікація без конфіденційності, і таке поєднання гірше, ніж здається, бо відчувається захищеним.
Залежності під час запуску, яких ви не просили
Кілька параметрів керування змінюють життєвий цикл демона. Утримання запуску до підключення контролера або завершення, коли контролер зникає, перетворює необов'язкового спостерігача на жорстку залежність. Тоді агент моніторингу, що падає, потягне за собою й тунель.
Перегляньте ці параметри, перш ніж вмикати будь-що, крім самого сокета. Необов'язкове спостереження має залишатися необов'язковим, а політику перезапуску не слід прив'язувати до збирача, доданого заради графіків.
Файл сокета, що залишився після невдалого процесу, не доводить, що слухач існує. Перш ніж видаляти його, визначте, який екземпляр володіє шляхом, і використовуйте власний процес відновлення служби, а не видаляйте файли під працюючим демоном.
Як виглядає приймання
Проєкт покривають чотири перевірки: потрібна ідентичність контролера підключається, процес без цієї ідентичності відхиляється, демон переживає контролер, що відключається без попередження, і тунель далі передає трафік після контрольованого перезапуску. Успішне з'єднання керування доводить лише площину керування. Воно нічого не каже про те, чи працює трафік приватних застосунків, тож перевірте це окремо. Запишіть чотири результати там, де їх знайде наступний оператор.
Документація інтерфейсу керування описує модель одного клієнта та привілейований характер протоколу, і це та частина, яку варто прочитати, перш ніж спрямовувати на нього панель.