Wie behebe ich den OS X Server? “LibClamAV-Fehler: mpool_malloc (): Versuch, 8388608 Bytes zuzuweisen.” Neustartschleife?

0

Seit dem letzten Freitag (21. Oktober 2016) hat ein Neustart von 10.6 (Snow Leopard Server) und 10.7 (Lion Server) zu zahlreichen Wiederholungen der protokollierten Fehlermeldung geführt:

LibClamAV-Fehler: mpool_malloc (): Versuch, 8388608 Bytes zuzuweisen.

und

WARNUNG: [LibClamAV] mpool_malloc (): Versuch, 8388608 Bytes zuzuweisen. Bitte melden Sie sich bei http://bugs.clamav.net Log size = 1048612, max = 1048576 LOGGING DISABLED (Maximale Größe der Logdatei überschritten).

Problemumgehung (kein Fix)

Nach dem Deaktivieren von "Server Admin"> "Mail"> "Einstellungen"> "Allgemein"> "Filter":

  1. [] Aktivieren Sie die Junk-Mail-Filterung
  2. [] Aktivieren Sie die Virenfilterung

Die Fehlermeldung war weg und die Neustarts wurden gestoppt.

Regression

Es scheint, dass die ClamAV-Engine ( $ /usr/bin/clamscan --version... 0.97.8) laut ClamAV.net-Bug 11647 zu alt ist .

Wie repariert man?

Wie kann man den " LibClamAV Error: mpool_malloc(): Attempt to allocate 8388608 bytes" ClamAV- Fehler dauerhaft beheben und Funktionen zum Filtern von Junk-E-Mails und Viren nutzen ? Mit anderen Worten: Wie aktualisiere ich den integrierten Clamav-Scanner des Mac OS X Lion 10.7-Servers (ohne Xcode auf dem Computer zu installieren, auf dem das veraltete ClamAV ausgeführt wird) ?

Pro Backup
quelle
In der verknüpften Fehlerbeschreibung wird empfohlen, den Scanner zu aktualisieren. Hast du das schon probiert?
Nohillside
@patrix " Wie aktualisiere ich den Clamav-Scanner auf einem Mac OS X Lion 10.7-Server? " ist eine andere Möglichkeit, meine Frage zu formulieren . Es ist kein Upgrade von Apple verfügbar. Also suche ich nach einem Rezept, um den eingebauten ClamAV-Scanner zu (hacken). Hinweis: Ich bin momentan mit Sandboxing beschäftigt, um clamd.sb aus einem (Bash-) Skript heraus zu bearbeiten.
Pro Backup
Ist ein Upgrade auf clamxav.com/download.html eine Option? Oder ClamAV aus dem Quellcode kompilieren?
Nohillside
@patrix Ein Upgrade auf clamxav ist keine Option, da dadurch die integrierte Clamd nicht repariert wird. Durch versehentliches Aktivieren der integrierten Clamd- oder Freshclam-Funktion stürzt das System erneut ab (Neustart-Schleife). Das Kompilieren aus dem Quellcode ist eine Option, allerdings nicht auf diesem Host, sondern nur auf einem separaten Mac. Mein aktueller xCode-Rechner läuft unter 10.9.5. Vielen Dank für die Verfeinerung meiner Frage.
Pro Backup
IMHO auf die eine oder andere Weise müssen Sie aktualisieren (entweder Clamav oder MacOS) und / oder selbst etwas kompilieren (und dann die eingebaute Version ersetzen). Das Ausschließen dieser Optionen setzt dem Lösungsraum hier ziemlich starke Grenzen.
Nohillside

Antworten:

1

Ich bin auf diese Seite gestoßen, die sich mit dem Problem auf einem sorgfältig neu erstellten OS X-Server mit 10.6 befasst (ich habe Gründe). Die Selbstkompilierungsantwort von Pro Backup ist fantastisch detailliert, aber ich bin zumindest kurzfristig auf eine einfachere Antwort gestoßen. Mir ist aufgefallen, dass ein anderer Computer, der ebenfalls 10.6 Server verwendet, das Problem nicht hatte. Bei der Überprüfung der Versionen der einzelnen Verwendungszwecke /usr/bin/clamscan --versionstellte ich fest, dass es sich um die gleichen Engine-Versionen handelte, jedoch um unterschiedliche Definitionsversionen:

Hat das Problem

ClamAV 0.97.8/22421/Sun Oct 23 22:58:38 2016
ClamAV 0.97.8/22422/Mon Oct 24 12:02:38 2016

gegen

