Облачная борьба с вирусами
Безопасность является одной из самых важных тем при обсуждении размещения приложений в Облаке. Платформа Windows Azure является классическим примером PaaS-модели (Платформа как Сервис) - Microsoft предоставляет безопасную среду выполнения, обеспечивает безопасность на уровне операционной системы и инфраструктуры. Одним из существенных преимуществ модели PaaS является то, что мы абстрагируемся от большого числа инфраструктурных задач, например, связанных с настройкой образа и инициализацией операционной системы, применения обновлений и hotfix’ов и т.п.
С появление и переходом на облачную модель, к сожалению, обычные вирусы никуда не исчезают и могут проникнуть в приложение и, например, получить доступ к данных. Конечно, если мы перезагрузим роль, то все приложение или сервис поднимутся с “чистого” образа, в котором отсутствует вирусная составляющая. Но как бороться с угрозами в течение жизненного цикла приложений и ролей? С помощью Microsoft Endpoint Protection for Windows Azure (на данный момент доступен в CTP).
MEP для Windows Azure выполняет проверку и обнаружение вредоносного кода в реальном времени для всех экземпляров ролей (на которых модуль включен). Конечно, в большинстве случаев MEP может и не потребоваться, т.к. веб- и воркер-роли - это фактически виртуальные машины, образы и компоненты, безопасность которых проверяется Microsoft. Но MEP может быть очень полезен особенно в случаях, когда на роли устанавливаются сторонние компоненты или разрешен доступ по RDP и копирование файлов (например, утилит для troubleshooting'а).
Информация по настройке и установке приведена в документе Deploying Microsoft Endpoint Protection for Windows Azure. Фактически, для того, чтобы включить в Windows Azure антивирусную защиту необходимо в конфигурационном файле добавить одну строчку кода ( <Import moduleName="Antimalware"/>), которая говорит Fabric Controller импортировать и инициализировать антивирусный модуль.
Предлагаю протестировать работу Microsoft Endpoint Protection for Windows Azure:
1. Устанавливаем модуль локально.
2. Создаем веб-роль, прописываем строчку <Import moduleName="Antimalware"/>.
3. Деплоим в Windows Azure.
4. Заходим на экземпляр роли по RDP и убеждаемся, что Microsoft Endpoint Protection запущен.
5. Проверяем работоспособность. Как это сделать? Нам нужен “тестовый” вирус. Берем “тестовый” вирус с IECAR (European Institute for Computer Antivirus Research). Спасибо моему коллеге Андрею Выставкину за наводку на такой способ тестирования, а то даже не знаю, где бы я искала вирусы!
1. Заходим по RPD (Удаленный доступ (RDP) в Windows Azure).
2. Создаем текстовый файл, добавляем в него текст (X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*) и сохраняем.
3. Открываем файл.
4. Смотрим в журнал Windows.
5. Или в отчет MEP.
Приведенный выше пример показал нам как можно настроить и проверить MEP для Windows Azure. Далее вам как разработчикам необходимо:
- Определить центральное хранилище для “антивирусных” или “вирусных” :) событий. Это позволит проанализировать каким образом вирус проник в систему и предпринять соответствующие действия. Например, можно использовать Windows Azure Azure Diagnostics и BLOB хранилище, подробно подход и настройка описаны в секции 4.4 Configure Azure Diagnostics to capture antimalware related information документа Deploying Microsoft Endpoint Protection for Windows Azure.
- Подписать на события MEP’а и определить сценарии поведения при возникновении таково события и т.п., чтобы минимизировать возможные последствия и риски. Например, можно просто обнаружить вирус и уничтожить его (это мы видели на примере выше) или предпринять более кардинальные меры и перезапустить экземпляр (reimage). Более подробно информация раскрывается в документе Monitoring Microsoft Endpoint Protection for Windows Azure Events,