Transfer Family, Amazon Cognito 및 GuardDuty를 사용하여 파일 전송 보호 - 권장 가이드

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

Transfer Family, Amazon Cognito 및 GuardDuty를 사용하여 파일 전송 보호

Manoj Kumar, Amazon Web Services

요약

이 솔루션은를 사용하여 SFTP 서버를 통해 파일을 안전하게 전송하는 데 도움이 됩니다 AWS Transfer Family. 여기에는 Amazon GuardDuty의 기능인 S3용 맬웨어 보호를 통한 자동 맬웨어 스캔 기능이 포함됩니다. Amazon GuardDuty 외부 당사자와 파일을 안전하게 교환하고 모든 수신 파일이 처리되기 전에 맬웨어에 대해 스캔되는지 확인해야 하는 조직을 위해 설계되었습니다.

이 패턴과 함께 제공되는 코드형 인프라(IaC) 템플릿은 다음을 배포하는 데 도움이 됩니다.

  • 를 통해 Amazon Cognito 인증을 사용하는 보안 SFTP 서버 AWS Lambda

  • 맬웨어가 스캔된 업로드 및 수신 파일을 위한 Amazon Simple Storage Service(Amazon S3) 버킷

  • 여러 가용 영역에 퍼블릭 및 프라이빗 서브넷이 있는 Virtual Private Cloud(VPC) 기반 아키텍처

  • 구성 가능한 허용 및 거부 목록이 있는 수신 및 송신 트래픽 모두에 대한 IP 기반 액세스 제어

  • GuardDuty를 통한 자동 맬웨어 스캔

  • Amazon EventBridge 및 Lambda를 통한 스캔 결과를 기반으로 하는 지능형 파일 라우팅

  • Amazon Simple Notification Service(Amazon SNS)를 통한 보안 인시던트에 대한 실시간 알림

  • AWS Key Management Service (AWS KMS)를 통한 Amazon S3 버킷 및 Lambda 환경 변수의 암호화

  • 인터넷 노출 없이 액세스할 수 있는 Amazon Virtual Private Cloud(VPC) 엔드포인트

  • Amazon CloudWatch 통합을 통한 포괄적인 로깅

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • IAM 역할을 프로비저닝하는 AWS CloudFormation 템플릿 배포를 포함하여이 패턴에 설명된 작업을 수행할 수 있는 AWS Identity and Access Management (IAM)의 권한

  • GuardDuty, 대상 계정에서 활성화

  • 대상 계정에서 활성화된 S3용 맬웨어 보호

  • 서비스 할당량을 사용하면 대상 계정에서 다음을 생성할 수 있습니다.

    • VPC 한 개

    • 프라이빗 서브넷 1개

    • 퍼블릭 서브넷 1개

    • 탄력적 IP 주소 3개

    • 충분한 Lambda 동시성 제한

  • 보안 관련 알림에 유효한 이메일 주소

  • (선택 사항) 허용하거나 거부할 IP 주소 또는 CIDR 범위 목록

  • (선택 사항) AWS Command Line Interface (AWS CLI), 설치구성

제한 사항

  • S3용 맬웨어 보호에는 최대 파일 크기와 같은 할당량이 적용됩니다. 자세한 내용은 GuardDuty 설명서의 S3용 맬웨어 보호의 할당량 Amazon S3 기능 지원을 참조하세요.

  • 이 솔루션은 Amazon Cognito 사용자 이름 및 암호 인증만 사용합니다. 이 템플릿에서는 인증서 기반 또는 기타 인증 방법이 지원되지 않습니다. 기본적으로이 솔루션은 다중 인증(MFA)을 구성하지 않습니다.

  • 이 솔루션은 보안 그룹만 통해 IP 기반 액세스 제어를 구현합니다.

아키텍처

다음 아키텍처 다이어그램은이 패턴으로 배포된 리소스를 보여줍니다. 이 솔루션은 사용자 인증 및 권한 부여에 Amazon Cognito를 사용합니다. AWS Transfer Family SFTP 서버는 파일 업로드에 사용됩니다. 파일은 Amazon S3 버킷에 저장되며 Amazon GuardDuty는 파일에 맬웨어가 있는지 스캔합니다. 맬웨어가 감지되면 Amazon SNS에서 이메일 알림을 보냅니다.

