Hello,
J’ai interfacé un ERP maison à clamav (avec les unofficial-sig, sans les rules Yara) via une librairie PHP, ça fonctionnait plutôt bien jusqu’à ce que je me rende compte que lorsque clamav se retrouve à analyser un PDF, ça lui prend un temps dingue.
En mettant de côté la partie PHP et partant directement de Clamscan, si je fait un scan sur un PDF de 6M tout rond, voici le résultat :
----------- SCAN SUMMARY -----------
Known viruses: 11343308
Engine version: 0.102.4
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 40.62 MB
Data read: 5.93 MB (ratio 6.85:1)
Time: **38.647 sec** (0 m 38 s)
C’est juste pas envisageable de laisser ça en prod, j’ai donc passer dans le clamd.conf l’option ScanPDF à false pour éviter des erreurs 504 quand la CPU est surchargée par Clamav au moindre scan de PDF, mais ça ne résoud pas pour autant mon problème.
Pour info, ça tourne sur une VM avec 2cpu 8Go de ram, au moment des scans, celle-ci n’est jamais surchargée (j’entends déjà dans un état où elle sature et qui pourrait expliquer la lenteur du scan).
Mon fichier clamd.conf :
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
User clamav
ScanMail true
ScanArchive true
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog false
LogRotate true
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PreludeEnable no
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly false
SelfCheck 3600
Foreground false
Debug true
ScanPE false
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF false
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
CrossFilesystems true
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
AllowAllMatchScan true
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 true
ScanHWP3 true
MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OnAccessMaxFileSize 5M
Autre chose : comment désactiver l’utilisation de clamav-unofficial-sigs par Clamav quand on a pas installé ces dernières depuis le package officiel ? Je ne comprends pas comment Clamav sait qu’il doit les utiliser.