Moodle: проверка файлов на вирусы

Дано: Moodle 3.2 (Windows Server 2012 R2 + IIS + PHP + Microsoft SQL Server 2014).
Задача: настроить антивирусную проверку всех файлов, загружаемых в систему Moodle.
Т.е. при загрузке файла должно выводиться сообщение о зараженном файле и файл не загружался.




В качестве антивируса мы выбрали бесплатный ClamAV. Почему именно он? Плагин для работы с данным антивирусом уже встроен в ядро Moodle. 
Примечание: перед следующими действиями рекомендуется сделать бэкап сервера.

Установка антивируса ClamAV на Windows Server 2012R2

Скачиваем дистрибутив с официального сайта (x64).


На некоторых форумах не рекомендуют устанавливать в папку по умолчанию (program files) из-за наличия в наименовании пробела, т.к. может в дальнейшем возникнуть проблема с запуском. Поэтому нужно самим определить, куда устанавливать антивирус.
В нашем случае была выбрана папка "wa" на диске С - C:\wa\ClamAV64


Устанавливаем ClamAV в выбранную директорию:


Далее создаем вручную следующие папки, если они отсутствуют в каталоге с антивирусом:
- database
- log
- tmp

Теперь из папки "conf_examples" копируем конфигурационные файлы в корень программы. Получаем для файла - clamd.conf и freshclam.conf.


Перед запуском антивируса необходимо загрузить его базы. Поэтому первоначально настраиваем freshclam.conf. Удаляем строку "example" в начале файла и указываем следующие параметры:
DatabaseDirectory C:\wa\ClamAV64\database
UpdateLogFile C:\wa\ClamAV64\log\freshclam.log
Остальное по желанию.



Теперь запускаем загрузку баз при помощи файла freshclam.exe:


Если при запуске выходит примерно такое сообщение об ошибке:
ERROR: Can't open C:\wa\ClamAV64\log\ in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = C:\wa\ClamAV64\log\).
Это означает, что в конфиге неверно настроены пути.

Успешный результат должен быть примерно таким:

C:\wa>C:\wa\ClamAV64\freshclam.exe
ClamAV update process started at Fri Mar 03 22:52:23 2017
nonblock_recv: recv timing out (30 secs)
WARNING: getfile: Error while reading database from database.clamav.net (IP: 185.100.64.62): Unknown error
WARNING: Can't download main.cvd from database.clamav.net
Trying again in 5 secs...
ClamAV update process started at Fri Mar 03 22:52:59 2017
Downloading main.cvd [100%]
main.cvd updated (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
nonblock_recv: recv timing out (30 secs)
WARNING: getfile: Download interrupted: Unknown error (IP: 194.186.47.19)
WARNING: Can't download daily.cvd from database.clamav.net
Trying again in 5 secs...
ClamAV update process started at Fri Mar 03 22:55:49 2017
main.cvd is up to date (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
Downloading daily.cvd [100%]
daily.cvd updated (version: 23161, sigs: 1709548, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 290, sigs: 55, f-level: 63, builder: neo)
Database updated (5928393 signatures) from database.clamav.net (IP: 85.254.217.235)

Примечание: странно, что не всегда при первом запуске происходит загрузка баз. Утилита ругается, что не может получить базы данных. Если так, попробуйте запустить загрузку еще раз.

Теперь, если зайти в папку database, увидим загруженные базы:


Проверка работы антивируса ClamAV

Теперь можно проверить, работает ли антивирус, попробовав просканировать какой-либо файл.
Если просто запустить clamscan.exe он начнет сканировать все файлы в текущей папке.
Конкретный файл указываем в параметрах командной строки:


Пример, если файл не заражен:

C:\Windows\system32>C:\wa\ClamAV64\clamscan.exe "C:\Users\Administrator\Downloads\README.zip"
C:\Users\Administrator\Downloads\README.zip: OK
----------- SCAN SUMMARY -----------
Known viruses: 5922686
Engine version: 0.99.2
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 21.469 sec (0 m 21 s)

Проверка на тестовом файле вируса Икар (Eicar): (скачать можно тут - http://www.eicar.org/85-0-Download.html)


В результате получим ответ о наличии вируса: Eicar-Test-Signature FOUND.

Примечание: прямой запуск clamscan.exe и проверка файла на моем тестовом сервере давало значительную задержку примерно в 15 секунд.

Настройка антивируса ClamAV в Moodle

Теперь можно пробовать настроить проверку на вирусы непосредственно в Moodle.
Для этого переходим в Администрирование - Плагины - Антивирусы - Антивирусные плагины - Управление антивирусными плагинами. Нужно включить плагин "Антивирус ClamAV":


Затем в настройках плагина надо указать путь к запускному файлу антивируса:
C:\wa\ClamAV64\clamscan.exe


После сохранения, можно пробовать загрузить любой файл или тестовый вирус (например, в личные файлы).
При зараженном файле должно выдаваться сообщение (см. самый первый скриншот):
Файл file.exe, загруженный Вами, был проверен антивирусом и является инфицированным. Загрузка файла НЕ была успешно завершена.
И в итоге файл не загружается. В случае успешной проверки, загрузка происходит стандартно.
Однако здесь же также проявился недостаток, указанный выше, а именно: задержка при проверке.

Чтобы ускорить время проверки, желательно установить "демон" антивируса (в виде системного сервиса), тогда проверка будет проходить в разы быстрее.

Установка сервиса clamd.exe на Windows Server 2012R2

Предварительно необходимо настроить конфигурационный файл clamd.conf.
Рекомендуется указать следующие параметры:
LogFile C:\wa\ClamAV64\log\clamav.log
LogFileMaxSize 20M
LogTime yes
TemporaryDirectory C:\wa\ClamAV64\tmp
DatabaseDirectory C:\wa\ClamAV64\database
TCPSocket 3310
TCPAddr 127.0.0.1

Остальные параметры по желанию. Например, мы установили "MaxFileSize 10M", чтобы файлы более 10 Мб не сканировались, т.к. такой размер может загрузить только администратор (ограничение, установлено на уровне Moodle).

Теперь необходимо файл clamd.exe установить в качестве сервиса Windows.

Прежде чем применять утилиты, пробовала установить "демон" напрямую как сервис при помощи встроенной в систему утилиты sc.
sc create "ClamdAntivirusService" binPath= "C:\wa\ClamAV64\clamd.exe" DisplayName= "Антивирус ClamAV для Moodle" type= share

Однако запустить таким образом установленный сервис так и не получилось. Вариации с разными параметрами не дали результат. При запуске появлялась следующая ошибка:
Windows could not start the ClamAV service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion.


Решения по данной ошибке, предлагаемые на форумах, не дали результата, поэтому пришлось использовать специальные утилиты для настройки сервиса "демона".

Это можно сделать, например, при помощи утилит "instsrv.exe и srvany.exe" или nssm.exe.

Далее устанавливаю сервис при помощи второй утилиты, которую можно скачать с официального сайта - http://nssm.cc/download
Т.к. установки она не требует, распаковываем архив, например, в ту же папку "wa", откуда потом и будем ее запускать для сервиса.



Теперь запускаем установку сервиса командой (запуск из директории win64):
nssm.exe install ClamdAntivirusService

ClamdAntivirusService - любое наименование для сервиса.

Откроется окно настройки:


Указываем путь к "демону" и его директорию:
Path - C:\wa\ClamAV64\clamd.exe
Startup directory - C:\wa\ClamAV64\

На вкладке Details указываем отображаемое имя и описание сервиса, например, "Антивирус ClamAV для Moodle":


Остальные настройки можно оставить по умолчанию. Нажимаем "Install service".

Теперь переходим в список сервисов и запускаем новый сервис:



Теперь проверим его работу. Для этого предназначен файл clamdscan.exe.
Сначала через командную строку.

C:\wa\ClamAV64>C:\wa\ClamAV64\clamdscan.exe R:\Distr\SQLSRV40_WPI64.EXE


Если всё в порядке, то указываем путь к файлу clamdscan.exe в настройке плагина Moodle:


Проверяем работу антивируса, загрузив какой-либо файл. Всё должно работать правильно.

Можно также проверить логи, куда пишутся все инциденты с попыткой загрузить инфицированные файлы:



"Кушает" этот "демон" достаточно много - почти 450 Мб оперативной памяти, а также в момент проверки файла забирает почти 25% процессорных ресурсов.



Для обновления вирусных баз надо запустить утилиту freshclam.exe еще раз. Можно настроить ее запуск в планировщике. После обновления надо сделать перезапуск сервиса.

Что осталось не решено: нет возможности установить ограничение на типы проверяемых файлов (расширения-исключения). У самого антивируса такая настройка есть (например, по документации строка в конфиге "ExcludePath \.zip$" должна исключать сканирование архивов), но она не работает потому, что Moodle отдает антивирусу файлы с расширением tmp. А возможности установить тип загружаемого файла в Moodle пока нет.

(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Комментариев нет :

Отправка комментария