GuardDuty 및 Cognito를 사용하여 파일을 Amazon S3 버킷으로 안전하게 전송합니다.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 사용자는의 SFTP 서버 엔드포인트에 연결합니다 AWS Transfer Family. 이렇게 하면 Amazon Cognito 사용자 풀을 사용하여 인증 프로세스가 시작됩니다.

  2. Lambda 함수는 인증 및 권한 부여 프로세스를 시작하고 Amazon Cognito를 사용하여 사용자의 자격 증명을 검증합니다.

  3. Lambda 함수는 UploadBucket Amazon S3 버킷을 홈 디렉터리로 반환합니다. 사용자는 Transfer Family 서버의 IAM 역할을 수임하고 Lambda 함수는 사용자에게 성공적으로 인증되었음을 알립니다.

  4. 사용자가 Transfer Family SFTP 서버에 파일을 업로드합니다. 파일은 UploadBucket Amazon S3 버킷에 저장됩니다.

  5. GuardDuty는 파일에 맬웨어가 있는지 스캔합니다. 잠재적 스캔 결과는 NO_THREATS_FOUND, THREATS_FOUND, UNSUPPORTED, 및 ACCESS_DENIED입니다FAILED. 샘플 결과는 GuardDuty 설명서의 S3 객체 스캔 결과를 참조하세요.

  6. EventBridge 규칙은 스캔 결과 이벤트를 감지합니다.

  7. EventBridge는 파일 라우팅 Lambda 함수를 시작합니다.

  8. Lambda 함수는 이벤트를 처리하고 다음과 같이 스캔 결과를 기반으로 파일을 필터링합니다.

    • NO_THREATS_FOUND 스캔 결과가 있는 파일은 CleanBucket Amazon S3 버킷으로 전송됩니다.

    • THREATS_FOUND 스캔 결과가 있는 파일은 MalwareBucket Amazon S3 버킷으로 전송됩니다.

    • UNSUPPORTED 스캔 결과가 있는 파일은 ErrorBucket Amazon S3 버킷으로 전송됩니다.

    • ACCESS_DENIED 스캔 결과가 있는 파일은 ErrorBucket Amazon S3 버킷으로 전송됩니다.

    • FAILED 스캔 결과가 있는 파일은 ErrorBucket Amazon S3 버킷으로 전송됩니다.

    모든 파일은 로 암호화됩니다 AWS KMS key.

  9. 파일이 MalwareBucket Amazon S3 버킷으로 전송된 경우 Lambda 함수는 Amazon SNS 주제를 시작합니다. Amazon SNS 주제는 구성한 이메일 주소로 이메일 알림을 보냅니다.

도구

AWS 서비스

  • Amazon CloudWatch를 사용하면 AWS 리소스 및에서 실행되는 애플리케이션의 지표를 실시간으로 모니터링할 AWS 수 있습니다.

  • Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다.

  • Amazon EventBridge는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. 예를 들어 AWS Lambda 함수, API 대상을 사용하는 HTTP 호출 엔드포인트 또는 다른의 이벤트 버스가 있습니다 AWS 계정.

  • Amazon GuardDuty는 로그를 분석하고 처리하여 AWS 환경에서 예기치 않고 잠재적으로 승인되지 않은 활동을 식별하는 지속적인 보안 모니터링 서비스입니다.

  • AWS Key Management Service (AWS KMS)를 사용하면 암호화 키를 생성하고 제어하여 데이터를 보호할 수 있습니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • Amazon Simple Notification Service(Amazon SNS)를 사용하면 웹 서버 및 이메일 주소를 포함하여 게시자와 클라이언트 간의 메시지 교환을 조정하고 관리할 수 있습니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

  • AWS Transfer Family를 사용하면 SFTP, FTPS 또는 FTP 프로토콜을 통해 AWS 스토리지 서비스 내부 및 외부로 파일을 전송할 수 있습니다.

  • Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사합니다.

코드 리포지토리

이 패턴의 코드는 GitHub AWS Transfer Family 및 GuardDuty 맬웨어 스캔 솔루션 리포지토리에서 사용할 수 있습니다.

모범 사례

