Ce tutoriel explique comment vous pouvez intégrer ClamAV dans ProFTPd pour l'analyse antivirus sur un système Debian Lenny. Ceci est réalisé via mod_clamav. En fin de compte, chaque fois qu'un fichier est téléchargé via ProFTPd, ClamAV vérifiera le fichier et le supprimera s'il s'agit d'un logiciel malveillant.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
Vous devriez avoir une configuration ProFTPd fonctionnelle sur votre serveur Debian Lenny.
2 Installer ClamAV
ClamAV peut être installé comme suit :
aptitude install clamav clamav-daemon libclamav-dev
Nous devons maintenant reconfigurer ClamAV pour que Clamd utilise des connexions TCP au lieu d'un socket Unix local. Il est fortement recommandé d'éviter les connexions socket Unix lors de l'utilisation de la fonctionnalité Chroot de ProFTPd (DefaultRoot ~). La raison est que si mod_clamav doit se connecter à Clamd, le socket Unix n'est pas disponible dans l'environnement chroot.
Exécuter
dpkg-reconfigure clamav-base
... et répondez à ces questions comme suit (acceptez les valeurs par défaut pour toutes les autres questions) :
Type de socket :<-- TCP
Port TCP que clamd écoutera :<-- 3310
Adresse IP que clamd écoutera :<-- 127.0.0.1
Redémarrez ensuite Clamd et freshclam :
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart
Maintenant lancez
netstat -tap | grep clamd
... et vous devriez voir que Clamd écoute sur localhost via TCP :
server1:~# netstat -tap | grep clamd
tcp 0 0 localhost.localdom:3310 *:* LISTEN 29430/clamd
server1:~#
3 Reconstruction de ProFTPd
Malheureusement, mod_clamav ne fait pas partie de ProFTPd par défaut, et il n'y a pas de paquet Debian pour mod_clamav, nous devons donc reconstruire ProFTPd avec mod_clamav. Je vais utiliser le paquet source Debian de ProFTPd et créer de nouveaux paquets ProFTPd .deb avec le support mod_clamav.
Nous installons d'abord tous les packages nécessaires à la reconstruction de ProFTPd :
aptitude build-dep proftpd
Nous avons également besoin du package suivant (qui n'est pas installé par la commande précédente pour une raison quelconque...) :
aptitude install libpam-dev
Maintenant, nous téléchargeons le paquet source ProFTPd sur /usr/src :
cd /usr/src
apt-get source proftpd
Ensuite, nous téléchargeons mod_clamav dans /usr/src et le décompressons :
wget --no-check-certificate https://secure.thrallingpenguin.com/redmine/attachments/download/1/mod_clamav-0.11rc.tar.gz
tar xzvf mod_clamav-0.11rc.tar.gz
Ensuite, nous copions les fichiers mod_clamav-0.11rc/mod_clamav.* dans le répertoire proftpd-dfsg-1.3.1/contrib...
cp mod_clamav-0.11rc/mod_clamav.* proftpd-dfsg-1.3.1/contrib
... et patcher les sources ProFTPd :
cd proftpd-dfsg-1.3.1
patch -p1 < ../mod_clamav-0.11rc/proftpd.patch
Ensuite, nous devons éditer debian/rules :
vi debian/rules
Recherchez la section CONF_ARGS et ajoutez-y --with-modules=mod_clamav :
[...] CONF_ARGS := --prefix=/usr \ --with-includes=$(shell pg_config --includedir):$(shell mysql_config --include|sed -e 's/-I//') \ --mandir=/usr/share/man --sysconfdir=/etc/$(NAME) --localstatedir=/var/run --libexecdir=/usr/lib/$(NAME) \ --enable-sendfile --enable-facl --enable-dso --enable-autoshadow --enable-ctrls --with-modules=mod_readme \ --enable-ipv6 --enable-nls --with-modules=mod_clamav [...] |
Nous pouvons maintenant reconstruire ProFTPd :
dpkg-buildpackage
Maintenant, nous remontons d'un répertoire, c'est là que les nouveaux packages .deb ont été créés :
cd ..
La commande
ls -l
vous montre les packages disponibles :
server1:/usr/src# ls -l
total 5472
drwxr-xr-x 2 501 501 4096 2009-04-20 10:22 mod_clamav-0.11rc
-rw-r--r-- 1 root src 5115 2010-10-01 03:28 mod_clamav-0.11rc.tar.gz
-rw-r--r-- 1 root src 195066 2010-10-01 03:32 proftpd_1.3.1-17lenny4_all.deb
-rw-r--r-- 1 root src 690228 2010-10-01 03:32 proftpd-basic_1.3.1-17lenny4_i386.deb
drwxr-xr-x 13 root root 4096 2010-10-01 03:32 proftpd-dfsg-1.3.1
-rw-r--r-- 1 root src 107998 2010-10-01 03:29 proftpd-dfsg_1.3.1-17lenny4.diff.gz
-rw-r--r-- 1 root src 1103 2010-10-01 03:29 proftpd-dfsg_1.3.1-17lenny4.dsc
-rw-r--r-- 1 root src 3305 2010-10-01 03:32 proftpd-dfsg_1.3.1-17lenny4_i386.changes
-rw-r--r-- 1 root src 2662056 2007-10-16 01:02 proftpd-dfsg_1.3.1.orig.tar.gz
-rw-r--r-- 1 root src 1255660 2010-10-01 03:32 proftpd-doc_1.3.1-17lenny4_all.deb
-rw-r--r-- 1 root src 213004 2010-10-01 03:32 proftpd-mod-ldap_1.3.1-17lenny4_i386.deb
-rw-r--r-- 1 root src 203562 2010-10-01 03:32 proftpd-mod-mysql_1.3.1-17lenny4_i386.deb
-rw-r--r-- 1 root src 203512 2010-10-01 03:32 proftpd-mod-pgsql_1.3.1-17lenny4_i386.deb
server1:/usr/src#
Nous pouvons installer les nouveaux packages ProFTPd .deb comme suit :
dpkg -i proftpd*.deb
4 Configuration de ProFTPd
Nous devons maintenant configurer ProFTPd pour utiliser mod_clamav chaque fois qu'un fichier est téléchargé. Ouvrez /etc/proftpd/proftpd.conf...
vi /etc/proftpd/proftpd.conf
... et ajouter la strophe
<IfModule mod_clamav.c>
ClamAV on
ClamServer 127.0.0.1
ClamPort 3310
</IfModule>
quelque part, par ex. sous le
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
rubrique :
[...] <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> <IfModule mod_clamav.c> ClamAV on ClamServer 127.0.0.1 ClamPort 3310 </IfModule> # # Alternative authentication frameworks # #Include /etc/proftpd/ldap.conf Include /etc/proftpd/sql.conf [...] |
Redémarrez ProFTPd :
/etc/init.d/proftpd restart
Vérifiez maintenant si mod_clamav est chargé en exécutant :
proftpd -vv
mod_clamav doit être listé dans la sortie :
server1:~# proftpd -vv
- ProFTPD Version: 1.3.1 (stable)
- Scoreboard Version: 01040002
- Built: Fri Oct 1 03:31:03 CEST 2010
- Module: mod_core.c
- Module: mod_xfer.c
- Module: mod_auth_unix.c
- Module: mod_auth_file/0.8.3
- Module: mod_auth.c
- Module: mod_ls.c
- Module: mod_log.c
- Module: mod_site.c
- Module: mod_delay/0.6
- Module: mod_dso/0.4
- Module: mod_auth_pam/1.0.1
- Module: mod_clamav.c
- Module: mod_cap/1.0
- Module: mod_ctrls/0.9.4
- Module: mod_lang/0.8
server1:~#
C'est ça! Désormais, chaque fois que quelqu'un essaie de télécharger un logiciel malveillant sur votre serveur via ProFTPd, le ou les "mauvais" fichiers sont supprimés. Vous pouvez tester cela en téléchargeant le virus de test Eicar depuis http://www.eicar.org/anti_virus_test_file.htm; essayez de le télécharger sur votre serveur ProFTPd, et si tout se passe bien, il devrait être supprimé :
5 liens
- ProFTPd :http://www.proftpd.org/
- mod_clamav :http://www.thrallingpenguin.com/resources/mod_clamav.htm
- ClamAV :http://www.clamav.net/
- Debian :http://www.debian.org/