Как сканировать при доступе с clamav в 14.04
Я пытаюсь использовать clamav для проверки на вирусы при доступе к моему домашнему каталогу и всем подключенным дискам. Я нашел здесь довольно старые инструкции и скорректировал их.
Поскольку dazuko был заменен на fanotify, параметры в файле clamd.conf немного отличаются. Вот мои соответствующие записи clamd.conf:
ScanOnAccess true
# ClamukoScanOnOpen true
# ClamukoScanOnExec true
OnAccessIncludePath /home
OnAccessIncludePath /mnt
OnAccessIncludePath /media
VirusEvent /opt/clamdazer %v &
Если я перезапущу clamd (с помощью "sudo invoke-rc.d clamav-daemon restart"), журнал будет иметь следующее:
ERROR: ScanOnAccess: fanotify_init failed: Operation not permitted
ScanOnAccess: clamd must be started by root
Что я делаю неправильно?
Редактировать: я попытался изменить строку "Пользователь clamav" на "Пользователь root", но тогда запуск clamd не удастся с "ОШИБКА: сбой initgroups()".
Я нашел несколько сообщений об ошибках, которые могут быть актуальны здесь: Ошибка Ubuntu #1404762 и ошибка Debian #749027 (я могу опубликовать только 2 ссылки).
К сожалению, мне не удалось использовать решения, описанные там. Мне кажется, что сканирование при доступе в настоящее время не работает вообще.
2 ответа
На самом деле вы уже там. Вы уже закончили установку clam-av, нам нужно немного настроить, чтобы clamd работал от имени пользователя root.
Так как эта тема уже в возрасте. Я суммирую правильные вещи, которые вы сделали. Это только для пошаговой инструкции по установке ClamAV и выполнению его при доступе.
Сначала мы должны установить правильную версию. Только версия clamav> 0.98 имеет возможность ifanotify для проверки при доступе. Это ifanotify заменяет устаревший модуль ядра dazuko. Подробнее @ ClamAV Blog, используемый более старой версией ClamAV.
ШАГ 1 - Установка
Если вы работаете в 14.04, вы можете добавить этот ppa для последней версии
ppa:teward/clamav
Затем обновите apt для обновления кеша apt
sudo apt-get update
Запустите следующую команду, чтобы установить ClamAV
sudo apt-get install clamav clamav-daemon
Если ClamAV уже установлен, не забудьте обновить базу данных ClamAV, запустив
sudo freshclam
На этом этапе у нас уже есть ClamAV на нашей машине. Но подождите, мы должны заставить его выполнять сканирование при доступе, верно? Конечно!
ШАГ 2 - Конфигурация
Теперь откройте файл конфигурации ClamAV (clamd.conf). Я использую Ubuntu 16.04 LTS и он находится в /etc/clamav/clamd.conf (вы можете использовать nano или vi для редактирования файла, но убедитесь, что у вас есть права на редактирование файла).
sudo nano /etc/clamav/clamd.conf
Тогда вы увидите все предопределенные параметры там.
Теперь посмотрите на файл конфигурации для этого параметра.
ScanOnAccess false
Измените это на
ScanOnAccess true
Теперь есть два варианта включения каталога для проверки при доступе. Первый включает каталог как смонтированный, а второй - каталог включения.
Все еще в файле конфигурации, добавьте следующий параметр для смонтированной опции
OnAccessMountPath /
Это будет включать в себя все каталог или путь внутри вашего компьютера. Другими словами, он будет смотреть и сканировать всю директорию вашего компьютера. Но вы можете добавить более одного "OnAccessMountPath", тем самым вы можете определить свой собственный.
OnAccessMountPath /home
OnAccessMountPath /opt
OnAccessMountPath /var
etc...
Во-вторых, вы можете включить каталог более конкретно, используя "OnAccessIncludePath"
OnAccessIncludePath /home/{youruser}/Desktop
OnAccessIncludePath /home/{youruser}/Documents
OnAccessIncludePath /home/{youruser}/Downloads
OnAccessIncludePath /home/{youruser}/Emulation
OnAccessIncludePath /home/{youruser}/Music
OnAccessIncludePath /home/{youruser}/Pictures
OnAccessIncludePath /home/{youruser}/Public
OnAccessIncludePath /home/{youruser}/Video
И затем не забудьте добавить следующий параметр в конце параметра конфигурации
OnAccessPrevention false
OnAccessExtraScanning true
OnAccessExcludeUID 0
(Необязательно, но рекомендуется). Вы можете добавить свой собственный сценарий для обработки события, когда вирус обнаружил такое удаление или перемещение зараженного файла, и вести некоторый журнал. Для этого вы можете добавить параметр "VirusEvent" в файл конфигурации. Вы можете добавить, как я
VirusEvent /opt/clamav-utils/clamd-response
И создайте новый bash-файл с именем "clamd-response" в /opt/clamav-utils или где угодно.
Здесь скрипт clamd-ответа
#!/bin/sh
echo "$(date) - $CLAM_VIRUSEVENT_VIRUSNAME > $CLAM_VIRUSEVENT_FILENAME" >> /var/log/clamav/infected.log
rm $CLAM_VIRUSEVENT_FILENAME
sudo -u yourUserName DISPLAY=:0.0 notify-send "Virus Found $CLAM_VIRUSEVENT_VIRUSNAME" "$CLAM_VIRUSEVENT_FILENAME has been removed"
Сценарий удалит зараженный файл, сделает журнал и отправит уведомление OSD на ваш рабочий стол. Примечание. Если уведомление OSD не отображается, попробуйте удалить
sudo -u yourUserName
и просто уйти
DISPLAY=:0.0 notify-send "Virus Found $CLAM_VIRUSEVENT_VIRUSNAME" "$CLAM_VIRUSEVENT_FILENAME has been removed"
Теперь нам нужно заставить clamd (демон демона clamav) работать от имени root. Все еще в файле конфигурации ищите этот параметр
User clamav
Измените это на
User root
Теперь сохраните и закройте файл. Далее нам нужно запретить броню приложения, запретить запуск clamd от имени root.
ШАГ 3 - Дайте способности clamd работать как ROOT
Сначала нам нужно установить утилиты app armor, запустив эту команду
sudo apt install apparmor-utils
Затем запустите эту команду, чтобы пожаловаться на недееспособность clamd.
sudo aa-complain clamd
Просто перезагрузите компьютер, и ClamAV должен быть запущен при доступе.
Была проблема на mageia 6 Использование
User root
Не решил проблему
Вместо этого я отредактировал сам сервис, чтобы запустить его от имени root, затем он заработал.
gedit /etc/systemd/system/multi-user.target.wants/clamad.service
и сменить пользователя на root
Надеюсь, это поможет кому-нибудь;)