Protection des biens informatiques et des données personnelles
Liens ±
--

La protection antivirale depuis un poste GNU/Linux

Niveau : expert linux. Testé sous Ubuntu LTS (2010)

Il est possible d'installer un antivirus sur un système GNU/Linux. Il existe des antivirus libre et des versions gratuites (mais propriétaires) pour linux chez des éditeurs connus. Nous allons mettre en place une interface graphique facile et automatique pour l'utilisateur.

 Vous vous êtes peut-être demandé pourquoi installer un antivirus sous Linux ! Au bureau, un intérêt est de contrôler la santé des postes de travail sous windows depuis un serveur central UNIX sur lequel serait lancé l'antivirus. A la maison, sur un poste personnel l'approche est plus discutable. L'antivirus sous GNU/Linux permet de vérifier un éventuel système installé en double boot sur la machine depuis son système GNU/Linux. Mais surtout, l'approche présentée sur cette page permet d'analyser à la volée les périphériques USB insérés dans un ordinateur. De cette façon, on donne un coup de pouce aux collègues ou amis qui nous prêtent une clé USB. Ces clés qui voyagent beaucoup sont des supports de choix pour uine infection. En vérifiant sous Linux que la clé inséré dans votre ordinateur ne contient pas de données dangereuses, vous rendez un service au prochain utilisateur de cette clé (qui n'utilise peut-être pas Linux) !

La solution présentée ici utilise un antivirus propriétaire. Il vous faut accepter d'utiliser un système propritétaire sous Linux pour la suivre. En revanche, la méthode a été testée et fonctionne. De plus, l'antivirus l'antivirus  AVG Free Edition (lien externe) est assez clair : il est facile de s'approprier la ligne de commande et son fonctionnement.

Protection antivirale des périphériques USB *

Commencez par ajouter une règle udev.
Dans le répertoire /etc/udev/rules.d, créez le fichier "80-analyse-usb.rules" qui contiendra la ligne suivante :

KERNEL=="sd[cdef]*", ACTION=="add", SUBSYSTEM=="block", ID_TYPE=="disk", ID_USB_DRIVER=="usb-storage", RUN+="/home/USER/.launch""

Cette ligne doit être adaptée à chaque système. en effet, sur mon système, je possède deux disques sda et sdb, et je ne désire analyser que les disques qui seront montés ultérieurement (sdc à sdf).
UDEV lance le script /home/USER/.launch qui contient :

#!/bin/bash
/home/USER/.launch2 &

