Inspecteur SMTP

Présentation de l’inspecteur SMTP

Type

Inspecteur (service)

Usage

Inspecter

Type d’instance

Multiton

Autres inspecteurs requis

stream_tcp

Activé

vrai

Le protocole SMTP (Simple Mail Transfer Protocol) permet à un client de messagerie d’envoyer des messages à un serveur de messagerie. SMTP émet des commandes pour transmettre un message à un destinataire. Un serveur SMTP utilise le port TCP 25 pour les sessions non sécurisées ou le port TCP 587 pour SMTP sur SSL/TLS.

L’inspecteur smtp détecte le trafic SMTP et analyse les commandes et les réponses SMTP.

L’inspecteur smtp segmente les messages SMTP en sections de commande, d’en-tête et de corps, et procède à l’extraction et au décodage des pièces jointes MIME (Multipurpose Internet Mail Extensions). Les pièces jointes MIME peuvent inclure plusieurs pièces jointes et des pièces jointes volumineuses réparties sur plusieurs paquets.

L'inspecteur smtp identifie les messages SMTP et les ajoute à la liste d’autorisation de Snort. Lorsqu’elles sont activées, les règles de prévention des intrusions génèrent des événements sur le trafic SMTP anormal.

Vous pouvez configurer l’inspecteur smtp de manière à :

  • consigner les ID de courriel de l’expéditeur et du destinataire, les en-têtes de courriel et les noms des pièces jointes ainsi que tous les événements générés pour la session,

  • normaliser les lignes de commande SMTP en supprimant les espaces superflus (l’inspecteur smtp normalise les espaces (ASCII 0x20) ou les tabulations (ASCII 0x09)),

  • ignorer le trafic TLS chiffré pour améliorer les performances,

  • ignorer les données de messagerie en texte brut pour améliorer les performances.

Bonnes pratiques en matière de configuration de l’inspecteur SMTP

Nous vous recommandons de suivre les directives de la RFC 2821 pour configurer les paramètres de base de l’inspecteur smtp :

  • max_command_line_len : 512 caractères

  • max_header_line_len : 1 024 caractères

  • max_response_line_len : 512 caractères

Paramètres de l’inspecteur SMTP

Configuration du service SMTP

L’inspecteur binder configure le service SMTP. Pour obtenir plus d'informations, reportez-vous à la Présentation de l’inspecteur de binder.

Exemple :
[
    {
        "when": {
            "service": "smtp",
            "role": any
        },
        "use": {
            "type": "smtp"
        }
    }
]

alt_max_command_line_len[]

Spécifie un tableau de commandes SMTP et une longueur de ligne maximale alternative pour chaque commande. La longueur de ligne maximale alternative remplace la valeur du paramètre max_command_line_len pour la commande SMTP. Vous pouvez activer la règle 124:4 pour afin de générer des événements pour ce paramètre.

Type : tableau

Exemple :
{
    "alt_max_command_line_len": [
        {
            "command": "AUTH",
            "length": 240
        }
    ]
}

alt_max_command_line_len[].command

Spécifie une chaîne de commande.

Type : chaîne

Valeurs valides : commande SMTP

Valeur par défaut : voir Commandes SMTP et longueurs alternatives par défaut des commandes.

alt_max_command_line_len[].length

Spécifie une longueur de ligne maximale alternative pour la commande. Spécifiez 0 pour désactiver la détection de la longueur de ligne d’une commande.

Type : entier

Plage valide : de 0 à 4 294 967 295 (max32)

Valeur par défaut : voir Commandes SMTP et longueurs alternatives par défaut des commandes.

Tableau 1. Commandes SMTP et longueurs alternatives par défaut des commandes

Commande

Durée

ATRN

255

AUTH

246

BDAT

255

DONNÉES

246

DÉBOGAGE

255

EHLO

500

EMAL

255

ESAM

255

ESND

255

ESOM

255

ETRN

