- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF131:ClamAV
Материал из Linuxformat.
Содержание |
ClamAV: Ставим антивирус
- В развитие темы безопасности, Боб Мосс расскажет, как защитить систему от вирусов и вредоносного ПО.
В прошлом месяце мы научились устанавливать и на страивать SELinux так, чтобы снизить ущерб, который вредоносное ПО способно причинить нашей любимой Linux-системе. В этот раз мы шагнем дальше и узнаем, как найти и изолировать вирусы в компьютерной сети, прежде чем прибегать к SELinux или AppArmor в надежде, что они спасут положение. Мы также затронем важный вопрос: так ли безопасен Linux, как следует из его репутации?
Пользователи Gnome, вероятно, найдут ClamAV под псевдонимом ‘Virus Scanner’ [Антивирус]: проект ClamTK предлагает для программы дружелюбный интерфейс на основе библиотеки gtk2‑perl. При установке пакета ClamTk из репозитория своего дистрибутива вы можете обратить внимание, что эта оболочка не самой последней версии, но, к счастью, пакеты для любой системы на основе Red Hat или Debian можно загрузить с сайта http://clamtk.sourceforge.net, а пользователи других дистрибутивов могут собрать ее из исходников обычным образом. Пользователи KDE также могут обратить внимание на KlamAV или его замену clamav-kde, доступные в репозиториях большинства дистрибутивов.
Однако, хотя эти интерфейсы продуманы и интуитивно понятны, их функционала хватает только на выполнение самых общих задач; и если вы избрали этот путь, оболочки придется запускать вручную. Гораздо больше мощи и гибкости прячется внутри.
ClamAV доступен в большинстве менеджеров пакетов, но версия в вашем дистрибутиве скорее всего не самая последняя, и вам может не достаться новейшего функционала или более высокого уровня безопасности. Пользователи Ubuntu могут просто перейти в System > Administration > Software Sources [Система > Администрирование > Источники ПО] и выбрать вкладку «Third Party Repository» [Сторонние репозитории], чтобы добавить туда PPA [Personal Package Archive – Персональный архив пакетов]. Наши постоянные читатели вспомнят, что мы рассказывали о PPA в Ubuntu еще в LXF124, но пользователи Ubuntu Karmic могут воспользоваться следующим удобным сокращением:
ppa:ubuntu-clamav/ppa
В более старых версиях Ubuntu наберите вот что:
deb http://ppa.launchpad.net/ubuntu-clamav/ppa/uеbuntu jaunty main
Не забудьте заменить jaunty соответствующим кодовым именем вашей версии. Закрыв диалог добавления репозитория, откройте терминал и выполните следующую команду, чтобы сообщение об ошибке, которое вы только что видели, больше не появлялось:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5ADC2037
Далее, произведите обычное обновление, чтобы загрузить актуальный список репозиториев и пакетов. Пользователи других дистрибутивов могут скачать архив с последней версией исходного кода ClamAV с сайта http://clamav.net/download.
Вскрываем ракушку
Теперь, когда репозитории или пакеты с исходными текстами готовы, пора установить ClamAV. Вы можете выбрать, как он будет запускаться – в виде отдельного приложения или в режиме фонового демона (тогда потребуется добавить пакет clamav-daemon). В обоих случаях будет установлен clamav-freshclam, который будет поддерживать сигнатуры вирусов (и даже сам ClamAV) в актуальном состоянии.
Приложение ClamAV запускается из командной строки, вручную или из скрипта, а демон постоянно работает в фоне. И то, и другое можно реализовать позже, а сейчас нужно только решить, как вы хотите поддерживать антивирусную защиту в своей Linux-системе.
Установив выбранный пакет, перед первой проверкой компьютера обновите вирусные сигнатуры. Это можно сделать через графический интерфейс или просто командой с терминала:
sudo freshclam
Постоянные читатели вспомнят, что мы кратко упоминали, как фильтровать входящие пакеты с прокси-сервера с помощью ClamAV, в учебнике о родительском контроле в LXF128. Настроить ClamAV для работы с заданным прокси-сервером проще простого. Достаточно открыть файл /etc/clamav/freshconf.conf и добавить в его конец следующие строки:
HTTPProxyServer ip-адрес.сервера HTTPProxyPort номер_порта
Замените ip-адрес.сервера и номер_порта на соответствующие значения. Если вы предпочли выполнение ClamAV в виде демона, перезапустите его, чтобы изменения вступили в силу.
Чтобы вывести все сигнатуры вирусов, выполните команду sigtool --list-sigs
Зачем мне антивирус?
Вы, быть может, удивляетесь: а почему мы говорим об антивирусной защите для Linux? Ведь Сеть пестрит бесчисленным количеством утверждений о безопасности Linux, а если ввести «Linux antivirus» в Google, первой в списке будет статья с Linux.com под заголовком «Note for Linux Newcomers: No antivirus needed» [«Новичкам в Linux: антивирус не нужен»]. Кроме того, доля рынка настольных систем у Linux очень мала, а именно она часто является главным мотивом для взломщиков. Все это порождает вполне резонный вопрос: чем проникновение в Linux может пригодиться злоумышленнику?
Вопреки мифам, иммунитет Linux к вирусам велик, но не безмерен. Эксплойты для кроссплатформенных технологий, типа Java и Flash, приложимы к Linux в той же мере, как и к другим операционным системам. А так как Linux проник на промышленный рынок и web-серверы, вторжения становятся гораздо более доходными, чем были раньше. Данные можно украсть и продать «похитителям личностей» или использовать для создания ботнетов и другой противоправной деятельности.
Если в сети есть компьютеры с Windows (или с двойной загрузкой), Linux может стать «тихой гаванью» для вредоносного ПО Windows, которое может расползтись по локальным дискам Windows или размножиться по всей сети. Хотя коммерческие брандмауэры настольных систем отчасти сдерживают эту угрозу, клиентские компьютеры, получающие вредоносные пакеты с доверенного устройства локальной сети, будут в опасности. Утверждение спорное, почему бы не исключить компьютеры с Linux из числа "доверенных" если есть подозрение, что там могут находиться вирусы
Но прежде чем вы спишете со счетов все свои предыдущие мнения о безопасности Linux-окружения, рассмотрим кое-какие цифры.
По оценкам из различных источников, число эксплойтов для Windows в несколько тысяч раз превышает этот показатель у нашей любимой свободной операционной системы, и благодаря открытой природе Linux большинство уязвимостей ликвидируются сразу после их обнаружения. А если уж быть более точным и оперировать при этом приближенными цифрами, то счет числа угроз (потенциальных и реальных вирусов) в Linux идет на десятки, в то время как число реальных вирусов для Windows оценивается сотнями тысяч. Таким образом несложный подсчет дает цифру отношения вирусов в более чем 10000 раз.
Безопасность сообщества
Однако причина, по которой Windows обладает большинством уязвимостей, главным образом кроется в ее доминировании на рынке. Это одна из причин, и всеже, учитывая количество коммерческих серверов под Linux, где Windows уже не так уж и доминирует, нельзя сказать что эта причина главная. Но в отличие от Windows вы можете спать спокойно, зная, что если ваш компьютер заразится, то утилиты вроде SELinux (о нем мы говорили в В прошлом месяце), а также права доступа к файлам для пользователя, группы и прочих ограничат ущерб, который может нанести системе любое вредоносное ПО.
Однако для критически важных систем и бизнес-решений, обязанных удовлетворять федеральным законам о защите данных, есть тысячи свободных средств защиты: от обнаружителей вторжения (IDS), антивирусов и брандмауэров до надежного шифрования данных.
Все это дает более чем достаточную защиту для Linux-системы, и как обычный пользователь, вы получаете гораздо больше преимуществ от разделения этих утилит с сообществом, чем мог бы мечтать любой пользователь Windows. Кроме того, в большинстве случаев вам не нужно платить за годовую подписку или работать с громоздким приложением, мешающим вашей повседневной деятельности.
Демонизмы
Если вы запускаете ClamAV как демон, неплохо убедиться, что он на самом деле работает. Проверяется это командой
ps ax | grep clamd
В большинстве систем вы увидите три строки вывода. Если демон не запущен, выполните в терминале эту команду:
sudo clamd
Версию демона можно проверить с помощью команды:
clamdscan -V
Автоматическое сканирование
- Настроим ClamAV на обновление вирусных сигнатур и проверку системы.
Итак, ClamAV установлен. Через удобный графический интерфейс можно просмотреть файлы, находящиеся на карантине, запустить обновление сигнатур вирусов и просканировать небольшие каталоги. Но надолго ли вас хватит выполнять это регулярно? Все мы люди, и легко отвлекаемся от ежедневной рутины, оставляя систему уязвимой. Спокойнее будет влезть «под капот» ClamAV и настроить его на сканирование и обновление сигнатур вирусов автоматически – тогда система будет сама и вовремя защищать ся от любых неприятностей, на которые вы можете иметь несчастье нарваться, бродя по Интернету.
Если вы получаете сообщения об ошибках «Слишком большой архив» (Oversized Zip), измените параметр Archive-MaxCompression-Ratio в файле /etc/clamd.conf, предварительно попробовав пару-тройку значений командой clamscan --max-ratio=400 example.zip
Испробуем простейшие команды в терминале. Если ClamAV выполняется как демон, просто замените все вхождения clamscan на clamdscan, и получите практически тот же функционал. Наша первая команда рекурсивно проверит файлы заданного каталога на наличие любого вируса из базы вирусных сигнатур:
clamscan -r /путь/к/каталогу
Команду можно улучшить – пусть отображает свой вывод на экране, а по окончании проверки издает сигнал (bell):
clamscan -r --bell -i /путь/к/каталогу
Можно также перенаправить вывод в другие команды или в текстовый файл для последующего просмотра:
clamscan -r -i /путь/к/каталогу > results.txt clamscan -r -i /путь/к/каталогу | mail my@email.com
В первом случае результаты рекурсивной проверки помещаются в текстовый файл, во втором – передаются почтовой программе для последующей отправки на указанный адрес. Последний вариант особенно удобен, когда ClamAV выполняется в режиме демона: ведь результаты вы будете получать в реальном времени. Наконец, можно добавить перед указанием пути ключ --remove, чтобы зараженные файлы автоматически удалялись из системы, вместо помещения в карантин. Но будьте с этим осторожнее, так как в случае ложных срабатываний можно потерять нужные файлы.
Включить проверку ClamAV в системный планировщик очень просто. Просто введите
at 3.00 tomorrow at>clamscan -i ~ > ~/test.txt
Отправьте задание, нажав Ctrl+D (at> во второй строке набирать не нужно). Команда запланирует антивирусное сканирование на 3 часа утра завтрашнего дня и сохранит результат в файле test.txt в домашнем каталоге. А если вам требуется ежедневное сканирование?
Его можно выполнять по-разному. Если вы пользователь настольной системы, запускайте сценарий оболочки при каждом сеансе работы или настройте его вызов в планировщике.
В первом случае просто скопируйте вторую строку предыдущего примера и вставьте ее как новое приложение автозапуска через System > Preferences > Startup Applications (Система > Настройки > Автозапуск). Пользователям KDE нужно сохранить эту строку в скрипте оболочки и скопировать его в каталог /home/user/.kde/AutoStart, а затем назначить ему права на выполнение.
Регулярные проверки
Во втором случае можно настроить периодические проверки с помощью Cron. Вам потребуется скопировать строку из предыдущего фрагмента кода в файл и назвать его scanscript.sh. Предварительно удостоверьтесь, что инструкции в файлах cron.allow или cron.deny обеспечивают вам доступ к Cron. Если ни одного из файлов нет, доступ будет только у суперпользователя-root, но если оба существуют, убедитесь, что ваше имя пользователя есть в первом файле, но не в последнем.
Прежде чем добавить запись в crontab, установите свой любимый текстовый редактор в переменной $EDITOR. Иными словами, наберите:
export EDITOR=nano crontab -e
Тогда вы сможете дописать в конец файла такой код:
0 * * * * sh /путь/к/scanscript.sh
Если в качестве редактора вы выбрали Nano, нажмите Ctrl+X для выхода с сохранением. Теперь Cron будет запускать антивирус из файла скрипта по часам, каждый час ежедневно.
Чтобы понять, как работает этастрока, взгляните на таблицу. День с номером 0 с точки зрения Cron – воскресенье. Звездочка * означает, что скрипт будет срабатывать при каждой отметке данной временной шкалы. Справляясь с таблицей, можно задать любой нужный интервал запуска.
Наконец, если вы не хотите получать от системы письма с результатами выполнения задания, измените предыдущую строку таким образом:
0 * * * * sh /путь/к/scanscript.sh > /dev/null 2>&1
Планирование обновлений сигнатур вирусов мало чем отличается от планирования запуска проверки. Однако над периодичностью обновлений нужно немного подумать. Антивирусные проверки лучше запускать почаще, для обеспечения чистоты, но обновления сигнатур обычно производятся не чаще раза в день. Поэтому выполнять их при каждом входе в систему – лишняя трата системных ресурсов.
Свежие сигнатуры
На современных настольных системах накладные расходы не чрезмерны, но их стоит учесть, когда дело касается постоянно включенных сетевых устройств с невысокой производительностью или файловых серверов. На рабочем столе можно запускать обновление вручную через графический интерфейс ClamTK, но всегда есть опасность об этом позабыть.
Поэтому советуем выполнять обновление сигнатур вирусов как минимум раз в день, чтобы гарантировать защиту от самых свежих угроз без лишних действий. Наилучший вариант решения этой задачи – добавить в crontab следующую строку:
0 3 * * * sh /путь/к/scanscript.sh
Она гарантирует, что обновления вирусов будут происходить каждый день или, во всяком случае, не в то время, когда потребление системных ресурсов резко возрастает.
Числовые диапазоны Crontab
Временная шкала | Минуты | Часы | Дни | Месяцы | Дни недели |
---|---|---|---|---|---|
Диапазон | 0–59 | 0–23 | 1–31 | 1–12 | 0–6 |
Другие антивирусные продукты
Хотя ClamAV прост в установке, настройке и управлении, вы можете предпочесть ему готовое решение для защиты настольной системы от вирусов Linux и Windows. Существует несколько коммерческих альтернатив ClamAV.
Они нацелены в основном на поиск вирусов Windows, нашедших пристанище в Linux, но весьма пригодятся при наличии двойной загрузки или компьютеров с Windows в локальной сети.
AVG Free Antivirus
AVG хорошо известен в Windows, а теперь он доступен и в Linux. Интерфейс, по сути, такой же, как в Windows-версии, и предоставляет те же возможности по сканированию. Также есть две платных редакции, предоставляющих дополнительные функции.
Kaspersky
Вы обнаружите, что Kaspersky предлагает не только стандартный настольный антивирус, но и полноценные продукты для различных типов серверов, в зависимости от того, какой пакет вы приобретаете. Среди них нет бесплатных продуктов, потому что Kaspersky в основном ориентирован на решения для предприятий, но он может подойти для домашних серверов.
Panda Antivirus for Linux
Эта скрытая жемчужина предназначена для запуска на серверах Linux с целью поиска уязвимостей DOS/Windows, но не хуже работает и в системах с двойной загрузкой, и гарантирует, что вредоносные программы для Windows не копируют себя на разделы Windows из Linux. Совершенно непонятно о чем автор тут написал, вирусы для Windows в Linux работать не смогут никогда, даже если они написаны на скриптовых языках. Можно только предположить ситуацию, когда вирус будет содержать специальный код Linux чтобы иметь возможность заражать параллельно установленную Windows. Продукт менее продвинутый, чем другие упомянутые здесь, но свою задачу это легкое приложение выполняет отлично.
Avast Linux Home Edition
У Avast те же функции, что и у AVG; его ключевое отличие – возможность управлять сканированием из командной строки, как у ClamAV, и его можно вызывать из скриптов оболочки. Интерфейс основан на родных библиотеках GTK, и среди портированных программ эта более всех чувствует себя в Linux, как дома.
Более подробный обзор антивирусов делался всего два месяца назад в LXF128