EC2 인스턴스 스택 | Log4j 정보 수집 - AMS 고급 변경 유형 참조

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

EC2 인스턴스 스택 | Log4j 정보 수집

지정된 EC2 인스턴스에서 Log4j2 발생을 식별하는 보고서를 생성합니다. 이는 최선의 노력 보고서이며 보고서에서 일부 발생이 감지되지 않을 수 있습니다.

전체 분류: 관리 | 고급 스택 구성 요소 | EC2 인스턴스 스택 | log4j 정보 수집

변경 유형 세부 정보

유형 ID 변경

ct-19f40lfm5umy8

현재 버전

2.0

예상 실행 기간

360분

AWS 승인

필수

고객 승인

불필요

실행 모드

자동

추가 정보

기타 CTs 업데이트

다음은 AMS 콘솔에서이 변경 유형을 보여줍니다.

Information panel for Gather Log4j Information task, showing ID, execution mode, and description.

작동 방식:

  1. RFC 생성 페이지로 이동합니다. AMS 콘솔의 왼쪽 탐색 창에서 RFCs 클릭하여 RFCs 목록 페이지를 연 다음 RFC 생성을 클릭합니다.

  2. 기본 변경 유형 찾아보기 보기에서 널리 사용되는 변경 유형(CT)을 선택하거나 범주별 선택 보기에서 CT를 선택합니다.

    • 변경 유형별 찾아보기: 빠른 생성 영역에서 인기 있는 CT를 클릭하여 RFC 실행 페이지를 즉시 열 수 있습니다. 빠른 생성으로 이전 CT 버전을 선택할 수 없습니다.

      CTs 정렬하려면 카드 또는 테이블 보기에서 모든 변경 유형 영역을 사용합니다. 어느 보기에서든 CT를 선택한 다음 RFC 생성을 클릭하여 RFC 실행 페이지를 엽니다. 해당하는 경우 RFC 생성 버튼 옆에 이전 버전으로 생성 옵션이 나타납니다.

    • 범주별 선택: 범주, 하위 범주, 항목 및 작업을 선택하면 해당하는 경우 이전 버전으로 생성 옵션이 있는 CT 세부 정보 상자가 열립니다. RFC 생성을 클릭하여 RFC 실행 페이지를 엽니다.

  3. RFC 실행 페이지에서 CT 이름 영역을 열어 CT 세부 정보 상자를 확인합니다. 제목은 필수입니다(변경 유형 찾아보기 보기에서 CT를 선택하면 입력됨). 추가 구성 영역을 열어 RFC에 대한 정보를 추가합니다.

    실행 구성 영역에서 사용 가능한 드롭다운 목록을 사용하거나 필요한 파라미터의 값을 입력합니다. 선택적 실행 파라미터를 구성하려면 추가 구성 영역을 엽니다.

  4. 완료되면 실행을 클릭합니다. 오류가 없는 경우 성공적으로 생성된 RFC 페이지에 제출된 RFC 세부 정보와 초기 실행 출력이 표시됩니다.

  5. 실행 파라미터 영역을 열어 제출한 구성을 확인합니다. 페이지를 새로 고쳐 RFC 실행 상태를 업데이트합니다. 선택적으로 RFC를 취소하거나 페이지 상단의 옵션을 사용하여 RFC 사본을 생성합니다.

작동 방식:

  1. 인라인 생성(모든 RFC 및 실행 파라미터가 포함된 create-rfc 명령을 실행) 또는 템플릿 생성(2개의 JSON 파일을 생성, 하나는 RFC 파라미터용이고 다른 하나는 실행 파라미터용)을 사용하고 두 파일을 입력으로 사용하여 create-rfc 명령을 실행합니다. 두 방법 모두 여기에 설명되어 있습니다.

  2. 반환된 RFC ID로 RFC: aws amscm submit-rfc --rfc-id ID 명령을 제출합니다.

    RFC: aws amscm get-rfc --rfc-id ID 명령을 모니터링합니다.

변경 유형 버전을 확인하려면 다음 명령을 사용합니다.

aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
참고

변경 유형에 대한 스키마의 일부인지 여부에 관계없이 모든 CreateRfc 파라미터를 RFC와 함께 사용할 수 있습니다. 예를 들어 RFC 상태가 변경될 때 알림을 받으려면 요청의 --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}" RFC 파라미터 부분(실행 파라미터 아님)에이 줄을 추가합니다. 모든 CreateRfc 파라미터 목록은 AMS Change Management API 참조를 참조하세요.

인라인 생성:

인라인으로 제공된 실행 파라미터(실행 파라미터를 인라인으로 제공할 때 이스케이프 따옴표)로 RFC 생성 명령을 실행한 다음 반환된 RFC ID를 제출합니다. 예를 들어 콘텐츠를 다음과 같은 내용으로 바꿀 수 있습니다.

