Антивирус для Linux – ClamAV

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Какая ОС лучше? Windows? Linux? Может MacOS? Холивары на эту тему наверно не кончатся никогда и будут бесконечным оазисом контента для различных статей. Множество копий противоборствующих сторон имеют явно эмоциональный окрас, но для технаря важны только факты и рабочие практики применения.

По работе мне время от времени приходится иметь дело с установкой нового ПО на Ubuntu Server. Например бесплатный сервис хранения ссылок linkin.link о котором я писал тут является удачной кооперацией двух миров, (.net) Windows и Linux. Но вот путь к финальному шагу весьма тернист. И периодически это превращается в настоящий квест.

Данная статья это туториал (последний раздел) - как установить текущую на данный момент версию антивируса ClamAV 0.104.2 на Ubuntu Server. И "весёлые" приключения по миру nix* (первые три раздела).


Вступление

Отходя от темы и если говорить в целом о экосистеме nix*, то за годы практики у меня сложилась мнение. Если ты настроил машину, при этом пропотев n-ное количество часов, то такая машина будет работать безотказно, годами. До следующего обновления…

Мне кажется, nix* системы вряд ли станут популярными в обывательском секторе, потому что имеют одну убийственную “архитектурную” особенность.

Бесконечное постоянное обновление софта без обратной совместимости.

Казалось бы, постоянно новое – это хорошо. Но это монета с двумя сторонами. И тёмная сторона, к сожалению, как раз обращена к новичкам, да и midl пользователям - ничего толком не “работает из коробки”.

У меня много подобных историй, жалко, что я их не документировал в туториалы. Помню, как вроде на 18 Ubuntu Server надо было сделать софтовый RAID. И как я вступал в ступор на окнах настройки который вели в никуда. Сам дистрибутив был скачан с официального сайта как самый "надёжный" и "правильный". Действовал по всем правилам, из инструкций из интернета, которые были все одинаковые на всех сайтах. Везде было сказано – делай так и всё будет работать. А у меня все настроечные окна были – но сам RAID не создавался.

И только после нескольких дней страданий выяснилось – что в казалось бы “официальной версии” просто вырезали часть, которая отвечала за окончание настройки RAID – при этом оставили начальные окна настройки. Неофициальная версия – помогла.

Задача

Немного лирики окончил, приступаю к теме статьи.

Мне поступила достаточна типичная задача – надо проверять антивирусом файлы, которые закачиваются на сервер пользователями.

Конечно – сейчас вирусы такие, что без “нейросетей” и не поймёшь, что этот вирус. Или на диске он зашифрованный и только загрузившись в память может, расшифровав себя, показать гнилое нутро.

Но хоть какую-то защиту антивирус дать может.

Нужен был бесплатный антивирус. Поискав в интернете нашёлся подходящий кандидат ClameAV

Этот антивирус имеет богатую историю. Используется на множестве mail серверов. И поддерживается до сих пор. А также имеет API для индивидуальной проверки файлов. То, что надо.

ПО, которое должно будут взаимодействовать с антивирусом, написано на .net core. Как я писал выше это удачная кооперация миров Windows и Linux.

Для старта был решено запустить систему на Windows.

Как ни странно – почти всё прошло удачно. ClamAV был скачан с официального сайта. Установлен как служба без проблем. Базы данных антивируса загрузились с первого раза.

Небольшие проблемы были в подключении к API.

В NuGet было несколько библиотек для работы с API. В в топе висела nClam. C почти полтора миллионом скачиваний и уже 7-ой версией. В общем внушает доверие.

Библиотека установлена. Код написан. И тут получаем баг. На любой файл, переданный на проверку, возвращался код ответа – файл не найден. Немного поэкспериментировав, было решено взять следующую по популярности библиотеку - ClamAV.Net

Скачиваний, правда по сравнению с nClam только 25 тысяч. Но с этой библиотекой всё заработало корректно.

Для теста был скачан файл с сигнатурой вируса от сюда.

ClamAV определял вирус.

Эксперимент завершился полностью успехом – и было решено перенести всё на Ubuntu Server. Ожидалось что это займёт максимум 30 минут. Ага… 

Пришлось потратить день. И что бы другие не тратили столько времени - написан этот туториал.

