Ce tutoriel explique comment vous pouvez intégrer ClamAV dans PureFTPd pour l'analyse antivirus sur un système CentOS 7. En fin de compte, chaque fois qu'un fichier est téléchargé via PureFTPd, ClamAV vérifiera le fichier et le supprimera s'il contient un virus ou un logiciel malveillant.
1 Remarque préliminaire
Vous devriez avoir une configuration PureFTPd fonctionnelle sur votre serveur CentOS 7, par ex. comme indiqué dans ce tutoriel :Hébergement virtuel avec PureFTPd et MySQL (Incl. Gestion des quotas et de la bande passante) sur CentOS 7.
2 Installer ClamAV
ClamAV n'est pas disponible dans les référentiels CentOS officiels, par conséquent, nous activons le référentiel EPEL (si vous ne l'avez pas déjà fait. Commencez par importer les clés RPM GPK.
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Ensuite, nous activons le référentiel EPEL sur notre système CentOS car de nombreux packages que nous allons installer au cours de ce didacticiel ne sont pas disponibles dans le référentiel officiel CentOS 7 :
yum -y install epel-release
yum -y install yum-priorities
Modifier /etc/yum.repos.d/epel.repo...
nano /etc/yum.repos.d/epel.repo
... et ajoutez la ligne priority=10 à la section [epel] :
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [...]
Ensuite, nous mettons à jour nos packages existants sur le système :
yum update
Ensuite, nous pouvons installer ClamAV comme suit :
yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Modifiez le fichier /etc/freshclam.conf et commentez la ligne Exemple :
nano /etc/freshclam.conf
en ajoutant un # devant la ligne Exemple :
.....
# Comment or remove the line below.
# Example
....
Modifiez ensuite le fichier /etc/clamd.d/scan.conf :
nano /etc/clamd.d/scan.conf
et commentez la ligne Exemple comme nous l'avons fait dans le fichier ci-dessus et supprimez le # devant la ligne LocalSocket.
.....
# Comment or remove the line below.
# Example
....
LocalSocket /var/run/clamd.scan/clamd.sock
....
Ensuite, nous créons les liens de démarrage du système pour clamd et le démarrons :
systemctl enable [email protected]
freshclam
Démarrez ensuite le service clamav :
systemctl start [email protected]
Vous pouvez vérifier l'état du démon ClamAV avec cette commande :
systemctl status [email protected]
Le résultat devrait ressembler à ceci :
[[email protected] system]# systemctl status [email protected]
? [email protected] - Generic clamav scanner daemon
Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
Active: active (running) since Thu 2016-04-07 15:44:28 CEST; 1min 48s ago
Main PID: 10945 (clamd)
CGroup: /system.slice/system-clamd.slice/[email protected]
??10945 /usr/sbin/clamd -c /etc/clamd.d/scan.conf --nofork=yes
Apr 07 15:44:36 server1.example.com clamd[10945]: HTML support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: XMLDOCS support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HWP3 support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: Self checking every 600 seconds.
Apr 07 15:44:36 server1.example.com clamd[10945]: PDF support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: SWF support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HTML support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: XMLDOCS support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HWP3 support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: Self checking every 600 seconds.
3 Configuration de PureFTPd
D'abord, nous ouvrons /etc/pure-ftpd/pure-ftpd.conf et définissons CallUploadScript sur yes :
nano /etc/pure-ftpd/pure-ftpd.conf
[...] # If your pure-ftpd has been compiled with pure-uploadscript support, # this will make pure-ftpd write info about new uploads to # /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and # spawn a script to handle the upload. # Don't enable this option if you don't actually use pure-uploadscript. CallUploadScript yes [...]
Ensuite, nous créons le fichier /etc/pure-ftpd/clamav_check.sh (qui appellera /usr/bin/clamdscan chaque fois qu'un fichier est téléchargé via PureFTPd)...
nano /etc/pure-ftpd/clamav_check.sh
#!/bin/sh /usr/bin/clamdscan --fdpass --remove --quiet --no-summary -c /etc/clamd.d/scan.conf "$1"
... et le rendre exécutable :
chmod 755 /etc/pure-ftpd/clamav_check.sh
Maintenant, nous démarrons le programme pure-uploadscript en tant que démon - il appellera notre script /etc/pure-ftpd/clamav_check.sh chaque fois qu'un fichier est téléchargé via PureFTPd :
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Bien sûr, vous ne voulez pas démarrer le démon manuellement à chaque démarrage du système - nous ouvrons donc /etc/rc.local...
nano /etc/rc.local
... et ajoutez-y la ligne /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh - par ex. comme suit :
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh touch /var/lock/subsys/local
Enfin nous redémarrons PureFTPd :
systemctl restart [email protected]
C'est ça! Désormais, chaque fois que quelqu'un essaie de télécharger un logiciel malveillant sur votre serveur via PureFTPd, le ou les "mauvais" fichiers sont supprimés en silence.
4 Image de machine virtuelle
Ce tutoriel est disponible en tant que machine virtuelle prête à l'emploi au format OVA/OVF pour les abonnés Howtoforge. Le format VM est compatible avec VMWare et Virtualbox et d'autres outils qui peuvent importer ce format. Vous pouvez trouver le lien de téléchargement dans le menu de droite en haut. Cliquez sur le nom du fichier pour lancer le téléchargement.
Les identifiants de connexion de la VM sont :
Connexion SSH
Nom d'utilisateur :root
Mot de passe :howtoforge
Connexion MariaDB
Nom d'utilisateur :root
Mot de passe :howtoforge
Veuillez changer les mots de passe après le premier démarrage.
5 liens
- PureFTPD :http://www.pureftpd.org/
- ClamAV :http://www.clamav.net/
- CentOS :http://www.centos.org/