No al Trusting Computing

La protezione interna di Exchange 2007

Exchange 2007 Inserisci il tuo commento

Logo_Exchange2007Ho deciso di abilitare la protezione interna di Exchange 2007 da aggiungere a quella perimetrale gestita da Panda GateDefender Performa. Questo perchè ho sempre le code di invio piene di shifezze. In prima battuta pensavo fosse un client infetto, che spammava alla grande dalla lan. Controllando più approfonditamente i log e facendo dei test di inoltro ho escluso questa ipotesi ed alla fine è venuto fuori che l’installazione è vulnerabile ad attacchi di tipo “spam backscatter/NDR“.

Abilitare la protezione interna di Exchange 2007 è molto semplice, ma bisogna fare un pò d’attenzione alla configurazione dei parametri che interessano i filtri del contenuto e l’rbl per lo spam. Dico questo perchè il classico “avanti, avanti, fine” (che ovviamente ho tentato spudoratamente, sperando che tutto andasse bene in 2 minuti d’orologio) mi ha portato inesorabilmente a farmela nei pantaloni perchè non ricevevo più email dall’esterno. Quindi leggendo i manuali su technet e controllando in giro nei newsgroup microsoft sono riuscito (bene) nell’intento.

Per prima cosa abilitiamo la tutte le funzionalità di protezione di Exchange (parlo della versione 2007 SP2). Aprimo la shell e digitiamo i seguenti comandi, uno per volta:

1
2
3
cd "C:\Program Files\Microsoft\Exchange Server\Scripts"
./install-AntispamAgents.ps1
Restart-Service MSExchangeTransport

Ok, abbiamo installato il motore che gestirà la protezione del nostro server Exchange, adesso dobbiamo verificare il corretto funzionamento degli update e successivamente personalizzare i “livelli di guardia”. A questo proprosito vi anticipo che non ci sono vere e proprie regole uguali per tutti. La gestione delle soglie SCL e come queste vegono classificate dal mail server non sono così standard come ci si aspetterebbe… e dopo ve lo dimostro. Comqune, proseguiamo e lanciamo il comando che abilita la protezione:

1
Enable-AntispamUpdates -Identity MIO_MAIL_SERVER -IPReputationUpdatesEnabled $True -UpdateMode Automatic -SpamSignatureUpdatesEnabled $True

Se il server è lo stesso da dove lanciate i comandi (quindi se non state usando powershell da un client) potete omettere la variabile -Identity <Nome_del_vostro_server>. Bene, eseguiamo Windows Update e successivamente verifichiamo il corretto funzionamento degli aggiornamenti lanciando:

1
Get-AntispamUpdates

Dovremmo visualizzare in shell qualcosa del tipo:

1
2
3
4
5
6
7
UpdateMode                  : Automatic
LatestContentFilterVersion  : 3.3.8203.600
SpamSignatureUpdatesEnabled : True
LatestSpamSignatureVersion  : 3.3.8204.1232
IPReputationUpdatesEnabled  : True
LatestIPReputationVersion   : 3.3.8204.036
MicrosoftUpdate             : Configured

Stiamo procedendo bene. Riavviamo il servizio di trasporto:

1
Restart-Service MSExchangeTransport

A questo punto aggiungiamo qualche buon server RBL per il controllo dello spam, direi che per cominciare utilizzeremo RBL conservative. Da sole limitano un buon 90% delle schifezze che arrivano per posta, più avanti potremo utilizzare server più restrittivi, a patto di tener sott’occhio la quarantena perchè il rischio di falsi positivi potrebbe aumentare. Le rbl che consiglio sono:

1
2
3
zen.spamhaus.org
list.dsbl.org
combined.njabl.org

Sempre da shell:

1
2
3
Add-IPBlockListProvider -Name:zen.spamhaus.org -LookupDomain:zen.spamhaus.org
Add-IPBlockListProvider -Name:list.dsbl.org -LookupDomain:list.dsbl.org
Add-IPBlockListProvider -Name:combined.njabl.org -LookupDomain:combined.njabl.org

Poi controlliamo il risultato con:

1
2
3
4
5
6
7
get-IPBlockListProvider
 