Попытка установки ClameAV на Ubuntu Server

Поискав в интернете я нашёл около 2 десятков (было ещё больше) сайтов с информацией как поставить ClamAV на Ubuntu. Инструкция была практически идентичная на всех серверах.

Сперва выполняем стандартную команду обновления:

apt-get update

А потом собственно команду установки антивируса и одновременно установки демона для API:

apt-get install clamav clamav-daemon

Это практически всё. Проще инструкции придумать сложно.

Это команда устанавливает файлы самого антивируса ClamAV. А также 2 демона. Первый clamav-freshclam – для автоматической закачки баз данных. Второй clamav-daemon - API.

Проверяем как установились демоны:

systemctl status clamav-daemon

Вроде работает.

Второй демон clamav-daemon – который предоставляет нам API для проверки файлов:

Почему-то не запущен.

Запускаем:

service clamav-daemon start

Не запустился. Ругается что нету баз данных. Но тут всё по плану. Все туториалы говорят, что надо закачать базы данных вручную.

Для этого останавливаем автоматический загрузчик:

service clamav-freshclam stop

Далее одной командой загружаем вручную

freshclam

Собственно, на этом этапе закончился процесс простой установки ClamAV через туториал.

Как я понял версия в официальном дистрибутиве устарела настолько, что даже не может скачать базы данных. Выше я писал про проблему обновлений в nix мире. Вот как раз прилетело и мне.

Не буду описывать мои поиски как же закачать последнюю версию антивируса, приведу результат.

Есть 2 способа. Первый - настроить Backports. Это путь рекомендуется на официальном сайте ClamAV:

Я не захотел выбирать этот путь что бы не угробить всё окончательно.

Ну и второй вариант – скачать пакет и установить вручную. На официальном сайте есть пакеты для различных систем:

Пошаговая установка ClamAV на Ubuntu Server

Важно: все команды я вводил под root. Вы можете через sudo – но тогда я не гарантирую что всё будет так же.

Не буду описывать все эксперименты которые я провёл за день, а напишу пошаговую инструкцию – которая на моей системе позволила запустить нормально ClamAV . Плюс некоторые комментарии.

Удаляем все упоминания о старых установках:

apt-get purge clamav clamav-base clamav-daemon clamav-freshclam clamav-milter clamdscan clamassassin

Скачиваем установочный пакет и кидаем в корень диска сервера. Для меня это: clamav-0.104.2.linux.x86_64.deb

Далее устанавливаем программа для установки deb пакетов в Ubuntu – gdebi:

apt-get install gdebi

Устанавливаем ClamAV версии 0.104.2:

gdebi /clamav-0.104.2.linux.x86_64.deb

Проверяем как установилось:

clamscan -V

Версия последняя. Та, что надо.

Далее наc подстерегает очередная проблема. Как я понял (но может я и не прав) эта версия почему-то не включает в себя установку демонов. Вот папка с установленным антивирусом:

Демона тут нету. Можно запустить антивирус из консоли – но как установить демон, я так и не понял.

Вот запросы на проверку служб:

Далее запускаем стандартный установщик:

apt-get install clamav clamav-daemon

Как я понял – установщик установит демонов, а сам ClamAV не установит т.к. есть уже более новая установленная версия.

Проверяем какая версия:

Видим что версия последняя и не затёрлась нашей предыдущей установкой. Изначально эта команда выдавала версию 0.102.1

Проверяем демоны:

systemctl status clamav-daemon

systemctl status clamav-freshclam

Clamav-freshclam – есть и запущен. Clamav-daemon – есть и остановлен. Пока по плану.

Пытаемся скачать базы данных:

freshclam

Видим что ругается на файл конфигов. Идём в папку и смотрим:

Переименовываем файлы в:

clamd.conf

freshclam.conf

Далее открываем их и удаляем слово "Example". Так:

Почему это было не сделать изначально? Остальные настройки я не трогал – все по умолчанию. Всё работает и так. (хотя вру – одну настройку всё же я менял, но о ней позже).

Но вы можете установить настройки согласно вашим системным требованиям.

Новая попытка закачки баз данных:

