
Выполните сканирование файлов на вредоносное ПО на ваших локальных серверах с помощью AWS
Службам безопасности может быть сложно постоянно отслеживать все локальные серверы из-за бюджетных и ресурсных ограничений. Сигнатурного антивируса недостаточно, так как современное вредоносное ПО использует различные методы обфускации. У администраторов серверов может отсутствовать видимость событий безопасности на всех серверах в исторической перспективе. Определение скомпрометированных систем и безопасных резервных копий для восстановления во время инцидентов затруднено без централизованного мониторинга и оповещения. Администраторам серверов сложно настраивать и поддерживать дополнительные средства безопасности для расширенного обнаружения угроз. Быстрое среднее время обнаружения и устранения заражений критически важно, но его трудно достичь без правильного автоматизированного решения.
Определение того, какой образ резервной копии безопасен для восстановления во время инцидентов без всесторонней разведки угроз, является еще одной сложной проблемой. Даже если резервные копии доступны, без знания точного времени компрометации системы, слепое восстановление из резервных копий рискованно. Это увеличивает вероятность восстановления вредоносного ПО и потери еще более ценных данных и систем во время реагирования на инциденты. Требуется автоматизированное решение, которое может определить временную шкалу проникновения и рекомендовать безопасные резервные копии для восстановления.
Решение использует AWS Elastic Disaster Recovery (AWS DRS), и для решения проблем обнаружения вредоносного ПО на локальных серверах.
Эта комбинация сервисов обеспечивает экономически эффективный способ непрерывного мониторинга локальных серверов на наличие вредоносного ПО без снижения производительности. Она также помогает определить безопасные точки восстановления из резервных копий для восстановления путем выявления временной шкалы компрометации с помощью централизованной аналитики угроз.
AWS Elastic Disaster Recovery (AWS DRS) минимизирует время простоя и потерю данных благодаря быстрому и надежному восстановлению локальных и облачных приложений с использованием доступного хранилища, минимальных вычислительных ресурсов и восстановления на определенный момент времени.
Amazon GuardDuty — это служба обнаружения угроз, которая непрерывно отслеживает ваши учетные записи и рабочие нагрузки AWS на предмет вредоносной активности и предоставляет подробные выводы по безопасности для обеспечения видимости и устранения.
AWS Security Hub — это служба управления безопасностью облака (CSPM), которая выполняет проверки на соответствие лучшим практикам безопасности, агрегирует оповещения и обеспечивает автоматическое устранение.

Решение для сканирования вредоносного ПО предполагает, что локальные серверы уже реплицируются с помощью AWS DRS, а Amazon GuardDuty и AWS Security Hub включены. Стек cdk в этом репозитории развернет только компоненты, помеченные как DRS Malware Scan на диаграмме архитектуры.
Учетная запись AWS.
Настроенный Amazon Elastic Disaster Recovery (DRS), по крайней мере, с 1 синхронизированным исходным сервером. Если нет, обратитесь к этой документации. Конфигурация репликации должна учитывать шифрование EBS с использованием пользовательского управляемого ключа (CMK) из AWS Key Management Service (AWS KMS). Amazon GuardDuty Malware Protection не поддерживает управляемый ключ AWS по умолчанию для EBS.
Привилегии IAM для развертывания компонентов этого решения.
Включенный Amazon GuardDuty. Если нет, обратитесь к этой документации.
Включенный Amazon Security Hub. Если нет, обратитесь к этой документации.
Предупреждение
В настоящее время сканирование вредоносного ПО Amazon GuardDuty не поддерживает тома EBS, зашифрованные ключами, управляемыми EBS. Если вы хотите использовать это решение для сканирования ваших локальных (или из другого облака) серверов, реплицированных с помощью DRS, вам необходимо настроить репликацию DRS с собственным ключом шифрования в KMS. Если вы в настоящее время используете ключи, управляемые EBS, для своих реплицируемых серверов, вы можете изменить настройки шифрования, чтобы использовать собственный ключ KMS в консоли DRS.
Создайте среду Cloud9 с образом Ubuntu (не менее t3.small для лучшей производительности) в вашей учетной записи AWS. Откройте среду 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 непрерывно реплицируются и находятся в работоспособном состоянии репликации. Это необходимо из-за ограничения в API GuardDuty: на момент написания этой статьи не существует публичного API AWS для сканирования снимков DRS. Единственный способ выполнить сканирование вредоносного ПО на данных исходного сервера(ов) DRS — выполнить сканирование на серверах репликации (экземпляры Amazon EC2), управляемых AWS DRS. Если репликация не выполняется в работоспособном состоянии, ваше сканирование вредоносного ПО DRS может не завершиться успешно. Вы должны подтвердить ReadyforRecovery=Ready.
Определите исходные серверы для сканирования. Из всех серверов, реплицируемых с помощью AWS DRS, вам необходимо определить список кандидатов для сканирования. В консоли AWS DRS скопируйте имена исходных серверов, которые вы хотите сканировать с помощью решения, и вставьте их в текстовый редактор. Это будет использовано на следующем шаге.