500

EVFY

255

EXPN

255

HELO

500

HELP

500

IDENT

255

MESSAGERIE

260

NOOP

255

ONEX

246

QUEU

246

QUIT

246

RCPT

300

RSET

255

SAML

246

ENVOYER

246

SIZE

255

SOML

246

STARTTLS

246

TICK

246

Webex

246

TURN

246

TURNME

246

VERB

246

VRFY

255

XADR

246

XAUTH

246

XCIR

246

XEXCH50

246

X-EXPS

246

XGEN

246

XLICENSE

246

X-LINK2STATE

246

XQUE

246

XSTA

246

XTRN

246

XUSR

246

auth_cmds

Spécifie une liste de commandes SMTP qui déclenchent l’échange d’authentification. Utilisez un espace comme séparateur entre les commandes SMTP.

Type : chaîne

Valeurs valides : commandes de déclenchement de l’échange d’authentification SMTP

Valeur par défaut : AUTH XAUTH X-EXPS

b64_decode_depth

Spécifie le nombre maximal d’octets à extraire et à décoder de chaque pièce jointe de courriel MIME codée en Base64. Vous pouvez spécifier un entier inférieur à 65 535, ou 0 pour désactiver le décodage. Spécifiez -1 pour n’appliquer aucune limite au nombre d’octets à décoder.

Vous pouvez activer la règle 124:10 afin de générer des événements pour ce paramètre et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés en cas d’échec du décodage.

Type : entier

Plage valide : de -1 à 65 535

Valeur par défaut : -1

binary_data_cmds

Spécifie une liste de commandes SMTP qui déclenchent l’envoi de données et qui sont suivies d’une valeur de longueur (en octets) pour indiquer la quantité de données à envoyer. Utilisez un espace comme séparateur entre les commandes SMTP.

Type : chaîne

Valeurs valides : commandes SMTP valides de déclenchement d’envoi de données utilisant un argument de longueur de données

Valeur par défaut : BDATA XEXCH50

bitenc_decode_depth

Spécifie le nombre maximal d’octets à extraire de chaque pièce jointe MIME non codée. Vous pouvez spécifier un entier inférieur à 65 535, ou 0 pour désactiver l’extraction de la pièce jointe MIME non codée. Spécifiez -1 pour n’appliquer aucune limite au nombre d’octets à extraire. Ces types de pièces jointes englobent les formats 7 bits, 8 bits, binaires, ainsi que divers types de contenu multipartite tels que le texte brut, les images JPEG et PNG, et les fichiers MP4.

Type : entier

Plage valide : de -1 à 65 535

Valeur par défaut : -1

data_cmds

Spécifie une liste de commandes SMTP qui déclenchent l’envoi de données et utilisent un délimiteur de fin de données (<CRLF>.<CRLF>).

Type : chaîne

Valeurs valides : commande SMTP de déclenchement d’envoi de données utilisant un délimiteur de fin de données

Valeur par défaut : DATA

decompress_pdf

Indique si les fichiers application/pdf (PDF) contenus dans les pièces jointes MIME doivent être décompressés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

decompress_swf

Indique si les fichiers application/vnd.adobe.flash-movie (SWF) contenus dans les pièces jointes MIME doivent être décompressés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

decompress_vba

Indique si les fichiers de macros Microsoft Office Visual Basic for Applications contenus dans les pièces jointes MIME doivent être décompressés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

decompress_zip

Indique si les fichiers application/zip (ZIP) contenus dans les pièces jointes MIME doivent être décompressés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

email_hdrs_log_depth

Spécifie le nombre d’octets de l’en-tête de courriel à extraire des données SMTP. Spécifiez 0 pour désactiver l’extraction de l’en-tête de courriel.

Type : entier

Plage valide : de 0 à 20 480

Valeur par défaut : 1 464

ignore_data

Indique si la section des données de courriel doit être décodée (à l’exception des en-têtes MIME).

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

