전용 계정에서 GuardDuty 결과 테스트
이 문서를 사용하여 AWS 계정에 배포될 테스트 리소스에 대해 GuardDuty 결과를 생성하는 테스터 스크립트를 실행합니다. 특정 GuardDuty 검색 유형과 검색 세부 정보가 계정의 실제 리소스를 찾는 방법을 이해하고 학습하려는 경우 이 단계를 수행할 수 있습니다. 이 경험은 샘플 결과 생성과 다릅니다. GuardDuty 결과 테스트 경험에 대한 자세한 내용은 고려 사항을 참조하세요.
내용
고려 사항
계속 진행하기 전에 다음 사항을 고려하세요:
-
GuardDuty는 전용 비프로덕션 AWS 계정에 테스터를 배포할 것을 권장합니다. 이 접근 방식을 사용하면 테스터가 생성한 GuardDuty 결과를 올바르게 식별할 수 있습니다. 또한 GuardDuty 테스터는 다른 계정에서 허용되는 것 이상의 IAM 권한이 필요할 수 있는 다양한 리소스를 배포합니다. 전용 계정을 사용하면 명확한 계정 경계로 권한 범위를 적절히 설정할 수 있습니다.
-
테스터 스크립트는 다양한 AWS 리소스 조합으로 100개 이상의 GuardDuty 조사 결과를 생성합니다. 현재 이 GuardDuty 결과 유형에는 모든 가 포함되지 않습니다. 이 테스터 스크립트로 생성할 수 있는 결과 유형 목록은 테스터 스크립트가 생성할 수 있는 GuardDuty 결과을 참조하세요.
-
GuardDuty 테스터가 예상대로 작동하려면 테스터 리소스가 배포된 계정에서 GuardDuty를 사용 설정해야 합니다. 테스터는 실행할 테스트에 따라 적절한 GuardDuty 보호 계획이 활성화되어 있는지 여부를 평가합니다. 활성화되지 않은 보호 계획의 경우 GuardDuty가 결과를 생성하는 테스트를 수행할 수 있을 만큼 필요한 보호 계획을 활성화할 수 있는 권한을 요청합니다. 나중에 테스트가 완료되면 GuardDuty가 보호 계획을 비활성화합니다.
- GuardDuty를 처음 활성화
-
특정 리전에서 처음으로 전용 계정에서 GuardDuty를 활성화하면 계정이 자동으로 30일 무료 체험에 등록됩니다.
GuardDuty는 선택적 보호 계획을 제공합니다. GuardDuty를 활성화하면 특정 보호 플랜도 활성화되며 GuardDuty 30일 무료 체험판에 포함되어 있습니다. 자세한 내용은 GuardDuty 30일 무료 평가판 사용 단원을 참조하십시오.
- 테스터 스크립트를 실행하기 전에 계정에서 GuardDuty가 이미 활성화되었습니다.
-
GuardDuty가 이미 사용 설정되어 있는 경우, 테스터 스크립트는 매개변수를 기반으로 특정 보호 계획의 구성 상태와 결과를 생성하는 데 필요한 기타 계정 수준 설정을 확인합니다.
이 테스터 스크립트를 실행하면 리전의 전용 계정에서 특정 보호 요금제가 처음으로 활성화될 수 있습니다. 그러면 해당 보호 요금제에 대한 30일 무료 체험이 시작됩니다. 각 보호 계획과 관련된 무료 평가판에 대한 자세한 내용은 GuardDuty 30일 무료 평가판 사용을 참조하세요.
테스터 스크립트가 생성할 수 있는 GuardDuty 결과
현재 테스터 스크립트는 Amazon EC2, Amazon EKS, Amazon S3, IAM 및 EKS 감사 로그와 관련된 다음과 같은 찾기 유형을 생성합니다:
1단계 - 사전 조건
테스트 환경을 준비하려면 다음 항목이 필요합니다.
-
Git - 사용하는 운영 체제를 기반으로 git 명령줄 도구를 설치합니다. 이는
amazon-guardduty-tester
리포지토리를복제하는 데 필요합니다. -
AWS Command Line Interface - 명령줄 셸에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWS CLI 시작하기를 참조하세요.
-
AWS Systems Manager - AWS CLI를 사용하여 관리형 노드로 Session Manager 세션을 시작하려면 로컬 시스템에 Session Manager 플러그인을 설치해야 합니다. 자세한 내용은 AWS Systems Manager 사용 설명서에서 AWS CLI용 세션 관리자 플러그인 설치를 참조하세요.
-
노드 패키지 관리자(NPM) - NPM을 설치하여 모든 종속성을 설치합니다.
-
Docker - 도커가 설치되어 있어야 합니다. 설치 지침은 도커 웹 사이트
를 참조하세요. Docker가 설치되었는지 확인하려면 다음 명령을 실행하여 다음 출력과 유사한 출력이 나오는지 확인합니다:
$ docker --version Docker version 19.03.1
-
AWS Marketplace에서 Kali Linux
이미지를 구독합니다.
2단계 - AWS 리소스 배포
이 섹션에서는 주요 개념 목록과 전용 계정에 특정 AWS 리소스를 배포하는 단계를 제공합니다.
개념
다음 목록은 리소스를 배포하는 데 도움이 되는 명령과 관련된 주요 개념을 제공합니다:
-
AWS Cloud Development Kit (AWS CDK) - SDK는 코드에서 클라우드 인프라를 정의하고 AWS CloudFormation을 통해 프로비저닝하기 위한 오픈 소스 소프트웨어 개발 프레임워크입니다. CDK는 컨스트럭트라고 하는 재사용 가능한 클라우드 구성 요소를 정의하기 위해 몇 가지 프로그래밍 언어를 지원합니다. 이를 스택과 앱으로 함께 구성할 수 있습니다. 그런 다음 AWS CloudFormation에 CDK 애플리케이션을 배포하여 리소스를 프로비저닝하거나 업데이트할 수 있습니다. 자세한 내용은 AWS Cloud Development Kit (AWS CDK) 개발자 안내서의 AWS CDK란 무엇입니까?를 참조하세요.
-
부트스트래핑 - AWS CDK에서 사용할 AWS 환경을 준비하는 프로세스입니다. CDK 스택을 AWS 환경에 배포하기 전에 먼저 환경을 부트스트랩해야 합니다. AWS CDK에서 사용하는 환경에서 특정 AWS 리소스를 프로비저닝하는 이 프로세스는 다음 섹션 - AWS 리소스를 배포하는 단계에서 수행할 단계의 일부입니다.
부트스트래핑의 작동 방식에 대한 자세한 내용은 AWS Cloud Development Kit (AWS CDK) 개발자 안내서의 부트스트래핑을 참조하세요.
AWS 리소스를 배포하는 단계
다음 단계를 수행하여 리소스 배포를 시작합니다.
-
전용 계정 리전 변수가
bin/cdk-gd-tester.ts
파일에 수동으로 설정되지 않는 한 AWS CLI 기본 계정 및 리전을 설정합니다. 자세한 내용을 알아보려면 AWS Cloud Development Kit (AWS CDK) 개발자 안내서의 환경을 참조하세요. -
다음 명령을 실행하여 리소스를 배포합니다.
git clone https://github.com/awslabs/amazon-guardduty-tester && cd amazon-guardduty-tester npm install cdk bootstrap cdk deploy
마지막 명령(
cdk deploy
)은 사용자를 대신하여 AWS CloudFormation 스택을 생성합니다. 이 스택의 이름은 GuardDutyTesterStack입니다.이 스크립트의 일부로 GuardDuty는 계정에서 GuardDuty 결과를 생성하기 위해 새로운 리소스를 생성합니다. 또한 Amazon EC2 인스턴스에 다음 태그 키:값 페어를 추가합니다.
CreatedBy
:GuardDuty Test Script
Amazon EC2 인스턴스에는 EKS 노드 및 ECS 클러스터를 호스팅하는 EC2 인스턴스도 포함됩니다.
인스턴스 타입
GuardDuty는 Amazon EKS 노드 그룹을 제외한 모든 리소스에 대해
t3.micro
를 생성합니다. EKS에는 최소 2개의 코어가 필요하므로 EKS 노드에는t3.medium
인스턴스 유형이 있습니다. 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스 유형 가이드에서 사용 가능한 크기를 참조하세요.
3단계 - 테스터 스크립트 실행
이 프로세스는 먼저 테스트 드라이버로 세션을 시작한 다음 스크립트를 실행하여 특정 리소스 조합으로 GuardDuty 결과를 생성하는 2단계 프로세스입니다.
-
리소스를 배포한 후 현재 터미널 세션의 변수에 리전 코드를 저장합니다. 다음 명령을 사용하고
us-east-1
을 리소스를 배포한 리전 코드로 바꿉니다.$ REGION=
us-east-1
-
테스터 스크립트는 AWS Systems Manager (SSM)을 통해서만 사용할 수 있습니다. 테스터 호스트 인스턴스에서 대화형 쉘을 시작하려면 호스트 InstanceId 쿼리합니다.
-
다음 명령을 사용하여 테스터 스크립트에 대한 세션을 시작합니다.
aws ssm start-session --region $REGION --document-name AWS-StartInteractiveCommand --parameters command="cd /home/ssm-user/py_tester && bash -l" --target $(aws ec2 describe-instances --region $REGION --filters "Name=tag:Name,Values=Driver-GuardDutyTester" --query "Reservations[].Instances[?State.Name=='running'].InstanceId" --output text)
테스터 스크립트는 파이썬 기반 프로그램으로, 입력에 따라 결과를 생성하기 위해 동적으로 배시 스크립트를 빌드합니다. 하나 이상의 AWS 리소스 유형, GuardDuty 보호 계획, Threat Purposes (전술), 기본 데이터 소스 또는 테스터 스크립트가 생성할 수 있는 GuardDuty 결과를 기반으로 결과를 생성할 수 있는 유연성이 있습니다.
다음 명령 예제를 참조하여 하나 이상의 명령을 실행하여 탐색하려는 결과를 생성하세요:
python3 guardduty_tester.py python3 guardduty_tester.py --
all
python3 guardduty_tester.py --s3
python3 guardduty_tester.py --tacticsdiscovery
python3 guardduty_tester.py --ec2
--eks
--tacticsbackdoor
policy
execution
python3 guardduty_tester.py --eks
--runtime
only python3 guardduty_tester.py --ec2
--runtime
only --tacticsimpact
python3 guardduty_tester.py --log-sourcedns
vpc-flowlogs
python3 guardduty_tester.py --finding 'CryptoCurrency:EC2/BitcoinTool.B!DNS
'
계정에서 생성된 결과를 보려면 선호하는 방법을 선택하세요.
python3 guardduty_tester.py --help
계정에서 생성된 결과를 보려면 선호하는 방법을 선택하세요.
4단계 - AWS 테스트 리소스 정리
3단계 - 테스터 스크립트 실행 중에 수행한 계정 수준 설정 및 기타 구성 상태 업데이트는 테스터 스크립트가 종료되면 원래 상태로 돌아갑니다.
테스터 스크립트를 실행한 후 AWS 테스트 리소스를 정리하도록 선택할 수 있습니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
-
다음 명령 실행:
cdk destroy
-
이름이 GuardDutyTesterStack인 AWS CloudFormation 스택을 삭제합니다. 단계에 대한 자세한 내용은 AWS CloudFormation 콘솔에서 스택 삭제를 참조하세요.
일반적인 문제 해결
GuardDuty에서 일반적인 문제를 파악하고 문제 해결 단계를 권장합니다:
-
Cloud assembly schema version mismatch
– AWS CDK CLI를 필수 클라우드 어셈블리 버전과 호환되는 버전 또는 사용 가능한 최신 버전으로 업데이트합니다. 자세한 내용은 AWS CDK CLI 호환성을 참조하세요. -
Docker permission denied
- 전용 계정이 명령을 실행할 수 있도록 전용 계정 사용자를 도커-사용자에 추가합니다. 단계에 대한 자세한 내용은 Docker 액세스 거부를 참조하세요. -
Your requested instance type is not supported in your requested Availability Zone
- 일부 가용 영역은 특정 인스턴스 유형을 지원하지 않습니다. 선호하는 인스턴스 유형을 지원하는 가용 영역을 식별하고 AWS 리소스 배포를 다시 시도하려면 다음 단계를 수행합니다.-
선호하는 방법을 선택하여 인스턴스 유형을 지원하는 가용성 영역을 결정합니다:
-
AWS 리소스 배포를 다시 시도하고 원하는 인스턴스 유형을 지원하는 가용성 영역을 지정하세요.
AWS 리소스 배포를 다시 시도하려면
-
bin/cdk-gd-tester.ts
파일에서 기본 리전을 설정합니다. -
가용성 영역을 지정하려면
amazon-guardduty-tester/lib/common/network/vpc.ts
파일을 엽니다. -
이 파일에서 인스턴스 유형의 가용 영역을 지정해야 하는
availabilityZones: ['
를us-east-1a
', 'us-east-1c
'],maxAzs: 2,
로 바꿉니다. -
AWS 리소스를 배포하는 단계 아래의 나머지 단계를 계속 진행합니다.
-
-