Забыл отключить демона clamav-freshclam. Тут видно, что идёт конфликт доступа к файлу логов. Можно было бы и более грамотно работать с файлом, без локов.

Отключаем демона.

service clamav-freshclam stop

Третья попытка.

Аллилуйя! В этот раз всё OK. Базы скачиваются.

Ну теперь clamav-daemon должен запустится (нет)

service clamav-daemon start

systemctl status clamav-daemon

Не запустился. Вроде как не может найти базы данных по пути: /var/lib/clamav

А их там и нету. Поиск показал, что базы находятся тут:

Вот мы и возвращаемся к настроечным файлам. Изначально я открыл файл clamd.conf

И вставил строку:

DatabaseDirectory /usr/local/share/clamav

Но демон clamav-daemon всё рано не искал базы по этому пути.

Затем я в двух файлах:

clamd.conf

freshclam.conf

вставил строки:

DatabaseDirectory /var/lib/clamav

И уже демон clamav-freshclam – закачал базы по нужному пути /var/lib/clamav

Запускаем и проверяем демон clamav-daemon:

service clamav-daemon stop

service clamav-daemon start

systemctl status clamav-daemon

Ура всё работает! Наконец то финиш (нет)

Я попытался присоединится к демону через дефолтный адрес:

127.0.0.1:3310

Но ничего не получилось (((

Смотрим что у нас там по портам:

netstat -ntlp | grep LISTEN

Листинг не привожу (конфиденциальность) – но демона нашего там нет. И порт 3310 никто не слушает.

В интернете я нашёл информацию, что эту проблему можно решить с помощью настройки файла конфигурации.

Вводим команду:

Запускается настройка – суть которой ввести последовательно все значения в файле конфигурации. Всё было нормально пока я не дошёл до параметра:

Тут и далее следующие 3 параметра входили в вечный цикл. Всё перепробовал – вечный цикл и всё тут.

Потом нашёл тут, что да – есть такой баг и его вроде как поправили. Видимо до моей системы эта правка так и не добралась. Решил бросить этот вариант.

Далее я провозился оставшеюся часть дня. Сразу привожу рабочий вариант.

Открываем файл /etc/clamav/clamd.conf

И вставляем в самый верх строки:

TCPSocket 3310

TCPAddr localhost

Так:

Далее открываем файл:

/etc/systemd/system/clamav-daemon.socket.d/extend.conf

И делаем такое содержимое:

[Service]

ExecStartPre=-/bin/mkdir /run/clamav

ExecStartPre=/bin/chown clamav /run/clamav

[Socket]

SocketUser=clamav

ListenStream=3310

Сохраняем всё. Далее команда перезагрузки конфигов:

systemctl daemon-reload

Запускаем демон. Проверяем порт:

Есть контакт! Неужели на этом всё? В этот раз ДА. Всё заработало. Ну и видео демонстрации работы.

Offtop

Когда набирал статью, заливка очередной картинки зависла. Перезагрузил страницу – всё что набирал пропало. Но спасло всплывающее сообщение "восстановить данные". И тут надо было мне насторожится. Поленился. Продолжил дальше набирать статью. Опять загрузка картинки зависла. И на второй раз при нажатии восстановления – ничего! Пусто! Поэтому для сберегания нервных клеток почаще переносите в черновик. Я, к сожалению, не сберёг.

Ну как так хабр? 

Источник: https://habr.com/ru/post/654541/


Интересные статьи

Интересные статьи

Среди одноплатников пополнение — появилась модель Odyssey X86J4125800 с четырехъядерным процессором Intel Celeron J4125 и довольно внушительным количеством разного рода модулей, разъемо...
По факту на рынке смартфонов доминирующее положение занимают именно устройства на базе Linux. Некоторые от такого заявления призадумаются, другие же преисполнятся гордостью за Linux в...
В заголовке этого материала уже сказано о самой главной возможности программы, о которой я хочу рассказать. Речь идёт о GoTTY. Эта программа позволяет организовывать общий доступ к прилож...
Всем привет. Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт? Для пополнения базы знаний...
В этой статье будут раскрыты некоторые неочевидные вещи связанные с использованием wildcards при копировании, неоднозначное поведение команды cp при копировании, а также способы позволяющие к...