ignore_tls_data

Indique si les données chiffrées par TLS doivent être décodées.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

log_email_hdrs

Indique si l’en-tête de courriel SMTP et tous les événements générés pour la session doivent être décodés et enregistrés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

log_filename

Indique si les noms des fichiers joints MIME extraits de l’en-tête Content-Disposition dans le corps MIME doivent être décodés et enregistrés, de même que tous les événements générés pour la session. Si le message contient plusieurs pièces jointes MIME, l’inspecteur SMTP enregistre les noms de fichier en utilisant une virgule comme séparateur. L’inspecteur SMTP n’enregistre pas plus de 1 024 octets.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

log_mailfrom

Indique si l’adresse courriel de l’expéditeur extraite de la commande SMTP MAIL FROM et tous les événements générés pour la session doivent être décodés et enregistrés. Si le message contient plusieurs expéditeurs, l’inspecteur SMTP les enregistre en utilisant une virgule comme séparateur. L’inspecteur SMTP n’enregistre pas plus de 1 024 octets.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

log_rcptto

Indique si les adresses courriel des destinataires extraites de la commande SMTP RCPT TO et tous les événements générés pour la session doivent être décodés et enregistrés. Si le message contient plusieurs destinataires, l’inspecteur SMTP les enregistre en utilisant une virgule comme séparateur. L’inspecteur SMTP n’enregistre pas plus de 1 024 octets.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

max_auth_command_line_len

Spécifie le nombre maximal d’octets acceptés pour la ligne de commande d’authentification SMTP.

Vous pouvez activer la règle 124:15 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés. Spécifiez 0 pour désactiver les alertes relatives aux commandes SMTP AUTH, ou supprimez le paramètre max_auth_command_line_len de votre configuration Snort.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 1 000

max_command_line_len

Spécifie le nombre maximal d’octets acceptés pour la ligne de commande SMTP.

La RFC 2821, qui est la spécification du groupe de travail en réseau relative au protocole SMTP, recommande une longueur maximale de 512 octets pour la ligne de commande. Spécifiez 0 pour désactiver les alertes relatives à la longueur de la ligne de commande SMTP, ou supprimez le paramètre max_command_line_len de votre configuration Snort.

Vous pouvez activer la règle 124:1 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 512

max_header_line_len

Spécifie le nombre maximal d’octets acceptés pour la ligne d’en-tête des données SMTP.

La RFC 2821, qui est la spécification du groupe de travail en réseau relative au protocole SMTP, recommande une longueur maximale de 1 024 octets pour la ligne d’en-tête des données. Spécifiez 0 pour désactiver les alertes relatives à la longueur de la ligne d’en-tête des données SMTP, ou supprimez le paramètre max_header_line_len de votre configuration Snort.

Vous pouvez activer les règles 124:2 et 124:7 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 1 000

max_response_line_len

Spécifie le nombre maximal d’octets acceptés pour la ligne de réponse SMTP.

La RFC 2821, qui est la spécification du groupe de travail en réseau relative au protocole SMTP, recommande une longueur maximale de 512 octets pour la ligne de réponse. Spécifiez 0 pour désactiver les alertes relatives à la longueur de la ligne de réponse SMTP, ou supprimez le paramètre max_response_line_len de votre configuration Snort.

Vous pouvez activer la règle 124:3 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 512

normalize

Indique si la normalisation doit porter sur toutes les commandes, sur aucune commande ou sur une liste de commandes. Vous pouvez spécifier la liste des commandes dans le paramètre normalize_cmds. L’inspecteur vérifie qu’il n’y a pas plus d’un espace (ASCII 0x20) ou d’une tabulation (ASCII 0x09) après une commande.

Type : énumération

Valeurs valides :

  • none

  • cmds

  • all

Valeur par défaut : none

normalize_cmds

Spécifie une liste de commandes SMTP à normaliser. Utilisez un espace comme séparateur entre les commandes SMTP.

