= ClamAV = - http://www.clamav.net/ - ClamAV est un antivirus libre que nous utilisons le plus souvent dans un serveur de messagerie pour scanner les mails à la recherche de vers, virus, spam, ... C'est donc un outil de l'AUF pour la lutte contre la propagation des virus et aussi des spams. Les sources officielles se trouvent sur http://www.clamav.net Du côté de notre distro préférée, le projet [[http://www.debian.org/volatile|debian-volatile]] se charge de maintenir les paquets qu'il faut pour que notre ClamAV fonctionne et soit à peu près à jour comme il faut. Donc, il faut avoir cette entrée dans le fichier sources.list de tous tes serveurs de messagerie : {{{ deb http://volatile.debian.org/debian-volatile lenny/volatile main }}} Deux sous-programmes : - '''freshclam''' : qui se charge des mises à jour de la base de définitions des virus - '''clamd''' : qui fait le vrai boulot, scanne les fichiers à la recherche de virus Il faut donc installer les paquets '''clamav-daemon''' et '''clamav-freshclam'''. Les fichiers de configurations sont dans /etc/clamav et sont : == /etc/clamav/clamd.conf == C’est le principal fichier de configuration, c’est lui qui précise les paramètres comme le type de fichiers à scanner ou ne pas scanner et les options qui vont avec, les fichiers où écrire les logs, la taille maximale des fichiers à scanner, … Pour ce fichier, les options pouvant être retenues sont : {{{#!highlight sh ## ## Gestion des Logs ## ## # Le fichier de log LogFile /var/log/clamav/clamd.log # Protéger le fichier de log contre les écritures concurrentes LogFileUnlock false # Permet d'éviter de lancer plusieurs clamav avec le même fichier de log # Désactiver la gestion de la rotation par clamav, et laisser logrotate le faire LogFileMaxSize 0 # Normalement, sur une lenny, c'est déjà bien géré # Log time with each message, je préfère ; ça fait quelques octets en plus par log, # mais j'imagine vraiment mal des logs sans heures. LogTime true # Normal non, on va pas se mettre à logguer les trucs clean LogClean no # On log déjà dans /var/log/clamav/clamd.log LogSyslog no # Specify the type of syslog messages # En plus, on n'en a pas besoin, donc peut être mis en comment LogFacility LOG_LOCAL6 # A mettre à yes seulement pendant la phase de test LogVerbose no ## ## Gestion du processus ## ## # Facile PidFile /var/run/clamav/clamd.pid # Cette option est vraiment optionnelle. Ça précise juste le répertoire temporaire TemporaryDirectory /tmp # Chemin vers le répertoire de la base de données DatabaseDirectory /var/lib/clamav # Charger uniquement les définitions officielles publiées par le projet ClamAV : # je garde à no parce que c'est la config par défaut. OfficialDatabaseOnly no # Dans ma config, je mets cette option en commentaire, parce que je fais communiquer # clamav et exim par une autre méthode avec IP et port réseau. #LocalSocket /var/run/clamav/clamd.ctl # Paramètres en commentaire aussi chez moi, mais à activer optionnellement chez les # utilisateurs de LocalSocket #LocalSocketGroup clamav #LocalSocketMode 660 #FixStaleSocket yes # Moi j'utilise plutôt ça, au lieu de LocalSocket : # L'adresse IP et le port sur lequel écoute clamav TCPAddr 127.0.0.1 TCPSocket 3310 # Maximum length the queue of pending connections may grow to : MaxConnectionQueueLength 15 # Close the connection when the data size limit is exceeded. # The value should match your MTA's limit for a maximum attachment size. StreamMaxLength 10M # Maximum number of threads running at the same time. MaxThreads 12 # Cette option spécifie le temps en secondes après lequel clamd ferme la # connexion si le client ne réagit plus CommandReadTimeout 5 # This option specifies how long to wait (in miliseconds) if the send buffer is full. # Keep this value low to prevent clamd hanging SendBufTimeout 200 # Maximum number of queued items (including those being processed by MaxThreads threads) # It is recommended to have this value at least twice MaxThreads if possible. MaxQueue 100 # Waiting for a new job will timeout after this time (seconds). IdleTimeout 30 # Profondeur max des répertoires scannés MaxDirectoryRecursion 15 # Follow directory symlinks. Ça c'est des coups à faire planter son clamav en mettant yes. FollowDirectorySymlinks no # Follow regular file symlinks. FollowFileSymlinks no # Scan files and directories on other filesystems. CrossFilesystems yes # Perform a database check, toutes les 10 mn SelfCheck 600 # Run as clamav user. User clamav # Initialize supplementary group access (clamd must be started by root). AllowSupplementaryGroups no # Stop daemon when libclamav reports out of memory condition. ExitOnOOM yes # Don't fork into background ? Foreground no # Disable debug messages in libclamav ? Debug no # Remove temporary files ? (for debug purposes). LeaveTemporaryFiles no # Detect Possibly Unwanted Applications. DetectPUA no # In some cases (eg. complex malware, exploits in graphic files, and others), # ClamAV uses special algorithms to provide accurate detection. This option # controls the algorithmic detection. # Je le laisse donc à yes comme eux AlgorithmicDetection yes ## ## Executable files ## # PE = Portable Executable, exécutable de Windows # This option allows ClamAV to perform a deeper analysis of executable files ScanPE yes # Executable and Linking Format is a standard format for UN*X executables. # This option allows you to control the scanning of ELF files. ScanELF yes # With this option clamav will try to detect broken executables (both PE and # ELF) and mark them as Broken.Executable. # Je le garde à no comme eux DetectBrokenExecutables no ## ## Documents ## # This option enables scanning of OLE2 files, such as Microsoft Office # documents and .msi files. ScanOLE2 yes # This option enables scanning within PDF files. ScanPDF yes ## ## Mail files ## # Enable internal e-mail scanner. ScanMail yes # WARNING: This option may open your system to a DoS attack. # Never use it on loaded servers. ScanPartialMessages no # Avec cette option, ClamAV essaiera de détecter les tentatives de phishing PhishingSignatures yes # Scanne URLs trouvés dans les emails à la recherche de tentative de phishing PhishingScanURLs yes # Bloquer les SSL qui ne coïncident pas dans les USLs ? # This can lead to false positives. PhishingAlwaysBlockSSLMismatch no # Ne pas bloquer les URLs masqués PhishingAlwaysBlockCloak no # If an archive contains both a heuristically detected # virus/phish, and a real malware, the real malware will be reported HeuristicScanPrecedence no ## ## Data Loss Prevention (DLP) ## # Enable the DLP module ? StructuredDataDetection no ## ## HTML ## # Scanne de l'HTML ScanHTML yes ## ## Archives ## # Scanne l'archive et le fichier compressé ScanArchive yes # Ne pas bloquer les archives chiffrées ArchiveBlockEncrypted no ## ## Limites ## # The options below protect your system against Denial of Service attacks # using archive bombs. # Taille maximum de chaque fichier reçu # Autrement dit, si en décompressant une archive, on trouve une taille de # plus de 100M, on scannera seulement jusqu'au 100M MaxScanSize 100M # Taille maximum de chaque unité de fichier scannée # S'applique sur l'archive, et chaque fichier de l'archive MaxFileSize 10M # La profondeur d'archivement autorisée (si on peut l'appeler comme ça) MaxRecursion 15 # Nombre de fichiers maximum à scanner dans une archive MaxFiles 10000 ## ## Clamuko settings ## # Enable Clamuko ? # Je le mettrai à yes le jour je comprendrai et saurai comment ça marche ;-) ClamukoScanOnAccess no }}} == /etc/clamav/freshclam.conf == C’est le fichier de configuration de freshclam. Il précise les paramètres de mise à jour automatique de l’antivirus (toutes les 2h), les serveurs proxy, si nécessaire, le nombre de tentatives de mise à jour, les fichiers logs, ... Pour ce fichier, les options à retenir en plus de la config par défaut sont : {{{#!highlight sh # By default when started freshclam drops privileges and switches to the # "clamav" user. This directive allows you to change the database owner. DatabaseOwner clamav # Initialize supplementary group access (freshclam must be started by root). AllowSupplementaryGroups no # Path to the log file (make sure it has proper permissions) UpdateLogFile /var/log/clamav/freshclam.log # Maximum size of the log file. # Value of 0 disables the limit. # Gérer avec logrotate LogFileMaxSize 0 # Comme d'habitude, je log avec le temps LogTime yes # Pas de bruit inutile #LogVerbose no # Bon, bizarrement je l'ai mis à yes. Donc ça ne génère pas autant d'octets que ça. LogVerbose yes # Use system logger : NO LogSyslog no # This option allows you to save the process identifier of the daemon PidFile /var/run/clamav/freshclam.pid # Path to the database directory. # WARNING: It must match clamd.conf's directive! # ATTENTION : pareil que celui de clamd.conf DatabaseDirectory /var/lib/clamav/ # Use DNS to verify virus database version. Freshclam uses DNS TXT records # to verify database and software versions. With this directive you can change # the database verification domain. # WARNING: Do not touch it unless you're configuring freshclam to use your # own database verification domain. DNSDatabaseInfo current.cvd.clamav.net # Où XY représente le country code de votre pays # DatabaseMirror db.XY.clamav.net # Par exemeple : DatabaseMirror db.sn.clamav.net # database.clamav.net is a round-robin record which points to our most # reliable mirrors. It's used as a fall back in case db.XY.clamav.net is # not working. # En gros, à ne pas modifier DatabaseMirror database.clamav.net # How many attempts to make before giving up. MaxAttempts 5 # With this option you can control scripted updates. It's highly recommended # to keep it enabled. ScriptedUpdates yes # Ne pas compresser la base de données locale CompressLocalDatabase no # Number of database checks per day is 24 (Chaque heure) Checks 24 # Send the RELOAD command to clamd. NotifyClamd /etc/clamav/clamd.conf # Don't fork into background ? Foreground no # Enable debug messages in libclamav ? Ça va pas non ? Debug no # Timeout in seconds when connecting to database server. ConnectTimeout 60 # Timeout in seconds when reading from database server. ReceiveTimeout 60 }}} == Quelques outils pour vérifier que clamav fonctionne bien == * ''''' freshclam -V ''''': Pour voir la version * ''''' clamdscan -V ''''': Version * ''''' freshclam ''''' : pour faire la mise à jour de la base de données * '''''telnet 127.0.0.1 3310 ''''' {{{ Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. SCAN /home/roger/ /home/roger/: OK Connection closed by foreign host. }}} * ''''' clamscan -r -l /home/roger/scan.txt /etc/clamav/ ''''' {{{ /etc/clamav/freshclam.conf: OK /etc/clamav/clamd.conf.ucf-dist: OK /etc/clamav/freshclam.conf.ucf-dist: OK /etc/clamav/clamd.conf: OK ----------- SCAN SUMMARY ----------- Known viruses: 762708 Engine version: 0.96 Scanned directories: 4 Scanned files: 4 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 2.614 sec (0 m 2 s) }}} * ''''' clamdscan /tmp/ ''''' {{{ /tmp: OK ----------- SCAN SUMMARY ----------- Infected files: 0 Time: 0.002 sec (0 m 0 s) }}} * ''''' tail -f /var/log/clamav/freshclam.log ''''' * ''''' tail -f /var/log/clamav/clamav.log ''''' __ Sources__ : [[http://www.clamav.net/|ClamAV]] http://www.yerbynet.com/Cours.html [[http://www.exim.org|exim]] [[http://www.google.com|google]] ---- CatégorieLogiciel [[CatégorieRecommandationsARI]]