Post

[AWS-Security] 9.2. 호스트 취약점 스캐닝

[AWS-Security] 9.2. 호스트 취약점 스캐닝

1. 개요

AWS 환경 전반의 구성은 안전하게 하더라도, EC2 인스턴스 내부의 운영체제(OS)나 실행 중인 소프트웨어가 취약하다면 공격자에게 노출될 수 있다.
한두 대의 서버는 수동으로 검사할 수 있지만, 수백 대의 인스턴스에서 패치되지 않은 소프트웨어을 일일이 검사하는 것은 불가능하다. 따라서 이를 자동화하는 호스트 취약점 스캐닝이 필수적이다.

2. 호스트 취약점 유형

  1. 알려진 소프트웨어 취약점 (CVE) : 세상에 공개적으로 알려진 보안 취약점들의 중앙 집중식 목록인 CVE(Common Vulnerabilities and Exposures)를 기반으로 스캔한다. (ex. 현재 EC2에 설치된 특정 버전의 Apache 웹 서버가 해킹에 취약한 버전인지 확인하고 패치를 권고한다.)
  2. 안전하지 않은 호스트 구성 : OS 설정이 보안 모범 사례를 따르고 있는지 확인한다. (ex. 리눅스 SSH 보안 기준 : 키 기반 인증 요구, root 사용자 로그인 제한, 강력한 비밀번호 및 주기적 변경 적용 여부 등)

3. 호스트 스캐닝 도구 (Amazon Inspector)

리소스 구성 스캔(AWS Config, Prowler)은 공개된 AWS API를 통해 외부에서 검사하는 방법이다.
하지만 이러한 방법으로 외부에서 호스트(EC2) 내부의 취약점은 확인할 수 없다.
따라서 취약점을 찾아내려면 모든 인스턴스 내부에 에이전트(Agent)라는 소프트웨어를 설치해야 한다.

타사 도구(Tenable Nessus)도 좋지만, AWS에서 제공하는 기본 호스트 취약점 스캐닝 서비스는 Amazon Inspector다.

3.1. 1단계: Inspector 에이전트 설치

각 호스트(EC2)에 SSH로 접속하여 에이전트를 다운로드하고 설치한다.
(대규모 환경인 경우 AWS Systems Manager를 사용해 한번에 설치할 수도 있다.)

1
2
3
# Inspector 에이전트 다운로드 및 설치
$ wget https://inspector-agent.amazonaws.com/linux/latest/install
$ sudo bash install

3.2. 2단계: 평가(Assessment) 실행

에이전트가 설치되면 Inspector 콘솔이나 CLI(StartAssessmentRun)를 통해 평가를 시작한다. 템플릿에 따라 다르지만, 보통 1시간 정도 에이전트가 내부 데이터를 수집하여 중앙으로 보낸다. (주기적 자동 실행 구성 가능)

3.3. 3단계: 검사 결과(Findings) 확인

스캔이 완료되면 심각도가 높은(High) 취약점 결과들을 목록화하여 확인한다.

1
2
3
4
# 특정 평가 실행에 대해 Inspector에서 발견한 검사 결과(ARN) 목록 조회
$ aws inspector list-findings \
    --assessment-run-arns arn:aws:inspector:us-west-2:123456789012:target/A/template/B/run/C \
    --filter severities=High

3.4. 4단계: 취약점 상세 정보(JSON) 분석 및 조치

반환된 결과 ARN 중 하나를 선택해 상세 정보(describe-findings)를 조회하면 다음과 같은 원시 JSON 응답을 확인할 수 있다.

1
2
3
# describe-findings를 사용해 Inspector 결과의 세부 정보 가져오기
$ aws inspector describe-findings \
    --finding-arns arn:aws:inspector:us-west-2:123456789012:target/A/template/B/run/C/finding/D
1
2
3
4
5
6
7
8
9
10
11
12
{
  "findings": [{
    "arn": "arn:aws:inspector:us-west-2:123456789012:target/A/template/B/run/C/finding/D",
    "assetType": "ec2-instance",
    "id": "5.2.4 Ensure SSH Protocol is set to 2",
    "title": "Instance i-12345 is not compliant with rule 5.2.4 Ensure SSH Protocol is set to 2, 1.0.0 CIS Amazon Linux 2 Benchmark.",
    "description": "SSH supports two different and incompatible protocols: SSH1 and SSH2. SSH1 was the original protocol and was subject to security issues...",
    "recommendation": "Edit the /etc/ssh/sshd_config file to set the parameter as follows: Protocol 2",
    "severity": "High",
    "numericSeverity": 9.0
  }]
}
  • title (검사 결과 제목) : 특정 인스턴스가 CIS 벤치마크의 ‘SSH 프로토콜 2 설정’ 규정을 위반했음을 알려준다.
  • description (문제 설명) : 왜 이것이 문제인지(SSH1은 보안 문제로 인해 SSH2를 사용해야 함) 상세히 알려준다.
  • recommendation (권고 사항) : 이 문제를 해결하려면 관리자가 직접 서버에 접속해 /etc/ssh/sshd_config 파일을 열고 Protocol 2로 수정하라는 조치 방법까지 알려준다.
  • serverity (심각도) : 점수가 9.0(High)으로 매우 높으므로 즉각적인 수정이 필요함을 나타낸다.
This post is licensed under CC BY 4.0 by the author.