В состав антивируса входит несколько утилит, включая гибкий и масштабируемый многопоточный демон, сканер командной строки и продвинутый инструмент для автоматических обновлений баз данных. Для установки и обновления утилит антивируса разработчики рекомендуют использовать репозитарии пакетов. В Debian/Ubuntu для поиска нужных приложений используем команду:
$ sudo apt-cache search clamav
И ставим основной набор:
$ sudo apt-get install clamav
В процессе инсталляции будет создан системный пользователь и группа clamav. Теперь стало возможным проверять файлы. ClamAV предлагает несколько вариантов. Самый простой — использование утилиты clamscan. В архиве антивируса, в подкаталоге test
, есть несколько тестовых вирусов, при помощи которых можно проверить работу ClamAV. Если вызвать clamscan без параметров, будет проверен текущий каталог. Такой режим позволяет оценить работу утилиты с различными типами файлов, чтобы определиться с ее возможностями на начальном этапе. Затем лучше добавить параметр -i
для вывода только заражённых файлов:
$ clamscan -i
…
/home/zbober/virus/KIT.EXE: Kit.1 FOUND
/home/zbober/virus/J!CT-C.COM: CaptainTrips FOUND
———— SCAN SUMMARY ————
Known viruses: 295018
Engine version: 0.92.1
Scanned directories: 1
Scanned files: 3732
Infected files: 3691
Data scanned: 3.22 MB
Time: 40.905 sec (0 m 40 s)
Для звукового оповещения о найденном вирусе воспользуйся опцией --bell
.
Кстати, никто не мешает поступить и так:
$ cat CK.COM | clamscan -
stdin: Ck FOUND
Проверить любой другой каталог (при наличии прав) можно, просто указав путь к нему в строке запуска. По умолчанию подкаталоги не проверяются, но этого легко добиться за счет параметра -r
, разрешающего рекурсивный обход:
$ clamscan -r -i ~/soft
Также полезными могут оказаться опции –exclude=путь
и –include=путь
. Первая позволяет указать шаблоны файлов, которые нужно исключить из поиска, а вторая, наоборот, только те, которые нужно сканировать при поиске вирусов.
По умолчанию глубина рекурсии для каталога составляет 15, для файлов архива – 8. Такое ограничение установлено для того, чтобы избежать DoS-атак. Но его можно изменить при помощи параметров --max-recursion
(для архивов), --max-dir-recursion
(каталоги) и --max-mail-recursion
(e-mail).
В обычном режиме программа просто сообщает о найденном вирусе. Используя дополнительные ключи, можно выполнить следующие действия: удалить вирус (--remove
), переместить (--move=путь
) или скопировать (--copy=путь
) файлы в другой каталог.
При работе утилита «молчалива». Это очень неудобно при запуске через cron. Но ничего страшного: опция --log=куда
заведет журнал событий.
Если ты создал свою антивирусную базу (об этом чуть ниже), указать на нее можно с помощью --database
. Параметров у clamscan много; за подробностями обращайся к clamscan(1). Добавляя ключи, можно помечать вирусы и блокировать битые исполняемые файлы (—detect-broken), обычные (—block-max), зашифрованные архивы (—block-encrypted) и многое другое.
Обновление баз
Для обновления антивирусных баз разработчиками предлагается утилита freshclam. Она идет в отдельном пакете clamav-freshclam, но обычно указана в зависимостях основных пакетов clamav. Обновление можно производить в двух режимах: интерактивном, запуская ее в строке терминала, – и как демон.
Утилита для автоматического выбора зеркала использует базу database.clamav.net. Затем производится попытка соединиться с первым зеркалом в списке (в случае неудачи – со следующим). Вначале необходимо запустить утилиту без параметров:
$ sudo freshclam
Если все нормально, в дальнейшем для запуска freshclam и ежедневного обновления можно использовать cron:
$ sudo crontab -e
0 0 0 * * * /usr/local/bin/freshclam —quiet \
-l /var/log/clam-update.log
Как вариант: запускать ее в режиме демона. Для этого лишь следует добавить параметр ‘–d‘:
$ sudo freshclam -d -c 2 -l /var/log/clam-update.log
Параметр ‘-с‘ указывает на количество обновлений в день (число от 1 до 50). При необходимости в строке запуска можно указать прокси и другие параметры. Как правило, в пакеты майнтайнеры добавляют свои скрипты для запуска freshclam. В Ubuntu для запуска демона достаточно выполнить команду:
$ sudo /etc/init.d/clamav-freshclam start
При загрузке freshclam считывает параметры из файла /etc/clamav/freshclam.conf, которые можно переопределить в строке запуска. За количество обновлений в день отвечает параметр Checks. Например, чтобы обновлять базу каждый час, пишем:
Checks 24 Моллюсковый демон
Вводить каждый раз параметры неудобно, да и не нужно. При больших объемах проверяемых данных разработчики предлагают использовать многопоточный демон clamd. В отличие от сканера, демон загружает все необходимые базы и настройки один раз при старте, а затем постоянно находится в полной боевой готовности. В Ubuntu он входит в отдельный пакет:
$ sudo apt-get install clamav-daemon
Демон загрузится и будет ожидать запросы. Если установка производилась из сырцов, то clamd при первом запуске работать откажется:
$ sudo /usr/local/sbin/clamd
ERROR: Please edit the example config file /etc/clamav/clamd.conf
ERROR: Can’t parse the config file /etc/clamav/clamd.conf
Поэтому сразу после установки пакета нужно убрать или закомментировать строку Example в самом начале /etc/clamav/clamd.conf.
Анализ конфига не всегда дает представление обо всех настройках. Например, установки по умолчанию в файле могут быть опущены. Чтобы узнать действующие настройки, необходимо заюзать утилиту clamconf. При запуске без параметров она выведет все настройки из файлов clamd.conf, freshclam.conf, в том числе и установки по умолчанию (если не применять «—non-default»), а также используемую версию антивирусных баз.
Не всегда установки в clamd.conf оптимальны! В зависимости от назначения компьютера их следует пересмотреть и скорректировать, чтобы не удивляться потом, что зашифрованные архивы не получается скачать с файлового сервера или получить по почте. Обо всех параметрах рассказывать не буду, – их слишком много, к тому же, назначение части из них очевидно и так. Остановлюсь только на самых важных. Демон может работать в сетевом или локальном режиме. В целях безопасности для проверки рекомендуется использовать локальный сокет:
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
Хотя для некоторых программ clamd придется подвешивать на сетевой интерфейс (в данном случае – интерфейс обратной петли):
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
Месторасположение антивирусных баз указывается при помощи DatabaseDirectory:
DatabaseDirectory /var/lib/clamav
Чтобы подключить clamd к Clamuko (интерфейс к Dazuko) для on-demand сканирования, добавляем следующие строки:
$ sudo vim /etc/clamav/clamd.conf
ClamukoScanOnAccess yes
# Выбираем, в каких случаях проверять файл
ClamukoScanOnOpen yes
ClamukoScanOnClose yes
ClamukoScanOnExec yes
# Данные каталоги будут проходить проверку
ClamukoIncludePath /home
ClamukoIncludePath /var/ftp/upload
# Данные каталоги будут исключены из проверки
ClamukoExcludePath /home/zbober/.ssh
# Максимальный размер проверяемого файла (0 – без лимита, 5 Мб – по умолчанию)
ClamukoMaxFileSize 50M
Чтобы заставить демона работать, пошли ему сигнал или используй утилиту clamdscan. Достаточно указать на каталог или файл, который нужно проверить:
$ clamdscan ~/soft
При необходимости можно переопределить режим работы демона для конкретной задачи, указав требуемые параметры в строке запуска clamdscan.
Правим базы
В ClamAV есть возможности, отсутствующие в других антивирусах: добавление собственной сигнатуры и правка CVD (ClamAV Virus Database) баз. Для этого в комплекте поставляется специальная утилита sigtool. Конечно, обычному юзеру не дело заниматься созданием сигнатур, но зато ты не останешься один на один с вирусами во время очередной эпидемии. И получишь неплохую практику. В архиве исходных текстов находится документ «Creating signatures for ClamAV», в котором описано, как получить сигнатуру из тестовых «вирусов», поставляемых вместе с ClamAV.
Мне повезло: в коллекции нашелся вирус, который не распознавался ClamAV. Анализ файла при помощи онлайн-сервиса Virustotal www.virustotal.com/ru показал, что о нем «знают» 17 из 32 антивирусов. Что интересно, первый анализ этого файла на ресурсе датирован еще 2006 годом. Антивирус Avast назвал его «Win32:Trojan-gen», AVG – «IRC/BackDoor.SdBot3.DDW». Кстати, Касперский и Dr.Web молчат, как рыбы; интересно узнать, почему.
Самый простой способ создать сигнатуру – записать его MD5 сумму:
$ sigtool —md5 test.exe > test.hdb
Смотрим, что внутри:
$ cat test.hdb
adcbe9468bba150083d53f4294e15ffa:64000:test.exe
Теперь проверяем, подключив новую базу:
$ clamscan -d test.hdb test.exe
test.exe: test.exe FOUND
Вирус определился, но стоит ему только заразить другой файл, как схема будет неэффективна. В этом случае необходимо сохранить в базу специфическую часть. Чтобы получить дамп, нужно добавить параметр «—hex-dump».
$ cat test.exe | sigtool —hex-dump > virus.sig
Либо воспользоваться любым другим редактором или приложением. Например, подойдет и файловый менеджер Midnight Commaner. Авторы некоторых вирусов оставляют комментарии, которые можно найти при помощи штатной утилиты string, а потом перевести в hex. Запись в базе вирусов ClamAV в самом простом случае выглядит так:
Имя вируса=Hex-сигнатура
Этот метод работает на ура. Можно создать свою базу или занести новые сигнатуры в базу данных daily.
В ClamAV используются две базы: постоянная (main) и для ежедневных обновлений (daily). Их расположение можно узнать из переменной DatabaseDirectory. В пакетах из репозитария эти базы, как правило, находятся в распакованном виде (в Ubuntu – /var/lib/clamav). В архиве исходных текстов они поставляются в упакованном виде (файлы с расширением cvd). После установки их можно найти в каталоге /usr/share/clamav. Для распаковки баз используется sigtool с ключом «—unpack»:
$ sigtool -–unpack=daily.cvd
После чего в текущем каталоге появится несколько файлов. Если открыть любой в текстовом редакторе, то можно увидеть, что он состоит из строк «имя:хэш». Добавляем в одну из них сигнатуру и просчитываем новую контрольную сумму измененного файла:
$ cat virus.sig >> daily.db
$ md5sum daily.db >> daily.info
После чего правим daily.info, чтобы запись выглядела так:
daily.db:e82aa698a151e242aaee0edd3c36fe85
Не забудь удалить предыдущую запись. Теперь можно пользоваться обновленной базой.
Заключение
Для удобства пользователей разработано несколько неплохих фронт-эндов. Самый известный из них – KlamAV (klamav.sf.net), построенный на QT-библиотеках и предназначенный для работы в среде KDE. Поддерживается «on access» и ручной режим сканирования, обновление антивирусных баз, карантин, просмотр почты для KMail и Ximian Evolution. Clamaktion (web.tiscali.it/rospolosco/clamaktion) позволяет пользователям KDE 3.1 и старше проверять файлы и каталоги при помощи контекстного меню.
Надеюсь, теперь проблем с проверкой файлов на вирусы в *nix не у тебя будет.
Установка Dazuko в Ubuntu
Чтобы ClamAV сканировал файл при доступе, необходим модуль Dazuko. В портах ранних версий Ubuntu (от Dapper до Gutsy) присутствовал пакет с исходными текстами dazuko-source, а вот в Hardy он пропал. Чтобы его установить, придется пересобрать ядро (так как Security Capabilities должен быть собран в виде модуля). В /usr/src/linux/.config это должно выглядеть так: «CONFIG_SECURITY_CAPABILITIES=m».
Далее скачиваем и распаковываем в /usr/src архив с исходными текстами Dazuko:
$ mv dazuko-2.3.4.tar.gz /usr/src/
$ tar xvf dazuko-2.3.4.tar.gz
$ cd /usr/src/dazuko-2.3.4
Конфигурируем, компилируем:
$ sudo ./configure
$ sudo make
$ sudo make test
Если нет ошибок, ставим:
$ sudo make install
Загружаем модуль, перед этим выгрузив capability.
$ sudo rmmod capability
$ sudo modprobe dazuko
$ sudo modprobe capability
В некоторых случаях работе может мешать AppArmor:
$ sudo rmmod apparmor
После загрузки модуля должен появиться файл /dev/dazuko.
Сборка пакета в Debian/Ubuntu
Иногда приходится прибегать к установке из исходных текстов. Например, когда в репозитарии находится старая версия, не имеющая некоторого функционала или содержащая уязвимости. Также при запуске некоторые утилиты могут жаловаться на то, что «Your ClamAV installation is OUTDATES». Лучшим выходом из такой ситуации будет самостоятельная сборка пакета. В Debian/Ubuntu сделать это довольно просто. Сначала скачиваем библиотеки и утилиты для компиляции ClamAV:
$ sudo apt-get build-dep clamav
И программы для сборки пакета:
$ sudo apt-get install fakeroot dh-make
Получаем с сайта проекта последнюю версию ClamAV, распаковываем, заходим внутрь каталога и даем команду:
$ dh_make –createorig
На запрос о типе пакета нажимаем (single), затем подтверждаем параметры, нажав . Теперь собираем пакет:
$ dpkg-buildpackage –rfakeroot –d
После сборки устанавливаем пакет при помощи dpkg.
INFO
В своей работе демон использует конфигурационный файл /etc/clamav/clamd.conf. Конфиг хорошо прокомментирован, все параметры подробно расписаны в clamd.conf(5).
При помощи утилиты sigtool можно самостоятельно добавить информацию о неизвестном вирусе в базу ClamAV.
В архиве с исходными текстами есть init-скрипты для *BSD, Solaris, RedHat и SuSE. При желании их легко адаптировать под свой дистрибутив.
Что интересно, в одних тестах ClamAV выступает, как минимум, на «хорошо», показывая приличную скорость сканирования и впечатляющие результаты определения, а в других – явно проигрывает.
Помочь проекту в дальнейшем развитии можно по-разному. Например, если тебе попался вирус, не обнаруживаемый ClamAV, или, наоборот, файл, ошибочно принимаемый за вирус, то имеет смысл отправить его разработчикам, заполнив форму по адресу www.clamav.net/sendvirus.
»