Сергей ЯРЕМЧУК grinder@ua.fm
Сегодня уже никого не надо убеждать в необходимости использования антивируса для защиты компьютера. Пользователи Windows в большинстве своем выберут один из разрекламированных продуктов, тот, который у всех на слуху. Но что делать, какой из программ защиты отдать предпочтение при переходе в Linux? Попробуем разобраться с этим.
Пробежавшись по серверам известных антивирусных компаний, можно практически на каждом из них найти необходимый продукт. Некоторые ориентируют свой антивирус только под серверное ПО, на некоторых сайтах можно найти версию, предназначенную и для индивидуального использования. Версии последних, как правило, предоставляются бесплатно, но условия лицензирования таких антивирусов могут и пересматриваться. Проект, который занимается разработкой полностью свободного антивируса, распространяющегося под лицензией GPL, называется Clam AntiVirus ( http://www.clamav.net ). Первоначальной целью разработчиков этого продукта была интеграция с почтовыми серверами для проверки вложений на предмет наличия вирусов, но на сегодняшний день ClamAV широко применяется и в настольных системах, чему способствуют графические интерфейсы, написанные для него. Антивирус работает на множестве операционных систем: Linux, Solaris, FreeBSD, OpenBSD, NetBSD, AIX, MacOS X, BeOS, HPUX, SCO UNIX, есть порты под Windows, поддерживает несколько архитектур Intel, Alpha, Spare, Cobalt MIPS boxes, PowerPC, RISC 6000. POSIX-интерфейс и общедоступные библиотеки позволяют быстро адаптировать ClamAV к другим приложениям. Программа работает с архивами и сжатыми файлами, в настоящее время есть поддержка RAR, ZIP, GZIP, BZIP2 и некоторых других. Встроена защита от mail-бомб и существенно переработанный и улучшенный milter-интерфейс к программе Sendmail. ClamAV обнаруживает более 30000 вирусов, червей и троянов. Существует онлайновая версия антивируса www.gietl.com/test-clamav. Так как ClamAV - открытый продукт, его развитию может помочь любой желающий. Например, если вам удалось обнаружить вирус, на который ClamAV никак не реагирует, заполнив форму на cgi.clamav.net/sendvirus.cgi или отправив ZIP-архив с паролем virus по адресу virus@clamav.net, можно добавить его в базу данных. Сразу отвечу на вопрос «Зачем пользователям, работающим в Windows, может понадобиться ClamAV?» Во-первых, есть реализации этой программы и под Windows. Во-вторых, иногда попадаются такие запущенные системы, что каждая загрузка может стать для них последней, и очистить жесткий диск от заразы получится, только загрузившись, например, из LiveCD-дистрибутива Linux. Наконец, при желании можно ознакомиться с принципами работы антивирусных программ, ведь все открыто и доступно.
Установка ClamAV
В большинстве дистрибутивов, скорее всего, вы обнаружите этот антивирус в списке приложений, предлагаемых для установки - для работы достаточно будет только обновить базы. Но антивирус развивается так быстро, а эффективность работы с выходом новых версий увеличивается, повышается стабильность, устраняются найденные недочеты и уязвимости (а кто сказал, что их нет и в закрытом ПО?). На сайте проекта доступны как прекомпилированные пакеты, так и архив с исходными текстами. Мы будем устанавливать из исходных текстов, так как это более общий случай.
Для начала создадим пользователя и группу, от имени которых в целях безопасности будет работать антивирус: # groupadd clamav # useradd -g clamav -в /bin/false –с "Clam AntiVirus" clamav
Затем скачиваем и распаковываем архив (кстати, размер архива, в версии 0.60, занимавшего 994 Кб, в последней версии 0.83 вырос уже до 3.48 Мб):
$tar xzvf clamav-0 . 83 . tar .gz $ cd clamav-0.83
И конфигурируем: $./configure
Опций конфигурирования не очень много и вряд ли они вам понадобятся вообще. Так, по умолчанию ClamAV устанавливается в /usr/local и, соответственно, конфигурационный файл будет лежать в /usr/local/etc, его месторасположение на /etc можно изменить, добавив опцию -sysconfdir=/etc или - более глобально - при помощи опции -ргеfix=/
Если конфигурирование завершилось без ошибок, компилируем и устанавливаем: $ make $ su -с "make install"
После окончания установки в нашем распоряжении будет несколько исполняемых файлов:
clamscan - утилита командной строки, предназначенная для проверки файлов и каталогов на предмет наличия вирусов;
clamd - антивирусный демон, прослушивающий подключения к Unix- или ТСР-сокетам и сканирующий каталоги по требованию. Обеспечена возможность on-access просмотра (только Linux и FreeBSD), в паре с clamuko. В последнем случае использован традиционный подход, применяемый в Unix при написании приложений. Так, ClamAV применяется для простой проверки файлов, т.е. сканирования. Если же необходимо, чтобы антивирус постоянно находился в оперативной памяти в качестве монитора и проверял файлы при каждой попытке обращения, используется дополнительный модуль Dazuko (http://dazuko.org).
clamdscan - простой интерфейс к демону clamd, позволяет также сканировать файлы и каталоги, при этом используются те же параметры, что и в clamscan;
clamav-milter (при конфигурировании с опцией –enable-milter) - представляет собой антивирусный интерфейс к sendmail, использует для просмотра почты clamd;
freshclam - утилита автоматического обновления вирусной базы данных через Интернет, позволяющая держать ее в самом современном состоянии;
sigtool - генерирует вирусную сигнатуру, используя внешний антивирусный сканер, который способен обнаружить неизвестный ClamAV вирус. Может создавать шестнадцатеричный дамп, формировать и распаковывать CVD-базу данных (ClamAV Virus Database).
Утилиты из комплекта
Теперь по порядку и поподробнее. Проверить текущий каталог на наличие вирусов можно, просто набрав clamscan без каких-либо параметров. В результате получим список проверенных файлов и отчет. Список просканированных файлов позволяет оценить работу утилиты с различными типами файлов на начальном этапе, но в большинстве случаев лучше добавить параметр -i для вывода только зараженных файлов. Указать на файлы, находящиеся в другом каталоге, можно, перечислив их в строке запуска - или, если проверяется каталог, указать путь к нему, не забыв опцию -г для рекурсивного обхода (для проверки работы антивируса с пакетом поставляется несколько тестовых файлов):
$ clamsoan -r -i /mnt/hda5
Опция -database= позволяет указать месторасположение дополнительной антивирусной базы. Также по умолчанию программа не ведет никаких логов, при запуске через сгоп это не совсем удобно, т.к. теряется контроль над работой программы. Тогда при помощи -log= указываем, в какой файл их заносить. При необходимости частичной проверки файлов каталога можно воспользоваться опциями -ехclude=PATT и -include=PATT. Первая позволяет указать шаблоны файлов, которые не надо проверять, а вторая - наоборот, только те, которые и надо просканировать в поиске вирусов. Наконец, опция -mbox включает сканирование почтовых каталогов и файлов:
#clamscan -r-mbox /var/spool/mail
Или можно проверять выход другой программы на наличие вирусов:
#cat testfile I clamscan
Кроме вывода информации об обнаружении вируса мож.но удалить (-remove)-или переместить (-move=DiRECTORY) такие файлы в другой каталог. Обычно при работе с архивами программа сама находит нужную утилиту для распаковки, дополнительных указаний ей не надо, но если появляются сообщения вроде /mnt/test/test.zip: Zip module failure, указываем ей на необходимость проверки архивов, и если не видно нужного архиватора в переменной $ратн, то прибавляем и местонахождение такой программы. Например, для гаг
-unrar [=fullpath]
Для zip-архива строка запуска может выглядеть так:
# clamscan -unzip /mnt/test/test.zip
После чего программа должна вывести список всех файлов архива с результатами проверки. И еще одна проблема может подстерегать при проверке архивов. Выглядит она так:
Write error (disk full?) . Continue? (y/n/^C)
Каталог /tmp забивается таким образом очень быстро, т.е. закинув большой архив, можно провести DOS-атаку. Чтобы избежать этого, следует указать при помощи -tempdir= на другой каталог, в котором побольше свободного места.
Также можно установить максимальное количество извлекаемых за раз файлов (-max-files=#n) или извлечь сначала #n килобайтов архива (использовав nM или nm) можно определить количество.мегабайт) при помощи
-maxspace=#n
Можно просто указать на максимальный уровень рекурсии обхода архива -max-recursion=#n
В следующем примере используем новую антивирусную базу и ограничиваем размер временных файлов в 50 мегабайт, заодно проверяем архивы:
#clamscan -d /tmp/newclamdb -tgz -deb -unrar -max-space=50m -r /home
Я надеюсь, по clamscan все понятно. Главное отличие демона clamd от сканера состоит в следующем: он один раз при старте загружает все необходимые базы и настройки, после чего остается в оперативной памяти, постоянно готовый к работе. В своей работе он использует конфигурационный файл clamav.conf
Если запустить программу без дополнительного редактирования (в том случае, если установка происходила из сырцов), демон откажется работать:
#/usr/local/sbin/clamd ERROR: Please edit the example config file /usr/local/ etc/clamav.conf ERROR: can't parse the config file /usr/local/etc/ clamav.conf
Файл хорошо комментирован, опции описаны в man. Чтобы заставить работать демон в умолчальной конфигурации, достаточно убрать или закомментировать строку Example в самом начале файла. Запущенный демон ничего не делает. Чтобы определить, чем именно сейчас ему стоит заниматься, необходимо послать сигнал, либо, что более удобно, использовать утилиту clarridscan. Например:
#clamdscan /home
Утилита автоматического обновления антивирусных баз может запускаться в двух режимах: интерактивном - из командной строки, - и как демон. Утилита использует базу http://database.clamav.net для автоматического выбора зеркала. В комплекте имеется также список таких баз, в файле mirror.txt - утилита пробует соединиться с первым в списке и в случае неудачи последует по порядку далее. Можно подобрать для себя оптимальный вариант и поставить его первым.
Для начала следует запустить утилиту без параметров; если все нормально, то следом создать лог-файлы, необходимые для работы:
# touch /var/log/clam-update.log # chmod 600 /var/log/clam-update.log # chown clamav /var/log/clam-update.log
Для запуска в режиме демона используется опция -d.
# freshclam -d -с 3 -l /var/log/clam-update.log
Параметр -с указывает на промежуток времени обновления базы в днях (число от 1 до 50). Для указания отличной от умолчания директории, в которую должны помещаться обновления, используйте опцию -datadir=
Прокси можно указать двумя способами. Первый - задать в командной строке параметры -http-proxy=hostname[:port] и при необходимости указать пароль для доступа: -proxy-user= user:password. Второй вариант - установить в нужное значение переменную $http_proxy:
#texport http_proxy="proxy. server: 8080”
Для контроля за обновлениями можно воспользоваться параметрами -on-error-execute=COMMAND и -on-update-execute=COMMAND. Первая позволяет задать команду, которая будет выполнена при неудачном обновлении баз, вторая - наоборот, при успешном проведении обновления.
Для одноразового запуска утилиты в случае необходимости немедленного обновления она запускается без опции -d (да и -с смысла не имеет).
Остальные параметры при этом остаются теми же. В rpm-пакете лежит файл-шаблон /etc/sysconfig/freshclam, в котором можно заполнить соответствующие поля для установки всех вышеперечисленных параметров, а запускать утилиту предстоит при помощи скрипта /etc/init.d/freshclam
Можно для запуска использовать и cron, занеся в /etc/crontab для еженедельного обновления примерно такую строку.
0 00 * * 07 /usr/local/bin/freshclam-quiet -I /var/ log/clam-update.log
Остальные утилиты -sigtool, которая позволяет самим создать готовую сигнатуру для добавления в свою антивирусную базу, а также посмотреть внутрь баз, и clamav-milter, которая применяется на почтовых серверах - хотя и представляют интерес, но у большинства домашних пользователей применение вряд ли найдут.
Интерфейсы о реализации под Windows и все остальное
За относительно короткое время своего развития ClamAV получил вполне приличное количество интерфейсов, портов и всего прочего, облегчающего работу и интеграцию в приложения. Список некоторых из них можно найти в README-файле, а в clamdoc.pdf дано краткое их описание, занимающее несколько страниц.
Самым известным и быстро развивающимся фронт-эндом на сегодняшний день является KlamAV ( http://sourceforge.net/projects/klamav ), построенный на QT-библиотеках и ориентированный в первую очередь на использование в KDE. Поддерживается on-access и ручной режим сканирования, обновление антивирусных баз, карантин, просмотр почты для KMail и Ximian Evolution. Для удобства поставляется вместе с Dazuko, из последних версий для экономии размера сам ClamAV был убран, и его необходимо устанавливать отдельно.
Clamaktion ( http://web.tiscali.it/rospolosco/clamaktion ) позволяет пользователям КDЕ 3 проверять файлы и каталоги при помощи контекстного меню.
Есть еще интерфейсы CiamShell ( http://home.comcast.net/~schwalbrichard ), написанный на Java, и ClamTk - ( http://www.rootshell.be/~phenOm/clamtk ) - на Perl-tk, модуль к Webmin wbmclamav ( http://wbmclamav.labs.libre-entreprise.org ).
Кроме того, почтовые клиенты KMail ( http://kmail.kde.org ) и Sylpheed Claws ( http://claws.sylpheed.org ) позволяют просматривать почтовые вложения при помощи ClamAV.
По адресу http://www.sosdg.org/clamav-win32 найдете консольную версию антивируса, портированную под Windows, принципы работы которой не отличаются от Linux-версии.
Версия, имеющая графический интерфейс, лежит на ClamWin ( http://www.clamwin.net ). Она обеспечивает только сканирование по запросу, но может интегрироваться в Microsoft Outlook, проверяя почтовые вложения, или в Windows Explorer, добавляя в контекстное меню пункт “Проверить на вирусы”.
Существуют графические версии и под другие операционные системы. Например, BeClam ( http://www.bebits.com/app/3930 ) для BeOS, damXav ( http://www.markallan.co.uk/clamXav ) для MacOS X.
Антивирус пришелся по вкусу многим, в том числе администраторам, которые доверили свои серверы ClamAV, а также пользователям, беспокоящимся о безопасности своих компьютеров. Не верите - загляните на страницу http://clamav.sourceforge.net/whos.html#pagestart. Возможно, приведенный там список заставит вас пересмотреть свое отношение к этому продукту.
---- Примечание "Клуба": в США уже действует закон, по которому владелец компьютера, зараженного вирусом, если от него заразились другие компьютеры, несет судебную ответственность. В связи с этим было уже несколько судебных процессов.