Ce script s'exécute très rapidement pour libérer UDEV. Ainsi, la suite du processus de montage (qui est en pause tant que .launch s'exécute) peut s'effectuer.
Maintenant que le périphérique est monté le script .launch2 (qui lance l'antivirus) peut prendre tout son temps pour s'exécuter :

#!/bin/bash
sleep 12 # On laisse le temps au système de monter le périphérique
export DISPLAY=:0.0
# on cherche la date la plus récente dans le dossier /dev.
peripherique_a_inspecter=$(su USER -c 'ls -lctL /media | tail -1')
nom=$(echo $peripherique_a_inspecter | sed 's/.*..:.. //g')
proprietaire=$(echo $peripherique_a_inspecter | awk '{print $3}')
heure=$(echo $peripherique_a_inspecter | awk '{print $7}')
su USER -c "/usr/bin/zenity --question --window-icon=\"/home/gf/.imgsyst/avg2-petit.png\" --title=\"Insertion de périphérique - $heure\" --text=\"Analyser $nom ?\" --timeout=30 --width=340"

decision=$?
if [ "$decision" -eq 0 ]
then /usr/bin/zenity --notification --text="$nom : l'inspection anti-virale a débuté. Vous serez prévenu lorsqu'elle sera terminée." --timeout=10 --window-icon="/home/USER/.imgsyst/avg2-petit.png" &
xterm -geometry 50x9+10+10 -bg darkgrey -fg white -title "Analyse anti-virus" -e "avgscan -iMabl --arc-reclevel=2 \"/media/$nom\";/usr/bin/zenity --notification --text=\"Inspection de $nom terminée\" --timeout=5 --window-icon=\"/home/USER/.imgsyst/avg2-petit-fin.png\";echo Appuyez sur Entree pour fermer cette fenetre.;read prompt"
fi

Pour recevoir les notifications dans la zone de notification du système, vous devez avoir le paquet "zenity" installé.

Raffinement*

L'installation de AVG pour Linux ajoute l'anti-virus à la liste des services lancés au démarrage (/etc/init.d/avgd). Pour gagner du temps, désactivez le lancement automatique du démon :

sudo update-rc.d -f avgd remove # (Pour le réactiver : sudo update-rc.d avgd defaults)

Pensez à activer le démon quand cela est nécessaire. Le script .launch2 ci-dessus devient :

#!/bin/bash
sleep 12 # On laisse le temps au système de monter le périphérique
export DISPLAY=:0.0
# on cherche la date la plus récente dans le dossier /dev.
peripherique_a_inspecter=$(su USER -c 'ls -lctL /media | tail -1')
nom=$(echo $peripherique_a_inspecter | sed 's/.*..:.. //g')
proprietaire=$(echo $peripherique_a_inspecter | awk '{print $3}')
heure=$(echo $peripherique_a_inspecter | awk '{print $7}')
su USER -c "/usr/bin/zenity --question --window-icon=\"/home/gf/.imgsyst/avg2-petit.png\" --title=\"Insertion de périphérique - $heure\" --text=\"Analyser $nom ?\" --timeout=30 --width=340"

decision=$?
if [ "$decision" -eq 0 ]
then sudo service avgd start
fi
if [ "$decision" -eq 0 ]
then /usr/bin/zenity --notification --text="$nom : l'inspection anti-virale a débuté. Vous serez prévenu lorsqu'elle sera terminée." --timeout=10 --window-icon="/home/USER/.imgsyst/avg2-petit.png" &
xterm -geometry 50x9+10+10 -bg darkgrey -fg white -title "Analyse anti-virus" -e "avgscan -iMabl --arc-reclevel=2 \"/media/$nom\";/usr/bin/zenity --notification --text=\"Inspection de $nom terminée\" --timeout=5 --window-icon=\"/home/USER/.imgsyst/avg2-petit-fin.png\";echo Appuyez sur Entree pour fermer cette fenetre.;read prompt"
fi
if [ "$decision" -eq 0 ]
then sudo service avgd stop
fi

On a simplement ajouté la commande de lancement et d'arrêt du démon de part et d'autre de la commande d'analyse.

Analyse facile générale du système !*

Dans l'éditeur de menu de Gnome, ajoutez une entrée vers un nouveau script (par exemple dans le menu accessoire).
*
Précisez que le script est une application qui s'exécute dans un terminal. Quand vous voulez lancer une analyse, il suffit de passer par le menu graphique pour la déclencher. facile, non ?
Vous pouvez vous inspirer du script suivant :

#!/bin/bash
# Par GF. Le 19 Octobre 2011
# chmod +x .avgscan
#===============================================================================
#### Définition des variables
courriel="$HOME/.evolution"
telechargement="$HOME/Téléchargements"
wine="$HOME/.wine/drive_c/windows/"
# dossier tmp
tmpdir="/tmp" # défaut : "/tmp"

# Options d'analyse
options="--arc --heur" # défaut : "--arc --heur --vv-move --heal"
# respectivement : regarder dans les archives, utiliser l'heuristique, déplacer # en quarantaine automatiquement, soigner automatiquement les fichiers infectés # man avgscan pour en savoir plus
#===============================================================================

echo "==========================================================================
=== AVG === fichier de configuration : [$HOME/.avgscan]
=========================================================================="
echo "Entrez le nom d'un répertoire ou appuyez simplement sur Entrée pour lancer l'analyse préconfigurée."
read prompt


#### Déroulement de l'analyse
# 1) analyser le répertoire personnel (sans descendre dans l'arborescence)
# => permet de vérifier les fichiers que l'on accumule à la racine de son répertoire personnel quand on est trop flemmard pour les ranger. Ce sont potentiellement des fichiers que l'on a pris moins de temps à considérer et qui pourraient être vicieux si transmis à un système WinDows.
# 2) analyser le courrier électronique stocké en local
# 3) vérification du dossier contenant les téléchargements
# 4) vérification des répertoires WinDows émulés par wine (si wine est installé)

# Définition de l'analyse de base effectuée en une seule opération (avec les mêmes réglages) base="$prompt $courriel $telechargement $tmpdir"

#sudo service avgd start # Si le demon avgd n'est pas lance automatiquement au demarrage
for repertoire in {"$base","$HOME","$wine"};do
opt=$options
echo "> Vérification en cours : [$repertoire]"
if [ "$repertoire" = "$HOME" ]
then opt="$options --reclevel=0"

elif [ "$repertoire" = "$wine" ]
then opt="--ext exe --heur"
fi
avgscan $opt $repertoire
done
echo "Fin de l'analyse."
#Pour accéder à la quarantaine, tapez avgvvctl list -s ou avgvvctl list -u."
echo '==========================================================================
> Contenu de la quarantaine [avgvvctl list -u]'
avgvvctl list -u
echo
'=======================================================================GF=
Merci, au revoir.'
#sudo service avgd stop # Si le demon avgd n'est pas lance automatiquement au demarrage
echo "Appuyez sur Entrée pour quitter."
read prompt
exit


--

Téléchargements*

Telecharger Retrouvez l'ensemble des fichiers pour mettre en place cette interface utilisateur dans une seule archive téléchargeable.

Sommaire ×
Protection à la volée
Analyse en un clic
Téléchargements