Type : chaîne

Valeurs valides : commandes SMTP

Valeur par défaut : aucune

qp_decode_depth

Spécifie le nombre maximum d'octets à extraire et à décoder de chaque pièce jointe MIME de courriel codée en quoted-printable (QP). Vous pouvez spécifier un entier inférieur à 65 535, ou 0 pour désactiver le décodage. Spécifiez -1 pour n’appliquer aucune limite au nombre d’octets à décoder.

Vous pouvez activer la règle 124:11 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : entier

Plage valide : de -1 à 65 535

Valeur par défaut : -1

uu_decode_depth

Indique le nombre maximal d’octets à extraire et à décoder de chaque pièce jointe MIME encodée au format Unix-to-Unix (uuencode). Vous pouvez spécifier un entier inférieur à 65 535, ou 0 pour désactiver le décodage. Spécifiez -1 pour n’appliquer aucune limite au nombre d’octets à décoder.

Vous pouvez activer la règle 124:13 afin de générer des événements pour ce paramètre et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés en cas d’échec du décodage (en raison d’un encodage incorrect ou de données corrompues, par exemple).

Type : entier

Plage valide : de -1 à 65 535

Valeur par défaut : -1

valid_cmds

Spécifie une liste supplémentaire de commandes SMTP que l’inspecteur SMTP considère comme valides.

L’inspecteur SMTP définit une liste de commandes SMTP valides par défaut : ATRN AUTH BDAT DATA DEBUG EHLO EMAL ESAM ESND ESOM ETRN EVFY EXPN HELO HELP IDENT MAIL NOOP ONEX QUEU QUIT RCPT RSET SAML SEND SIZE STARTTLS SOML TICK TIME TURN TURNME VERB VRFY X-EXPS X-LINK2STATE XADR XAUTH XCIR XEXCH50 XGEN XLICENSE XQUE XSTA XTRN XUSR.

Vous pouvez activer la règle 124:5 pour générer des événements et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : chaîne

Valeurs valides : commandes SMTP

Valeur par défaut : aucune

xlink2state

Indique comment l’inspecteur SMTP gère les paquets impliqués dans les attaques par dépassement de tampon X-Link2State de Microsoft Exchange (voir CVE-2005-0560 pour une description de la vulnérabilité). Vous pouvez désactiver la détection (disable), activer la détection et générer des alertes (alert), ou activer la détection et abandonner les paquets incriminés (drop).

Vous pouvez activer la règle 124:8 afin de générer des événements pour ce paramètre et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés.

Type : énumération

Valeurs valides :

  • disable

  • alert

  • drop

Valeur par défaut : alert

Règles de l’inspecteur SMTP

Activez les règles de l’inspecteur smtp pour générer des événements et, dans un déploiement en ligne, supprimer les paquets incriminés.

Tableau 2. Règles de l’inspecteur SMTP

GID:SID

Message de règle

124:1

Tentative de dépassement de tampon de commande

124:2

Tentative de dépassement de tampon d’en-tête de données

124:3

Tentative de dépassement de tampon de réponse

124:4

Tentative de dépassement de tampon de commande spécifique

124:5

Commande inconnue

124:6

Commande illégale

124:7

Tentative de dépassement de tampon de nom d’en-tête

124:8

Tentative de dépassement de tampon de commande X-Link2State

124:10

Échec du décodage en base64

124:11

Échec du décodage quoted-printable

124:13

Échec du décodage Unix-to-Unix

124:14

Attaque d’authentification SASL de Cyberus

124:15

Tentative de dépassement de tampon de commande d’authentification

124:16

Échec de la décompression de fichier

Options des règles de prévention des intrusions de l’inspecteur SMTP

vba_data

Place le curseur de détection dans le tampon des macros de Microsoft Office Visual Basic for Applications.

Syntaxe : vba_data;

Exemples : vba_data;