EC2 메타데이터 심층 분석 및 보안 중요성
본 문서에서는 Amazon EC2 메타데이터의 역할과 그 중요성을 자세히 살펴봅니다. 또한, 서버 측 요청 위조(SSRF) 공격과 같은 잠재적 위협으로부터 시스템을 보호하기 위해 메타데이터 접근을 비활성화하는 방법에 대해서도 안내합니다.
Amazon Web Services(AWS)의 핵심 서비스 중 하나인 Amazon Elastic Compute Cloud(Amazon EC2)는 강력한 확장성을 갖춘 컴퓨팅 리소스를 제공합니다. EC2를 통해 사용자는 초기 하드웨어 투자 없이도 애플리케이션을 신속하게 개발하고 배포할 수 있습니다.
필요에 따라 가상 서버를 유연하게 확장 또는 축소할 수 있으며, 네트워크 및 보안 설정을 사용자의 요구에 맞게 조정할 수 있습니다. 또한, 스토리지 환경도 완벽하게 제어할 수 있습니다.
실행 중인 EC2 인스턴스에 대한 다양한 정보, 즉 인스턴스 메타데이터는 사용자가 사용자 지정하거나 관리할 수 있습니다. 이러한 메타데이터는 호스트 이름, 이벤트, 보안 그룹 등 다양한 범주를 포함합니다. 뿐만 아니라, 인스턴스를 시작할 때 지정한 사용자 정의 데이터에 접근하는 데에도 메타데이터가 사용됩니다.
인스턴스 구성 과정에서 짧은 스크립트 또는 특정 매개변수를 추가할 수 있으며, 사용자 데이터를 활용하여 일반 AMI를 생성하거나 시작 시간 구성 파일을 수정할 수 있습니다.
다음과 같은 작업을 위해 인스턴스 메타데이터 옵션을 사용하여 새 인스턴스 또는 기존 인스턴스를 설정할 수 있습니다.
- IMDSv2 프로토콜을 통한 인스턴스 메타데이터 요청 강제
- PUT 응답 홉 제한 설정
- 인스턴스 메타데이터 접근 잠금
다음과 같은 기술을 사용하여 활성 EC2 인스턴스에서 메타데이터에 접근할 수 있습니다. IMDSv1 또는 IMDSv2
인스턴스 메타데이터 서비스는 IMDS로 약칭되며, 접근 방식에서 약간의 차이가 있습니다. IMDSv1은 요청-응답 모델을 사용하는 반면, IMDSv2는 세션 지향적입니다.
AWS는 보안상의 이점을 들어 IMDSv2 사용을 권장합니다. 기본적으로 AWS SDK는 IMDSv2 호출을 사용하며, IAM 정책의 IAM 조건 키를 통해 사용자에게 IMDSv2가 활성화된 새로운 EC2 인스턴스 구성을 요구할 수 있습니다.
실행 중인 인스턴스에서 모든 유형의 메타데이터에 접근하려면 다음 IPv4 또는 IPv6 URI를 사용하십시오.
IPv4:
curl http://169.254.169.254/latest/meta-data/
IPv6:
curl http://[fd00:ec2::254]/latest/meta-data/
위 IP 주소는 링크-로컬 주소이며, 인스턴스 내부에서만 유효합니다.
인스턴스 메타데이터를 확인하려면 169.254.169.254 링크-로컬 주소만 사용해야 합니다. URI를 통한 메타데이터 요청은 무료이며, AWS에서 추가 요금이 부과되지 않습니다.
메타데이터 비활성화의 중요성
SSRF 공격은 AWS 환경에서 흔히 발생하며 잘 알려진 위협입니다. 사이버 보안 회사인 Mandiant의 연구에 따르면, 공격자들은 취약점 스캔을 자동화하여 공개적으로 접근 가능한 온라인 애플리케이션에서 IAM 자격 증명을 수집하는 것으로 나타났습니다.
모든 EC2 인스턴스에 IMDSv2를 구현하면 이러한 위험을 상당히 줄일 수 있습니다. IMDSv2를 사용하면 공격자가 SSRF를 통해 IAM 자격 증명을 탈취할 가능성이 크게 낮아집니다.
EC2 메타데이터 서비스에 접근하기 위해 SSRF(서버 측 요청 위조)를 사용하는 방법은 AWS 환경에서 가장 많이 악용되는 기술 중 하나입니다.
메타데이터 서비스는 대부분의 EC2 인스턴스에서 169.254.169.254를 통해 접근할 수 있으며, IP 주소, 보안 그룹 이름과 같은 인스턴스 관련 정보가 포함되어 있습니다.
EC2 인스턴스에 IAM 역할이 연결된 경우, 메타데이터 서비스에는 해당 역할을 인증하기 위한 IAM 자격 증명도 포함됩니다. 사용 중인 IMDS 버전과 SSRF 공격 능력에 따라 공격자가 이러한 자격 증명을 탈취할 수 있습니다.
EC2 인스턴스에 셸 접근 권한을 얻은 공격자는 이러한 자격 증명을 쉽게 확보할 수 있다는 점을 기억해야 합니다.
예를 들어, EC2 인스턴스의 80번 포트에서 웹 서버가 실행 중이고, 이 서버에 모든 주소로 GET 요청을 보낼 수 있는 간단한 SSRF 취약점이 있다고 가정해 봅시다. 공격자는 이 취약점을 이용하여 http://169.254.169.254
로 요청을 보낼 수 있습니다.
메타데이터 비활성화 방법
인스턴스 메타데이터 서비스의 HTTP 엔드포인트를 차단하면, 사용 중인 인스턴스 메타데이터 서비스 버전에 관계없이 인스턴스 메타데이터 접근을 방지할 수 있습니다.
언제든지 HTTP 엔드포인트를 다시 활성화하여 변경 사항을 되돌릴 수 있습니다. modify-instance-metadata-options
CLI 명령어를 사용하고 http-endpoint
파라미터를 disabled로 설정하여 인스턴스의 메타데이터를 비활성화합니다.
메타데이터를 비활성화하려면 다음 명령을 실행합니다.
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint disabled
메타데이터 비활성화
메타데이터 비활성화 후 접근을 시도하면 FORBIDDEN 메시지가 표시됩니다.
메타데이터를 다시 활성화하려면 다음 명령을 실행하세요.
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint enabled
메타데이터 다시 활성화
결론
메타데이터는 대규모 데이터 저장소에서 유용한 정보를 추출하는 데 효과적입니다. 하지만 개인의 위치나 신원을 파악하는 데 오용될 수 있는 가능성이 있다는 점을 인지해야 합니다. 또한, 메타데이터에는 삭제 및 댓글과 같은 변경 사항을 포함하여 다른 사람에게 숨기고 싶은 정보가 포함될 수 있다는 것을 명심해야 합니다. 따라서 온라인 개인 정보 보호 및 익명성 유지를 위해 메타데이터 관리가 매우 중요합니다.
AWS 학습을 확장하기 위해 몇 가지 중요한 AWS 용어를 추가로 살펴보십시오.