Hat das Problem nicht

ClamAV 0.97.8/22470/Wed Nov  2 19:05:24 2016

Manueller Download von clamAV-Definitionen

Also beschlossen Sie, die Virendefinitionen manuell mit /usr/bin/freshclam(as sudo) herunterzuladen . Es lief durch viele Versionen und endete mit 22471. Ich bin mir noch nicht sicher, ob dies der Trick sein wird, aber ich hoffe, es ist auf dem richtigen Weg.

Nighthawk
quelle
Ich kann bestätigen, dass das manuelle ClamAV-Definitionsupdate funktioniert. Dadurch bleibt Ihre ClamAV-Engine jedoch in der veralteten und nicht mehr signaturgetesteten Version 0.97. ClamAV kündigte das Ende von Motor 0.97 am 1. Juni 2016 an . Quote: Signaturen funktionieren möglicherweise nach dem 1. Juni. Wir testen diese Konfiguration nicht mehr. Sie sind also auf sich allein gestellt .
Pro Backup
Obwohl nur das Aktualisieren der Definitionen eine schnelle kurzfristige Lösung darstellt, liegt die Ursache darin, dass Definitionen für diese Engine nicht mehr getestet werden. Daher kann ich diese Antwort nicht mit dem akzeptierten Antwort-Flag versehen.
Pro Backup
0

Ich hatte das gleiche Problem und deaktivierte E-Mails (wir verwenden sie nicht). Das Problem scheint verschwunden zu sein.

Ich denke, ClamAV hat eine Definition oder ein Update herausgebracht, das schlecht war. Am besten ist es, die Filterung vorerst deaktiviert zu lassen, bis ein Update veröffentlicht wird. Es kann auch hilfreich sein, sie auf Anfrage unter http://bugs.clamav.net zu melden .

Jay Scholz
quelle
Bitte sag mir, dass DU es auch gemeldet hast.
Maury Markowitz
@MauryMarkowitz Es macht nicht viel Sinn, darüber zu berichten, da die ClamAV-Richtlinie zum Ende der Lebensdauer besagt, dass sie keine Probleme in Motoren beheben wird, die älter als aktuell (0,99) und eine größere Release-Generation davor (0,98). Zitat: " Derzeit wird jede Version von ClamAV .97 und höher, einschließlich aller Nebenversionen, nicht unterstützt. "
Pro Backup
0

Aktualisieren von Apples ClamAV auf 10.7 (Lion)

Das Update-Rezept unten erfordert "Xcode" und "Xcode Command Line Tools", um Software aus dem Quellcode zu erstellen. Die folgenden Terminal.app-Befehle werden mit Mac OS X 10.9.5, Xcode 6.2 in einer zsh-Shell getestet. Einzelheiten dazu, warum mehrere Optionen ausgewählt wurden, finden Sie im Abschnitt "Hintergrund" unten.

Build pcre 8.39

$ cd ~
$ mkdir src
$ cd /tmp && curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz && cd -
$ cd src
$ tar zxf /tmp/pcre-8.39.tar.gz && rm /tmp/pcre-8.39.tar.gz
$ cd pcre-8.39
$ ./configure --prefix=/usr/local/pcre
$ make && make check
$ make install DESTDIR=/tmp/pcre
$ rm -r /tmp/pcre/usr/local/pcre/share #remove docs
$ tar czvf ~/pcre-8.39.tgz -C /tmp/pcre --exclude=.DS_Store usr/

Erstellen Sie clamav, um die in Mac OS X integrierte Version zu überschreiben

$ cd ~/src
$ cd /tmp && curl -LO https://www.clamav.net/downloads/production/clamav-0.99.2.tar.gz && cd -
$ tar zxf /tmp/clamav-0.99.2.tar.gz && rm /tmp/clamav-0.99.2.tar.gz
$ cd clamav-0.99.2

Ohne -mmacosx-version-min=10.XClamAV wird 0.99.2 mit Compilercode-Optimierungen erstellt, die auf der OS X-Version des Hosts (10.9) ausgeführt werden, jedoch nicht mit 10.6 und 10.7 funktionieren.

Im Fall bauen Sie nicht für den Betrieb auf 10.6.8 oder 10.7.5 Sie müssen möglicherweise geändert werden 10.8.0oder 11.4.2auf die Ausgabe des Befehls uname -rauf Ihrem (remote) Host - Mac ausgeführt.

10.6.8

$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin10.8.0 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/

10.7.5

$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin11.4.2 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/

