User Tools

Site Tools


doc:appunti:linux:sa:procmail_sanitizer_clamav

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:linux:sa:procmail_sanitizer_clamav [2020/06/18 09:39] – [Sanitizer] niccolodoc:appunti:linux:sa:procmail_sanitizer_clamav [2020/07/22 11:51] – [Content-Type ed estensioni per Sanitizer] niccolo
Line 67: Line 67:
 # #
 #    $P - This process's PID, in hex. #    $P - This process's PID, in hex.
-#    $T - The current Unix time, in hex. 
 #    $T - The current Unix time, in hex. #    $T - The current Unix time, in hex.
 #    $F - A safe version of the original file name. #    $F - A safe version of the original file name.
Line 118: Line 117:
 # Virus scanner command line. The three exit codes represent the # Virus scanner command line. The three exit codes represent the
 # following scan conditions: clean, disinfected, infected. # following scan conditions: clean, disinfected, infected.
-file_list_1_scanner = 0:1:1:/usr/bin/clamdscan --fdpass --quiet %FILENAME+# NOTICE: clamdscan does not have the "disinfected" condition. 
 +file_list_1_scanner = 0:99:1:/usr/bin/clamdscan --fdpass --quiet %FILENAME
  
 # What policy to apply for each exit code, plus a catch-all default. # What policy to apply for each exit code, plus a catch-all default.
-file_list_1_policy  = unknown:save:save:unknown+file_list_1_policy  = unknown:unknown:save:unknown
  
  
Line 147: Line 147:
 </file> </file>
  
-In particolare con la direttiva **file_list_1_scanner** si indica il programma filtro da chiamarenel notro caso **clamdscan** con l'opzione **%%--fdpass%%**e quali sono i codici di uscita per tre possibili esiti della scansione: **clean** (l'allegato è pulito), **disinfected** (l'allegato era infetto, ma è stato ripulito), **infected** (l'allegato è infetto). Nel caso di clamdscan vale solo l'**exit code 0** per un file **pulito** e l'**exit code 1** per un file **infetto**.+Con la direttiva **file_list_1_scanner** si indica il programma filtro da chiamare nel notro caso **clamdscan** con l'opzione **%%--fdpass%%** e quali sono i codici di uscita per tre possibili esiti della scansione: **clean** (l'allegato è pulito), **disinfected** (l'allegato era infetto, ma è stato ripulito), **infected** (l'allegato è infetto). Nel caso di clamdscan vale solo l'**exit code 0** per un file **pulito** e l'**exit code 1** per un file **infetto**; non esistendo il caso **disinfected** si è indicato l'inesistente **exit code 99**. 
 + 
 +La politica da applicare a seguito della scansione è determinata da **file_list_1_policy**. Si devono indicare **quattro possibili azioni** di cui le prime tre corrispondo ai tre esiti della scansione (//clean//, //disinfected// e //infected//) e la quarta è l'azione predefinita. 
 + 
 +Ricapitolando questa è la politica applicata ai file compresi nella **file_list_1**: 
 + 
 +^ Esito scansione  ^ Clamdscan Exit Code  ^ Sanitizer Policy 
 +| Clean          |    0 | **unknown** (check the next policy). 
 +| Disinfected    |  N/A | **unknown** (check the next policy). 
 +| Infected          1 | **save** (remove the attachment from the message). 
 +| Generic error  |    2 | **unknown** (check the next policy). 
 + 
 +==== Content-Type ed estensioni per Sanitizer ==== 
 + 
 +Nella **file_list_2** vengono indicate delle estensioni per cui l'allegato passa intalterato, cioè non viene //neutralizzato// cambiandogli nome. 
 + 
 +In realtà Sanitizer applica la whitelist sia che corrisponda l'**estensione** del file, sia che corrisponda il **Content-Type**. Non è chiaro come avere la corrispondenza tra i due tipi, ad esempio (empiricamente) si è determinato che il **Content-Type application/octet-stream** corrisponde all'estensione **bin**.
 ===== Cosa succede se clamd è fermo ===== ===== Cosa succede se clamd è fermo =====
  
Line 156: Line 172:
 ^ 2  | Could not connect to clamd on LocalSocket.  | ^ 2  | Could not connect to clamd on LocalSocket.  |
  
-Quindi se il demone non risponde si ottiene un codice di uscita 2, quindi non si applicano le tre possibili condizioni (clean, disinfected, infected)verrà applicata la policy //catch-all//che nell'esempio sopra è **save** (rimozione del file salvataggio in quarantena).+Se il demone **clamd** non risponde, il programma **clamdscan** restituisce un exit code 2, quindi non si applicano le tre possibili condizioni (clean, disinfected, infected)verrà applicata la policy //catch-all// che nell'esempio sopra è **unknown**,  cioè l'applicazione delle regole successive. 
 + 
 +Nella configurazione mostrata sopra la regola successiva prevede di accettare tali quali gli allegati che corrispondono a **file_list_2** (in pratica documenti allegati non pericolosi), per tutti gli altri viene applicata la **file_default_policy** che consiste nel **defang**, cioè alterare il nome dell'allegato in modo che non sia più pericoloso (ad esempio la rimozione dell'estensione .exe oppure .com).
  
-FIXME: Forse questa non è la condizione ottimale, altrimenti una interruzione dell'antivirus porta alla perdita di tutti gli allegati.+Una configurazione più stringente potrebbe essere quella di applicare la policy **save** (rimozione dell'allegato) anche nel caso //catch-all// (**esito della scansione anomalo** e non previsto). Questa configurazione ha una controindicazione grave: se il demone clamd è fermo per qualche motivo, tutti gli allegati verrebbero eliminati dalla mail, anche quelli puliti ed essenziali come il testo HTML.
doc/appunti/linux/sa/procmail_sanitizer_clamav.txt · Last modified: 2022/04/11 18:13 by niccolo