버전 2.0:

모든 인스턴스를 스캔합니다.

aws amscm create-rfc --change-type-id "ct-19f40lfm5umy8" --change-type-version "2.0" --title "Log4j Investigation" --execution-parameters "{\"DocumentName\":\"AWSManagedServices-GatherLog4jInformation\",\"Region\":\"us-east-1\",\"Parameters\":{\"S3Bucket\":[\"s3://BUCKET_NAME\"]},\"TargetParameterName\": \"InstanceId\",\"Targets\": [{\"Key\": \"AWS::EC2::Instance\",\"Values\": [\"*\"]}],\"MaxConcurrency\": \"10\",\"MaxErrors\": \"100%\"}"

인스턴스 목록을 스캔합니다.

aws amscm create-rfc --change-type-id "ct-19f40lfm5umy8" --change-type-version "2.0" --title "Log4j Investigation" --execution-parameters "{\"DocumentName\":\"AWSManagedServices-GatherLog4jInformation\",\"Region\":\"us-east-1\",\"Parameters\":{\"S3Bucket\":[\"s3://BUCKET_NAME\"]},\"TargetParameterName\": \"InstanceId\",\"Targets\": [{\"Key\": \"ParameterValues\",\"Values\": [\"INSTANCE_ID_1\",\"INSTANCE_ID_2\",\"INSTANCE_ID_3\",\"INSTANCE_ID_4\",\"INSTANCE_ID_5\"]}],\"MaxConcurrency\": \"10\",\"MaxErrors\": \"100%\"}"

