Système antivirus sur un serveur Samba

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/.

  • SMB ? (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.
  • CIFS ? (Common Internet File System) Dernière version du protocole SMB, permettant une meilleure extensibilité.

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 service, 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, dans ce cas précis, un serveur de fichiers Samba. Le service 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 les fichiers lors des accès sur le serveur de fichiers. Nous utiliserons la version 0.3.5 du projet qui est hébergé 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 paquets :

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

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

  • daemon : si vous avez une connexion Internet permanente le service 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. 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. Vous pourrez à tout moment retrouver ces menus vous facilitant la configuration en tapant la commande suivante :

# dpkg-reconfigure clamav-freshclam

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 tant que service seul ou bien à partir de Inetd. Pour de meilleures performances il faut lancer Samba en mode Service.

Service ou en anglais Daemon ? (Disk And Execution MONitor) Programme réalisant des tâches de fond du système, sous Unix. Appelé aussi driver sur d'autres systèmes. En temps normal, son fonctionnement ne doit pas être remarqué par l'utilisateur.

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 puis télécharger les sources et les dépendances de Samba à l'aide de la commande Apt :

# cd /usr/src
# apt-get install dpkg-dev
# apt-get source samba
# apt-get build-dep samba

Une fois les sources téléchargé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, lancer le script autoconf avec les mêmes options que celles du paquet Samba de Debian que vous avez installé 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 :

# 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 trouvent 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 du socket de clamav défini 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 :/ effacer 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, modifions donc le fichier /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

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 daemon 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 la version 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 quelles 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 analysé par l'antivirus. Pour vous donner une idée de la dégradation des performances, 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 daemon 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 à bout le serveur de fichiers 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 intéressants :

 
reseau/systeme-antivirus-sur-un-serveur-samba.txt · Dernière modification: 11/12/2010 16:01 par orgrim