GCP - Add Custom SSH Metadata
GCP - Додавання користувацьких метаданих SSH
Зміна метаданих
Зміна метаданих на екземплярі може призвести до значних ризиків безпеки, якщо зловмисник отримає необхідні дозволи.
Включення SSH-ключів у користувацькі метадані
На GCP, системи Linux часто виконують скрипти з Python Linux Guest Environment for Google Compute Engine. Критичним компонентом є демон облікових записів, який призначений для регулярної перевірки кінцевої точки метаданих екземпляра на оновлення авторизованих публічних SSH-ключів.
Отже, якщо зловмисник може змінити користувацькі метадані, він може змусити демона знайти новий публічний ключ, який буде оброблений та інтегрований у локальну систему. Ключ буде доданий до файлу ~/.ssh/authorized_keys
існуючого користувача або, можливо, створення нового користувача з привілеями sudo
, залежно від формату ключа. І зловмисник зможе скомпрометувати хост.
Додавання SSH-ключа до існуючого привілейованого користувача
Перегляд існуючих SSH-ключів на екземплярі:
Виконайте команду для опису екземпляра та його метаданих для пошуку існуючих SSH-ключів. Відповідний розділ у виводі буде під
metadata
, зокрема ключssh-keys
.
Зверніть увагу на формат SSH-ключів: перед ключем йде ім'я користувача, розділене двокрапкою.
Підготовка текстового файлу для метаданих SSH-ключа:
Збережіть деталі імен користувачів та відповідних SSH-ключів у текстовий файл з назвою
meta.txt
. Це важливо для збереження існуючих ключів при додаванні нових.
Створення нового SSH-ключа для цільового користувача (
alice
у цьому прикладі):
Використовуйте команду
ssh-keygen
для генерації нового SSH-ключа, переконавшись, що поле коментаря (-C
) відповідає імені цільового користувача.
Додайте новий публічний ключ до
meta.txt
, наслідуючи формат, знайдений у метаданих екземпляра.
Оновлення метаданих SSH-ключа екземпляра:
Застосуйте оновлені метадані SSH-ключа до екземпляра за допомогою команди
gcloud compute instances add-metadata
.
Доступ до екземпляра за допомогою нового SSH-ключа:
Підключіться до екземпляра за допомогою SSH за допомогою нового ключа, отримуючи доступ до оболонки в контексті цільового користувача (
alice
у цьому прикладі).
Створення нового привілейованого користувача та додавання SSH-ключа
Якщо не знайдено цікавого користувача, можливо створити нового, якому будуть надані привілеї sudo
:
SSH ключі на рівні проекту
Можливо розширити доступ до SSH до кількох віртуальних машин (VMs) в хмарному середовищі, застосовуючи SSH ключі на рівні проекту. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра всередині проекту, який не явно заблокував проектні SSH ключі. Ось короткий посібник:
Застосування SSH ключів на рівні проекту:
Використовуйте команду
gcloud compute project-info add-metadata
, щоб додати SSH ключі зmeta.txt
до метаданих проекту. Ця дія гарантує, що SSH ключі визнаються на всіх VMs у проекті, якщо VM не має включеної опції "Блокувати проектні SSH ключі".
SSH в екземпляри, використовуючи проектні ключі:
З проектними SSH ключами встановленими, ви можете SSH в будь-який екземпляр всередині проекту. Екземпляри, які не блокують проектні ключі, приймуть SSH ключ, надаючи доступ.
Прямий метод SSH в екземпляр полягає в використанні команди
gcloud compute ssh [INSTANCE]
. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проекту, для спроби доступу.
References
Last updated