¿Cómo escanear automáticamente cualquier dispositivo de almacenamiento USB conectado con clamav?

13

Me gustaría hacer un análisis automático de virus en cualquier dispositivo USB conectado usando ClamAV. Estoy usando Ubuntu 12.04.

Lo más cercano que encontré fue:

El primero no me funciona y el segundo parece estar dirigido a un dispositivo conocido.

¿Hay algún tutorial que me haya perdido? ¿O puedo obtener ayuda con las udevreglas que se aplican a cualquier dispositivo de almacenamiento USB agregado? Actualmente nada parece hacer nada.

ossi
fuente
Puede escribir una regla de udev para esto.
Barafu Albino
Echa un vistazo a este: superuser.com/questions/305723/… donde RUN + = (ubicación del archivo) es cómo se lee, creo.
No Time

Respuestas:

5

Este es un script automatizado. Solo ejecútalo como root. Puede cambiar el comando ejecutado editando /usr/bin/doOnUSBinsert.

#!/bin/bash
#doOnUSBinsert_0.2.sh
#Author : Totti
# Make it executable by running 'sudo chmod  x doOnUSBinsert_0.2.sh'


if ! [ -f /etc/udev/rules.d/80-doOnUSBinsert.rules ]
then        # rule not added
   cp "$0" /usr/bin/doOnUSBinsert
   chmod u x /usr/bin/doOnUSBinsert

#   echo 'SUBSYSTEM=="usb", ACTION=="add", RUN ="/path/to/script.sh"' | sudo tee     /etc/udev/rules.d/80-clamscan.rules
   echo 'SUBSYSTEM=="usb", ACTION=="add", RUN ="/usr/bin/doOnUSBinsert & "' | tee     /etc/udev/rules.d/80-doOnUSBinsert.rules
   if  [ $? -eq 0 ]
   then
     echo 'Rule Successfully added. See file "/usr/bin/doOnUSBinsert" if you wish to edit the command'
     exit 0
    else
     echo 'ERROR while adding rule'
     exit 1
   fi
fi



lfile="/tmp/doOnUSBinsert.log"     # udev
lfile2="/tmp/clamscanFromUdev.log"   # clamscan
lfile3="/tmp/doOnUSBinsert_mount.log"   # mount


main ()
{
sleep 12  # let the partitions to mount

   #cat /proc/$$/environ | tr '�' 'n' >> /tmp/udevEnvirn.txt
echo "found $ID_SERIAL"   >> "$lfile"
  cat /etc/mtab | grep "^$part_c"   >> "$lfile.3"

if [ "$ID_SERIAL"x = 'x' ]
then
 echo "Exiting on empty ID_SERIAL"   >> "$lfile"
 exit 1
fi

#Eg: ID_SERIAL --> /dev/disk/by-id/usb-sandisk....42343254343543
#i=0
echo 'searching partitions'   >> "$lfile"

for partitionPath in  $( find /dev/disk/by-id/ -name "*$ID_SERIAL*part*" )
do
  echo "current partition = $partitionPath"   >> "$lfile"
 # part[i  ]="$( readlink -f "$partition" )"        # Eg Output: /dev/sdb1     , /dev/sdb2
  part_c="$( readlink -f $partitionPath )"   
  mpoint="$( cat /etc/mtab | grep "^$part_c"  | awk '{print $2}' )"

  echo "partitionPath= $partitionPath, part = $part_c, mountpoint=  $mpoint"  >>     "$lfile"

  echo "Scaning -->  $mpoint"  >> "$lfile.2"
  ############################################
  clamscan -r --bell "$mpoint"/*  >> "$lfile.2"
  #############################################
done
}


main &
echo ______________________________________  >> "$lfile"
exit 0
totti
fuente
¿Por qué estás repitiendo tu respuesta y por qué estás pidiendo que alguien edite la publicación?
Lynob
@Fischer ¿Cómo funciona?
totti
bueno, lo ejecuté y da, SUBSYSTEM=="usb", ACTION=="add", RUN+="/usr/bin/doOnUSBinsert & " Rule Successfully added. See file "/usr/bin/doOnUSBinsert" to edit commandasí que funciona, pero no puedo encontrar el archivo de registro en / tmp
Lynob
Código actualizado. /tmp/doOnUSBinsert.log para udev. /tmp/clamscanFromUdev.log para clamscan. Ejecutar rm /etc/udev/rules.d/80-doOnUSBinsert.rulesantes de ejecutar el script actualizado.
totti
0

En System> Preferences> Removable Drives and Mediahay una sección para ejecutar automáticamente un programa cuando se enchufa USB.

Aquí agregue el siguiente comando:

clamscan -r -z /media

fuente
clamscan -r -z /mediano escanea automáticamente, tengo que enchufar el usb y ejecutarlo desde la terminal ... sobre el sistema, ¿qué sistema? no hay una sección llamada systemen mi xubuntu
Lynob
En el guión, escriba ibus. O en tipo terminal alacarte. O está debajo del botón de apagado.
Estoy en xubuntu, sin unidad ni guión. Escritorio Xfce
Lynob
No existe tal opción en Ubuntu 15.04.
TRiG