
Esegui una scansione malware basata su file sui tuoi server on-prem con AWS
Può essere difficile per i team di sicurezza monitorare continuamente tutti i server on-premises a causa di vincoli di budget e risorse. L'antivirus basato su firme da solo è insufficiente poiché il malware moderno utilizza varie tecniche di offuscamento. Gli amministratori dei server potrebbero non avere visibilità storica sugli eventi di sicurezza su tutti i server. Determinare i sistemi compromessi e i backup sicuri da cui ripristinare durante gli incidenti è impegnativo senza un monitoraggio centralizzato e sistemi di allerta. È oneroso per gli amministratori configurare e mantenere strumenti di sicurezza aggiuntivi per il rilevamento avanzato delle minacce. Il rapido tempo medio per rilevare e correggere le infezioni è critico ma difficile da ottenere senza la giusta soluzione automatizzata.
Determinare quale immagine di backup sia sicura da ripristinare durante gli incidenti senza un'intelligence completa sulle minacce è un altro problema difficile. Anche se i backup sono disponibili, senza sapere esattamente quando un sistema è stato compromesso, è rischioso ripristinare ciecamente dai backup. Ciò aumenta la possibilità di ripristinare malware e perdere dati e sistemi ancora più preziosi durante la risposta agli incidenti. È necessaria una soluzione automatizzata che possa individuare la cronologia dell'infiltrazione e raccomandare backup sicuri per il ripristino.
La soluzione sfrutta AWS Elastic Disaster Recovery (AWS DRS), Amazon GuardDuty e AWS Security Hub per affrontare le sfide del rilevamento malware per i server on-premises.
Questa combinazione di servizi fornisce un modo economico per monitorare continuamente i server on-premises alla ricerca di malware senza influire sulle prestazioni. Aiuta anche a determinare i backup sicuri per il ripristino individuando la cronologia dei compromessi attraverso analisi delle minacce centralizzate.
AWS Elastic Disaster Recovery (AWS DRS) minimizza i tempi di inattività e la perdita di dati con un ripristino rapido e affidabile di applicazioni on-premises e basate su cloud utilizzando storage conveniente, calcolo minimo e ripristino point-in-time.
Amazon GuardDuty è un servizio di rilevamento delle minacce che monitora continuamente i tuoi account AWS e i carichi di lavoro per attività dannose e fornisce risultati di sicurezza dettagliati per visibilità e correzione.
AWS Security Hub è un servizio di gestione della postura di sicurezza cloud (CSPM) che esegue controlli delle best practice di sicurezza, aggrega avvisi e abilita la correzione automatizzata.

La soluzione Malware Scan presuppone che i server on-premises siano già replicati con AWS DRS e che Amazon GuardDuty e AWS Security Hub siano abilitati. Lo stack CDK in questo repository distribuirà solo i blocchi etichettati come DRS Malware Scan nel diagramma dell'architettura.
Un account AWS.
Amazon Elastic Disaster Recovery (DRS) configurato, con almeno 1 server di origine in sincronia. In caso contrario, consulta questa documentazione. La configurazione di replica deve considerare la crittografia EBS utilizzando una chiave gestita personalizzata (CMK) di AWS Key Management Service (AWS KMS). Amazon GuardDuty Malware Protection non supporta la chiave gestita AWS predefinita per EBS.
Privilegi IAM per distribuire i componenti di questa soluzione.
Amazon GuardDuty abilitato. In caso contrario, consulta questa documentazione
Amazon Security Hub abilitato. In caso contrario, consulta questa documentazione
Avviso
Attualmente, la scansione malware di Amazon GuardDuty non supporta volumi EBS crittografati con chiavi gestite da EBS. Se desideri utilizzare questa soluzione per scansionare i tuoi server on-prem (o di altri cloud) replicati con DRS, devi configurare la replica DRS con la tua chiave di crittografia in KMS. Se stai attualmente utilizzando chiavi gestite da EBS con i tuoi server di replica, puoi modificare le impostazioni di crittografia per utilizzare la tua chiave KMS nella console DRS.
Crea un ambiente Cloud9 con immagine Ubuntu (almeno t3.small per prestazioni migliori) nel tuo account AWS. Apri il tuo ambiente Cloud9 e clona il codice in questo repository. Nota: Amazon Linux 2 ha node v16 che non è più supportato dal 2023-09-11
git clone https://github.com/aws-samples/drs-malware-scan
cd drs-malware-scan
sh check_loggroup.sh
Distribuisci lo stack CDK eseguendo il seguente comando nel terminale Cloud9 e conferma la distribuzione
npm install
cdk bootstrap
cdk deploy --all
Nota
La soluzione è composta da 2 stack:
cdk deploy DrsMalwareScanStackcdk deploy ScanReportStackSe vuoi distribuire entrambi gli stack, puoi eseguire cdk deploy --all
Assicurati che i server di origine DRS stiano replicando continuamente e in uno stato di replica sano. Ciò è necessario a causa di una limitazione nell'API GuardDuty: al momento della stesura di questo documento, non esiste un'API AWS pubblica per scansionare gli snapshot DRS. L'unico modo per eseguire una scansione malware sui dati dei server di origine DRS è eseguire una scansione sui server di replica (istanze Amazon EC2) gestiti da AWS DRS. Se la replica non è in esecuzione in uno stato sano, la scansione malware DRS potrebbe non completarsi correttamente. Devi confermare ReadyforRecovery=Ready
Identifica i server di origine da scansionare. Tra tutti i server replicati con AWS DRS, devi determinare l'elenco dei server candidati da scansionare. Dalla console AWS DRS, copia i nomi dei server di origine che desideri far scansionare dalla soluzione e incollali in un editor di testo. Questo verrà utilizzato nel passaggio successivo.





