![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[Configuration de la sécurité dans Sendmail] Cette page présente quelques
éléments indispensables pour permettre de gérer la sécurité dans
Sendmail.
[I.1. Version de Sendmail] Sendmail
est un programme complexe qui a laissé apparaître, au cours de ces
nombreuses années d'utilisation, beaucoup de failles de sécurité. Il
est donc essentiel de toujours utiliser des versions récentes de
Sendmail, éliminant ainsi le risque de compromission par l'exploitation
d'une faille ancienne. A ce jour, il convient d'utiliser la version 8.11.2 de Sendmail. [I.2. Installation de Sendmail] Pour
installer Sendmail, se référer au guide d'installation. [II. Configuration de la sécurité dans Sendmail] [II.1. Permissions sur les fichiers Sendmail] Les
permissions sur les différents fichiers utilisés par Sendmail doivent
être étudiées avec attention. La plupart d'entre eux doit appartenir à
root qui doit être le seul à disposer de droits en écriture sur ces
fichiers.
De nombreuses commandes SMTP dévoilent des informations sensibles sur la configuration de Sendmail et doivent être interdites. Il s'agit de : [wiz,
kill, debug]
- Un message "500
Command unrecognised" certifie que votre système ne permet pas ces
commandes. Cas des commandes debug et showq La commande debug (mise en oeuvre lorsque la variable SMTPDEBUG est définie dans le fichier Makefile de Sendmail) permet aux développeurs de contrôler l'exécution du programme. Lorsque la commande debug est autorisée, la commande SMTP showq permet alors de regarder le contenu de la queue des messages. Il convient donc de ne jamais définir la variable SMTPDEBUG. [vrfy,
expn, finger]
Si la commande n'est pas supportée :
- La commande expn (expand)
est une extension de vrfy et permet de lister l'ensemble des adresses, les
destinataires contenus dans les mailing-lists, les alias...
Si la commande n'est pas supportée :
Ces commandes, lorsqu'elles
sont autorisées, dévoilent des informations qui peuvent être utilisés
par une personne malveillante pour envoyer des messages non-sollicités (spam)
ou tenter de découvrir le mot de passe associé au compte de messagerie. [Restriction d'accès à la queue de messages] Il est nécessaire d'empêcher les utilisateurs non-membres du groupe auquel appartient la queue de messages de pouvoir lister le contenu de cette queue. Pour cela, il convient de spécifier l'option "restrictmailq". [Forcer l'identification du client] Il est possible de forcer Sendmail à demander à chaque client se connectant de s'identifier à l'aide de la commande HELO avant de pouvoir émettre un message. Pour cela, il convient de spécifier l'option "needmailhelo". [Configuration de Sendmail pour la sécurité des commandes SMTP] Pour interdire les commandes expn et vrfy, restreindre l'accès à la queue de messages et forcer l'identification du client : ajouter la ligne suivante dans /etc/sendmail.mc :
Une fois le fichier /etc/sendmail.mc ainsi modifié il convient de générer le nouveau fichier de configuration de Sendmail :
Puis relancer le démon avec ce nouveau fichier de configuration :
[II.3 Autres commandes vulnérables] Deux autres failles de sécurité connues doivent être corrigées : les commandes OW et decode. [OW] Une vulnérabilité connue de Sendmail consiste à accepter le "wizard's password". Ceci a lieu lorsque le fichier de configuration /etc/sendmail.cf contient une ligne avec OW différente de OW*. Un simple grep permet de vérifier cela :
Si la réponse n'est pas OW*, alors remplacer la ligne par OW*. [decode] Une autre vulnérabilité connue consiste à laisser un alias decode dans le fichier /etc/aliases. Plus généralement, il est conseillé d'étudier tout alias redirigeant vers un programme et non un compte de messagerie). Pour decode, ceci apparaît sous la forme suivante :
Deux possibilités peuvent
être mises en oeuvre :
Ceci enverra un message à la boîte root lorsque quelqu'un tentera d'exploiter les failles liées à decode. [II.4. Message d'invite de Sendmail] Par défaut, Sendmail envoie un certain nombre d'information lorsque l'on se connecte sur le serveur de messagerie :
Ces informations permettent de
découvrir sans effort la version de Sendmail utilisée (ici 8.9.3) ainsi
que la version du fichier sendmail.cf (ici 8.8.7).
Le Spam
correspond à du courrier électronique non-sollicité qui inonde en
général les boîtes à lettre de manière illicite. En particulier, les
spammers utilisent 3 moyens classiques pour tenter de découvrir les
adresses de messagerie d'un domaine : [Relayage de Spam] Le Spam
s'est énormément développé grâce aux possibilités de relayage des
serveurs de messagerie. [Realtime Blackhole List] Cette
liste, disponible et maintenue par MAPS,
recense les spammers et les sites générant des spams. Sendmail dispose
d'une option permettant d'interroger directement cette liste pour
contrôler les messages reçus.
[II.6. Contrôler le relayage avec Sendmail] Par
défaut, le relayage est désactivé sur un serveur Sendmail, mail il peut
être intéressant de l'activer de manière contrôlée dans certains cas
(ne serait-ce que dans le cas très courant où Sendmail est utilisé en
relais pour un domaine). Pour permettre le relayage sur le domaine, il convient de modifier le fichier /etc/sendmail.mc :
Puis générer le nouveau fichier de configuration et relancer le service. On peut alors configurer le comportement de Sendmail en relais dans le fichier /etc/mail/access. Toute modification effectuée sur ce fichier est prise en compte par Sendmail lorsque l'administrateur exécute les commandes suivantes :
Le fichier /etc/mail/access
est constitué de deux colonnes : Exemple
d'implémentation Le fichier /etc/mail/access doit avoir le contenu suivant :
A partir de la version 8.10 de
Sendmail, il est possible d'ajouter des commandes spécifiques concernant
les émetteurs (left hand side) pour une plus grande granularité
du filtrage : Soit, en reprenant l'exemple précédent :
[II.7. Filtrer des messages avec Sendmail] [Filtrer les messages entrants] Sendmail offre des possibilités de filtrage de messages entrants en fonction de leur contenu. L'exemple classique (que l'on peut retrouvé sur le site de Sendmail.net) concerne le ver LoveLetter présentant les caractéristiques suivantes :
Pour filtrer ce message en entrée, il convient de modifier le fichier /etc/sendmail.mc (puis mettre à jour le fichier /etc/sendmail.cf) :
Remarque : le champ [tabulation] doit être remplacé par une véritable tabulation ! [Filtrage des destinataires] Sendmail offre une possibilité supplémentaire de contrôler et filtrer les destinataires des messages. Ceci s'effectue en précisant dans le fichier /etc/sendmail.mc :
On peut alors modifier le
fichier /etc/mail/access afin d'y préciser les adresses de messagerie ou
serveurs qui ne pourront pas recevoir de messages. Par exemple : Le fichier /etc/mail/access doit avoir le contenu suivant :
[II.8. Contrôler les connexions SMTP avec TCP Wrappers] TCP
Wrappers est le célèbre paquetage édité et maintenu par Wietse
Venema permettant d'effectuer un contrôle et un filtrage au niveau
réseau des connexions faites sur un système. Il est donc possible de
contrôler les connexions par adresse IP, nom de machine ou nom de
domaine. Pour des questions de sécurité, le fichier /etc/hosts.deny doit toujours contenir par défaut :
Ce qui signifie que tout ce
qui n'est pas explicitement autorisé dans /etc/hosts.allow est
interdit. Si
l'on souhaite autoriser tout serveur à communiquer avec le Sendmail
local, sauf la machine spammer.vilain.fr, il convient d'effectuer les
modifications suivantes :
- Dans /etc/hosts.deny :
[II.9. Éliminer les entêtes avec Sendmail] Il arrive souvent, notamment lorsque l'on souhaite utiliser Sendmail en tant que relais pour les messages sortants, de vouloir éliminer certains en-têtes des messages émis depuis des serveurs internes pour éviter de dévoiler à l'extérieur la topologie du système d'information. Pour
cela, il faut configurer Sendmail pour qu'il efface certains en-têtes des
messages sortants : L'opération étant relativement complexe, elle n'est pas encore détaillée ici. Cependant, vous pouvez suivre le lien vers la page de Erin Jones qui traite du sujet et propose une procédure intéressante. [II.10. Configurer Sendmail pour lutter contre les attaques de déni de service] De nombreux de paramètres peuvent être configurés dans le fichier /etc/sendmail.mc afin d'offrir une résistance plus importante aux attaques visant à saturer les ressources du système. Il est donc intéressant de fixer les variables suivantes dans le fichier /etc/sendmail.mc :
[II.11. Ajouter une mention légale aux messages sortants] Beaucoup d'entreprises souhaitent systématiquement ajouter une mention légale à l'ensemble des messages sortants, afin de se dégager de toute responsabilité en cas de problème. Ces messages prennent souvent la forme suivante :
Sendmail ne permet pas
simplement d'effectuer ce type d'opération, notamment à cause du
problème du traitement des messages de type multimédia (MIME). Pour plus d'informations et pour obtenir les sources d'une solution proposée par Wouter Wijker sous RedHat 6.2 et Sendmail 8.11.1, contacter securit@free.fr. [II.12. Exploitation des messages de logs] Sendmail peut générer énormément d'informations via le serveur syslog. La criticité des informations générant une alerte dans le syslog est fixée par la variable LogLevel dans /etc/mail/sendmail.cf. Pour vérifier la valeur de LogLevel, exécuter la commande suivante (sous Linux) :
(par défaut, LogLevel est fixé à 9) Le serveur
syslog doit être configuré pour stocker les informations de logs dans un
répertoire particulier. Pour traiter les informations générées par Sendmail dans syslog, il existe des scripts Perl permettant de synthétiser ces informations. Pour cela, se reporter à la FAQ Sendmail-Section4-Q4.7.
[Références] -
"Sendmail, 2nd edition" - Edition O'Reilly, janvier
1997, Bryan Costales & Eric Allman (ISBN 1-56592-222-0).
|
securIT@free.fr -
Plein accès