템플릿 생성:

  1. 이 변경 유형의 실행 파라미터를 JSON 파일로 출력합니다.이 예제에서는 이름을 GatherLog4jInfoParams.json:으로 지정합니다.

    aws amscm get-change-type-version --change-type-id "ct-19f40lfm5umy8" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > GatherLog4jInfoParams.json
  2. 변경하려는 파라미터만 유지하면서 GatherLog4jInfoParams 파일을 수정하고 저장합니다. 예를 들어 콘텐츠를 다음과 같은 내용으로 바꿀 수 있습니다.

    버전 2.0:

    모든 인스턴스를 스캔합니다.

    { "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://BUCKET_NAME" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "AWS::EC2::Instance", "Values": [ "*" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }

    인스턴스 목록을 스캔합니다.

    { "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://BUCKET_NAME" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "ParameterValues", "Values": [ "INSTANCE_ID_1", "INSTANCE_ID_2", "INSTANCE_ID_3", "INSTANCE_ID_4", "INSTANCE_ID_5" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }
  3. RFC 템플릿을 현재 폴더의 파일로 출력합니다.이 예제에서는 이름을 GatherLog4jInfoRfc.json:으로 지정합니다.

    aws amscm create-rfc --generate-cli-skeleton > GatherLog4jInfoRfc.json
  4. GatherLog4jInfoRfc.json 파일을 수정하고 저장합니다. 예를 들어 콘텐츠를 다음과 같은 내용으로 바꿀 수 있습니다.

    { "ChangeTypeVersion": "2.0", "ChangeTypeId": "ct-19f40lfm5umy8", "Title": "Log4j Investigation" }
  5. GatherLog4jInfoRfc 파일과 GatherLog4jInfoParams 파일을 지정하여 RFC를 생성합니다.

    aws amscm create-rfc --cli-input-json file://GatherLog4jInfoRfc.json --execution-parameters file://GatherLog4jInfoParams.json

이 변경 유형은 지정된 EC2 인스턴스에서 영향을 받는 버전의 Apache Log4j Java 클래스가 포함된 패키지를 스캔합니다. 이 기능은 최선의 보고서를 생성하며, 일부 발생은 감지되지 않거나 잘못 식별될 수 있습니다.

AWS CloudShell은 AWS 리소스를 안전하게 관리, 탐색 및 상호 작용할 수 있는 브라우저 기반 쉘입니다. AWS CloudShell은 로그인할 때 콘솔 자격 증명으로 사전 인증됩니다. 일반적인 개발 및 운영 도구가 사전 설치되어 있으므로 로컬 설치나 구성이 필요하지 않습니다. AWS CloudShell을 사용하면 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 스크립트를 빠르게 실행하거나, AWS SDKs를 사용하여 AWS 서비스 APIs를 실험하거나, 다양한 다른 도구를 사용하여 생산성을 높일 수 있습니다. 추가 비용 없이 브라우저에서 바로 AWS CloudShell을 사용할 수 있습니다.

참고

다른 AWS 콘솔 또는 사용 가능한 가장 가까운 AWS 리전에서 CloudShell AWS 콘솔을 사용하여 집계를 수행할 수 있습니다. 예를 들어 버지니아 리전에 저장된 데이터를 집계하려면 AWS 콘솔의 "미국 동부(버지니아) us-east-1" AWS 리전에서 CloudShell을 열고 다음에 제공된 지침을 따릅니다.

보고서 데이터에는 취약한 JndiLookup 클래스가 포함된 지정된 환경 내에 있는 Java 아카이브(JAR 파일)에 대한 정보가 포함됩니다. AMS는 영향을 받는 라이브러리를 사용 가능한 최신 버전으로 업그레이드할 것을 권장합니다.이 버전은 Apache Log4j 2 다운로드에서 Apache에서 직접 다운로드할 수 있습니다. 또한 웹 애플리케이션 리소스(WAR), Enterprise Archive(EAR), Jupiter Encrypted XML(JPI), Hemera Technologies(HPI) 및 ZIP 파일을 스캔합니다.

생성된 모든 CSV 파일을 집계하고 AWS CloudShell을 사용하여 단일 보고서를 빌드하려면:

  1. AWS 관리 콘솔의 모든 페이지 또는 AWS 리전에서 AWS CloudShell을 열어 다음에 표시된 스크립트를 실행합니다. AWSManagedServicesReadOnlyRole 역할을 사용하여 AWS Management Console에 로그인했는지 확인합니다.

    # Specify the S3 bucket and AWS region that contains the individual CSV files: BUCKET_NAME="YOUR BUCKET HERE" BUCKET_REGION="THE BUCKET REGION HERE" # Aggregate the CSV files: mkdir -p log4j-report aws s3 cp s3://$BUCKET_NAME/ams/log4j-scan/ ./log4j-report --recursive --include "*.csv" echo "aws_account_id,region,scan_time,instance_id,scan_type,location" > log4j-report/report.csv for i in `find log4j-report -type f \( -iname "*.csv" ! -iname "report.csv" \)`; do awk 'FNR > 1' $i >> log4j-report/report.csv; done # Upload the report to the same S3 bucket: file_name="report_$(date -d "today" +"%Y%m%d%H%M").csv" aws s3 cp log4j-report/report.csv s3://$BUCKET_NAME/ams/log4j-reports/$file_name # Open the following URL and select \"Download\" to download the report: echo "Report uploaded to: https://s3.console.aws.amazon.com/s3/object/$BUCKET_NAME?region=$BUCKET_REGION&prefix=ams/log4j-reports/$file_name"

    스크립트는 보고서를 다운로드할 S3 URL을 출력합니다.

  2. URL을 복사하여 연 다음 다운로드를 선택합니다.

단일 계정 랜딩 존: 보고서 사용

단일 계정 랜딩 존에서 작업하는 경우 AWS CloudShell 서비스를 사용할 수 없습니다. 그러나 AWS CLI를 활용하여 필요한 단계를 수행할 수 있습니다. 이 설명서, AD FS를 사용하는 API 또는 AWS CLI에 대한 액세스 권한을 Active Directory 사용자에게 부여하려면 어떻게 해야 합니까?에 따라 IAM 역할을 사용하여 ADFS(Active Directory Federation Services)를 통한 CLI API 액세스를 구성합니다. 비 ADFS ID 제공업체(IDP) 구현의 경우 SAML 2.0을 사용하여 페더레이션 API/CLI 액세스를 위한 일반 솔루션을 구현하는 방법을 참조하세요. 위의 옵션을 사용하여 원하는 역할에 대한 CLI 자격 증명을 얻습니다. 기본 권장 역할은 입니다Customer_ReadOnly_Role. 그런 다음 1단계에서 스크립트를 실행하여 필요한 CSV 보고서를 생성합니다.

보고서를 읽는 방법

보고서에는 다음 열이 포함됩니다.

  • scan_time: 인스턴스 스캔이 수행된 시간

  • instance_id: EC2 인스턴스 ID

  • scan_type: 수행된 스캔 유형입니다. 예를 들어 메모리 정보에서 스캔을 확인한 경우 scan_type은 MEMORY가 됩니다. 파일 시스템을 확인한 경우 scan_type은 FILESYSTEM이 됩니다.

  • 위치: 매치 경로

실행 입력 파라미터

실행 입력 파라미터에 대한 자세한 내용은 섹션을 참조하세요변경 유형 ct-19f40lfm5umy8 스키마.

예: 필수 파라미터

Example not available.

예: 모든 파라미터

{ "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://test" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "ParameterValues", "Values": [ "i-1234567890abcdef0", "i-1234567890abcdef1", "i-1234567890abcdef2", "i-1234567890abcdef3", "i-1234567890abcdef4" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }