2015-09-14 4 views
2

Мы разрабатываем Azure Website, который позволит пользователям загружать контент (MP4, Docx ... MSOffice Files), к которому можно получить доступ.Сканирование вирусов Загруженные файлы от Azure Web/Worker Role

Некоторое видеоконтент, который мы будем кодировать, чтобы предоставить несколько различных форматов качества, прежде чем он будет транслироваться (используя Azure Media Services).

Нам нужно добавить промежуточный шаг, чтобы мы могли сканировать загруженные файлы для потенциального риска для вирусов. Есть ли функциональность, встроенная в лазурь (или третья сторона), которая позволит нам вызывать API для сканирования содержимого до его обработки? Мы идеально ищем API, а не только справочную службу на виртуальной машине, поэтому мы можем получить обратную связь для использования в роли сети или рабочего.

Если бы беглый взгляд на Symantec Endpoint и Windows Defender, но не уверен, что они предлагают АНИ

+1

Обратитесь к службе защиты от вредоносных программ Майкрософт: https://azure.microsoft.com/en-us/blog/microsoft-antimalware-for-azure-cloud-services-and-virtual-machines/. –

+0

@GauravMantri Есть ли доступный API? Мы должны иметь возможность детерминистически передавать в файл и получать ответ, а не загружать и ждать, чтобы убедиться, что он помещен на карантин. – Tim

ответ

1

Я успешно сделал это с помощью открытого источника ClamAV. Вы не указываете, какие языки вы используете, но поскольку это Azure, я буду считать .Net.

Существует обертка .Net, который должен предоставить API, что вы ищете:

https://github.com/tekmaven/nClam

Вот некоторые примеры кода (примечание: это копируется непосредственно со страницы репо nClam GitHub и воспроизводятся здесь только для защиты от гнили ссылки)

using System; 
using System.Linq; 
using nClam; 

class Program 
{ 
    static void Main(string[] args) 
    { 

     var clam = new ClamClient("localhost", 3310); 
     var scanResult = clam.ScanFileOnServer("C:\\test.txt"); //any file you would like! 

     switch(scanResult.Result) 
     { 
      case ClamScanResults.Clean: 
       Console.WriteLine("The file is clean!"); 
       break; 
      case ClamScanResults.VirusDetected: 
       Console.WriteLine("Virus Found!"); 
       Console.WriteLine("Virus name: {0}", scanResult.InfectedFiles.First().VirusName); 
       break; 
      case ClamScanResults.Error: 
       Console.WriteLine("Woah an error occured! Error: {0}", scanResult.RawResult); 
       break; 
     } 
    } 
} 

Есть также API, доступные для обновления базы данных определений вирусов. Все необходимые файлы ClamAV могут быть включены в пакет развертывания, и любая конфигурация может быть включена в код запуска службы.

+0

Да, это должно работать, это сервис C#. – Tim

0

ClamAV - хорошая идея, специально теперь, когда 0.99 будет выпущена с поддержкой YARA - это упростит вам создание пользовательских правил и позволит clamav использовать тонны хороших правил YARA на открытом воздухе сегодня ,

Другой маршрут и немного бесстыдного подключения - это проверить scanii.com, это SaaS для обнаружения вредоносных программ и вирусов, и он отлично сочетается с AWS и Azures.

0

Есть несколько вариантов для достижения этой цели:

Во-первых, вы можете использовать ClamAV, как уже упоминалось. ClamAV не всегда получает лучший доступ к своим вирусным базам, но, как указывают другие, он прост в использовании и расширяем.

Вы также можете установить коммерческий сканер, такой как avg, kaspersky и т. Д. Многие из них поставляются с C API, с которыми вы можете разговаривать напрямую, хотя часто получение доступа к этому может быть дорогостоящим с точки зрения лицензирования.

В качестве альтернативы вы можете совершать вызовы к исполняемому файлу напрямую, используя что-то вроде следующего перехватывать вывод:

var proc = new Process { 
    StartInfo = new ProcessStartInfo { 
     FileName = "scanner.exe", 
     Arguments = "arguments needed", 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     CreateNoWindow = true 
    } 
}; 
proc.Start(); 
while (!proc.StandardOutput.EndOfStream) { 
    string line = proc.StandardOutput.ReadLine(); 
} 

Затем нужно будет разобрать выход, чтобы получить результат и использовать его в своем приложении.

Наконец, теперь есть некоторые коммерческие API, которые можно использовать для таких вещей, таких как attachmentscanner (отказ от ответственности, я имею отношение к этому продукту) или scanii.Они предоставят вам API и более масштабируемую опцию для сканирования определенных файлов и получения ответа от хотя бы одного механизма проверки вирусов.

Смежные вопросы