제공된 CloudFormation 템플릿은 IAM 역할 및 정책에 대한 최소 권한 권한, 저장 및 전송 중 암호화, 자동 키 교체와 같은 여러 AWS 모범 사례를 통합하도록 설계되었습니다. 프로덕션 환경의 경우 다음과 같은 추가 권장 사항을 구현하는 것이 좋습니다.

  • Amazon Cognito 사용자를 위한 MFA 활성화

  • 분산 서비스 거부(DDoS) 보호를 AWS Shield 위한 구현

  • 지속적인 규정 준수 모니터링을 AWS Config 위한 구성

  • 포괄적인 API 로깅을 AWS CloudTrail 위한 구현

  • 맬웨어 스캔 이상의 위협 탐지를 위해 Amazon GuardDuty 설정

  • 중앙 집중식 보안 관리를 AWS Security Hub 위한 구현

  • 자격 증명 관리에 AWS Secrets Manager 사용

  • 트래픽 미러링을 사용하여 네트워크 트래픽 모니터링 구현

  • Amazon S3에서 민감한 데이터 검색 및 보호를 위해 Amazon Macie 구성 Amazon S3

  • 정기적인 보안 평가 및 침투 테스트 구현

  • 공식 인시던트 대응 계획 수립

  • 모든 구성 요소에 대한 자동 패치 구현

  • 관리자를 위한 정기적인 보안 교육 수행

  • 다중 계정 보안 관리를 AWS Organizations 위한 설정

에픽

작업설명필요한 기술

리포지토리를 복제합니다.

다음 명령을 입력하여 AWS Transfer Family 및 GuardDuty 맬웨어 스캔 솔루션 리포지토리를 로컬 워크스테이션에 복제합니다.

git clone https://github.com/aws-samples/sample-secure-transfer-family-code.git
앱 개발자, DevOps 엔지니어

CloudFormation 스택을 생성하십시오.

  1. CloudFormation 설명서의 지침에 따라 CloudFormation 콘솔 또는를 통해 스택을 생성합니다AWS CLI. 다음 파라미터를 구성합니다.

    • UploadBucketName - 버킷 이름 업로드

    • CleanBucketName - 파일 버킷 이름 정리

    • MalwareBucketName - 맬웨어 파일 버킷 이름

    • ErrorBucketName - 오류 파일 버킷 이름

    • SecurityTeamEmail - 알림을 위한 이메일 주소

    • VpcCIDR - VPC의 CIDR 범위

    • PublicSubnet1CIDR - 퍼블릭 서브넷 1의 CIDR 범위

    • PublicSubnet2CIDR - 퍼블릭 서브넷 2의 CIDR 범위

    • PrivateSubnet1CIDR - 프라이빗 서브넷 1의 CIDR 범위

    • PrivateSubnet2CIDR - 프라이빗 서브넷 2의 CIDR 범위

    • AllowedIPAddresses - 허용된 IP 주소 또는 CIDR 범위

    • EnableEgressRules - 보안 그룹에 대해 송신 규칙을 활성화하려면를 입력합니다true. 송신 규칙을 비활성화하려면를 입력합니다false.

  2. 스택 배포가 완료될 때까지 기다립니다.

  3. 스택 생성 출력에서 SFTP 서버 엔드포인트를 기록해 둡니다. 나중에이 값이 필요합니다.

클라우드 관리자, DevOps 엔지니어
작업설명필요한 기술

맬웨어 보호를 켭니다.

  1. 에 로그인 AWS Management Console 하고 GuardDuty 콘솔을 엽니다.

  2. 탐색 창에서 S3용 맬웨어 보호를 선택합니다.

  3. 보호된 버킷 섹션에서 활성화를 선택합니다.

  4. S3 버킷 세부 정보 입력에서 Amazon S3 버킷 이름을 입력합니다. 또는 S3 찾아보기를 선택하여 버킷을 선택합니다. UploadBucket Amazon S3 버킷을 선택합니다.

  5. 접두사에서 S3 버킷의 모든 객체를 선택합니다.

  6. 스캔한 객체에 태그 지정에서 객체에 태그 지정을 선택합니다.

  7. 서비스 액세스 섹션에서 새 서비스 역할 생성 및 사용을 선택합니다.

  8. 활성화를 선택합니다.

클라우드 관리자, AWS 관리자

사용자 풀에 사용자를 추가합니다.

Amazon Cognito 사용자 풀에 사용자를 한 명 이상 추가합니다. 지침은 Amazon Cognito 설명서의 사용자 풀의 사용자 관리를 참조하세요.

클라우드 관리자, AWS 관리자
작업설명필요한 기술

