
AWS로 온프레미스 서버에서 파일 기반 맬웨어 스캔을 수행하세요.
보안팀이 예산 및 리소스 제약으로 인해 모든 온프레미스 서버를 지속적으로 모니터링하는 것은 어려울 수 있습니다. 최신 악성코드는 다양한 난독화 기술을 사용하므로 서명 기반 안티바이러스만으로는 충분하지 않습니다. 서버 관리자는 과거의 모든 서버에서 보안 이벤트를 볼 수 있는 가시성이 부족할 수 있습니다. 중앙 집중식 모니터링 및 알림 없이 사고 발생 시 손상된 시스템과 복원해도 안전한 백업을 판단하는 것은 어렵습니다. 서버 관리자가 고급 위협 탐지를 위해 추가 보안 도구를 설정하고 유지 관리하는 것은 부담스럽습니다. 감염을 탐지하고 복구하는 평균 시간(Mean Time to Detect and Remediate)을 단축하는 것은 중요하지만 적절한 자동화 솔루션 없이는 달성하기 어렵습니다.
포괄적인 위협 인텔리전스 없이 사고 발생 시 어떤 백업 이미지가 복원해도 안전한지 결정하는 것도 또 다른 어려운 문제입니다. 백업이 있더라도 시스템이 정확히 언제 손상되었는지 모르면 맹목적으로 백업에서 복원하는 것은 위험합니다. 이로 인해 악성코드를 복원하고 사고 대응 중에 더 귀중한 데이터와 시스템을 잃을 위험이 높아집니다. 침투 타임라인을 정확히 찾고 복원을 위한 안전한 백업을 권장하는 자동화된 솔루션이 필요합니다.
이 솔루션은 AWS Elastic Disaster Recovery (AWS DRS), Amazon GuardDuty 및 AWS Security Hub를 활용하여 온프레미스 서버의 악성코드 탐지 문제를 해결합니다.
이 서비스 조합은 성능에 영향을 주지 않으면서 온프레미스 서버를 지속적으로 모니터링할 수 있는 비용 효율적인 방법을 제공합니다. 또한 중앙 위협 분석을 통해 침해 타임라인을 식별하여 복원을 위한 안전한 특정 시점 백업을 결정하는 데 도움이 됩니다.

악성코드 스캔 솔루션은 온프레미스 서버가 이미 AWS DRS로 복제되고 있으며, Amazon GuardDuty 및 AWS Security Hub가 활성화되어 있다고 가정합니다. 이 리포지토리의 cdk 스택은 아키텍처 다이어그램에서 DRS Malware Scan이라고 표시된 상자만 배포합니다.
AWS 계정.
Amazon Elastic Disaster Recovery(DRS)가 구성되어 있고 동기화 중인 소스 서버가 1개 이상 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요. 복제 구성은 AWS Key Management Service(AWS KMS)의 사용자 관리형 키(CMK)를 사용한 EBS 암호화를 고려해야 합니다. Amazon GuardDuty Malware Protection은 EBS의 기본 AWS 관리형 키를 지원하지 않습니다.
이 솔루션의 구성 요소를 배포할 수 있는 IAM 권한.
Amazon GuardDuty가 활성화되어 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요.
Amazon Security Hub가 활성화되어 있어야 합니다. 그렇지 않은 경우 이 문서를 확인하세요.
경고
현재 Amazon GuardDuty Malware 스캔은 EBS 관리형 키로 암호화된 EBS 볼륨을 지원하지 않습니다. DRS로 복제된 온프레미스(또는 다른 클라우드) 서버를 스캔하기 위해 이 솔루션을 사용하려면 KMS에서 자체 암호화 키를 사용하여 DRS 복제를 설정해야 합니다. 현재 복제 서버에서 EBS 관리형 키를 사용 중인 경우 DRS 콘솔에서 암호화 설정을 자체 KMS 키를 사용하도록 변경할 수 있습니다.
Cloud9 환경 생성 AWS 계정에 Ubuntu 이미지(성능 향상을 위해 최소 t3.small)로 Cloud9 환경을 생성합니다. Cloud9 환경을 열고 이 리포지토리의 코드를 클론합니다. 참고: Amazon Linux 2에는 node v16이 있으며, 이는 2023-09-11 이후로 더 이상 지원되지 않습니다.
git clone https://github.com/aws-samples/drs-malware-scan
cd drs-malware-scan
sh check_loggroup.sh
CDK 스택 배포 Cloud9 터미널에서 다음 명령을 실행하여 배포를 확인합니다.
npm install
cdk bootstrap
cdk deploy --all
참고
이 솔루션은 2개의 스택으로 구성됩니다.
cdk deploy DrsMalwareScanStack을 실행할 수 있습니다.cdk deploy ScanReportStack을 실행할 수 있습니다.두 스택을 모두 배포하려면 cdk deploy --all을 실행할 수 있습니다.
DRS 소스 서버가 지속적으로 복제되고 정상 상태인지 확인합니다. 이는 GuardDuty API의 제한 사항 때문에 필요합니다. 현재 이 글을 쓰는 시점에는 DRS 스냅샷을 스캔할 수 있는 공개 AWS API가 없습니다. DRS 소스 서버 데이터에 대해 악성코드 스캔을 수행하는 유일한 방법은 AWS DRS가 관리하는 복제 서버(Amazon EC2 인스턴스)에 대해 스캔을 수행하는 것입니다. 복제가 정상 상태로 실행되지 않으면 DRS 악성코드 스캔이 성공적으로 완료되지 않을 수 있습니다. ReadyforRecovery=Ready인지 확인해야 합니다.
스캔할 소스 서버 식별. AWS DRS로 복제 중인 모든 서버 중에서 스캔할 후보 서버 목록을 결정해야 합니다. AWS DRS 콘솔에서 솔루션이 스캔하기를 원하는 소스 서버 이름을 복사하여 텍스트 편집기에 붙여넣습니다. 이는 다음 단계에서 사용됩니다.





