AWS 기술 블로그
AWS Systems manager와 Amazon Inspector로 Amazon EC2 자산 관리 자동화 하기
기업에서 ISMS, CSAP 등의 인증 제도와 내부 보안 규정을 준수하기 위해서는 정기 보안점검이 요구됩니다. On-Premise 환경에서는 각 서버 장비 및 네트워크 장비에 대한 점검을 담당자가 수동으로 진행하고, 엑셀이나 수기로 자산관리 대장을 관리합니다.
클라우드에서 On-Premise와 동일한 방법으로 자산 관리를 수행할 때 가장 어려워하는 점은 크게 두 가지입니다.
- 여러 서비스로 분산되어 있어 각 서비스를 분류 및 식별하고 점검하는데 많은 공수가 예상됩니다.
- 클라우드에서는 유연한 확장성으로 인해 자산이 동적으로 변하기 때문에, 자산 관리 최신화가 어렵습니다.
솔루션 개요
이 블로그에서는 EC2 인스턴스들에 대한 관리 및 점검 부담을 줄이는 방법을 보여줍니다. AWS Systems Manager와 Amazon Inspector 이용하여 태그가 지정된 Amazon EC2를 그룹으로 관리하고, 각 인스턴스 그룹별 자산 점검을 자동화하는 방법을 보여줍니다.
EC2 인스턴스에 대한 자산 관리 자동화 구성은 3단계로 구성됩니다.
- 정보자산 분류 기준 수립 및 식별: 정보 자산 분류 기준에 맞춰 여러 개의 EC2 인스턴스에 리소스 태그를 지정하여 식별합니다.
- 정보 자산 평가: 분류 및 식별된 EC2 인스턴스에 대해 자산 점검 및 평가를 수행합니다. CCE(Common Configuration Enumeration), CVE(Common Vulnerabilities and Exposures) 취약점 및 네트워크 취약점 분석을 자동화 할 수 있습니다.
- 보호대책 수립: 대시보드와 알림을 구성하여 발생된 취약점에 대한 보호대책을 수립할 수 있습니다.
1. 정보자산 분류 기준 수립 및 식별
정보 자산을 관리하는 목적은 각 자산의 기능과 목적, 위험도 및 중요도를 구분하고, 이에 따라 적절한 보호조치를 수립하기 위해서 입니다. On-Premise 환경에서는 구성되어 있는 IT 인프라에 대한 자산 관리 대장을 엑셀 형태로 정리 후에 관리를 하기도 합니다. 클라우드에서는 유연한 확장성으로 인하여 리소스가 동적으로 변하기 때문에 엑셀이나 수기로 관리하고 업데이트 하기에는 공수가 많이 들고, 최신화에 어려움이 있습니다. AWS에서 리소스 태그를 통해 정보 자산들을 분류 및 식별하는 방법을 소개 드리겠습니다. 정보 자산을 분류할 때 주로 사용되는 태그들은 다음과 같습니다.
- 환경(개발, 운영): Environment – Dev, Prod
- 정보 자산 구분: InventoryCategory – WebServer, WAS
- 중요도 수준: SeverityLevel – 1 ~ 5
- 개인정보 취급 여부: HandlePI – Y/N
- 인터넷 노출 여부: IsPublic – Y/N
AWS Resource Groups & Tag Editor를 이용하여 정보 자산 분류 기준에 맞춰 각 자산에 태그를 확인하고, 리소스 태그를 기준으로Resource Group을 지정하여 관리할 수 있습니다.
1.1. AWS Tag Editor를 이용한 리소스 태그 지정
정보 자산의 용도와 중요도에 따른 구분과 자산 별 책임소재를 명확히 정의하여 관리하기 위해 정보 자산에 구분이 필요합니다. 정보 자산들에 대한 분류 기준을 수립한 이후에 전체 EC2 인스턴스들에 대해서 리소스 태그 되어 있는지 검색 및 태그 관리를 수행할 수 있습니다.
- AWS Tag Editor를 활용하면 현재 사용 중인 리소스를 검색하고, AWS 리소스에 대한 태그를 생성/수정/삭제할 수 있습니다.
- 선택한 여러 인스턴스에 대한 태깅을 확인 후 수정할 수 있습니다.
- CSV Export 기능을 통해 EC2 인스턴스에 대한 정보를 CSV 파일 포맷으로 다운로드도 가능합니다.
1.2. AWS Resource Groups를 이용한 리소스 그룹 지정
Tag Editor를 이용하여 각 EC2 인스턴스에 대한 태그를 지정할 수 있습니다. 다수의 리소스를 사용하는 경우, 작업을 할 때마다 서비스를 이동하기 보다는 AWS Resource Group을 활용하면 애플리케이션 계층을 구성하는 EC2 인스턴스와 같이 다양한 리소스를 함께 사용하는 경우에 대한 관리를 좀 더 편하게 하고, 아래와 같은 배치작업을 한번에 수행할 수 있습니다. 활용할 수 있는 배치 작업의 예시는 다음과 같습니다.
- 업데이트 또는 보안 패치 적용
- 애플리케이션 업그레이드
- 네트워크 트래픽에 대한 포트 열기/닫기
- 인스턴스 플릿으로부터 로그 및 모니터링 데이터 수집
자세한 내용은 AWS Resource Groups으로 작업하는 AWS 서비스 확인 가능합니다.
- 앞에서 설정한 Tagging을 기반으로 정보 자산을 검색 후, WebServer 그룹을 Resource Groups으로 등록하여 관리할 수 있습니다.
- 태그를 기반으로DevWebServer Resource Group을 생성하였습니다. 해당 Resource Group을 기반으로 이후에 자산 점검 자동화를 구성 할 때 활용할 수 있습니다.
2. 정보 자산 평가 자동화
정보자산 분류 기준 수립 및 식별 에서 EC2 인스턴스에 대한 태깅을 통하여 각 자산을 분류하고 리소스 그룹을 생성하였습니다. 서버 점검을 수행할 때, 서버마다 점검 항목들이 다르고 점검을 위해서 서버에 원격 쉘을 통해 접근 후, 점검 스크립트를 실행하여 검사를 수행합니다. 운영 환경의 서버에서는 실행중인 서비스로 인해 점검 업무에 대한 부담이 큽니다. 이를 피하기 위해
이번 섹션에서는 앞서 태깅해둔 EC2 인스턴스들에 대해서 AWS의 서비스를 이용하여 자동화된 점검을 수행하는 방법에 대해서 소개 드리겠습니다.
- AWS Systems Manager를 이용한 서버 정보 수집 및 점검 자동화
- Amazon Inspector를 이용한 시스템 취약성 점검 및 네트워크 접근 점검 자동화
정보 자산 평가를 자동화하기 위해 EC2 인스턴스에 Systems Manager Agent(SSM Agent) 설치 및 설정이 필요합니다. AWS Systems Manager 를 통해 EC2 인스턴스에 대한 정보와 상태를 확인하는 프로세스를 자동화할 수 있고, Amazon Inspector에서 CVE 취약점 점검을 수행할 때도 활용됩니다.
자세한 내용은 EC2 인스턴스용 AWS Systems Manager설정 가이드에서 확인하실 수 있습니다.
2.1. AWS Systems Manager 이용한 서버 설정 점검
AWS Systems Manager AWS 클라우드에서 실행되는 애플리케이션 및 인프라를 관리하는데 도움이 되는 서비스입니다. 운영 및 보안과 관련된 업무에 도움이 되는 다양한 서비스들을 제공해드리고 있습니다. 서버 설정 점검에서 다룰 내용은 아래의 두가지입니다.
- Run Command를 이용한 운영중인 서버들에 CCE 취약성 점검
- Patch Manager를 이용한 서버 패치 점검
AWS Systems Manager에서 운영 환경에 대해서 점검 및 실행하는 다양한 작업 모음인 AWS Systems Manger Document(SSM Document)를 제공해드리고 있습니다. AWS에서 제공해드리는 SSM Document를 사용하시거나 직접 정의하여 사용하실 수 있습니다.
2.1.1. AWS Systems Manager Run Command로EC2 인스턴스의 CCE취약성 점검 자동화
여러 개의 서버에 쉘이나 파이썬 스크립트 등을 통해 점검을 수행하기 위해서는 별도의 포트를 오픈하거나 운영 서버에 접근할 수 있는 권한을 추가로 할당해야 합니다. 특히 운영 환경에서는 간단한 스크립트를 통해서 점검이 가능해도, 인가를 받기 위한 여러 프로세스를 거쳐야 하기도 합니다.
AWS Systems Manager의 RunCommand를 통해 각각의 EC2 인스턴스들에 대해서 스크립트 실행을 자동화할 수 있습니다.
서버별 점검을 수행할 때는 각 OS, 커널 버전 등과 같은 서버의 환경이나 웹서버, 어플리케이션 서버 등 구분에 따라 점검해야 하는 기준이 상이할 수 있습니다. 앞서 태깅을 기반으로 구성한 Resource 그룹에 대해서 보안 스크립트를 실행하는 과정을 소개해드리겠습니다.
CCE 점검 스크립트 예시는 KISA에서 제공한 클라우드 취약점 점검 가이드의 일부 설정 취약점 점검(CCE)를 참고하였습니다.
AWS Systems Manager의 Run a Command에서 AWS-RunShellScript를 선택하고, Resource Group은 기존에 생성한 DevWebServer를 선택합니다.
RunCommand의 출력 결과의 상세 내용을 확인할 수 있습니다. 결과 파일을 따로 다운 받거나 CloudWatch와 S3를 통해서 CCE 취약성 점검 결과를 저장할 수 있습니다.
AWS Systems Manager Document에서는 RunCommand 외에도 AWS의 다양한 명령어 집합을 제공합니다. 또한 Systems Manager State Manager 와 Maintenance Windows를 이용하여 스케쥴링 및 규정 준수 보고 요구사항을 만족할 수 있습니다. [State Manager 및 Maintenance Windows: 주요 사례]에서 자세한 내용을 확인할 수 있습니다.
2.1.2. 서버 패치 점검 자동화
운영 환경에서는 서버 내의 구성 점검 뿐 아니라, 서버 내에 보안 관련 및 기타 유형의 패치 사항이 있는지에 대한 주기적인 점검이 필요합니다. Patch Manager를 사용하면 각 서버의 운영체제 및 애플리케이션 모두를 패치할 수 있습니다. 이번 섹션에서는 앞서 생성한 Resource Group을 기반으로 자동화된 Patch Manager를 이용하여 자동화된 패치 점검을 수행하는 방법에 대해서 소개드리려고 합니다.
Patch Manager에서 EC2 인스턴스 패치에 대한 점검 및 설치를 수행할 수 있습니다. 앞서 생성한 DevWebServer Resource Groups을 대상으로 패치를 구성한 화면입니다.
Patch Manager 실행 후, 패치 결과에 대한 내용을 확인할 수 있습니다. 패치 점검은 AWS-RunPatchBaselineDocument를 기반으로 동작합니다.
2.2. Amazon Inspector를 이용한 시스템 보안 점검 자동화
Amazon Inspector는 소프트웨어 취약성 및 의도하지 않은 네트워크 노출에 대해 AWS 워크로드를 지속적으로 스캔하는 자동화된 취약성 관리도구입니다. EC2 인스턴스에 대해서 외부 네트워크에 노출 여부 뿐 아니라 Systems Manager Agent를 이용하여 서버 내에 커널 및 CVE 취약점에 대한 점검을 자동화하여 빠르게 제로 데이 취약성을 식별할 수 있습니다.
Inspector Dashboard에서 주요한 취약점들을 한눈에 확인할 수 있습니다.
2.2.1. CVE 취약점 점검 자동화
50여 개의 취약성 인텔리전스 소스를 기반으로 제로 데이 취약성을 신속하게 식별할 수 있고, 취약성 항목에 대한 상세 내용 또한 확인할 수 있습니다.
2.2.2. Network 접근 점검 자동화
등록된 EC2 인스턴스에 대한 네트워크 접근 경로를 기반으로 위험도를 자동으로 평가할 수 있습니다. 또한 Suppresion rules을 사용하여 앞서 태깅된 인스턴스들에 대한 필터링을 적용하여 탐색된 취약성 내용들을 그룹 단위로 관리할 수 있습니다.
아래의 화면에서는 웹서버 환경이 인터넷망에 오픈된 포트가 있는지를 점검하기 위한 룰을 적용한 예시입니다. 주기적으로 별도의 네트워크 점검을 수행하지 않더라도, Amazon Inspector를 이용하여 IT 정보 자산들에 대한 네트워크 노출을 자동으로 식별할 수 있습니다.
3. 보호 대책 수립
앞서 구성한 정보 자산에 대한 구분 및 평가 항목에 대해서 위험관리를 수행하기 위해서는 적절한 보호 대책 수립이 필요합니다. AWS 에서는 Security Hub를 통하여 AWS의 보안 서비스들에서 발견된 사항들을 수집 및 모니터링하고, 서비스의 Event를 필터링하여 알림을 구성하여 지속적인 보안 관리 및 검토를 수행하는데 도움을 드리고 있습니다.
3.1. Security Hub를 이용한 모니터링
AWS Security Hub는 AWS 보안 서비스들에 대한 발견 사항들과 Best Practice 기반으로 탐색된 취약점과 Insights를 기반으로 보안과 관련된 내용을 통합적으로 모니터링 할 수 있습니다. Third Party 솔루션들과 통합하여 사용할 수 있습니다.
AWS Inspector를 통해 탐색된 취약점 뿐 아니라, AWS Security Hub 내에서 탐색된 취약점 정보들을 확인할 수 있습니다.
AWS Security Hub Insights에서는 관련된 finding의 집합을 확인할 수 있습니다.
3.2. Amazon EventBridge를 이용한 알림 구성
AWS Security Hub에서 새로운 검색 결과에 대한 Event에 대해서 알림을 구성할 수 있습니다. 전달 받을 수 있는 이벤트 타입은 크게 3가지가 있습니다.
- 모든 결과 (Security Hub Findings – Imported)
- 사용자 지정 작업에 대한 결과 (Security Hub Findings – Custom Action)
- 사용자 지정 작업에 대한 인사이트 결과 (Security Hub Insight Results)
Amazon EventBridge를 통한 알림을 구성하는 방법은 다음과 같습니다.
EventBridge 생성에서 Event Source를 AWS events로 선택합니다.
Amazon EventBridge의 타겟으로 SNS Topic를 등록하였습니다. SNS Topic은 Email 및 Application과 연결하여 알림을 전달할 수 있습니다.
- Security Hub Finding된 내용에 대해서 아래와 같은 Notification을 이메일 알림으로 수신할 수 있습니다.
마무리
해당 EC2 정보 자산 관리 데모에서는 AWS에서 운영중인 EC2 인스턴스에 대해서 운영과 보안 관점에서 기존에 수동으로 이루어진 작업들을 어떻게 자동화할 수 있는지에 대해서 소개 드렸습니다.
이번 데모에서 정보 자산 관리를 자동화하기 위한 가이드를 요약하면,
- AWS Resource Group & Tag Editor를 이용하여 각 정보 자산을 분류하기 위한 기준을 수립하고, 이에 맞추어 리소스 탐색 및 태깅을 수행하였습니다.
- AWS Systems Manager를 통하여 CCE 취약점 점검 및 패치 점검을 수행하고, Amazon Inspector를 이용하여 자동화된 지속적인 점검을 수행하였습니다.
- AWS Security Hub와 AWS EventBridge를 통해 탐색된 취약점에 대한 결과를 통합하고, 이에 대한 알람을 구성하였습니다.
리소스 태그를 통해 각 점검 대상 그룹을 구성하면, 이후에 동일한 기준에 따라 자동화된 점검을 수행할 수 있습니다. 클라우드에서는 리소스를 동적으로 유연하게 할당할 수 있기 때문에 운영과 보안 관점에서도 비즈니스 민첩성을 올리기 위해서는 자동화된 점검 프로세스가 필수적입니다.
기존에 내부 보안 점검 혹은 규정 준수를 위한 보안 점검을 수행할 때, 기존의 On-Premise 환경과 다르게 AWS 클라우드에서 어떻게 보안 점검을 수행할지 고민을 하고 계시는 많은 고객분들에게 도움이 되기를 바랍니다.