Опционально: Проверьте файл отчета о сканировании вредоносного ПО в S3. Если вы развернули стек ScanReportStack, вы можете запланировать запуск отчета с необходимой вам частотой. Отчет извлечет содержимое таблицы DynamoDB DRSVolumeAnnotationsDDBTable и запишет его в сегмент Amazon S3, созданный стеком (с префиксом scanreportstack-scanreportbucket). Этот отчет перезаписывается (и накапливается) каждый раз при срабатывании правила.


Опционально: Для конфигурации с несколькими учетными записями. Если у вас есть выделенная учетная запись безопасности для централизации всех выводов по безопасности в рамках стратегии с несколькими учетными записями, это решение также будет работать. Группа безопасности может выполнять тот же анализ из учетной записи безопасности; выводы Security Hub и GuardDuty, сообщаемые в связанных учетных записях, автоматически копируются в централизованную учетную запись безопасности.
Все функции Lambda направляют журналы в Amazon CloudWatch. Вы можете проверить выполнение каждой функции, проверив соответствующие группы журналов CloudWatch для каждой функции, ищите шаблон /aws/lambda/DrsMalwareScanStack-*.
Продолжительность операции сканирования вредоносного ПО будет зависеть от количества серверов/томов для сканирования (и их размера). Когда Amazon GuardDuty обнаруживает вредоносное ПО, он генерирует вывод Security Hub: решение перехватывает это событие и запускает лямбда-функцию $StackName-SecurityHubAnnotations для дополнения вывода Security Hub заметкой, содержащей имена исходных серверов DRS с вредоносным ПО.
Очереди FIFO SQS можно контролировать с помощью метрик Messages available и Messages in flight из консоли AWS SQS.
Таблицы DynamoDB DRS Volume Annotations отслеживают статус каждой операции сканирования вредоносного ПО.
Amazon GuardDuty задокументировал причины пропуска операций сканирования. Для получения дополнительной информации обратитесь к Причинам пропуска ресурса во время сканирования вредоносного ПО.
Чтобы проанализировать журналы операций сканирования вредоносного ПО Amazon GuardDuty, вы можете проверить группу журналов Amazon CloudWatch /aws/guardduty/malware-scan-events. Период хранения журналов по умолчанию для этой группы составляет 90 дней, после чего события журнала автоматически удаляются.
Выполните следующие команды в вашем терминале:
cdk destroy --all
(Опционально) Удалите группы журналов CloudWatch, связанные с функциями Lambda.
Для целей этого анализа мы использовали фиктивный сценарий в качестве примера. Следующие оценки затрат основаны на сервисах, расположенных в регионе Северная Виргиния (us-east-1).
| Ежемесячная стоимость | Общая стоимость за 12 месяцев |
|---|---|
| 171,22 USD | 2 054,74 USD |
| Имя сервиса | Описание | Ежемесячная стоимость (USD) |
|---|---|---|
| AWS Elastic Disaster Recovery | 2 исходных сервера / 1 сервер репликации / 4 диска / 100 ГБ / 30-дневный срок хранения снимков EBS | 71,41 |
| Amazon GuardDuty | 3 ТБ сканируется на вредоносное ПО в месяц | 94,56 |
| Amazon DynamoDB | 100 МБ, 1 чтение/сек, 1 запись/сек | 3,65 |
| AWS Security Hub | 1 учетная запись / 100 проверок безопасности / 1000 полученных выводов | 0,10 |
| AWS EventBridge | 1 миллион пользовательских событий | 1,00 |
| Amazon Cloudwatch | 1 ГБ получено/месяц | 0,50 |
| AWS Lambda | 5 лямбда-функций ARM - 128 МБ / 10 сек | 0,00 |
| Amazon SQS | 2 очереди SQS FIFO | 0,00 |
| Итого | 171,22 |
Примечание Приведенные цифры являются оценками на основе описанных выше допущений, полученными с помощью калькулятора цен AWS. Для получения дополнительной информации обратитесь к этому калькулятору цен в качестве справочного материала. Вы можете настроить конфигурацию сервисов в указанном калькуляторе для получения собственной оценки. Эта оценка не включает возможные налоги или дополнительные сборы, которые могут применяться. Важно помнить, что фактические сборы могут варьироваться в зависимости от использования и любых дополнительных сервисов, не учтенных в этом анализе. Для критически важных сред рекомендуется включить План бизнес-поддержки (не учитывается в оценке).
См. CONTRIBUTING для получения дополнительной информации.
Этот образец кода лицензирован в соответствии с лицензией MIT-0. См. файл LICENSE.