Attacker 2023. 3. 16. 23:44

 

이번 글에서는 AWS Inspector에 대해 알아보고자 한다.

 

1. AWS Inspector 란?

Amazon Inspector

- AWS Inspector는 AWS에 배포된 애플리케이션의 보안 및 규정 준수를 개선하는데 도움이 되는 취약점 스캐너

자동 보안 평가 서비스임

- EC2 인스턴스, 컨테이너 이미지(ECR)를 대상으로 취약점 스캔 및 분석이 가능함

- EC2 인스턴스 취약점 스캔 시, SSM Agent 설치가 필요함 (Amazon Linux 2 AMI의 경우 Default로 설치되어 있음)

 

 

 

실습은 아래와 같이 EC2 인스턴스와 ECR 이미지를 대상으로 취약점 스캔을 해볼 것이다.

 

2. EC2 인스턴스 생성

Inspector 실습을 위해 먼저 EC2 인스턴스를 생성한다.

EC2 인스턴스에 취약점 스캔을 수행하려면, EC2 인스턴스에 SSM Agent가 설치되어 있어야 한다.

Amazon Linux 2 AMI를 사용하면 기본적으로 SSM Agent가 설치되어 있으므로, 해당 AMI를 이용하여 EC2를 생성할 것이다. (다른 AMI 사용 시에는 수동으로 SSM Agent를 설치해줘야 함)


총 2개의 EC2 인스턴스를 생성할 것이며, 1개는 'AmazonSSMManagedInstanceCore' Role을 부여하고, 나머지 하나는 부여하지 않을 것이다.

 

EC2 인스턴스를 생성하기 전에 아래와 같이 'AmazonSSMManagedInstanceCore' Role을 생성한다.

 

이제 EC2 인스턴스를 생성한다.

먼저 위에서 생성한 'AmazonSSMManagedInstanceCore' Role이 부여된 첫 번째 EC2 인스턴스를 생성한다.

(※ 우선적으로 Inspector 스캔을 지원하는 운영체제 확인 후, 생성하는 것이 중요하다.

 - 참고 URL : https://docs.aws.amazon.com/ko_kr/inspector/latest/user/supported.html#supported-os-ec2)

 

이제 'AmazonSSMManagedInstanceCore' Role이 부여되지 않은 두 번째 EC2 인스턴스를 생성한다.

 

3. ECR Private 리포지토리 생성 

먼저 아래와 같이 Private 리포지토리를 하나 생성한다.

 

4. ECR Private 리포지토리 내 이미지 Push

다음으로 푸시 명령을 이용하여 ECR 리포지토리에 취약한 버전의 이미지를 Push 할 것이다.

'2. EC2 인스턴스 생성' 과정에서 생성한 EC2 인스턴스에 접속하여 푸시 명령을 실행한다.

 

먼저 EC2 인스턴스 연결을 통해 'AmazonSSMManagedInstanceCore' Role이 부여된 EC2에 접속한다.

 

이제 아래 명령어를 이용하여 Docker 설치 후, ECR 리포지토리에 Push할 이미지를 가져온다.

이미지는 CentOS 7 버전을 이용하였다.

(※ Inspector 스캔을 지원하는 이미지는 아래와 같다.

 - 참고 URL : https://docs.aws.amazon.com/ko_kr/inspector/latest/user/supported.html#supported-os-ec2)

$ sudo su -
# yum -y install docker
# systemctl start docker
# docker pull centos:7
# docker images

 

'docker images' 명령어를 통해 정상적으로 이미지를 잘 가져온 것을 확인할 수 있다.

 

이제 위에서 가져온 CentOS 6 이미지를 ECR 리포지토리에 Push 한다.

그런데 ECR 리포지토리로 이미지를 Push 하려면 현재 연결되어 있는 EC2 인스턴스가 ECR 리포지토리에 접근할 수 있는 권한이 있어야 한다.

그렇기에 우선적으로 EC2 인스턴스에 ECR 리포지토리에 접근할 수 있는 권한을 아래와 같이 부여한다.

 

접근 권한을 다 부여했으면, 이제 CentOS 6 이미지를 ECR 리포지토리에 Push 한다.

아래와 같이 이미지 Push를 위해 AWS에서 제공하는 Push 명령어를 확인할 수 있다.

 

위 그림에서 확인한 Push 명령어를 이용하여 이미지를 Push한다.

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <AccountID>.dkr.ecr.ap-northeast-2.amazonaws.com
docker tag centos:7 <AccountID>.dkr.ecr.ap-northeast-2.amazonaws.com/test-images:latest
docker images
docker push <AccountID>.dkr.ecr.ap-northeast-2.amazonaws.com/test-images:latest

 

AWS 콘솔에서 ECR 리포지토리에 접속해보면, 아래와 같이 이미지가 잘 Push 된 것을 확인할 수 있다.

 

여기까지가 AWS Inspector 실습을 위한 EC2와 ECR 이미지의 환경 구축이었다.

 

5. AWS Inspector 활성화

이제 AWS Inspector 실습을 위해 활성화한다.

아래와 같이 AWS Inspector 서비스를 활성화한다.

 

정상적으로 활성화되면 아래와 같이 Inspector가 첫 번째 스캔을 진행하고 있음을 확인할 수 있다.

스캔이 모두 완료되려면 약간의 시간이 필요하다.

 

EC2 인스턴스 스캔이 정상적으로 되지 않을 경우, 아래 명령어를 이용하여 SSM 에이전트가 실행 중인지 확인한다.

# systemctl status amazon-ssm-agent

 

정상적으로 스캔이 완료되면 아래와 같은 화면을 볼 수 있다.

총 2개의 EC2 인스턴스 중에 1개만, 리포지토리는 2개 중에 2개 모두 스캔이 완료되었음을 알 수 있다.

(스캔이 되지 않은 1개 EC2 인스턴스는, 실습을 위해 SSM 에이전트를 설치 않은 EC2 인스턴스임)

 

좌측에 존재하는 '취약성별', '인스턴스별', '컨테이너 이미지별', '컨테이너 리포지토리별' 등 메뉴를 통해 발견된 취약점들에 대해 상세 정보를 확인할 수 있다.

아래 그림은 '컨테이너 이미지별' 메뉴를 통해 이미지에 존재하는 취약점의 상세 정보를 확인한 내용이다.

발견된 CVE의 상세 내용까지 확인 가능하다.

 

여기까지 Inspector에 대해 알아보았다.

Inspector 서비스를 많이 사용하지 않는 경우에는 비용적인 측면에 있어서 비활성화 시키는 것이 좋다.

- Inspector 비활성화 방법 : [설정] - [일반] - [Inspector 비활성화] 클릭

 

끝.