본문 바로가기

DevSecOps/AWS Security

[AWS Workshop] AWS SFTP 파일 업로드 시 GuardDuty를 활용한 악성코드 자동 스캔 아키텍처

728x90
반응형

배경

기업은 외부 사용자와 파일을 안전하게 공유할 수 있어야 합니다. 그러나 파일 전송 서버(SFTP)를 외부에 공개하면 악성코드 감염 파일이 업로드될 수 있는 보안 위협에 노출됩니다. 이 문제를 해결하기 위해 AWS에서는 Transfer Family + GuardDuty를 활용한 악성코드 자동 스캔 워크플로우를 구성할 수 있습니다.

 

이 글에서는 컴퓨팅 리소스 배포 없이 완전관리형으로 파일 업로드 후 GuardDuty를 통해 악성코드를 검사하고, 결과에 따라 적절한 조치를 취하는 전체 흐름을 설명합니다.


사전 조건

  • AWS 계정
  • AWS CLI, Git, Terraform 설치 및 설정
  • GitHub 예제 코드: aws-samples

솔루션 구성 개요

사용 서비스

  • AWS Transfer Family (SFTP): 보안 파일 업로드 인터페이스 제공
  • Amazon S3: 파일 저장소 (Unscanned / Processing / Clean / Quarantine)
  • Amazon GuardDuty: S3 악성코드 스캔 기능 사용
  • AWS Lambda + Step Functions: 워크플로우 자동화 및 이벤트 처리
  • Amazon SNS: 사용자 알림 발송

동작 흐름 요약

  1. 사용자가 SFTP로 파일 업로드
  2. 업로드 완료 → S3(Unscanned) 저장 → Step Function 트리거
  3. 파일을 S3(Processing) 버킷으로 이동 후 GuardDuty 스캔 시작
  4. 스캔 결과는 EventBridge → Lambda Callback으로 전달
  5. 스캔 결과에 따라 다음 단계 진행:
    • 깨끗한 파일: Clean 버킷 이동, Success SNS 알림
    • 감염된 파일: Quarantine 이동, Error SNS 알림
    • 업로드 실패 시 별도 에러 핸들링 수행

아키텍처 상세도

  1. SFTP 업로드 → Transfer Family 서버가 파일을 Unscanned 버킷에 저장
  2. Managed Workflow → Lambda (Step Function Invoker) 호출
  3. Step Functions → GuardDuty 스캔 Lambda 실행
  4. GuardDuty: S3(Processing) 버킷 객체 자동 스캔 수행
  5. EventBridge → Lambda Callback 함수가 결과를 수신
  6. 결과 분기 처리:
    • Clean: Clean 버킷 이동, Success 알림 전송
    • Malicious: Quarantine 이동, Error 알림 전송
  7. 업로드 실패 또는 Timeout: Error 처리 함수 실행 및 SNS 알림

Terraform 기반 설치 방법

  1. GitHub에서 코드 클론
git clone https://github.com/aws-samples/your-project.git
cd your-project
  1. locals.tf 파일에서 S3 버킷명, 서버명 등 변수 수정
  2. 실행
terraform init
terraform plan
terraform apply

클린업 (비용 방지)

terraform destroy

결론

본 아키텍처를 활용하면 SFTP를 통한 파일 수신 시:

  • 업로드 직후 자동 스캔, 감염 여부 판단 가능
  • Compute 리소스 없이 운영 가능 (100% 서버리스)
  • EventBridge, Step Functions, SNS를 통한 안정적인 자동화
  • 감염된 파일은 격리 조치 후 즉시 알림 전송

외부와의 파일 교환을 요구하는 업무 환경에서, 이 워크플로우는 보안성과 운영 효율성을 동시에 만족시키는 솔루션입니다.

 

참고 블로그 : https://aws.amazon.com/ko/blogs/security/

728x90
반응형