Mise en place d'un système de protection antivirus sur un serveur de fichiers Samba sous Debian GNU/Linux

Nowicki Christophe

Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation. Pas de section inaltérable.

Historique des versions
Version v1.0 2004-05-15 CN
Première version publique.

Résumé

Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation. Pas de section inaltérable.


Table des matières

Introduction
Le projet Samba
Clam AntiVirus : ClamAV
OpenAntivirus : Samba-vscan
Installation
ClamAV
Samba
Samba-vscan
Configuration
Samba-vscan
Les partages Samba
Test de la configuration
Performances
Configuration Matériel de la machine de test
Résultats
Interprétation des résultats
Conclusion
Bibliographie
Glossaire

Introduction

Cet article explique comment mettre en place un système de protection antivirus sur un serveur de fichier Unix de type Samba pour protéger les machines Microsoft Windows. Le but est de centraliser sur le serveur de fichiers la détection des virus et d'empêcher leur propagation à l'aide de l'échange de fichiers. Pour mettre en place ce système de protection, nous avons besoin des projets suivants.

Le projet Samba

Implémentation du protocole SMB/CIFS sous Unix. C'est un logiciel libre qui permet à n'importe quelle machine Unix d'être serveur de fichiers, d'impression ou bien contrôleur de domaine dans un environnement Microsoft. Nous utiliserons la branche 3.0 du projet, plus exactement la version 3.0.2a disponible dans Debian "Sarge". La site Internet du projet Samba est : http://www.samba.org/

Clam AntiVirus : ClamAV

