Dieses Tutorial erklärt, wie Sie ClamAV in PureFTPd zum Virenscannen auf einem CentOS 7-System integrieren können. Am Ende prüft ClamAV immer dann, wenn eine Datei über PureFTPd hochgeladen wird, die Datei und löscht sie, wenn sie einen Virus oder Malware enthält.
1 Vorbemerkung
Sie sollten ein funktionierendes PureFTPd-Setup auf Ihrem CentOS 7-Server haben, z. wie in diesem Tutorial gezeigt:Virtual Hosting with PureFTPd and MySQL (Incl. Quota and Bandwidth Management) on CentOS 7.
2 Installieren von ClamAV
ClamAV ist nicht in den offiziellen CentOS-Repositorys verfügbar, daher aktivieren wir das EPEL-Repository (falls Sie dies noch nicht getan haben. Beginnen Sie mit dem Importieren der RPM-GPK-Schlüssel.
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Dann aktivieren wir das EPEL-Repository auf unserem CentOS-System, da viele der Pakete, die wir im Laufe dieses Tutorials installieren werden, nicht im offiziellen CentOS 7-Repository verfügbar sind:
yum -y install epel-release
yum -y install yum-priorities
Bearbeiten Sie /etc/yum.repos.d/epel.repo...
nano /etc/yum.repos.d/epel.repo
... und fügen Sie die Zeile priority=10 zum Abschnitt [epel] hinzu:
[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 [...]
Dann aktualisieren wir unsere bestehenden Pakete auf dem System:
yum update
Danach können wir ClamAV wie folgt installieren:
yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Bearbeiten Sie die Datei /etc/freshclam.conf und kommentieren Sie die Beispielzeile aus:
nano /etc/freshclam.conf
durch Hinzufügen eines # vor der Beispielzeile:
.....
# Comment or remove the line below.
# Example
....
Bearbeiten Sie dann die Datei /etc/clamd.d/scan.conf:
nano /etc/clamd.d/scan.conf
und kommentieren Sie die Beispielzeile aus, wie wir es in der obigen Datei getan haben, und entfernen Sie das # vor der LocalSocket-Zeile.
.....
# Comment or remove the line below.
# Example
....
LocalSocket /var/run/clamd.scan/clamd.sock
....
Als nächstes erstellen wir die Systemstartlinks für clamd und starten es:
systemctl enable [email protected]
freshclam
Starten Sie dann den Dienst clamav:
systemctl start [email protected]
Sie können den Status des ClamAV-Daemons mit diesem Befehl überprüfen:
systemctl status [email protected]
Das Ergebnis sollte so aussehen:
[[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 Konfigurieren von PureFTPd
Zuerst öffnen wir /etc/pure-ftpd/pure-ftpd.conf und setzen CallUploadScript auf 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 [...]
Als nächstes erstellen wir die Datei /etc/pure-ftpd/clamav_check.sh (die /usr/bin/clamdscan aufruft, wenn eine Datei über PureFTPd hochgeladen wird)...
nano /etc/pure-ftpd/clamav_check.sh
#!/bin/sh /usr/bin/clamdscan --fdpass --remove --quiet --no-summary -c /etc/clamd.d/scan.conf "$1"
... und ausführbar machen:
chmod 755 /etc/pure-ftpd/clamav_check.sh
Jetzt starten wir das Programm pure-uploadscript als Daemon – es ruft unser Skript /etc/pure-ftpd/clamav_check.sh auf, wenn eine Datei über PureFTPd hochgeladen wird:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Natürlich wollen Sie den Daemon nicht bei jedem Systemstart manuell starten - deshalb öffnen wir /etc/rc.local...
nano /etc/rc.local
... und fügen Sie die Zeile /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh hinzu - z.B. wie folgt:
#!/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
Abschließend starten wir PureFTPd neu:
systemctl restart [email protected]
Das ist es! Wann immer jetzt jemand versucht, Malware über PureFTPd auf Ihren Server hochzuladen, werden die "schlechten" Dateien stillschweigend gelöscht.
4 Image der virtuellen Maschine
Dieses Tutorial ist als fertige virtuelle Maschine im OVA / OVF-Format für Howtoforge-Abonnenten verfügbar. Das VM-Format ist kompatibel mit VMWare und Virtualbox und anderen Tools, die dieses Format importieren können. Sie finden den Download-Link im rechten Menü oben. Klicken Sie auf den Dateinamen, um den Download zu starten.
Die Anmeldedaten der VM lauten:
SSH-Anmeldung
Benutzername:root
Passwort:howtoforge
MariaDB-Anmeldung
Benutzername:root
Passwort:howtoforge
Bitte ändern Sie die Passwörter nach dem ersten Booten.
5 Links
- PureFTPD:http://www.pureftpd.org/
- ClamAV:http://www.clamav.net/
- CentOS:http://www.centos.org/