Aș avea nevoie de un sfat general cu privire la configurarea ClamAV (v1.02+) în mediul Docker.
Am mai multe containere care rulează pe Linux (în prezent Ubuntu 18.04 LTS) care își exportă directoarele persistente sub /var/lib/datastore/tenant_files
subdirectoare. Unele dintre aplicațiile care rulează în interiorul containerelor permit încărcarea documentelor, în care vreau să scaneze ClamAV.
Momentan am venit cu următoarea configurație:
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket adevărat
LocalSocketGroup clamav
LocalSocketMode 666
# TemporaryDirectory nu este setat la /tmp implicit aici pentru a face suprascrie
# implicit cu variabilele de mediu TMPDIR/TMP/TEMP posibil
Utilizator clamav
ScanMail adevărat
ScanArchive adevărat
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog false
LogRotate adevărat
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PreludeEnable nr
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly false
SelfCheck 3600
Prim-plan fals
Depanare fals
ScanPE adevărat
MaxEmbeddedPE 10M
ScanOLE2 adevărat
ScanPDF adevărat
ScanHTML adevărat
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF adevărat
ExitOnOOM fals
LeaveTemporaryFiles false
AlgorithmicDetection adevărat
ScanELF adevărat
IdleTimeout 30
CrossFilesystems adevărat
PhishingSemnături adevărate
PhishingScanURLs adevărat
PhishingAlwaysBlockSSLMmatch false
PhishingAlwaysBlockCloak fals
PartitionIntersection fals
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence fals
StructuredDataDetection false
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo adevărat
OLE2BlockMacros false
AllowAllMatchScan adevărat
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanTime 120000
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS adevărat
ScanHWP3 adevărat
MaxRecHWP3 16
StreamMaxLength 25M
Fișier jurnal /var/log/clamav/clamav.log
LogTime adevărat
LogFileUnlock false
LogFileMaxSize 0
Cod octet adevărat
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OnAccessMaxFileSize 5M
ExcludePath ^/proc
ExcludePath ^/sys
ExcludePath ^/dev
ExcludePath ^/snap
ExcludePath ^/var/lib/lxcfs/cgroup
ExcludePath ^/var/lib/datastore/quarantine
OnAccessIncludePath /var/lib/datastore/tenant_files
OnAccessExcludeUname clamav
OnAccessPrevention da
OnAccessExcludeRootUID false
VirusEvent /etc/clamav/virus-event.bash
care este o compilație a unor articole găsite pe internet și documentație de pe site-ul ClamAV. am si eu clamonacc
serviciul configurat astfel:
# /etc/systemd/system/clamonacc.service
[Unitate]
Descriere=ClamAV On Access Scanner
Necesită=clamav-daemon.service
După=clamav-daemon.service syslog.target network.target
[Serviciu]
Tip=simplu
Utilizator=rădăcină
ExecStartPre=/bin/bash -c „în timp ce [ ! -S /var/run/clamav/clamd.ctl ]; dormi 1; gata”
ExecStart=/usr/sbin/clamonacc -F --config-file=/etc/clamav/clamd.conf --log=/var/log/clamav/clamonacc.log
[Instalare]
WantedBy=multi-user.target
Acum, dacă pun ClamAV să ruleze ca utilizator root, va funcționa, dar am observat o buclă imprevizibilă la scanarea fișierelor deținute de root (exact așa cum este descris Aici). Alergând ca clamav
utilizatorul funcționează, dar numai pentru utilizatorul obișnuit non-root, iar unele containere își rulează în continuare procesele în interior ca utilizator root și asta se traduce prin fișierele deținute de utilizatorul root pe punctul final exportat.
Mă gândeam să folosesc ACL-uri, dar din moment ce poate exista un număr destul de mare de fișiere (în milioane), care ar putea fi puțin exagerat. Tu ce crezi? Ar trebui să forțez dreptul de proprietate asupra fișierelor la GID de clamav
sau altceva?
Ca să nu mai spun că a trebuit să pun ClamAV în modul reclamație, deoarece în mod normal nu ar bloca un fișier infectat și nu aș dori să deschid un astfel de fișier ca utilizator root.