SFTP 서버 엔드포인트에 연결합니다.

  1. 다음 명령을 입력하여 SFTP 서버 엔드포인트를 가져옵니다. 여기서 <stack-name>는 CloudFormation 스택의 이름입니다.

    TRANSFER_ENDPOINT=$(aws cloudformation describe-stacks \   --stack-name <stack-name> \   --query 'Stacks[0].Outputs[?OutputKey==`TransferServerEndpoint`].OutputValue' \   --output text)
  2. 다음 명령을 입력하여 SFTP 서버에 연결합니다.

    sftp user@company.com@$TRANSFER_ENDPOINT
  3. 다음 프롬프트가 표시되는지 확인합니다.

    sftp>

    이는 이제 명령을 입력하여 파일 전송을 수행할 수 있음을 나타냅니다.

앱 개발자, 클라우드 관리자, 클라우드 아키텍트, DevOps 엔지니어

문제 해결

문제Solution

사용자 인증 실패

  1. 사용자가 Amazon Cognito 사용자 풀에 있는지 확인합니다.

  2. 사용자가 확인되고 활성화되었는지 확인합니다.

  3. 사용자가 올바른 암호를 제공하고 있는지 확인합니다.

  4. CloudWatch Logs에서 오류가 있는지 확인합니다.

이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요.

SFTP 인증 실패

  1. 사용자가 Amazon Cognito 사용자 풀에 있는지 확인합니다.

  2. 사용자가 확인되고 활성화되었는지 확인합니다.

  3. 사용자가 올바른 암호를 제공하고 있는지 확인합니다.

  4. AWS Transfer Family 서버의 보안 그룹에서 IP 주소가 허용되는지 확인합니다.

  5. 인증 Lambda 함수에 대한 로그에서 오류가 있는지 확인합니다.

  6. 의 IAM 역할에 올바른 권한이 AWS Transfer Family 있는지 확인합니다.

이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요.

파일 업로드 액세스 거부됨

  1. AWS KMS 키 권한이 제대로 구성되었는지 확인합니다.

  2. Amazon S3 버킷 정책을 확인합니다.

  3. IAM 역할 권한이 올바르게 구성되었는지 확인합니다.

  4. VPC 엔드포인트가 올바르게 구성되었는지 확인

  5. 의 IAM 역할에 올바른 권한이 AWS Transfer Family 있는지 확인합니다.

이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요.

맬웨어 스캔 없음

  1. 계정에서 GuardDuty를 활성화합니다.

  2. S3용 맬웨어 보호를 활성화합니다.

  3. Amazon EventBridge 규칙이 활성 상태인지 확인합니다.

  4. 파일 라우팅 Lambda 함수에 대한 로그에서 오류가 있는지 확인합니다.

  5. Amazon SNS에서 알림이 올바르게 구성되었는지 확인합니다.

이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요.

Lambda 함수 오류

  1. VPC 구성을 확인합니다.

  2. VPC 엔드포인트가 올바르게 구성되었는지 확인합니다.

  3. 의 IAM 역할에 올바른 권한이 AWS Transfer Family 있는지 확인합니다.

  4. CloudWatch Logs에서 오류가 있는지 확인합니다.

  5. AWS KMS 키 권한이 제대로 구성되었는지 확인합니다.

이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요.

관련 리소스

추가 정보

문제 해결에 유용한 명령

CloudFormation 스택의 상태를 확인합니다.

aws cloudformation describe-stacks \ --stack-name <STACK_NAME>

Amazon Cognito 사용자 풀의 모든 사용자를 나열합니다.

aws cognito-idp list-users \ --user-pool-id <USER_POOL_ID>

Lambda 함수에 대한 로그 보기:

aws logs describe-log-groups \ --log-group-name-prefix /aws/lambda/

GuardDuty의 상태를 확인합니다.

aws guardduty list-detectors

보안 그룹 규칙 확인:

aws ec2 describe-security-groups \ --group-ids <SECURITY_GROUP_ID> \ --output table

AWS Transfer Family 서버 상태를 확인합니다.

aws transfer describe-server \ --server-id <SERVER_ID>

Amazon S3 버킷의 모든 파일을 나열합니다.

aws s3 ls s3://<BUCKET_NAME>/ \ --recursive

EventBridge 규칙의 상태를 확인합니다.

aws events describe-rule \ --name <RULE_NAME>