Name                       LookupDomain               Priority
----                       ------------               --------
combined.njabl.org         combined.njabl.org         1
list.dsbl.org              list.dsbl.org              2
zen.spamhaus.org           zen.spamhaus.org           3

Ok, andiamo al punto forte, la configurazione delle soglie SCL. La gestione dei livelli è numerica, da 0 a 9. Il valore più basso (0) indica che la mail è quasi sicuramente attendibile. Quello più alto (9) indica che la mail è quasi sicuramente indesidetata.

Adesso con i comandi che seguiranno imporremo ai filtri di Exchange 2007 di eliminare tutte le email che hanno il massimo livello di probabilità che la mail sia spam, rifiuteremo quelle con SCL uguale/maggiore di 8 (con tanto di motivazione) e invieremo alla nostra casella postale “quarantena@miodominio.it” (opportunamente configurata) le email che potrebbero essere dei falsi positivi:

1
2
3
4
set-ContentFilterConfig  -SCLDeleteThreshold 9 -SCLDeleteEnabled:$true
set-ContentFilterConfig -SCLRejectThreshold 8 -SCLRejectEnabled:$true
set-ContentFilterConfig -RejectionResponse "Questa email è stata rifiutata perchè indesiderata!"
set-ContentFilterConfig -SCLQuarantineThreshold 6 -SCLQuarantineEnabled:$true -QuarantineMailbox:quarantena@miodominio.it

Questo il risultato:

1
2
3
4
5
6
7
get-ContentFilterConfig | Select SCL*
SCLRejectThreshold     : 8
SCLRejectEnabled       : True
SCLDeleteThreshold     : 9
SCLDeleteEnabled       : true
SCLQuarantineThreshold : 6
SCLQuarantineEnabled   : true

Invece, se volete dare un’occhio a tutta la configurazione del Filtro del Contenuto eseguite:

1
get-ContentFilterConfig

Bene, adesso iniziamo a tener sott’occhio le email, a questo proposito consiglio di alzare il livello di logging del connettore di ricezione, in modo di poter fare delle analisi qualora le email non arrivassero.

  • Problemi.

Per quel che mi riguarda posso benissimo dire che tutta questa procedura non ha funzionato bene al primo colpo. Nel mio caso ho un livello aggiuntivo di protezione perimentrale, un attrezzo che si occupa quasi esclusivamente di taggare le email indesiderate (Panda Gatedefender Performa). Alla fine ho “scoperto” che modifica l’header di tutte le email in ingresso, ingannando sistematicamente il filtro di exchange che alzava di parecchio la soglia SCL, considerando spam quasi tutte le email in ingresso.
Una volta eliminata la protezione perimentrale incappo nel secondo problema. I provider più grandi come Libero.it, Gmail.com ecc… hanno diversi server smtp sparsi per il globo. Alcuni di questi sono vittime di attacchi da parte di spammer ed inevitabilemte gli ip di questi server finiscono nelle famose liste nere. Il livello SCL che rilevo è sempre piuttosto alto, tra il 5 ed il 7, quindi mi trovo alcune email da amico@libero.it nella lista della posta indesiderata. Anche la composizione delle stessa email pregiudica il proprio livello di attendibilità. Quasi non ci credevo, finchè non ho provato io stesso, inviando 3 email, da privato@gmail.com a aziendale@azienda.it, con oggetto e corpo del messaggio più o meno sensato e più o meno formattato.

SCL_Outlook

Quindi occhio, è evidente che l’algoritmo che genera il valore SCL fa controlli molto più complessi che una normale ricerca del dominio mittente.

Una lista di tutti i principali controlli che potete fare da shell è la seguente:

1
2
3
4
5
6
Get-AntispamFilteringReport.ps1
Get-AntispamSCLHistogram.ps1
Get-AntispamTopBlockedSenderDomains.ps1
Get-AntispamTopBlockedSenderIPs.ps1
Get-AntispamTopBlockedSenders.ps1
Get-AntispamTopRecipients.ps1

Buon divertimento :)

Inserisci il tuo commento

Tema WordPress e icone di N.Design Studio
Articoli RSS Commenti RSS Collegati