Ausgehend vom Ausblick aus meinem Beitrag zu ClamAV bzw. ClamWin, möchte ich mir für diesen Beitrag die Möglichkeit, die Verteilung der aktuellen Viren-Datenbanken mit Hilfe eines zentralen Update-Servers zu realisieren, ansehen. Im Netz findet man schon einige Beiträge zu diesem Thema, da sich natürlich schon mehrere Leute mal Gedanken zu diesem Thema gemacht haben. Theoretisch könnte man die Datenbank-Dateien wohl einfach von einem Netzlaufwerk aus einbinden. Das ist mir aber zu blöd und führt höchst wahrscheinlich zu Problemen.
Deshalb nutze ich einfach die schon vorhanden Update-Technologie, bei welcher einfach die neuen Datenbank-Dateien von einem Webserver gezogen werden. Diese kann man, wie z. B. die main.cvd, auch einfach über den Browser runterladen, wenn man den Link entsprechend angibt.
Diesen Webserver gilt es nun selbst bereitzustellen. Als Grundlage dafür habe ich einen Ubuntu Server in der LTS-Version aufgesetzt. Zum Testen habe ich diesen ohne irgendwelche Besonderheiten installiert.
Server-Einrichtung:
Um die Updates verteilen zu können, habe ich dann erstmal einen Webserver aus der Kiste gemacht und dafür Apache installiert :
1 |
sudo apt-get install apache2 |
Damit die Viren-Datenbanken auch automatisch heruntergeladen werden, habe ich dort auch ClamAV und den zugehörigen Daemon installiert:
1 |
sudo apt-get install clamav clamav-daemon |
Ich dachte mir dann, ich mache es mir einfach und habe in der freshclam.conf unter /etc/clamav den Speicherort der Datenbank-Dateien auf den Ordner des Apache geändert:
1 |
DatabaseDirectory /var/www/html |
Zum Testen, ob die Datenbanken dort hin runtergeladen werden, habe ich dann den freshclam-Dienst gestoppt und manuell ein Update angestoßen:
1 2 |
sudo service clamav-freshclam stop sudo freshclam |
Rechteprobleme:
Wie zu erwarten war, meckert freshclam erst einmal wegen den Ordner-Rechten herum, weil es in diesen Ordner nicht schreiben kann. Also habe ich die Rechte wie folgt angepasst:
1 2 |
sudo chown -R clamav:clamav /var/www sudo chmod 775 /var/www |
Dann nochmal versucht und … natürlich funktioniert es nicht. Stattdessen meldet freshclam immer noch den gleichen Fehler bzgl. der Berechtigungen:
1 2 |
ERROR: Can't create temporary directory /var/www/html/clamav-f52645d8e80b9b727228734e339d231d Hint: The database directory must be writable for UID 1000 or GID 1000 |
Ich habe mich dann noch mehrere Stunden mit diesem Problem aufgehalten und auch einen komplett neuen Ordner zum Test erstellt und diesem die richtigen Rechte gegeben, aber nichts hilft. Freshclam lädt die Dateien, aus welchem Grund auch immer, nur in den bei der Installation voreingestellten Ordner, oder in einen Unterordner in diesem, herunter. Selbst mit einem chmod auf 777 und nach einem Neuaufsetzen des Servers gab es keine Besserung. Auch der umgekeherte Weg, das Rootverzeichnis des Apaches einfach auf den Ordner /var/lib/clamav umzustellen wollte nicht funktionieren.
Anscheinend ist so etwas ein verbreitetes Problem, wie man beim Recherchieren herausfindet:
https://askubuntu.com/questions/191290/freshclam-error
https://bbs.archlinux.org/viewtopic.php?id=181070
https://community.spiceworks.com/topic/113953-clamav-can-t-create-temporary-directory-usr-local-share-clamav-clamav-d5-etc
Was nicht sein soll ist nicht und dieses Rätsel werde ich wohl nicht mehr lösen, weshalb ich dann den html-Ordner unter /var/wwe einfach gelöscht habe und den freshclam-Download-Ordner auf /var/lib/clamav belassen habe und nun mit einem symbolischen Link das html-Verzeichnis auf den Ordner /var/lib/clamav umgeleitet habe:
1 |
ln -s /var/lib/clamav /var/www/html |
Und siehe da, es funktioniert:
Zum Schluss noch den Freshclam-Dienst wieder starten, damit die Datenbanken auf dem Server wieder automatisch aktualisiert werden:
1 |
sudo service clamav-freshclam start |
Datenbank-Kompression:
Noch ein weiteres Problem fiel mir dann auf, als der Server ein Update der daily.cvd durchgeführt hat. Diese wurde umbenannt in daily.cld, was wohl der nicht durchgeführten Kompression geschuldet ist. Diese findet standardmäßig nicht statt, wenn neue Einträge in diese Datenbank integriert werden. Dadurch kann der Client aber die Datenbank gar nicht mehr aktualisieren, da er entweder nach einer Diff-Datei, die nur die neuen Einträge enthält, oder nach der komprimierten cvd-Variante sucht.
Also habe ich die freshclam.conf noch wie folgt abgeändert, damit die Datenbank immer komprimiert wird:
1 |
CompressionLocalDatabase yes |
Mal sehen, ob das ganze auf Langzeit funktioniert 😉
Edit:
Leider funktioniert das Downloaden der daily.cvd nicht mehr, denn aus irgendeinem Grund komprimiert freshclam die Datenbank nicht, trotz der gemachten Angabe in der Config-Datei. Schade, man findet zwar einige Forenbeiträge etc. zu solchen Problemen, aber keine brauchbaren Lösungen.
Inspiriert durch folgende Seiten:
https://www.clamav.net/documents/private-local-mirrors
https://forum.clamwin.com/viewtopic.php?t=3071