Passerelle antispam

Création d’une passerelle pour serveur de messagerie avec antispam et antivirus

Sur notre réseau nous avons un serveur SBS qui réceptionne les emails arrivant par internet. Ces emails passent par notre passerelle IPCop qui avec l’ajout de l’add-on CopFilter permet un premier filtrage des emails. Seulement la passerelle perd de son efficacité et de sa rapidité en accumulant trop de rôles : Passerelle NAT / firewall / détection intrusion + gardian / proxy web / filtrage http / filtrage email, etc…

Du coup pour faire plus simple j’ai rajouté une machine virtuelle sur Hyper-V qui va servir de relais sur la messagerie ainsi que de filtrage antispam et antivirus. La passerelle redirige le port 25 de l’IP publique directement vers la machine virtuelle, qui a sont tour redirigera les emails vers le serveur SBS / Exchange. De plus on rajoute un stockage sur le réseau local des emails en cas de redémarrage ou de coupure du SBS. cela évite également un échec de dépôt des messages qui pour certain serveur n’es retenté qu’après plusieurs minutes voir une ou deux heures. La passerelle ne traite pas par contre les emails sortant du SBS.

Création de la VM et installation de Ubuntu

Sous hyper-V j’ai simplement créé une nouvelle machine virtuelle avec 1 coeur, 1Go de ram et 6Go de disque dur (j’ai parfois vu 8Go conseillé, pour l’instant ça va…). Je démarre ensuite la machine avec l’image ISO du disque de Ubuntu 12.04 LTS 64bits.

L’installation se fait par défaut. Après l’installation du système de base je rajoute juste les fonctions de OpenSSH server pour pouvoir continuer de travailler avec WinSCP et Putty depuis mon PC.

Configuration du réseau

modification du fichier « /etc/network/interfaces » pour passer en adresse statique. J’en profite pour rajouter l’adresse du serveur DNS, qui est en fait notre passerelle internet qui sert de relais DNS :

auto eth0
iface eth0 inet static
    address 192.168.0.212
    netmask 255.255.0.0
    gateway 192.168.0.210
    dns-nameservers 192.168.0.210

 Installation de Postfix

On va attaquer par le serveur postfix :

sudo apt-get install postfix

l’installateur permet d’aller plus vite pour configurer postfix, mais j’ai par la suite modifié le fichier de configuration pour rajouter des fonctions spécifiques. J’ai donc fait l’installation avec les options suivantes :

- système satellite,
- nom de courrier : mondomaine.fr,
- serveur relais SMTP : [192.168.0.202],  (l'ip du SBS à mettre entre crochet, important)

Puis je suis retourné modifier la configuration dans le fichier de postfix. Au final le fichier « /etc/postfix/main.cf » ressemble à ça :

[...] 
myhostname = x.y.abo.wanadoo.fr ## j'ai noté la résolution DNS de notre IP publique 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = mondomaine.fr ## le nom de domaine 
mydestination = 
local_recipient_maps = 
local_transport = error :local mail delivery is disabled 
relayhost = [192.168.0.202] ## l'ip interne d'exchange 
relay_domains = mondomaine.fr ## le nom de domaine 
relay_recipient_maps = 
smtpd_recipient_restrictions =         
     permit_mynetworks,         
     reject_unauth_destination 
#    check_policy_service inet:127.0.0.1:60000 ## si usage de postgrey 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/8 ## réseau interne 
mailbox_command = 
mailbox_size_limit = 51200000 
recipient_delimiter = 
inet_interfaces = all 
inet_protocols = all

et on termine par :

sudo service postfix restart

A partir de ce moment là j’ai testé le relai des emails en utilisant outlook express / windows live mail en interne en utilisant l’adresse IP de cette machine comme adresse de serveur SMTP du client mail. Postfix doit déjà refuser les relais et donc ne laisser que les mails sur le domaine en transfert vers le serveur SBS.

Pour la gestion de TLS, je vous laisse lire la procédure sur cette page, très bien présentée : http://blog.crifo.org/post/2010/04/24/Activer-TLS-dans-postfix.

Installation de ClamAV, SpamAssassin et Amavis

sudo apt-get install clamav
sudo apt-get install spamassassin
sudo apt-get install amavis

Après l’installation de amavis il faut ajouter l’utilisateur clamav au groupe amavis :

sudo adduser clamav amavis

Il faut ensuite modifier les fichiers de Amavis. 

J’ai modifié le fichier « etc/amavis/conf.d/21-ubuntu-defaults » comme ceci :

$final_virus_destiny      = D_REJECT; # (defaults to D_BOUNCE)
$final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_PASS;  # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS;  # (defaults to D_PASS), D_BOUNCE suggested

Ainsi les virus sont refusés et les spams sont tous transmis mais avec un tag dans l’objet « ***SPAM*** « .

Puis à la fin de « etc/postfix/master.cf » il faut ajouter :

smtp-amavis unix - - y - 2 smtp
 -o smtp_data_done_timeout=1200
 -o disable_dns_lookups=yes
127.0.0.1:10025 inet              n          -          y           -         -         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=192.168.0.0/8
 -o strict_rfc821_envelopes=yes

On retourne alors dans « /etc/postfix/main.cf » pour rajouter à la fin :

content_filter = smtp-amavis:[127.0.0.1]:10024

il ne reste qu’à redémarrer les services amavis et postfix pour prendre en compte les modifications.

A partir de là vous pouvez tester en envoyant des faux emails de spam contenant la ligne suivante dans le corps du message :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

SpamAssassin va alors identifier votre email comme du spam.

Installation de fail2ban

Pour finir j’ai ajouté fail2ban pour bannir temporairement les tentatives de relai ou d’intrusion sur le serveur :

sudo apt-get install fail2ban

dans le fichier « /etc/fail2ban/jail.conf » j’ai modifier les sections DEFAULT et POSTFIX pour tenir compte des ip du réseau local et pour activer la surveillance des log postfix :

[DEFAULT]
<...>
ignoreip = 127.0.0.1/8 192.168.0.0/8
<...>
[postfix]
enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log
bantime = 18000

Après un redémarrage du service fail2ban, chaque tentative de relais smtp se solde par un bannissement de l’ip concerné pour les 5 prochaines heures.

 Conclusion

Après ces installations et plusieurs test réussi j’ai redirigé le port 25 de notre passerelle internet vers l’ip de cette nouvelle passerelle email.

Il reste surement d’autre super outils à rajouter, pour l’instant cette configuration me semble efficace et peu gourmande en ressource pour obtenir un minimum de passerelle email et soulager le serveur SBS de ces traitements inutiles. Pour la configuration de chaque logiciels il est bon de rechercher d’autre exemple pour trouver la meilleur solution (et encore, on trouve toujours d’autre options par la suite…).

J’ai testé postgrey mais finalement je ne l’utilise pas car le principe est de retarder les emails pour que les spammeurs abandonnent. Seulement il faut bien parfois recevoir rapidement les emails…