|
Questo documento l'ho scritto come appunti per le mie installazioni di Debian GNU/Linux, sperando possa essere utile anche ad altre persone. È liberamente utilizzabile da chiunque secondo la licenza GNU FDL e venga citato l'autore e la fonte originale. Un piccolo accorgimento: questo documento si basa su Debian Sarge e relativo software del 2005, è molto probabile che in futuro qualcosa cambi quindi preferirei che questi appunti vengano rimossi dalla rete appena le informazioni cominciano a diventare obsolete (e di conseguenza fuorvianti), oppure qualche anima pia le adegui oppure venga chiaramente specificato che si tratta di un cimelio storico e venga di conseguenza aiutato il lettore che cerca qualcosa di più recente. Obiettivo - Installazione di Postfix come MTA
- Installazione di Amavis come filtro messaggi
- Installazione di Clamav come rilevatore di virus
- Veloce raggiungimento di una configurazione ottimale
1. Prerequisiti Come già sottolineato, queste istruzioni sono relative ad un server Debian GNU/Linux 3.1 (sarge), sperimentate tra il 2005 e il 2006 su architettura i386, ma dovrebber funzionare su qualsiasi macchina. Prima di iniziare, farò riferimento ad una Debian appena installata o dove non ci siano configurazioni di postfix/amavis/clamav pesantemente personalizzate. Repositori Debian Per chi non dispone già su supporti CD/DVD o server locali, il software si può prelevare dalle seguenti sorgenti APT (/etc/apt/sources.list): deb http://ftp.it.debian.org/debian sarge main deb http://ftp.it.debian.org/debian sarge-proposed-updates main deb http://security.debian.org/ sarge/updates main deb http://volatile.debian.net/debian-volatile sarge/volatile main
| Installazione pacchetti Tramite aptitude o dselect o altri sistemi è necessario installare alcuni pacchetti, comodamente installabili anche col comando: apt-get install amavisd-new clamav-freshclam clamav-daemon clamav postfix postfix-pcre bzip2 unzip zip
| 2. Configurazione di Clamav È sufficiente dare a clamav i permessi per accedere ai file creati da amavis (ovvero i messaggi da controllare): Per impostare la fonte dei database con le firme dei virus, eseguire il comando: dpkg-reconfigure clamav-freshclam
| 3. Configurazione di Amavis Amavis dispone già di una configurazione funzionante in modo decente, ritengo però opportuno apportare queste modifiche: - indicare un nome da inserire nei messaggi per indicare la macchina che ha eseguito il filtraggio (utile per diagnostiche varie);
- rifiutare i messaggi con virus, si arrangerà il mittente a verificare la propria macchina;
- eliminare notifiche e quarantene, quasi sempre si tratta di spazzatura, e se dichiaro di non accettare il messaggio tornerà al mittente, se è proprio un virus automatico meglio evitare di perderci tempo.
Modificare quindi il file /etc/amavis/amavisd.conf come segue (notare che questo è un file ``patch'', quindi è sufficiente entrare nella directory /etc/amavis, eseguire il comando patch e fare copia/incolla del seguente testo): --- /etc/amavis/amavisd.conf 2004-12-01 03:14:42.000000000 +0100 +++ amavisd.conf 2006-05-08 18:08:25.000000000 +0200 @@ -63,7 +63,7 @@ # $mydomain serves as a quick default for some other configuration settings. # More refined control is available with each individual setting further down. # $mydomain is never used directly by the program. -$mydomain = 'example.com'; # (no useful default) +$mydomain = 'example.com'; # (modificare in modo opportuno!) # $myhostname = 'host.example.com'; # fqdn of this host, default by uname(3) @@ -137,7 +137,7 @@ # feeding amavisd, e.g. with Postfix the 'Max procs' field in the # master.cf file, like the '2' in the: smtp-amavis unix - - n - 2 smtp # -$max_servers = 2; # number of pre-forked children (default 2) +$max_servers = 5; # number of pre-forked children (default 2) $max_requests = 10; # retire a child after that many accepts (default 10) $child_timeout=5*60; # abort child if it does not complete each task in n sec @@ -396,8 +396,8 @@ # and other dual-MTA setups, which can't reject original client SMTP # session, as the mail has already been enqueued. -$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE) -$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE) +$final_virus_destiny = D_REJECT; # (defaults to D_BOUNCE) +$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE) $final_spam_destiny = D_REJECT; # (defaults to D_REJECT) $final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested @@ -473,10 +473,10 @@ # # Empty or undef lookup disables virus admin notifications. -# $virus_admin = undef; # do not send virus admin notifications (default) +$virus_admin = undef; # do not send virus admin notifications (default) # $virus_admin = {'not.example.com' => '', '.' => '
Questo indirizzo e-mail è protetto dallo spam bot, abilitare Javascript per vederlo
'}; # $virus_admin = '
Questo indirizzo e-mail è protetto dallo spam bot, abilitare Javascript per vederlo
'; -$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default +#$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default # equivalent to $virus_admin, but for spam admin notifications: # $spam_admin = "spamalert\@$mydomain"; @@ -597,11 +597,11 @@ # (the default value is undef, meaning no quarantine) -$virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine +#$virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine #$virus_quarantine_to = 'infected@'; # forward to MTA for delivery #$virus_quarantine_to = "virus-quarantine\@$mydomain"; # similar #$virus_quarantine_to = '
Questo indirizzo e-mail è protetto dallo spam bot, abilitare Javascript per vederlo
'; # similar -#$virus_quarantine_to = undef; # no quarantine +$virus_quarantine_to = undef; # no quarantine # #$virus_quarantine_to = new_RE( # per-recip multiple quarantines # [qr'^
Questo indirizzo e-mail è protetto dallo spam bot, abilitare Javascript per vederlo
$'i => 'infected@'],
| 4. Configurazione di Postfix L'unica modifica da fare a Postfix per il filtraggio virus tramite Amavis si fa sul file /etc/postfix/master.cf. In pratica si inoltrano tutti i messaggi in arrivo via SMTP ad un proxy in ascolto sulla porta 10024 locale (Amavis) e si crea un nuovo servizio SMTP sulla porta 10025 unicamente locale che accetta i messaggi filtrati da Amavis e continua il regolare processo di elaborazione. Anche questo è un file ``patch'', è sufficiente entrare nella directory /etc/postfix, eseguire il comando patch e fare copia/incolla del seguente testo: --- /etc/postfix/master.cf 2006-04-23 11:46:10.000000000 +0200 +++ master.cf 2006-05-08 18:32:59.000000000 +0200 @@ -77,7 +77,8 @@ # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== -smtp inet n - - - - smtpd +#smtp inet n - - - - smtpd +smtp inet n - - - - smtpd -o smtpd_proxy_filter=127.0.0.1:10024 #submission inet n - - - - smtpd # -o smtpd_etrn_restrictions=reject #628 inet n - - - - qmqpd @@ -122,3 +123,39 @@ #tlsmgr fifo - - n 300 1 tlsmgr #smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes #587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes + + + +smtp-amavis unix - - - - 2 smtp + -o smtp_data_done_timeout=1200 + -o disable_dns_lookups=yes + +127.0.0.1:10025 inet n - - - - smtpd + -o content_filter= + -o local_recipient_maps= + -o relay_recipient_maps= + -o smtpd_restriction_classes= + -o smtpd_client_restrictions= + -o smtpd_helo_restrictions= + -o smtpd_sender_restrictions= + -o smtpd_recipient_restrictions=permit_mynetworks,reject + -o mynetworks=127.0.0.0/8 + -o strict_rfc821_envelopes=yes + -o smtpd_error_sleep_time=0 + -o smtpd_soft_error_limit=1001 + -o smtpd_hard_error_limit=1000
| Altri filtri utili: esistenza domini e liste di blocco Amavis e Clamav sono molto potenti, eliminano la spazzatura più grossa e pericolosa. Occorre però tener presente, come con qualsiasi antivirus, la finestra di tempo dall'uscita di nuovi virus alla loro catalogazione e propagazione nei nuovi database, di solito è questione di poche ore e l'aggiornamento del server è automatico. Saltuariamente viene anche aggiornato il motore di scansione (clamav), ma le politiche di Debian non permettono la distribuzione di nuovi binari con la distribuzione ufficiale per aggiunta di funzionalità . Proprio per questo è stata creata la fonte debian-volatile da aggiungere ad APT. Si potrebbe venire incontro al sistema anche aggiungendo dei piccoli filtri, più semplici della scansione del messaggio ed altrettanto efficaci, che fanno risparmiare anche il traffico dati del messaggio stesso, ad esempio: - rifiutare la comunicazione se il client si presenta in modo sciocco (``BAD HELO'') come fanno certi virus;
- rifiutare la comunicazione se l'email del mittente o del destinatario è facilmente identificabile come inesistente;
- rifiutare la comunicazione se il client utilizza un indirizzo IP noto per essere una fonte problematica (liste di blocco).
Per aggiungere questo si opera sul file /etc/postfix/main.cf, il file ``patch'' è il seguente (entrare nella directory /etc/postfix, eseguire il comando patch e fare copia/incolla del seguente testo): --- /etc/postfix/main.cf 2006-05-08 16:41:03.000000000 +0200 +++ main.cf 2006-05-08 17:47:00.000000000 +0200 @@ -20,3 +20,23 @@ mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all + +smtpd_helo_required = yes +smtpd_sender_restrictions = reject_unknown_address +smtpd_recipient_restrictions = + reject_unauth_pipelining, + permit_mynetworks, + reject_invalid_hostname, + reject_non_fqdn_sender, + reject_non_fqdn_recipient, + reject_unknown_sender_domain, + reject_unknown_recipient_domain, + reject_unknown_address, + reject_rbl_client sbl-xbl.spamhaus.org, + reject_rbl_client list.dsbl.org, + reject_rbl_client dul.dnsbl.sorbs.net, + reject_rbl_client l1.spews.dnsbl.sorbs.net, + reject_rbl_client proxies.blackholes.easynet.nl, + reject_rbl_client dnsbl.njabl.org, + reject_unauth_destination
|
|