Ключ SSH скопійовано чи агента переспрямовано? Два різні ризики
Підпис — не файл ключа, а делегований агент — не розкриття. Відокремте факт протоколу від питання довіри до кінцевої точки і потім реагуйте.
Вхід, що використовує ключ SSH через VPN, не означає, що приватний ключ передано оператору мережі, і це заспокоєння вужче, ніж чують люди. Автентифікація за відкритим ключем надсилає відкритий ключ і підпис, який клієнт створює локально. Переспрямування агента — інша схема з іншою експозицією, і вона може залишити придатну можливість автентифікації на машині, якою ви не керуєте. Відповідь, яку ви повинні дати, залежить від того, що з цих двох справді сталося.
Що надсилає автентифікація за відкритим ключем
У стандартному методі з відкритим ключем клієнт пропонує відкритий ключ, сервер вирішує, чи приймає він цей ключ, а клієнт підписує виклик приватним ключем, який залишається у його файлі або його агенті. Мережею проходять відкритий ключ і отриманий підпис. Ніщо в цьому обміні не вимагає, щоб сервер, тунель або хтось на шляху тримав приватний матеріал.
Специфікація автентифікації визначає цей доказ, і приватний ключ не є полем запиту.
Це твердження про протокол, а не характеристика кожної залученої кінцевої точки. Перевірка ідентичності хоста все ще має бути цілісною, бо сервер, який не може довести, хто він, може збирати підписи для мети, якої ви не мали на увазі. Орендована VM, успадкований бастіон і ноутбук із невідомим розширенням — три окремі питання довіри. Тримайте їх окремо від криптографічного, яке справді вирішене.
Що делегує переспрямування агента
Переспрямування агента відкриває канал від віддаленого хоста назад до агента на вашій машині, тож процеси на цьому хості можуть просити агент підписати, ніколи не тримаючи приватний ключ. Ключ залишається там, де він є, а можливість — ні. Усе, що може досягти цього переспрямованого сокета на віддаленому хості, протягом життя сеансу, може запитувати операції автентифікації як одна із завантажених ідентичностей. Це делеговані повноваження, тому переспрямування заслуговує на вужчу політику, ніж передача відкритого ключа.
Скопійований файл ключа — це розкриття. Переспрямований агент — це дозвіл, і обидва випадки потребують різних відповідей.
Увімкніть переспрямування для названої потреби та названих хостів і перевірте, що клієнт робить насправді, а не те, що нібито каже конфігурація. Важливі чинні налаштування, бо блок хоста тихо перекриває глобальне значення за замовчуванням. Та сама логіка стосується боку сервера, який може повністю відмовити в переспрямуванні, коли розгортання цього ніколи не потребує.
Прочитайте докази, перш ніж обирати відповідь
Якщо вважається, що файл приватного ключа або еквівалентна підписувальна ідентичність розкриті, відповідь — заміна й відкликання через процес вашої організації, плюс вилучення його прийняття з кожної служби, яка йому довіряла. Видалення однієї локальної копії не анулює копії, яких ви не бачите.
Якщо занепокоєння — тимчасовий доступ агента, відповідь вужча: зупиніть непотрібне делегування, перегляньте задіяні сеанси та ідентичності й дозвольте власнику інциденту вирішити, чи виправдана заміна. Докази тут важливі, бо відсутність поміченого експорту не доводить, що автентифікацію не використали зловмисно, а сама лише зміна шляху не є діагнозом викраденого ключа. Запишіть, якому компоненту довіряли, чи було ввімкнено переспрямування і що фактично спостерігалося. Потім виберіть відповідь, що відповідає цьому запису, а не найдраматичнішу з доступних.
ssh-add -l
ssh -G host.example | grep -i forwardagent
Запустіть їх до зміни й після, щоб порівняння щось означало. Сеанс, установлений раніше, зберігає делегування, яке йому надали, хоч би що казали налаштування зараз.
Два контролі, які не є взаємозамінними
Захист приватного матеріалу, обмеження того, хто може просити його підпис, і перевірка ідентичності іншої сторони — три пов'язані контролі, і жоден не замінює інший. Команда, яка прибрала переспрямування без перевірки ключів хостів, виправила половину проблеми. Команда, яка змінила ключ через зміну маршруту, не виправила нічого.
Скомпрометована кінцева точка — четверте питання, бо привілейоване програмне забезпечення на вашій власній машині може зробити значно більше, ніж спостерігати за пакетами.
Розкладіть інцидент за цими категоріями, перш ніж чогось торкатися, і дайте кожній власника. Ведіть короткий запис про те, чому довіряли, що делегували і що перевірили, бо саме цей запис робить наступний огляд дешевим замість чергової суперечки. Якщо якась категорія невідома, напишіть «невідомо», а не припускайте сприятливий випадок. Розрізнення практичне, а не академічне: воно вирішує, чи замінюєте ви облікові дані, відкликаєте сеанс або просто припиняєте переспрямування.