선택 사항: S3에서 악성코드 스캔 보고서 파일 확인 ScanReportStack 스택을 배포한 경우 필요에 따라 보고서를 실행하도록 예약할 수 있습니다. 보고서는 DRSVolumeAnnotationsDDBTable DynamoDB 테이블의 내용을 추출하여 스택이 생성한 Amazon S3 버킷(접두사 scanreportstack-scanreportbucket)에 씁니다. 이 보고서는 규칙이 트리거될 때마다 덮어쓰여집니다(누적됨).


선택 사항: 다중 계정 구성 다중 계정 전략의 일환으로 모든 보안 결과를 중앙 집중화하기 위해 지정된 보안 계정이 있는 경우 이 솔루션도 작동합니다. 보안 팀은 보안 계정에서 동일한 분석을 수행할 수 있으며, 연결된 계정에 보고된 Security Hub 및 GuardDuty 결과는 자동으로 중앙 보안 계정으로 복사됩니다.
모든 람다 함수는 로그를 Amazon CloudWatch로 라우팅합니다. 각 함수의 실행을 확인하려면 각 함수에 대한 적절한 CloudWatch 로그 그룹을 검사하고 /aws/lambda/DrsMalwareScanStack-* 패턴을 찾으십시오.
악성코드 스캔 작업의 지속 시간은 스캔할 서버/볼륨 수(및 크기)에 따라 달라집니다. Amazon GuardDuty가 악성코드를 발견하면 SecurityHub 결과를 생성합니다. 솔루션은 이 이벤트를 가로채서 $StackName-SecurityHubAnnotations 람다를 실행하여 악성코드가 있는 DRS 소스 서버의 이름이 포함된 메모로 SecurityHub 결과를 보강합니다.
SQS FIFO 대기열은 AWS SQS 콘솔의 Messages available 및 Message in flight 지표를 사용하여 모니터링할 수 있습니다.
DRS Volume Annotations DynamoDB 테이블은 각 악성코드 스캔 작업의 상태를 추적합니다.
Amazon GuardDuty에는 스캔 작업을 건너뛰는 이유가 문서화되어 있습니다. 자세한 내용은 악성코드 스캔 중 리소스 건너뛰기 이유를 확인하세요.
Amazon GuardDuty 악성코드 스캔 작업의 로그를 분석하려면 /aws/guardduty/malware-scan-events Amazon CloudWatch 로그 그룹을 확인할 수 있습니다. 이 로그 그룹의 기본 로그 보존 기간은 90일이며, 이후 로그 이벤트는 자동으로 삭제됩니다.
터미널에서 다음 명령을 실행합니다.
cdk destroy --all
(선택 사항) Lambda 함수와 연결된 CloudWatch 로그 그룹을 삭제합니다.
이 분석의 목적을 위해 가상의 시나리오를 예로 가정했습니다. 다음 비용 추정치는 미국 동부(us-east-1) 리전의 서비스를 기준으로 합니다.
| 월 비용 | 12개월 총 비용 |
|---|---|
| 171.22 USD | 2,054.74 USD |
| 서비스 이름 | 설명 | 월 비용 (USD) |
|---|---|---|
| AWS Elastic Disaster Recovery | 소스 서버 2개 / 복제 서버 1개 / 디스크 4개 / 100GB / EBS 스냅샷 보존 기간 30일 | 71.41 |
| Amazon GuardDuty | 월별 악성코드 스캔 3TB | 94.56 |
| Amazon DynamoDB | 100MB 읽기 1/초 쓰기 1/초 | 3.65 |
| AWS Security Hub | 계정 1개 / 보안 점검 100회 / 수집된 결과 1000개 | 0.10 |
| AWS EventBridge | 사용자 정의 이벤트 100만 개 | 1.00 |
| Amazon Cloudwatch | 월별 수집 1GB | 0.50 |
| AWS Lambda | ARM Lambda 함수 5개 - 128MB / 10초 | 0.00 |
| Amazon SQS | SQS FIFO 2개 | 0.00 |
| 합계 | 171.22 |
참고 여기에 제시된 수치는 AWS Pricing Calculator에서 파생된 위 가정을 기반으로 한 추정치입니다. 자세한 내용은 참고용으로 이 요금 계산기를 확인하세요. 참조된 계산기에서 서비스 구성을 조정하여 자체 추정을 수행할 수 있습니다. 이 추정에는 적용될 수 있는 잠재적 세금 또는 추가 요금이 포함되지 않습니다. 실제 요금은 사용량 및 이 분석에서 다루지 않은 추가 서비스에 따라 달라질 수 있음을 기억하는 것이 중요합니다. 중요한 환경의 경우 Business Support Plan을 포함하는 것이 좋습니다(추정에 포함되지 않음).
자세한 내용은 CONTRIBUTING을 참조하세요.
이 샘플 코드는 MIT-0 라이선스에 따라 사용이 허가됩니다. LICENSE 파일을 참조하세요.