Virenpruefung an clamd anbinden, wo clamd tatsaechlich lauscht
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s

Die Adresse zeigte auf /var/run/clamav/clamd.sock in einem geteilten
Volume. Das offizielle clamav-Image legt seinen Unix-Socket aber unter
/tmp im eigenen Container an - nachgemessen, das Verzeichnis im Volume
bleibt leer. Jeder Verbindungsversuch lief damit in ENOENT, und die
Statusseite meldete die Virenpruefung dauerhaft als gestoert.

Folgenreich war das nicht nur fuer die Anzeige: ohne erreichbaren Scanner
bleiben Uploads auf "Pruefung unvollstaendig" liegen und brauchen die
Freigabe von Hand. Die Kette hat also gehalten, aber niemand kam durch.

Dasselbe Image oeffnet ab Werk TCPSocket 3310. Darueber laeuft die
Anbindung jetzt; der Port ist im Stack nicht veroeffentlicht und nur im
internen Netz erreichbar. CLAMAV_ADDRESS nimmt weiterhin einen Pfad an,
falls irgendwo doch ein Unix-Socket erreichbar ist.

Das Socket-Volume faellt weg, es enthielt nie etwas. Der Scanner sieht
ausserdem die Dateiablage nicht mehr: uebertragen wird per INSTREAM durch
die Verbindung, gelesen hat er dort nie etwas.

Geprueft gegen ein laufendes clamd, einschliesslich EICAR. Diese Pruefung
bleibt als abschaltbarer Teil der Suite stehen:

  CLAMAV_LIVE=clamav:3310 pnpm --filter @afis/web test pruefkette

Die uebrigen neuen Pruefungen decken das Zerlegen der Adresse ab. Sie
haetten den Fehler nicht gefunden - eine Adresse, die auf nichts zeigt,
ist syntaktisch tadellos. Nur eine echte Verbindung beantwortet das.
This commit is contained in:
Harlekin
2026-09-04 15:04:51 +02:00
parent abf42c5187
commit 4652dd08ec
9 changed files with 143 additions and 21 deletions
+8 -4
View File
@@ -45,7 +45,6 @@ services:
HOSTNAME: '0.0.0.0'
volumes:
- files:/data/files
- clamav_socket:/var/run/clamav
# Links der Port auf dem Host, rechts der im Container. Nur der linke ist
# frei waehlbar - ueber WEB_PORT in der .env, damit fuer eine andere
# Portwahl keine verfolgte Datei angefasst werden muss.
@@ -131,10 +130,16 @@ services:
environment:
CLAMAV_NO_MILTERD: 'true'
FRESHCLAM_CHECKS: '2'
# Nur die Signaturen. Der Scanner bekommt die Daten ueber INSTREAM durch
# die Verbindung gereicht und braucht die Dateiablage deshalb nicht zu
# sehen - siehe lib/files/clamav.ts. Ein Socket-Volume gibt es nicht mehr:
# das offizielle Image legt seinen Unix-Socket unter /tmp im eigenen
# Container an, das geteilte Verzeichnis blieb leer, und die Virenpruefung
# meldete sich dauerhaft als gestoert. Die Anbindung laeuft ueber
# TCPSocket 3310, den dasselbe Image ab Werk oeffnet. Der Port ist nicht
# veroeffentlicht und nur im Stack-Netz erreichbar.
volumes:
- clamav_db:/var/lib/clamav
- clamav_socket:/var/run/clamav
- files:/data/files
healthcheck:
test: ['CMD-SHELL', 'clamdscan --ping 1 || exit 1']
interval: 60s
@@ -245,4 +250,3 @@ volumes:
pgdata:
files:
clamav_db:
clamav_socket: