GCP - Add Custom SSH Metadata
GCP - 사용자 정의 SSH 메타데이터 추가
메타데이터 수정
인스턴스의 메타데이터 수정은 공격자가 필요한 권한을 획들할 경우 중대한 보안 위험으로 이어질 수 있습니다.
사용자 정의 메타데이터에 SSH 키 통합
GCP에서 Linux 시스템은 종종 Google Compute Engine을 위한 Python Linux 게스트 환경에서 스크립트를 실행합니다. 이 작업의 중요한 구성 요소는 계정 데몬으로, 이는 인스턴스 메타데이터 엔드포인트를 정기적으로 확인하여 인증된 SSH 공개 키에 대한 업데이트를 찾습니다.
따라서 공격자가 사용자 정의 메타데이터를 수정할 수 있다면, 데몬이 새로운 공개 키를 찾아서 이를 로컬 시스템에 통합시킬 수 있습니다. 해당 키는 기존 사용자의 ~/.ssh/authorized_keys
파일에 추가되거나 키의 형식에 따라 sudo
권한을 가진 새 사용자가 생성될 수 있습니다. 그리고 공격자는 호스트를 침해할 수 있게 됩니다.
기존 권한이 있는 사용자에게 SSH 키 추가
인스턴스의 기존 SSH 키 확인:
인스턴스 및 해당 메타데이터를 설명하는 명령을 실행하여 기존 SSH 키를 찾습니다. 출력의 관련 섹션은
metadata
아래에 특히ssh-keys
키 아래에 있을 것입니다.
SSH 키의 형식에 주의하십시오: 사용자 이름은 콜론으로 구분된 키 앞에 옵니다.
SSH 키 메타데이터용 텍스트 파일 준비:
사용자 이름과 해당 SSH 키의 세부 정보를
meta.txt
라는 텍스트 파일에 저장합니다. 이는 새 키를 추가하는 동안 기존 키를 보존하는 데 중요합니다.
대상 사용자(
alice
예시)를 위한 새 SSH 키 생성:
ssh-keygen
명령을 사용하여 새 SSH 키를 생성하고, 주석 필드(-C
)가 대상 사용자 이름과 일치하는지 확인합니다.
인스턴스 메타데이터에서 발견된 형식을 모방하여 새 공개 키를
meta.txt
에 추가합니다.
인스턴스의 SSH 키 메타데이터 업데이트:
gcloud compute instances add-metadata
명령을 사용하여 인스턴스에 업데이트된 SSH 키 메타데이터를 적용합니다.
새 SSH 키를 사용하여 인스턴스에 액세스:
새 키를 사용하여 SSH로 인스턴스에 연결하여 대상 사용자(
alice
예시)의 쉘에 액세스합니다.
새로운 권한이 있는 사용자 생성 및 SSH 키 추가
흥미로운 사용자를 찾을 수 없는 경우, sudo
권한이 부여된 새 사용자를 생성하는 것이 가능합니다.
프로젝트 수준의 SSH 키
프로젝트 수준에 SSH 키를 적용하여 클라우드 환경의 여러 가상 머신(VM)에 대한 SSH 액세스 범위를 확대할 수 있습니다. 이 접근 방식은 프로젝트 내에서 명시적으로 프로젝트 전체 SSH 키를 차단하지 않은 경우 프로젝트 내의 모든 인스턴스에 SSH 액세스를 허용합니다. 다음은 요약된 가이드입니다:
프로젝트 수준에 SSH 키 적용:
gcloud compute project-info add-metadata
명령을 사용하여meta.txt
에서 SSH 키를 프로젝트 메타데이터에 추가합니다. 이 작업을 통해 SSH 키가 프로젝트 내의 모든 VM에서 인식되도록합니다. 단, VM이 "프로젝트 전체 SSH 키 차단" 옵션을 활성화하지 않은 경우입니다.
프로젝트 전체 키를 사용하여 인스턴스에 SSH:
프로젝트 전체 SSH 키가 설정되어 있으면 프로젝트 내의 모든 인스턴스에 SSH할 수 있습니다. 프로젝트 전체 키를 차단하지 않은 인스턴스는 SSH 키를 수락하여 액세스를 허용합니다.
인스턴스에 직접 SSH하는 방법은
gcloud compute ssh [INSTANCE]
명령을 사용하는 것입니다. 이 명령은 현재 사용자 이름과 프로젝트 수준에서 설정된 SSH 키를 사용하여 액세스를 시도합니다.
참고 자료
Last updated