Антивирус для Ubuntu — просто и надёжно

В состав антивируса входит несколько утилит, включая гибкий и масштабируемый многопоточный демон, сканер командной строки и продвинутый инструмент для автоматических обновлений баз данных. Для установки и обновления утилит антивируса разработчики рекомендуют использовать репозитарии пакетов. В 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.

»

Оцените статью
Про Ubuntu — блог о популярном СПО GNU/Linux-дистрибутиве Ubuntu (Убунту Линукс)