
AWS EC2에서 SSRF 공격을 방지하기 위해 더 안전한 Instance Metadata Service v2 (IMDSv2)로 자동 업그레이드합니다.
AWS EC2에서 SSRF 공격을 방지하기 위해 보다 안전한 인스턴스 메타데이터 서비스 v2(IMDSv2)로 자동 업그레이드합니다.
목적 및 기능
엔지니어링 팀은 메타데이터 서비스를 활용하는 특정 취약점으로부터 보호해야 하는 다양한 컴퓨팅 인프라를 AWS에 보유할 수 있습니다. IAM이 사용되거나 인스턴스 부팅 시 필요한 사용자 데이터 정보가 있는 경우 인스턴스에서 메타데이터 서비스를 실행해야 합니다. 인스턴스의 공격 표면을 제한하는 것은 서비스에서 제공하는 정보를 도용하여 환경 내에서 피벗할 수 있는 능력을 방지하는 데 중요합니다. 과거 많은 유명한 공격에서 이 서비스를 사용하여 인스턴스에 연결된 역할을 악용하거나 메타데이터 서비스를 통해 액세스할 수 있는 민감한 데이터를 덤프했습니다. Metabadger는 인스턴스 메타데이터 서비스를 어디서 어떻게 사용하는지 식별하는 동시에 원하지 않는 공격 활용도를 줄여 EC2 운영 중 전반적인 위험 상태를 낮출 수 있도록 도와줍니다.
이 도구를 사용하면 AWS 컴퓨팅 인프라에 영향을 줄 수 있습니다. 모든 서비스와 애플리케이션이 메타데이터 서비스 없이 또는 버전 2에서 작동하지 않을 수 있기 때문입니다. 프로덕션 환경에 배포할 때는 주의하고, 이상이 발생할 경우를 대비해 롤백 계획을 마련하십시오. Metabadger는 -v1 플래그를 사용하여 기본 버전 1로 롤백할 수 있는 기능이 내장되어 있습니다. 이 기능을 사용하여 인스턴스를 기본값으로 빠르게 롤백할 수 있습니다. 이상적으로는 이 도구를 실행하고 비프로덕션 환경에서 메타데이터 버전을 업데이트하여 적용 전에 시험 사용하는 것이 좋습니다.
1단계
먼저 특정 AWS 리전에서 메타데이터 서비스의 전체 사용 현황을 파악하려고 합니다. Metabadger는 /.aws/credentials 파일에 지정된 자격 증명 또는 가정된 현재 역할이 가리키는 리전에서 사용 현황의 현재 상태를 평가합니다. discover-metadata 명령을 실행할 때 --region 플래그를 지정하여 현재 구성된 리전 외에 다른 리전으로 변경할 수도 있습니다. 인스턴스가 실행 중인 버전과 서비스가 활성화 또는 비활성화되었는지 파악한 후에는 서비스 강화를 위한 훨씬 더 명확한 실행 계획을 세울 수 있습니다. 설정된 모든 메타데이터 옵션의 구체적인 의미는 여기에서 확인할 수 있습니다.
2단계
v2로 전환할 때 평가해야 할 영역 중 하나는 IAM 역할의 사용입니다. Metabadger를 사용하면 이미 IAM 역할을 사용 중일 수 있는 리전 내 인스턴스를 식별할 수 있습니다. discover-role-usage 명령은 역할이 연결된 인스턴스 목록을 출력합니다. 많은 인스턴스가 역할을 사용하는 경우 워크로드의 전반적인 기능에 영향을 주지 않도록 서비스를 v2로 업데이트할 때 주의해야 합니다.
3단계
초기 발견 및 평가를 완료한 후에는 컴퓨팅 인프라를 강화하기 위한 단계적 접근 방식을 만들 수 있습니다. 이제 메타데이터 서비스 v2를 사용하거나 필요하지 않은 곳에서는 비활성화할 수 있습니다. harden-metadata 명령을 사용하면 기본적으로 특정 리전의 모든 인스턴스를 업데이트할 수 있습니다. 또한 --tags 플래그를 사용하여 인스턴스 태그를 전달하거나 구성을 적용할 인스턴스의 CSV 파일이 포함된 입력 파일을 전달할 수 있습니다. v2로 적절히 업데이트하고 사용되지 않는 곳에서는 서비스를 비활성화한 후 1단계의 항목을 사용하여 재평가하여 환경이 잠겼는지 확인할 수 있습니다. 업데이트하지 않을 특정 인스턴스가 있는 경우 --exclusion 플래그를 태그 또는 인스턴스 ID로 사용하여 제외할 수 있습니다.
Metabadger에는 다음 권한이 있는 IAM 역할 또는 자격 증명이 필요합니다.
ec2:ModifyInstanceAttribute
ec2:DescribeInstances
인스턴스 메타데이터 서비스를 변경할 때는 주의해야 하며 버전 2로 안전하게 업그레이드하는 방법에 대한 AWS의 추가 지침을 따라야 합니다. Metabadger는 이 프로세스를 지원하여 AWS 컴퓨팅 인프라를 더욱 안전하게 보호하도록 설계되었습니다.
IMDSv2로 업데이트에 대한 AWS 모범 사례 가이드
pip를 통해 설치
pip3 install --user metabadger
Github를 통해 설치
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .
$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...
Metabadger는 인스턴스 메타데이터 서비스를 발견하고 강화하는 AWS 보안 도구입니다.
Options:
--version 버전을 표시하고 종료합니다.
--help 이 메시지를 표시하고 종료합니다.
Commands:
cloudwatch-metrics MetadataNoToken 사용량에 대한 CloudWatch 메트릭 가져오기
disable-metadata EC2 인스턴스에서 IMDS 서비스 비활성화
discover-metadata EC2 내 IMDS 서비스 사용 요약 발견
discover-role-usage EC2의 IAM 역할 사용 요약 발견
harden-metadata AWS 인스턴스 메타데이터 서비스를 v1에서 v2로 강화
cloudwatch-metrics
AWS CloudWatch의 MetadataNoToken 메트릭을 통해 IMDSv1 사용에 대한 정보를 직접 가져옵니다. 이 명령은 지난 1시간 이내에 v1 서비스를 적극적으로 사용하는 인스턴스를 보여줍니다. 이 명령을 실행할 때 CloudWatch 메트릭을 볼 수 있는 IAM 권한이 있어야 합니다.
Options:
-a, --all-region 사용 가능한 모든 리전에서 CloudWatch 메트릭 가져오기
-r, --region TEXT 이 명령을 수행할 AWS 리전 지정
-t, --time-period INTEGER IMDS v1 메트릭을 추적하는 데 사용되는 CloudWatch 시간(초)
-p, --profile TEXT AWS IAM 프로필 지정.
--help 이 메시지를 표시하고 종료합니다.
discover-metadata
전체 인스턴스 메타데이터 서비스 사용에 대한 요약(버전 및 전반적인 적용 비율 포함)입니다. 이 숫자를 사용하면 메타데이터 사용의 전반적인 강화 상태와 v2 대 v1 적용 위치를 이해하는 데 도움이 됩니다.
Options:
-a, --all-region AWS 계정의 사용 가능한 모든 리전에 대한 메타데이터 요약 제공
-j, --json 메타데이터 요약을 JSON 형식으로 가져오기
-r, --region TEXT 이 명령을 수행할 AWS 리전 지정
-p, --profile TEXT AWS IAM 프로필 지정.
discover-role-usage
인스턴스와 해당 인스턴스가 사용하는 역할에 대한 요약입니다. 이 정보는 메타데이터 서비스 자체를 업데이트할 때 주의해야 할 사항을 파악하는 데 도움이 됩니다.
Options:
-p, --profile TEXT AWS IAM 프로필 지정.
-r, --region TEXT 이 명령을 수행할 AWS 리전 지정.
harden-metadata
인스턴스를 메타데이터 v1 또는 v2로 수정하는 기능과 dry run 모드를 실행하여 수정될 인스턴스 수를 파악하는 기능입니다.
Options:
-a, --all-region 계정의 모든 리전에서 IMDS 업데이트
-e, --exclusion 제외 플래그는 지정된 것(태그 또는 인스턴스) 이외의 모든 항목에 적용됩니다.
-d, --dry-run 메타데이터 변경의 dry run
-v1, --v1 메타데이터 서비스 v1 강제 적용
-i, --input-file PATH IMDS를 강화할 인스턴스의 CSV 파일 경로
-t, --tags TEXT 강화 설정을 적용할 태그의 쉼표로 구분된 목록
-r, --region TEXT 이 명령을 수행할 AWS 리전 지정
-p, --profile TEXT AWS IAM 프로필 지정.
disable-metadata
인스턴스에서 메타데이터 서비스를 완전히 비활성화하려면 이 명령을 사용합니다.
Options:
-e, --exclusion 제외 플래그는 지정된 것(태그 또는 인스턴스) 이외의 모든 항목에 적용됩니다.
-d, --dry-run 메타데이터 서비스 비활성화의 dry run
-i, --input-file PATH IMDS를 비활성화할 인스턴스의 CSV 파일 경로
-t, --tags TEXT 강화 설정을 적용할 태그의 쉼표로 구분된 목록
-r, --region TEXT 이 명령을 수행할 AWS 리전 지정
-p, --profile TEXT AWS IAM 프로필 지정.
Metabadger가 수행한 모든 변경 사항은 작업 디렉터리에 metabadger.log 파일로 저장됩니다. 파일에는 도구가 메타데이터 서비스를 변경할 때 수행하는 모든 작업에 대해 다음 정보가 포함됩니다.