Здравствуйте, подскажите, требуется запускать сканирование антивирусным средством Drweb флеш - носителей USB при их подключении. В скрипт автоматического монтирования
Spoiler
/usr/local/bin/usb-mount.sh
#!/bin/bash
set -xue
# Определяется команда для трассировки (отладки) выполнения сценария. Отладочные записи записываются в системный журнал /var/log/syslog и помечается тегом "Astra_USB"
log='/usr/bin/logger -s -t "Astra_USB"'
# Этот сценарий вызывается из системного юнита как сценарий обработки подключения/отключения накопителей и должен получать два параметра
usage() {
$log "Применение: $0 {add|remove|reload} device_name (например, sdb1)."
exit 1
}
do_mount() {
MOUNT_POINT=$(/bin/mount | /bin/grep ${DEVICE} | /usr/bin/awk '{ print $3 }')
if [[ -n ${MOUNT_POINT} ]]; then
$log "Предупреждение: ${DEVICE} уже смонтировано в ${MOUNT_POINT}"
exit 1
fi
# Получение и сохранение в переменных информации об устройстве : метка ID_FS_LABEL, идентификатоп ID_FS_UUID, и тип файловой системы ID_FS_TYPE
eval $(/sbin/blkid -o udev ${DEVICE})
if ! /bin/mount -o ${OPTS} ${DEVICE} ${MOUNT_POINT}; then
$log "Ошибка монтирования ${DEVICE} (статус = $?)"
/bin/rmdir ${MOUNT_POINT}
exit 1
else
sed -i "/^${DEVICE//\//\\/}\s\+/d" /etc/fstab
echo "${DEVICE} ${MOUNT_POINT} auto ${OPTS} 0 0" | tee -a /etc/fstab > /dev/null
fi
$log "**** Устройство ${DEVICE} примонтировано в ${MOUNT_POINT} ****"
}
do_unmount() {
$log "Removing: ${DEVICE}-${ID_FS_LABEL:-}-${DEVBASE}"
MOUNT_POINT=$(/bin/mount | /bin/egrep "^${DEVICE}" | /usr/bin/awk '{ print $3 }')
if [[ -z ${MOUNT_POINT} ]]; then
$log "Предупреждение: ${DEVICE} не примонтировано"
else
/bin/umount -l ${DEVICE}
$log "**** Отмонтировано ${DEVICE} **** Удаление точки монтирования ${MOUNT_POINT} и записи в /etc/fstab"
fi
[ -d "$MOUNT_POINT" ] && /bin/rmdir "$MOUNT_POINT"
sed -i "/^${DEVICE//\//\\/}\s\+${MOUNT_POINT//\//\\/}/d" /etc/fstab
}
do_reload() {
$log "Reload: ${DEVICE}-${ID_FS_LABEL:-}-${DEVBASE}"
MOUNT_POINT=$(/bin/mount | /bin/egrep "^${DEVICE}" | /usr/bin/awk '{ print $3 }')
if [[ -z ${MOUNT_POINT} ]]; then
for d in `egrep "^${DEVICE}\s+" /etc/fstab | awk '{print $2}'` ; do
$log "Reload: ${DEVICE} не примонтировано. Удаление точки монтирования $d"
[ -d "$d" ] && rm "$d"
done
else
$log "Reload: ${DEVICE} примонтировано"
fi
sed -i "/^${DEVICE//\//\\/}\s\+/d" /etc/fstab
}
case "${ACTION}" in
add) do_mount ;;
remove) do_unmount ;;
reload) do_reload ;;
*) usage ;;
esac
добавил строку запуска:
drweb-ctl scan /media/by*
В нулевом режиме данный трюк работает, флешка монтируется и производится ее скан, находятся тестовые вирусы eicar, отрабатывает всплывающее окно, уведомляет о найденном, предлагает действия.
В 1м режиме проверка запускается "втихую", даже пришлось добавить запись результатов в файл для дальнейшей отладки
"drweb-ctl scan /media/by* >> drweb.txt" - не всплывает уведомление о найденном.
Стало видно, что Drweb угрозы находит, но не отправляет их в gui программы. Что -то не учли при настройке видимо, хотя как видно все рекомендации выполнены - в нуле все работает, в первом тоже но из-под обычного пользователя.То есть если в 1м режиме запустить принудительную проверку от обычного пользователя из терминала - # drweb-ctl scan /media/by* , то поведение программы штатное, с уведомлениями, то есть подводя итог: не работает либо
- только из скрипта;
- из терминала с повышенными привилегиями
Пробовали так же запуск от пользователя из скрипта с передачей запуска юзеру -
Пользователь на повышенном уровне получит уведомление, если угроза будет найдена в результате действий в его сессии. О результатах сканирований в других сессиях он ничего не узнает.
Информацию об угрозах, обнаруженных на всех уровнях, можно увидеть на ES.
Пользователь на повышенном уровне получит уведомление, если угроза будет найдена в результате действий в его сессии. О результатах сканирований в других сессиях он ничего не узнает.Информацию об угрозах, обнаруженных на всех уровнях, можно увидеть на ES.
Спасибо. Визуально не подтверждается обнаружение угроз при сканировании "от рута" в 1м режиме. От юзера через консоль в 1м режиме без проблем, как только поднимаешь привилегии, тишина. Либо что-то недонастроено либо это нормальное поведение.
Пользователь на повышенном уровне получит уведомление, если угроза будет найдена в результате действий в его сессии. О результатах сканирований в других сессиях он ничего не узнает. Информацию об угрозах, обнаруженных на всех уровнях, можно увидеть на ES.
Задача - запустить сканирование скриптом, сразу после монтирования носителя во всех мандатных уровнях. Выполняется от юзера с повышенными привилегиями, но конкретно в AstraLinux 1.6 имеются проблемы:
окно обнаружения не всплывает;
информация об обнаруженном тестовом файле не появляется
Единственное исключение, которое показывает, что антивирус работает - вызов сканирования из скрипта и отчет в файл "drweb-ctl scan /media/by* >> drweb.txt" - в этом файле видно, что т.н. вирусы найдены, но в основном окне программы этой информации нет, что не позволяет применить действия к угрозам. Проблема только в мандатных уровнях выше 0.