Проверить сайт на вирусы AI-Bolit

Наверное каждый кто создает сайты сталкивается с вирусняками и троянами на сайте. Первая проблема вовремя заметить проблему, до момента когда проекты схватят пессимизацию от поисковиков или посыпятся обузы хостеру ( за ддос, спам ).

Эта статья пишется по горячем следам, когда во время обычного бэкапа на машину под виндой исходников сайта ESET Smart Security вдруг начал ругаться на картинки, которые счел вирусняком. Оказалось что с помощью картинок на сайт был залит бэкдор FilesMan.

Дыра была в том, что скрипт позволявший загружать юзерам картинки на сайт проверял что загружается картинка лишь по расширению файла. Содержимое не проверялось совсем. Так делать не надо ;) В итоге на сайт можно было загрузить любой php файл под видом картинки. Но речь не о дырках…

Речь о том что возникла задача ежедневной проверки все файлов сайта на вирусняки и трояны.

Проверка сайта на вирусы онлайн

Онлайн всякие проверки сайта на вирусы не подходят для этих целей от слова совсем. Онлайн сканеры ведут себя как робот поисковика, последовательно проходя все доступные страницы сайта. Переход на следующую страницу сайта происходит по ссылкам с других страниц сайта. Соотв. если злоумышленник залил вам бэкдор на сайт с помощью картинки и ссылки на эту картинку нигде на страницах сайта нет и дефейсить сайт не стал, также как вешать вирусняк на страницы, то онлайн проверка сайта на вирусы просто эту картинку не найдет и вируса не найдет.

Зачем, вы спросите, злоумышленнику так делать? Зачем заливать бэкдор и ничего не делать? Отвечу — для спама, для ддоса. Для другой вредоносной активности, которая никак не отражается на страницах сайта.

Одним словом онлайн проверка сайта на вирусы совершенно бесполезна для полного спокойствия.

Плагин для проверки WordPress сайта на вирусы и трояны

Для вордпресса есть отличный антивирусный плагин. Называется он Anti-Malware Security and Brute-Force Firewall . В моем случае он отлично находил картинки с FilesMan чистил сайт от вирусов. Но у него есть важный недостаток. Во время проверки он дает дикую нагрузку на сервер, потому что просто последовательно перебирает все файлы. Кроме того проверка из коробки делается только в ручную. Автоматизировать проверку сайта с плагином не возможно.

Ну и подхватить вирусняк можно и мимо вордпресса, нужно что-то универсальное.

Проверка содержимого сайта обычным антивирусом

Как и было сказано выше проблемы и были обнаружены совершенно случайно обычным десктопным антивирусом во время бэкапа. Конечно можно каждый день скачивать весь сайт и проверять обычным антивирусом. Все это вполне работоспособно.

Но:

  • во-первых, хочется автоматизации. Чтобы проверка была в автоматическом режиме и по итогам был готовый отчет.
  • во-вторых, есть такие сайты, что выкачивать их каждый деть просто не реально,

Пробуем AI-Bolit

Что-то со вступлением я затянул. В итоге всех поисков нашелся прекрасный БЕСПЛАТНЫЙ антивирус для сайта. AI-Bolit. Этот антивирус подразумеваем разные схемы его использования. Я его использовал через ssh.

Можно ли его использовать на шаред хостинге — не разбирался, но думаю это возможно. AI-Bolit написан на php и у него есть возможность запуска из браузера. Поэтому чисто технически — наверное можно и на шареде.

Важно! Айболит не лечит сайт от вирусов — он их ТОЛЬКО НАХОДИТ и дает отчет какие файлы он считает опасными. А уж что с ними делать вы решаете сами. Поэтому просто тупо нажать на кнопку и вылечить сайт от троянов не получится.

Как пользоваться AI-Bolit на VDS с ssh

У айболита есть отличный раздел на сайте с инструкциями и мастер-классами по использованию этого антивируса. В общем случае последовательность простая:

  • качаем архив
  • распаковываем на сервер (я распаковывал в /root/ai )
  • далее из консоли ssh запускаем php /root/ai/ai-bolit/ai-bolit.php
  • проверка может занять часы, в зависимости от объема сайта
  • по итогам проверки будет сформирован файл отчета AI-BOLIT-REPORT-<дата>-<время>.html

В файле отчета будут видны проблемные файлы, если таковые найдутся.

Большая нагрузка на сервер

Главная проблема с которой сталкиваешься с при автоматической проверке сайта на вирусы — это нагрузка на сервер. Все антивирусы действуют одинаково, последовательно перебирая все доступные файлы. И айболит тут вроде бы не исключение. Он просто берет все файлы и последовательно их проверяет. Нагрузка подскакивает и это может длиться долго, что не приемлимо в продакшене.

Но у айболита есть чумовая возможность (при условии что у вас полноценный сервер или вдс с рут доступом). Сначала для айболита можно сформировать список файлов для проверки, а потом скормить этот список. Тогда айболит просто пробежится по этому списку.

Для формирования списка можно пользоваться любыми способами сервера. У меня получился вот такой баш скрипт:


Здесь видно, что через команду find мы собираем все файлы созданные за последние SCAN_DAYS, сохраняем их в список AI-BOLIT-DOUBLECHECK.php ( к сож. переименовать файл списка, на момент использования, было нельзя ), затем скармливаем этот список айболиту. SCAN_DAYS может быть равным одному дню. Если поставить bash /root/ai/run.sh в ежедневный крон, то список файлов на проверку может быть не очень большим. Соотв. проверка займет не много времени и не будет сильно нагружать сервер.