Apache Traffic Server

 Apache traffic server est un serveur proxy web utilisé à l’origine chez Yahoo! et par la suite offert à la fondation Apache.

Pour ma part, il me permet de servir de proxy pour des applications Web accessible depuis le web et distribué sur plusieurs serveurs tel que :

  •  Un serveur IIS contenant des applications métiers (extranet),
  • Le CRM de l’entreprise,
  • L’outlook web access d’Exchange,

L’ensemble de ces services deviens accessible depuis l’adresse externe qui pointe sur l’IP de l’entreprise, et chaque partie semble se trouver sur le même serveur (http://monadresse/Appweb, http://monadresse/CRM …).

Il dispose également d’une gestion de cache ce qui en fait un bon serveur CDN ou en tout cas un moyen de décharger vos serveurs web du trafic inutile pour la distribution des fichiers CSS, Image, script JS, etc…

Enfin il est possible de configurer ATS pour prendre en charge votre certificat SSL serveur et ainsi offrir un accès HTTPS à vos sites depuis l’extérieur tout en laissant un accès http en interne, ou plus simplement un seul point de gestion du certificat.

Installation

Il faut télécharger le fichier contenant les sources d’ATS et le compiler sur votre serveur.

Ajout des paquets pour la compilation :

sudo apt-get install g++ libssl-dev tcl-dev libexpat1-dev libpcre3-dev libcap-dev libcap2

Téléchargement des sources (A modifier selon la version) :

wget http://www.apache.org/dyn/closer.cgi/trafficserver/trafficserver-x.x.x.tar.bz2
tar xf trafficserver-x.x.x.tar.bz2
cd trafficserver-x.x.x

Ensuite, la compilation et installation :

./configure
make
sudo make install

Modification de ldconfig :

sudo nano /etc/ld.so.conf

il faut ajouter la ligne suivante :

include /usr/local/libexec/trafficserver

et exécuter la commande :

sudo ldconfig

Pour finir on ajoute le service :

sudo ln -s /usr/local/bin/trafficserver /etc/init.d/trafficserver

Configuration du proxy

La configuration d’ATS se fait principalement dans le fichier « /usr/local/etc/trafficserver/records.config ». Ce fichier est dans un format assez particulier du type « variable type valeur ».

Principale valeur à modifier / vérifier : les ports d’écoutes.

[...]
CONFIG proxy.config.http.server_ports STRING 8080 4443:ssl
[...]

Et pensez à renvoyer les port 80 et 443 de votre passerelle ou box vers l’ip de votre ATS sur les ports 8080 et 4443.

Configuration SSL / HTTPS

J’utilise des certificats de www.startssl.com, qui sont gratuits et offre ainsi le minimum de sécurité. Après avoir obtenu le certificat, je vais dans leur toolbox pour obtenir celui-ci au format PKCS12 (PFX). Il ne reste plus qu’a utiliser ces commandes :

openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
openssl rsa -in key.pem -out cert.key 

Enfin il faut copier les fichiers dans « /etc/trafficserver/ssl » pour qu’ils soient utilisables. Pensez aussi aux fichiers CA.pem et au certificat du niveau de votre certificat.

Configuration des renvois

La configuration des renvoi se fait dans le fichier « /usr/local/etc/trafficserver/remap.config ».

Voici un simple exemple de configuration :

[...]
map  http://mondomaine.fr/webapp/  http://192.168.0.10:80/webappinterne/

Toutes demandes web présentées a ATS pour l’URL « http://mondomaine.fr/webapp/ » sera redirigés sur « http://192.168.0.10:80/webappinterne/ ».

Pour valider vos modifications, utiliser la commande :

sudo /usr/local/bin/traffic_line -x

 

 

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…