Антивирус DataLife Engine — разбираем по косточкам

в 13:28, , рубрики: cms, dle, антивирус, защита, метки: , ,

Всем доброго времени суток.

И так, я уже много лет занимаюсь популярной CMS DataLife Engine и помогаю владельцам сайтов справляться с ней. Сегодня я решил поделиться с Вами знаниями об одной из функций DLE – антивирус.

Наверное большинство из Вас, кто уже ставил DLE, видел кнопку Антивирус в админ-панели, но мало кто ей пользовался. А зря.
Вот и сегодня ко мне обратился человек с просьбой помочь ему удалить очередную бяку из DLE. Поэтому напишу как правильно пользоваться антивирусом DLE.

Первое, что надо знать: антивирус не даёт 100% защиты. В его работу так же могут вмешаться. Посему, если Вы не уверены в его подлинности — перезалейте файл с антивирусом. Он расположен в файле /engine/classes/antivirus.class.php.

Второе — антивирус не панацея. Он не проверяет файлы кеша, js, tpl и т.д.

Третье — антивирус не говорит что именно с файлом, а лишь указывает, что он был изменён.

И так, как же пользоваться этим чудом? На самом деле очень легко. В панели администратора на главной странице нажимаете кнопку «антивирус» и наслаждаемся результатом. А вот что делать дальше? Я отвечу на самые популярные вопросы.

Что означают цвета файлов?
Только размер файлов.
Зелёный — файлы меньше 50000 байт
Синий — меньше 100000 байт
Красный — больше.
Вот кусок файла, отвечающий за цвета:

    if ($data['file_size'] < 50000) $color = "<font color="green">";<br />
    elseif ($data['file_size'] < 100000) $color = "<font color="blue">";<br />
    else $color = "<font color="red">";

Что такое «Сделать снимок»?
Использовать DLE из коробки — не самая хорошая идея. Функционала не хватает — приходится править файлы. Снимок — это возможность сохранить изменения в файлах в специальный файл — /engine/data/snap.db. В него записываются все PHP-файлы и их хеши. При следующей проверки он будет использован для сравнения. Кроме того, snap.db содержит информацию о Ваших шаблонах, JS-файлах и т.д.

Что такое «Провести тщательное сканирование»?
В DLE есть список PHP-файлов, которые есть в коробке. Он прописан внутри самого antivirus.class.php. Если нажать эту кнопку — проверка будет проходить не по snap.db, а по этому списку.

А если я не делал снимок — как проверяет?
Так же, как при «тщательном сканировании»…

Если нет снимка — он проверят размер файла?
Нет, если нет снимка, DLE не проверяет ни размер, ни хеш… Только список файлов.

Хорошо, я нашёл изменённые/новые файлы — что дальше?
Проверять руками! Только руками!
1) Открываем файл и смотрим что в нём.
2) Вспоминаем, не относится ли он к каким-либо модулям.
3) Сравниваем файл с файлом из дистрибутива DLE или модуля.
4) Если файл не совпадает или отсутствует в дистрибутивах — удаляем или заменяем.

Может ли антивирус найти вирус в JS или файлах шаблона?
Нет, не может. Я уже писал, что антивирус проверяет только файлы PHP. Однако, если Вы сделали файл снимка — то да, он будет проверять и JS-файлы, и даже шаблоны.

А может злоумышленник обойти этот антивирус?
Естественно. И способов это сделать много. Во-первых, вредоносный код в JS-файлах не будет найден антивирусом, так же и в файлах шаблона. Но это не самое страшное, т.к. исправляется созданием снимка. Никто не мешает злоумышленнику внести изменения в файлы antivirus.class.php или snap.db — и всё, антивирус обезврежен.
Однако по личному опыту, очень мало злоумышленников занимаются ковырянием антивируса именно по причине того, что им пользуется весьма мало веб-мастеров.

Но всё же, как защитить себя на 100%?
На 100% Вы себя защитите выдернув шнур из розетки или блока питания Вашего системного блока. Но вот повысить шансы можно.
1) Настраиваем крон. Если не умеете — ждите следующую статью.
2) Проверяйте руками.
3) Перед проверкой, если не уверены, перезалейте файл antivirus.class.php
4) Всегда делайте и храните у себя на флешке или ещё где-то файл snap.db — это Ваша безопасность
5) Перед проверкой залейте файл snap.db из Вашей копии на сервер

Если он не даёт защиту на 100%, зачем он нужен?
Антивирус нужен для того, чтобы усложнить жизнь взломщику. Да, он не защитит от 100% взломов, но может помочь минимизировать последствия и ускорить восстановление заражённого сайта.

Ещё говорят, что есть крон, который делает это автоматом.
Есть, но это тема следующей статьи… Она уже готовиться.

Что ещё можно посоветовать в плане защиты DLE?
Встроенный антивирус, как я уже говорил, не даёт 100% защиты потому что его расположение известно и добавить хеш вируса в список не так сложно. Но есть и другие варианты.

Пару лет назад в интернете появился т.н. Zeos Antivirus. К сожалению, этот проект был заброшен. Смысл его был такой: файл PHP антивируса заливается в произвольное место. Где именно он будет находиться будет знать только администратор. Файл слепка он хранит в картинке, которая лежит в папке uploads, так что найти его почти не реально. Увы, найти дистрибутив мне не удалось, возможно описание поможет Вам найти схожий скрипт.

Есть ещё новое решение в сфере защиты. Система называется САНТИ, ознакомиться можно на сайте santivi.com. Система полностью бесплатна и позволяет реализовать защиту сайта удалённым методом. Опять же данную систему сложно обнаружить на сайте, что усложнит взлом.

Немного о ПО

Ну и немного о том, как же можно сверять изменённые файлы с дистрибутивом. Есть замечательные программы, такие как WinMarge, Beyond Compare 3 и т.д., позволяющие реализовывать что-то типа SVN. Они создают отчёты по изменённым файлам, показывая изменённые строки и что именно было изменено. Весьма удобно.

Благодарю за внимание. На Ваши вопросы с удовольствием отвечу в комментариях.

P.s. Это моя первая статья для Хабра, поэтому прошу меня сильно не пинать, а подсказать советами по улучшению.

Автор: MVLGorbushka

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js