Antivirus pour les virus Windows fonctionnant sous Unix. Basé sur le projet OpenAntivirus (http://www.openantivirus.org/), qui permet de détecter tous les types de Virus Windows. Le principal atout de ClamAV est son démon, Clamd, qui fonctionne en tâche de fond et qui est facilement interfaçable, avec les applications telles qu'un serveur de mail, serveur http ou bien ici un serveur de fichiers Samba. Le démon demeure peu gourmand en ressources système et pourra être installé même sur les configurations légères. La page principale du projet est http://www.clamav.net/

OpenAntivirus : Samba-vscan

Module VFS pour Samba qui permet d'analyser le fichiers lors des accès sur le serveur de fichiers. Nous utiliserons la version 0.3.5 du projet qui est héberger sur Sourceforge : http://sourceforge.net/projects/openantivirus/.

Installation

ClamAV

Il faut tout d'abord installer l'antivirus ClamAV. Celui-ci est disponible dans Debian sous forme de paquet :

	#apt-get install clamav clamav-daemon clamav-testfiles
  

Debconf va vous demander comment mettre à jour automatiquement la base de signature de virus. Vous avez le choix entre :

Options de Debconf pour la mise à jours des signatures de virus pour clamav

daemon

si vous avez une connexion Internet permanante le daemon va récupérer la liste des mises à jour automatiquement.

ifup.d

si vous avez une connexion Internet de type RTC, clamav va mettre à jour la base lors de l'établissement de la connexion.

cron

debconf va mettre en place un crontab pour exécuter la mise à jour périodiquement.

manual

vous devez mettre à jour la base de signature de virus manuellement en ligne de commande.

Puis debconf va vous demander l'adresse du serveur de mises à jour des signatures. Vous pouvez garder la valeur par défaut qui pointe sur un round robin DNS mondial : http://database.clamav.net/

Debconf vous permet aussi de configurer un serveur mandataire HTTP si vous en avez besoin.

Et finalement si vous voulez notifier le serveur d'analyse antiviral des mises à jour de la base de signature de virus. Il vaut mieux répondre oui à cette question.

Samba

Nous avons aussi besoin du paquet samba. La version 3.0 se trouve directement dans "Sarge". Il suffit de l'installer à l'aide de la commande apt.

	#apt-get install samba
  

Debconf vous propose de lancer samba en deamon ou bien à partir de inetd. Pour de meilleur performances il faut lancer Samba en mode deamon.

Pour installer le projet Samba-vscan, nous avons besoin des sources de Samba. Pour cela, il faut se placer dans un répertoire de compilation comme /usr/src et télécharger les sources et les dépendances de Samba à l'aide d'apt.

	#cd /usr/src
	#apt-get source samba
	#apt-get build-deb samba
  

Une fois les sources telechargées et les bibliothèques nécessaires installées, vous pouvez reprendre les options de compilation du paquet Debian.

	#cd samba-3.0-2a
	#./debian/rules configure-stamp
  

Le programme dh_make va patcher, lance le script autoconf avec les mêmes options que celles du paquet Samba de Debian que vous avez installées précédemment. Il ne nous reste plus qu'à générer les prototypes des fonctions :

	#cd sources
	#make proto
  

Samba-vscan

Une fois que vous avez une version configurée des sources de Samba il faut récupérer les sources de Samba-vscan sur sourceforge.

http://sourceforge.net/project/showfiles.php?group_id=10590&package_id=29198

	#cd /usr/src
	#wget http://switch.dl.sourceforge.net/sourceforge/openantivirus/samba-vscan-0.3.5.tar.bz2
	#tar xjvf samba-vscan-0.3.5.tar.bz2
  

Le module VFS samba-vscan est fortement dépendant des sources de Samba. Il faut donc indiquer lors de la configuration le répertoire oû se trouve les sources de Samba :

	#cd samba-vscan-0.3.5 
	#./configure --with-samba-source=/usr/src/samba-3.0.2a/source
	#make
	#make install
	#cp clamav/vscan-clamav.conf /etc/samba/
  

Configuration

Samba-vscan

Une fois que vous avez installé tous les éléments, il ne vous reste plus qu'à configurer le comportement de l'antivirus et les partages Samba. Dans le fichier de configuration de samba-vscan (/etc/samba/vscan-clamav.conf), il faut modifier plusieurs variables :

; envoyer un message de notification grâce au service 
; Windows Messenger service lorsqu'un virus est trouvé?
; (default: yes)
send warning message = yes

; le nom de la socket de clamav définie dans /etc/clamav/clamav.conf
clamd socket name = /var/run/clamav/clamd.ctl

; action à faire en cas d'infection
; quarantine: essayer de déplacer le fichier dans le répértoire de quarantaine
; si le déplacement échoue le fichier est effacé.
; delete:     éffacer le fichier (dangeureux)
; nothing:    ne rien faire
infected file action = quarantine

quarantine directory  = /tmp
quarantine prefix = vir-

Les partages Samba

Une fois le comportement de l'antivirus défini, il ne nous reste plus qu'à ajouter des partages Samba protégés par l'antivirus. Pour cela nous allons ajouter dans le fichier de configuration de Samba deux nouveaux partages (/etc/samba/smb.conf) :

[smb]
   comment = /smb directory
   path = /smb
   writeable = yes
   browseable = yes
   guest ok = yes

[smb_vscan]
   comment = virus-protected /smb directory
   path = /smb
   vfs object = vscan-clamav
   vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
   writeable = yes
   browseable = yes
   guest ok = yes

[Note] Note

N'oubliez pas de tester votre fichier de configuration à l'aide du programme testparm qui fait partie de la suite Samba.

Test de la configuration

Si la syntaxe du fichier de configuration est correcte vous pouvez redémarrer le deamon Samba et tester le bon fonctionnement des partages.

	#/etc/init.d/samba restart
	$smbclient //serveur/smb_vscan
	Password: 
	Anonymous login successful
	Domain=[REZO] OS=[Unix] Server=[Samba 3.0.2a-Debian]
	$smb: \> lcd /usr/share/clamav-testfiles/
	$smb: \> put test2.zip
  

Si vous voulez voir si l'antivirus fonctionne correctement il suffit de regarder dans syslog (le fichier /var/log/syslog) du serveur de fichiers :

May 11 06:44:16 sarge smbd_vscan-clamav[21257]: samba-vscan (vscan-clamav 0.3.5) connected (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org
May 11 06:44:16 sarge smbd_vscan-clamav[21257]: INFO: connect to service smb_vscan by user nobody
May 11 06:44:27 sarge smbd_vscan-clamav[21257]: ALERT - Scan result: '/smb/test2.zip' infected with virus 'ClamAV-Test-Signature', client: '127.0.0.1'
May 11 06:44:27 sarge smbd_vscan-clamav[21257]: INFO: quarantining file '/smb/test2.zip' to '/tmp/vir-A8UTzy' was successful

Si vous avez activé le service Windows Messenger sur le poste Windows (celui-ci est activé par défaut dans toutes les versions de Microsoft Windows sauf 2003) . Vous devriez voir apparaître le pop-up suivant sur votre écran.

Voilà, à vous de jouer. Vous pouvez définir un comportement différent par partage en jouant avec les options du fichier /etc/samba/smb.conf.

Performances

C'est bien beau tout cela, mais quel vont être les performances de mon serveur de fichiers? Pour être honnête avec vous votre magnifique serveur de fichier Samba va se transformer en un serveur de fichiers NT ;) Il faut bien comprendre que pour chaque tentative d'ouverture ou de fermeture de fichier, celui-ci va être analyser par l'antivirus. Pour vous donner une idée de la dégradation des performancés, j'ai effectué un benchmark à l'aide de smbtorture et dbench. Comme tout benchmark, il est à prendre avec des pincettes d'autant plus que les résultats sont catastrophiques.

Configuration Matériel de la machine de test

  • Processeur : 2 x AMD Athlon MP 2000+ (2 x 3600 bogomips)

  • Memoire : 512 Mo

  • Disque dur : 2 x 40Go sur un contrôleur RAID 0 Promise

  • Réseau : Ethernet 100 BaseTx

Résultats

Interprétation des résultats

Comme vous pouvez le constater sur ce graphique la vitesse du serveur de fichier est divisée par 100 en moyenne. La vitesse du serveur augmente avec le nombre de clients seulement car la machine dispose de deux processeurs et que le deamon Samba et Clamd "forkent".

Si les résultats de ce benchmark sont dramatiques, dans la pratique les résultats sont bien meilleurs. Ce benchmark pousse a bout le serveur de fichier en créant énormément de petits fichiers. Ce qui dans la pratique n'arrive pas souvent sur un serveur de fichiers d'entreprise. En moyenne, le serveur permet d'obtenir des débits entre 500ko/sec et 1.5Mo/sec. Ce qui reste acceptable pour un serveur de PME.

Conclusion

Grâce aux logiciels libres, il est possible de protéger les documents importants de votre entreprise dans un environnement hostile. Bien sûr il ne s'agit que d'une solution de plus pour protéger votre système d'information contre les virus qui sont les sous-produits du logiciel propriétaire. Elle ne permet pas l'élimination des virus de votre infrastructure informatique comme le permettrait une migration vers une environnement fiable comme Linux, Unix ou MacOS X.

Bibliographie

Articles

Bernard Thierry, Framasoft : Présentation de ClamAV

Andrew Tridgell, Samba Team : Using the Samba Testsuite

Glossaire

Disk And Execution MONitor

Programme réalisant des tâches de fond du système, sous Unix. Appelé aussi driver sur d'autres système. En temps normal, son fonctionnement ne doit pas être remarqué par l'utilisateur.

Server Message Block

Protocole de Microsoft et d'Intel, fonctionnant sur NetBIOS et permettant le partage de ressources (disques et imprimantes) à travers un réseau publié en 1988.

Common Internet File Systemr

Dernière version du protocole SMB, permettant une meilleure extensibilité.