Інсталятор порталу VPN: пакет, профіль чи перезбирання?
Завантаження з порталу може бути підписаним інсталятором постачальника, пакетом лише з профілем або внутрішнім перезбиранням. Перед розгортанням перевірте видавця, вміст і власника оновлень.
Кнопка завантаження на порталі VPN повертає рівно один файл, і цей файл може бути двома зовсім різними речами: готовим інсталятором постачальника, поруч з яким їде профіль конфігурації, або збиранням, яке організація склала сама. Сторінка виглядає однаково в обох випадках, тому кнопка не може сказати, що саме у вас. За нею стоять три питання — хто опублікував виконуваний файл, яку конфігурацію записує встановлення і хто його лагодить, коли виходить наступна версія клієнта. На перше ви відповідаєте з метаданих артефакту, на друге — зі вмісту пакета, а на третє — лише з команди, якій належить розгортання.
Замок у браузері закриває передавання, а не артефакт.
Що насправді повертає точка завантаження
Більшість порталів передають запит на завантаження невеликому обробнику, який або віддає збережений файл потоком, або збирає файл на місці, а потім до виходу відповіді задає ім'я файлу та тип вмісту. Те, що надходить, — це контейнер: MSI, PKG, DEB або RPM, або саморозпаковувальна обгортка навколо одного з них. Усередині лежить бінарний файл клієнта, і ніщо в імені файлу надійно не каже, чи цей бінарний файл прийшов від постачальника, чи з внутрішнього конвеєра збирання. Файл з іменем client-setup.exe фіксує рішення про іменування, а не факт походження.
Порівняйте завантажені байти з опублікованою постачальником контрольною сумою. Розбіжність не доводить злого наміру; вона доводить, що файл не є збиранням постачальника, і саме ця різниця варта дії.
Де профіль потрапляє в клієнт
Попередньо заповнені налаштування зазвичай подорожують окремим файлом, який інсталятор копіює в шлях для кожного користувача або кожної машини: профіль JSON або XML у Windows, профіль конфігурації в macOS, фрагмент під /etc у Linux. Значення в цьому файлі — імена хостів шлюзу, якорі довіри, іноді матеріал реєстрації — стають типовими налаштуваннями клієнта під час першого запуску. Ось чому одне завантаження може нести не лише код, а й секрети.
Запитайте, що робить шлях оновлення з профілем. Залежно від пакування він може пережити оновлення клієнта, бути ним перезаписаний або не пройти перевірку схеми в новій версії.
Чого не доводить ланцюжок підписів
Підпис коду пов'язує особу видавця з хешем файлу, а у Windows позначка часу Authenticode дозволяє підпису жити довше за сертифікат, який його створив. Чинний результат відповідає на два питання: який видавець підписав ці байти і чи змінилися вони після цього. Він не перелічує служби інсталятора, записи в реєстрі чи супровідні драйвери й не вирішує, чи варто довіряти цьому видавцю тут. Документація Authenticode від Microsoft описує механізм і прямо говорить про цю вузьку сферу.
Автентифікація порталу відповідає на третє питання: чи сягнула сесія передбаченого сервера. Три різні перевірки, три різні режими відмови.
Перевірте артефакт, перш ніж хтось його запустить
Помістіть файл на ізольовану машину і прочитайте його метадані, перш ніж щось виконувати. Ці команди відповідають на питання про видавця на трьох основних платформах.
# Windows PowerShell Get-AuthenticodeSignature .\client-setup.exe | Format-List Status, SignerCertificate, TimeStamperCertificate # macOS pkgutil --check-signature ./Client.pkg codesign -dv --verbose=4 /Applications/Client.app # Debian/Ubuntu dpkg-deb -I ./client_amd64.deb sha256sum ./client_amd64.deb
Читайте суб'єкт підписувача, а не лише слово стану. Внутрішній центр сертифікації, що підписує внутрішнє збирання, — це очікувано; той самий сертифікат на пакеті, який видає себе за випуск постачальника, — ні.
Для пакета лише з профілем відкрийте архів і ставтеся до кожного вбудованого імені хоста й ключа як до даних, за які треба звітувати. Якщо профіль містить щось багаторазове, поширення через портал перетворює це на спільний секрет із графіком розгортання.
Визначення власника перед розгортанням
За останнім питанням не стоїть жодної команди. З'ясуйте, хто оновлює артефакт, коли постачальник випускає нового клієнта, у кого ключ підпису внутрішнього збирання і як профіль ротується, коли кінцева точка переміщується. Запишіть ці імена поруч із посиланням на завантаження.
Якщо цієї відповіді ніхто не має, завантаження — це канал поширення без договору на обслуговування, і саме це варто повідомити.