ClamAV
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 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 :
1 ##
2 ## Gestion des Logs
3 ##
4 ##
5
6 # Le fichier de log
7 LogFile /var/log/clamav/clamd.log
8
9 # Protéger le fichier de log contre les écritures concurrentes
10 LogFileUnlock false
11 # Permet d'éviter de lancer plusieurs clamav avec le même fichier de log
12
13 # Désactiver la gestion de la rotation par clamav, et laisser logrotate le faire
14 LogFileMaxSize 0
15 # Normalement, sur une lenny, c'est déjà bien géré
16
17 # Log time with each message, je préfère ; ça fait quelques octets en plus par log,
18 # mais j'imagine vraiment mal des logs sans heures.
19 LogTime true
20
21 # Normal non, on va pas se mettre à logguer les trucs clean
22 LogClean no
23
24 # On log déjà dans /var/log/clamav/clamd.log
25 LogSyslog no
26
27 # Specify the type of syslog messages
28 # En plus, on n'en a pas besoin, donc peut être mis en comment
29 LogFacility LOG_LOCAL6
30
31 # A mettre à yes seulement pendant la phase de test
32 LogVerbose no
33
34 ##
35 ## Gestion du processus
36 ##
37 ##
38
39 # Facile
40 PidFile /var/run/clamav/clamd.pid
41
42 # Cette option est vraiment optionnelle. Ça précise juste le répertoire temporaire
43 TemporaryDirectory /tmp
44
45 # Chemin vers le répertoire de la base de données
46 DatabaseDirectory /var/lib/clamav
47
48 # Charger uniquement les définitions officielles publiées par le projet ClamAV :
49 # je garde à no parce que c'est la config par défaut.
50 OfficialDatabaseOnly no
51
52 # Dans ma config, je mets cette option en commentaire, parce que je fais communiquer
53 # clamav et exim par une autre méthode avec IP et port réseau.
54 #LocalSocket /var/run/clamav/clamd.ctl
55
56 # Paramètres en commentaire aussi chez moi, mais à activer optionnellement chez les
57 # utilisateurs de LocalSocket
58 #LocalSocketGroup clamav
59 #LocalSocketMode 660
60 #FixStaleSocket yes
61
62 # Moi j'utilise plutôt ça, au lieu de LocalSocket :
63 # L'adresse IP et le port sur lequel écoute clamav
64 TCPAddr 127.0.0.1
65 TCPSocket 3310
66
67 # Maximum length the queue of pending connections may grow to :
68 MaxConnectionQueueLength 15
69
70 # Close the connection when the data size limit is exceeded.
71 # The value should match your MTA's limit for a maximum attachment size.
72 StreamMaxLength 10M
73
74 # Maximum number of threads running at the same time.
75 MaxThreads 12
76
77 # Cette option spécifie le temps en secondes après lequel clamd ferme la
78 # connexion si le client ne réagit plus
79 CommandReadTimeout 5
80
81 # This option specifies how long to wait (in miliseconds) if the send buffer is full.
82 # Keep this value low to prevent clamd hanging
83 SendBufTimeout 200
84
85 # Maximum number of queued items (including those being processed by MaxThreads threads)
86 # It is recommended to have this value at least twice MaxThreads if possible.
87 MaxQueue 100
88
89 # Waiting for a new job will timeout after this time (seconds).
90 IdleTimeout 30
91
92 # Profondeur max des répertoires scannés
93 MaxDirectoryRecursion 15
94
95 # Follow directory symlinks. Ça c'est des coups à faire planter son clamav en mettant yes.
96 FollowDirectorySymlinks no
97
98 # Follow regular file symlinks.
99 FollowFileSymlinks no
100
101 # Scan files and directories on other filesystems.
102 CrossFilesystems yes
103
104 # Perform a database check, toutes les 10 mn
105 SelfCheck 600
106
107 # Run as clamav user.
108 User clamav
109
110 # Initialize supplementary group access (clamd must be started by root).
111 AllowSupplementaryGroups no
112
113 # Stop daemon when libclamav reports out of memory condition.
114 ExitOnOOM yes
115
116 # Don't fork into background ?
117 Foreground no
118
119 # Disable debug messages in libclamav ?
120 Debug no
121
122 # Remove temporary files ? (for debug purposes).
123 LeaveTemporaryFiles no
124
125 # Detect Possibly Unwanted Applications.
126 DetectPUA no
127
128 # In some cases (eg. complex malware, exploits in graphic files, and others),
129 # ClamAV uses special algorithms to provide accurate detection. This option
130 # controls the algorithmic detection.
131 # Je le laisse donc à yes comme eux
132 AlgorithmicDetection yes
133
134 ##
135 ## Executable files
136 ##
137
138 # PE = Portable Executable, exécutable de Windows
139 # This option allows ClamAV to perform a deeper analysis of executable files
140 ScanPE yes
141
142 # Executable and Linking Format is a standard format for UN*X executables.
143 # This option allows you to control the scanning of ELF files.
144 ScanELF yes
145
146 # With this option clamav will try to detect broken executables (both PE and
147 # ELF) and mark them as Broken.Executable.
148 # Je le garde à no comme eux
149 DetectBrokenExecutables no
150
151 ##
152 ## Documents
153 ##
154
155 # This option enables scanning of OLE2 files, such as Microsoft Office
156 # documents and .msi files.
157 ScanOLE2 yes
158
159 # This option enables scanning within PDF files.
160 ScanPDF yes
161
162 ##
163 ## Mail files
164 ##
165
166
167 # Enable internal e-mail scanner.
168 ScanMail yes
169
170 # WARNING: This option may open your system to a DoS attack.
171 # Never use it on loaded servers.
172 ScanPartialMessages no
173
174 # Avec cette option, ClamAV essaiera de détecter les tentatives de phishing
175 PhishingSignatures yes
176
177 # Scanne URLs trouvés dans les emails à la recherche de tentative de phishing
178 PhishingScanURLs yes
179
180 # Bloquer les SSL qui ne coïncident pas dans les USLs ?
181 # This can lead to false positives.
182 PhishingAlwaysBlockSSLMismatch no
183
184 # Ne pas bloquer les URLs masqués
185 PhishingAlwaysBlockCloak no
186
187 # If an archive contains both a heuristically detected
188 # virus/phish, and a real malware, the real malware will be reported
189 HeuristicScanPrecedence no
190
191 ##
192 ## Data Loss Prevention (DLP)
193 ##
194
195 # Enable the DLP module ?
196 StructuredDataDetection no
197
198 ##
199 ## HTML
200 ##
201
202 # Scanne de l'HTML
203 ScanHTML yes
204
205 ##
206 ## Archives
207 ##
208
209 # Scanne l'archive et le fichier compressé
210 ScanArchive yes
211
212 # Ne pas bloquer les archives chiffrées
213 ArchiveBlockEncrypted no
214
215 ##
216 ## Limites
217 ##
218
219 # The options below protect your system against Denial of Service attacks
220 # using archive bombs.
221
222 # Taille maximum de chaque fichier reçu
223 # Autrement dit, si en décompressant une archive, on trouve une taille de
224 # plus de 100M, on scannera seulement jusqu'au 100M
225 MaxScanSize 100M
226
227 # Taille maximum de chaque unité de fichier scannée
228 # S'applique sur l'archive, et chaque fichier de l'archive
229 MaxFileSize 10M
230
231 # La profondeur d'archivement autorisée (si on peut l'appeler comme ça)
232 MaxRecursion 15
233
234 # Nombre de fichiers maximum à scanner dans une archive
235 MaxFiles 10000
236
237 ##
238 ## Clamuko settings
239 ##
240
241 # Enable Clamuko ?
242 # Je le mettrai à yes le jour je comprendrai et saurai comment ça marche ;-)
243 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 :
1 # By default when started freshclam drops privileges and switches to the
2 # "clamav" user. This directive allows you to change the database owner.
3 DatabaseOwner clamav
4
5 # Initialize supplementary group access (freshclam must be started by root).
6 AllowSupplementaryGroups no
7
8 # Path to the log file (make sure it has proper permissions)
9 UpdateLogFile /var/log/clamav/freshclam.log
10
11 # Maximum size of the log file.
12 # Value of 0 disables the limit.
13 # Gérer avec logrotate
14 LogFileMaxSize 0
15
16 # Comme d'habitude, je log avec le temps
17 LogTime yes
18
19 # Pas de bruit inutile
20 #LogVerbose no
21 # Bon, bizarrement je l'ai mis à yes. Donc ça ne génère pas autant d'octets que ça.
22 LogVerbose yes
23
24 # Use system logger : NO
25 LogSyslog no
26
27 # This option allows you to save the process identifier of the daemon
28 PidFile /var/run/clamav/freshclam.pid
29
30 # Path to the database directory.
31 # WARNING: It must match clamd.conf's directive!
32 # ATTENTION : pareil que celui de clamd.conf
33 DatabaseDirectory /var/lib/clamav/
34
35 # Use DNS to verify virus database version. Freshclam uses DNS TXT records
36 # to verify database and software versions. With this directive you can change
37 # the database verification domain.
38 # WARNING: Do not touch it unless you're configuring freshclam to use your
39 # own database verification domain.
40 DNSDatabaseInfo current.cvd.clamav.net
41
42 # Où XY représente le country code de votre pays
43 # DatabaseMirror db.XY.clamav.net
44 # Par exemeple :
45 DatabaseMirror db.sn.clamav.net
46
47 # database.clamav.net is a round-robin record which points to our most
48 # reliable mirrors. It's used as a fall back in case db.XY.clamav.net is
49 # not working.
50 # En gros, à ne pas modifier
51 DatabaseMirror database.clamav.net
52
53 # How many attempts to make before giving up.
54 MaxAttempts 5
55
56 # With this option you can control scripted updates. It's highly recommended
57 # to keep it enabled.
58 ScriptedUpdates yes
59
60 # Ne pas compresser la base de données locale
61 CompressLocalDatabase no
62
63 # Number of database checks per day is 24 (Chaque heure)
64 Checks 24
65
66 # Send the RELOAD command to clamd.
67 NotifyClamd /etc/clamav/clamd.conf
68
69 # Don't fork into background ?
70 Foreground no
71
72 # Enable debug messages in libclamav ? Ça va pas non ?
73 Debug no
74
75 # Timeout in seconds when connecting to database server.
76 ConnectTimeout 60
77
78 # Timeout in seconds when reading from database server.
79 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 :
ClamAV http://www.yerbynet.com/Cours.html exim google