Laden Sie die .tgz-Dateien hoch oder kopieren Sie sie auf den Remote-10.7-Computer

SSH sollte auf dem entfernten (empfangenden) Host aktiviert sein, damit diese Beispielbefehle funktionieren.

$ scp ~/pcre-8.39.tgz remote.host.tld:/tmp/
$ scp ~/clamav-0.99.2.tgz remote.host.tld:/tmp/

Sie können die .tgz-Dateien auch auf einen Webserver hochladen und auf den Remote-Host-Rechnern herunterladen, beispielsweise mit dem folgenden Befehl:

$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/pcre-8.39.tgz && cd -
$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/clamav-0.99.2.tgz && cd -

Installieren Sie pcre 8.39 auf dem Remote-Host-Mac unter / usr / local / pcre

$ sudo tar zxvf /tmp/pcre-8.39.tgz -C /

Optional können Sie Links zu ausführbaren PCRE-Dateien in / usr / local / bin erstellen

$ cd /usr/local/bin && sudo ln -s ../pcre/usr/local/pcre/bin/{pcre-config,pcregrep,pcretest} . && cd -

Installieren Sie ClamAV 0.99.2 auf dem Remote-Host-Mac

$ sudo tar zxvf /tmp/clamav-0.99.2.tgz -C /

Clamd-Sandbox-Konfiguration aktualisieren (für 10.7)

$ sudo sed -i '' 's#(lib|share)#(lib|share|local/pcre/lib)#' /usr/share/sandbox/clamd.sb
$ grep -q -F '(regex #"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent$")' /usr/share/sandbox/clamd.sb || { awk '/\(regex #"\^\/private\/var\/clamav\/"\)/ {print "\t(regex #\"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent\$\")"}; {print}' /usr/share/sandbox/clamd.sb > ~/temp-clamd.sb; cat ~/temp-clamd.sb | sudo tee /usr/share/sandbox/clamd.sb > /dev/null; rm ~/temp-clamd.sb; };

Starten Sie den freshclam-Daemon

$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.freshclam.plist

Überprüfen Sie, ob freshclam aktualisiert wird

$ tail -f /private/var/log/freshclam.log

Drücken Sie Ctrl+ CStopp, um die Anzeige des "Endes" der Protokolldatei zu beenden.

Oder überprüfen Sie die Datenbankversion auf der clamdausführbaren Datei:

$ clamd --version
ClamAV 0.99.2/22442/Thu Oct 27 20:03:54 2016

Starten Sie den clamd-Daemon

$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.clamd.plist

Bereinigen Sie die Archivdateien des Installationsprogramms

$ rm /tmp/pcre-8.39.tgz
$ rm /tmp/clamav-0.99.2.tgz

Das ist es.


Hintergrund

Überschreibe Apples Clamav

Da die Mac OS X 10.7 ClamAV-Version 0.97 so veraltet ist, dass das System kaputt geht, ist es meines Erachtens ratsam, die integrierte ClamAV-Version mit einer neueren Version zu überschreiben. Normalerweise wird dies nicht empfohlen, da Apple-Updates eine solche Änderung überschreiben würden. Die letzte „Software Update“ für 10.7 , dass Apple stammt veröffentlicht September 2012 24. September 2014. Aus diesem Grund erwarte ich nicht , dass Apple Software - Updates für Lion freigeben wird, je.

pcre

Die aktuelle (Oktober 2016) Version von ClamAV ist 0.99.2. Diese Clamav-Version hat eine Abhängigkeit namens " pcre ", die zum Ausführen der aktuell fehlerhaften Clamav-Version 0.97 nicht erforderlich war. Daher muss auch neu benötigte Software installiert werden. Ich bin nicht sicher, wo es besser ist, das in Position / usr oder / usr / local zu installieren. Um eine der sichereren Seiten zu sein, ändere ich die Systemsoftware nicht in / usr und verwende daher den Ordner / usr / local / pcre.

Separat gebaute und freigegebene Maschinen

Bei Open Source ist es üblich, die Software von der Quelle auf demselben Computer zu erstellen und zu installieren. Da es sich bei dem Server, auf dem veraltetes Clamav ausgeführt wird, um einen Produktionsserver handelt, kann ich nichts damit anfangen. Die Software-Kompilierung / -Erstellung erfolgt auf einer anderen Mac-Box.

Grüße

In Bezug auf Wildcard für die Hilfe beim Erstellen des Befehls awk zum Einfügen einer neuen Zeile mit vorangestelltem Tabulatorzeichen in clamd.sb .

Pro Backup
quelle