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: 사용자 알림 발송
동작 흐름 요약
- 사용자가 SFTP로 파일 업로드
- 업로드 완료 → S3(Unscanned) 저장 → Step Function 트리거
- 파일을 S3(Processing) 버킷으로 이동 후 GuardDuty 스캔 시작
- 스캔 결과는 EventBridge → Lambda Callback으로 전달
- 스캔 결과에 따라 다음 단계 진행:
- 깨끗한 파일: Clean 버킷 이동, Success SNS 알림
- 감염된 파일: Quarantine 이동, Error SNS 알림
- 업로드 실패 시 별도 에러 핸들링 수행
아키텍처 상세도
- SFTP 업로드 → Transfer Family 서버가 파일을 Unscanned 버킷에 저장
- Managed Workflow → Lambda (Step Function Invoker) 호출
- Step Functions → GuardDuty 스캔 Lambda 실행
- GuardDuty: S3(Processing) 버킷 객체 자동 스캔 수행
- EventBridge → Lambda Callback 함수가 결과를 수신
- 결과 분기 처리:
- Clean: Clean 버킷 이동, Success 알림 전송
- Malicious: Quarantine 이동, Error 알림 전송
- 업로드 실패 또는 Timeout: Error 처리 함수 실행 및 SNS 알림
Terraform 기반 설치 방법
- GitHub에서 코드 클론
git clone https://github.com/aws-samples/your-project.git
cd your-project
- locals.tf 파일에서 S3 버킷명, 서버명 등 변수 수정
- 실행
terraform init
terraform plan
terraform apply
클린업 (비용 방지)
terraform destroy
결론
본 아키텍처를 활용하면 SFTP를 통한 파일 수신 시:
- 업로드 직후 자동 스캔, 감염 여부 판단 가능
- Compute 리소스 없이 운영 가능 (100% 서버리스)
- EventBridge, Step Functions, SNS를 통한 안정적인 자동화
- 감염된 파일은 격리 조치 후 즉시 알림 전송
외부와의 파일 교환을 요구하는 업무 환경에서, 이 워크플로우는 보안성과 운영 효율성을 동시에 만족시키는 솔루션입니다.
728x90
반응형