Questo tutorial spiega come integrare ClamAV in PureFTPd per la scansione antivirus su un sistema CentOS 7. Alla fine, ogni volta che un file viene caricato tramite PureFTPd, ClamAV controllerà il file e lo cancellerà se contiene un virus o un malware.
1 Nota preliminare
Dovresti avere una configurazione PureFTPd funzionante sul tuo server CentOS 7, ad es. come mostrato in questo tutorial:Hosting virtuale con PureFTPd e MySQL (Incl. Quota and Bandwidth Management) su CentOS 7.
2 Installazione di ClamAV
ClamAV non è disponibile nei repository CentOS ufficiali, quindi abilitiamo il repository EPEL (se non l'hai già fatto. Inizia importando le chiavi RPM GPK.
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Quindi abilitiamo il repository EPEL sul nostro sistema CentOS poiché molti dei pacchetti che installeremo nel corso di questo tutorial non sono disponibili nel repository CentOS 7 ufficiale:
yum -y install epel-release
yum -y install yum-priorities
Modifica /etc/yum.repos.d/epel.repo...
nano /etc/yum.repos.d/epel.repo
... e aggiungi la linea priority=10 alla sezione [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 [...]
Quindi aggiorniamo i nostri pacchetti esistenti sul sistema:
yum update
Successivamente, possiamo installare ClamAV come segue:
yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Modifica il file /etc/freshclam.conf e commenta la riga di esempio:
nano /etc/freshclam.conf
aggiungendo un # davanti alla riga Esempio:
.....
# Comment or remove the line below.
# Example
....
Quindi modifica il file /etc/clamd.d/scan.conf:
nano /etc/clamd.d/scan.conf
e commenta la riga di esempio come abbiamo fatto nel file sopra e rimuovi il # davanti alla riga LocalSocket.
.....
# Comment or remove the line below.
# Example
....
LocalSocket /var/run/clamd.scan/clamd.sock
....
Quindi creiamo i collegamenti di avvio del sistema per clamd e lo avviamo:
systemctl enable [email protected]
freshclam
Quindi avvia il servizio clamav:
systemctl start [email protected]
Puoi controllare lo stato del demone ClamAV con questo comando:
systemctl status [email protected]
Il risultato dovrebbe essere questo:
[[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 Configurazione di PureFTPd
Per prima cosa apriamo /etc/pure-ftpd/pure-ftpd.conf e impostiamo CallUploadScript su 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 [...]
Quindi creiamo il file /etc/pure-ftpd/clamav_check.sh (che chiamerà /usr/bin/clamdscan ogni volta che un file viene caricato tramite 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"
... e rendilo eseguibile:
chmod 755 /etc/pure-ftpd/clamav_check.sh
Ora avviamo il programma pure-uploadscript come demone:chiamerà il nostro script /etc/pure-ftpd/clamav_check.sh ogni volta che un file viene caricato tramite PureFTPd:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Ovviamente, non vuoi avviare il demone manualmente ogni volta che avvii il sistema, quindi apriamo /etc/rc.local...
nano /etc/rc.local
... e aggiungi la riga /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh ad essa - ad es. come segue:
#!/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
Finalmente riavviamo PureFTPd:
systemctl restart [email protected]
Questo è tutto! Ora, ogni volta che qualcuno tenta di caricare malware sul tuo server tramite PureFTPd, i file "cattivi" verranno eliminati silenziosamente.
4 Immagine della macchina virtuale
Questo tutorial è disponibile come macchina virtuale pronta per l'uso in formato OVA / OVF per gli abbonati Howtoforge. Il formato VM è compatibile con VMWare e Virtualbox e altri strumenti che possono importare questo formato. Puoi trovare il link per il download nel menu a destra in alto. Fare clic sul nome del file per avviare il download.
I dettagli di accesso della VM sono:
Accesso SSH
Nome utente:root
Password:howtoforge
Accesso a MariaDB
Nome utente:root
Password:howtoforge
Si prega di modificare le password dopo il primo avvio.
5 link
- PureFTPD:http://www.pureftpd.org/
- ClamAV:http://www.clamav.net/
- CentOS:http://www.centos.org/