Opzionale: Controlla il file del report di scansione malware su S3. Se hai distribuito lo stack ScanReportStack, puoi pianificare un report da eseguire con la frequenza che preferisci. Il report estrarrà il contenuto della tabella DynamoDB DRSVolumeAnnotationsDDBTable e lo scriverà nel bucket Amazon S3 creato dallo stack (con prefisso scanreportstack-scanreportbucket). Questo report viene sovrascritto (e cumulativo) ogni volta che la regola viene attivata.


Opzionale: Per configurazione multi-account Nel caso in cui tu abbia un account di sicurezza designato per centralizzare tutti i risultati di sicurezza come parte di una strategia multi-account, questa soluzione funzionerà comunque. Il team di sicurezza può eseguire la stessa analisi sull'account di sicurezza, i risultati di Security Hub e GuardDuty segnalati negli account collegati vengono automaticamente copiati nell'account di sicurezza centralizzato.
Tutte le funzioni lambda instradano i log ad Amazon CloudWatch. Puoi verificare l'esecuzione di ogni funzione ispezionando i gruppi di log CloudWatch appropriati per ogni funzione, cerca il pattern /aws/lambda/DrsMalwareScanStack-*.
La durata dell'operazione di scansione malware dipenderà dal numero di server/volumi da scansionare (e dalle loro dimensioni). Quando Amazon GuardDuty trova malware, genera un risultato SecurityHub: la soluzione intercetta questo evento ed esegue il lambda $StackName-SecurityHubAnnotations per arricchire il risultato SecurityHub con una nota contenente i nomi dei server di origine DRS con malware.
Le code SQS FIFO possono essere monitorate utilizzando le metriche Messages available e Message in flight dalla console AWS SQS
Le tabelle DynamoDB DRS Volume Annotations tengono traccia dello stato di ogni operazione di scansione malware.
Amazon GuardDuty ha motivi documentati per saltare le operazioni di scansione. Per ulteriori informazioni, consulta Motivi per saltare la risorsa durante la scansione malware
Per analizzare i log delle operazioni di scansione malware di Amazon GuardDuty, puoi controllare il gruppo di log Amazon CloudWatch /aws/guardduty/malware-scan-events. Il periodo di conservazione predefinito per questo gruppo di log è di 90 giorni, dopo di che gli eventi di log vengono eliminati automaticamente.
Esegui i seguenti comandi nel tuo terminale:
cdk destroy --all
(Opzionale) Elimina i gruppi di log CloudWatch associati alle funzioni Lambda.
Ai fini di questa analisi, abbiamo ipotizzato uno scenario fittizio da prendere come esempio. Le seguenti stime dei costi si basano su servizi situati nella regione Virginia del Nord (us-east-1).
| Costo Mensile | Costo Totale per 12 Mesi |
|---|---|
| 171.22 USD | 2,054.74 USD |
| Nome del servizio | Descrizione | Costo Mensile (USD) |
|---|---|---|
| AWS Elastic Disaster Recovery | 2 server di origine / 1 server di replica / 4 dischi / 100GB / 30 giorni di periodo di conservazione snapshot EBS | 71.41 |
| Amazon GuardDuty | 3 TB malware scansionato/mese | 94.56 |
| Amazon DynamoDB | 100MB 1 lettura/secondo 1 scrittura/secondo | 3.65 |
| AWS Security Hub | 1 account / 100 controlli di sicurezza / 1000 risultati inseriti | 0.10 |
| AWS EventBridge | 1 milione di eventi personalizzati | 1.00 |
| Amazon Cloudwatch | 1GB inseriti/mese | 0.50 |
| AWS Lambda | 5 funzioni Lambda ARM - 128MB / 10 secondi | 0.00 |
| Amazon SQS | 2 code SQS Fifo | 0.00 |
| Totale | 171.22 |
Nota
I dati presentati qui sono stime basate sulle ipotesi sopra descritte, derivate dal Calcolatore dei prezzi AWS. Per ulteriori dettagli, consulta questo calcolatore dei prezzi come riferimento. Puoi regolare la configurazione dei servizi nel calcolatore di riferimento per fare la tua stima. Questa stima non include potenziali tasse o costi aggiuntivi che potrebbero essere applicati. È fondamentale ricordare che le tariffe effettive possono variare in base all'utilizzo e a eventuali servizi aggiuntivi non coperti in questa analisi. Per ambienti critici è consigliabile includere Business Support Plan (non considerato nella stima)
Vedi CONTRIBUTING per maggiori informazioni.
Questo codice di esempio è concesso in licenza con la licenza MIT-0. Vedi il file LICENSE.