Inspecteur de serveur FTP

Présentation de l’inspecteur de serveur FTP

Type

Inspecteur (service)

Usage

Inspecter

Type d’instance

Multiton

Autres inspecteurs requis

ftp_client, stream_tcp

Activé

vrai

Le protocole FTP (File Transfer Protocol) est un protocole réseau utilisé pour transférer des fichiers entre des clients et des serveurs sur un réseau TCP/IP. Dès qu’une connexion est établie entre un client et un serveur, le client envoie des commandes au serveur pour charger ou télécharger des fichiers, et interprète les réponses reçues du serveur.

L’inspecteur ftp_server examine et normalise les commandes sur le canal de commande FTP.

À partir d’un tampon de canal de commande FTP, l’inspecteur ftp_server identifie les commandes et les paramètres FTP, et vérifie la validité de ces paramètres. L’inspecteur ftp_server détermine quand une connexion de commande FTP est chiffrée et quand un canal de données FTP est ouvert.

Paramètres de l’inspecteur de serveur FTP

Configuration des ports du serveur FTP

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

Exemple :
[
    {
        "when": {
            "role":"any",
            "service":"ftp",
            "ports": ""
        },
        "use": {
            "type":"ftp_server"
        }
    }
]

chk_str_fmt

Spécifie une liste de commandes FTP à vérifier pour prévenir les attaques par format de chaîne. Vous pouvez activer la règle 125:5 pour générer une alerte et, dans le cadre d’un déploiement en ligne, abandonner les paquets incriminés lorsque l’inspecteur détecte cette condition. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste de commandes FTP valides.

Valeur par défaut : aucune

data_chan_cmds

Spécifie une liste de commandes FTP dont la mise en forme doit être vérifiée. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste d’une ou plusieurs des commandes suivantes : PORT PASV LPRT LPSV EPRT EPSV.

Valeur par défaut : aucune

data_xfer_cmds

Spécifie une liste de commandes de transfert de données. Assurez-vous que la mise en forme des commandes est correcte. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste d’une ou plusieurs des commandes suivantes : RETR STOR STOU APPE LIST NLST.

Valeur par défaut : aucune

file_put_cmds

Spécifie une liste de commandes PUT. Assurez-vous que la mise en forme des commandes est correcte. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste d’une ou plusieurs des commandes suivantes : STOR STOU APPE.

Valeur par défaut : aucune


Mise en garde


Ne modifiez pas le paramètre file_put_cmds, sauf si le service d’assistance vous le demande.


file_get_cmds

Spécifie une liste de commandes GET. Assurez-vous que la mise en forme des commandes est correcte. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste de commandes GET, telles que RETR.

Valeur par défaut : aucune


Mise en garde


Ne modifiez pas le paramètre file_get_cmds, sauf si le service d’assistance vous le demande.


encr_cmds

Spécifie une liste de commandes relatives aux connexions sécurisées. Assurez-vous que la mise en forme des commandes est correcte. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : liste de commandes relatives aux connexions sécurisées, par exemple : AUTH.

Valeur par défaut : aucune

login_cmds

Spécifie une liste de commandes relatives au processus de connexion. Assurez-vous que la mise en forme des commandes est correcte. Utilisez un espace comme séparateur entre les commandes.

Type : chaîne

Valeurs valides : spécifiez une liste d’une ou plusieurs commandes : USER, PASS.

Valeur par défaut : aucune

check_encrypted

Indique si une session chiffrée doit être vérifiée pour détecter une commande visant à désactiver le chiffrement. À utiliser avec le paramètre encrypted_traffic.

En ce qui concerne ce paramètre, vous pouvez activer la règle 125:7 pour générer des événements et, dans un déploiement en ligne, supprimer les paquets incriminés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

cmd_validity[]

Tableau de commandes FTP et critères utilisés par l’inspecteur pour les valider. Ces contrôles de validité remplacent les contrôles par défaut effectués par l’inspecteur ftp_server (RFC 959).

En ce qui concerne ce paramètre, vous pouvez activer les règles 125:2 et 125:4 pour générer des événements et, dans le cadre d’un déploiement de ligne, abandonner les paquets incriminés.

Type : tableau (objet)

Exemple :
{
   "cmd_validity": [
       {
           "command": "CWD",
           "format": "abc",
           "length": 250
       }
   ]
}

cmd_validity[].command

Spécifie le nom d’une commande FTP à valider.

Type : chaîne

Valeurs valides : une commande FTP valide entre guillemets doubles.

Valeur par défaut : aucune

cmd_validity[].format

Décrit le format valide pour cmd_validity[].command

Type : chaîne

Valeurs valides : l’un des formats suivants :

  • int : le paramètre doit être un entier.

  • number : le paramètre doit être un entier compris entre 1 et 255.

  • char chars : le paramètre doit être un caractère unique provenant de chars ou une liste d’un ou plusieurs caractères sans séparateurs.

  • date datefmt : le paramètre suit le format spécifié, où datefmt est composé des éléments suivants :

    • # = Nombre

    • C = Caractère

    • [] = Format facultatif entre crochets

    • | = OU

    • {} = Choix de formats entre accolades

    • .+- = Caractères littéraux

  • string : le paramètre est une chaîne illimitée.

  • host_port : le paramètre doit être un spécificateur de port d’hôte, conformément à la RFC 959.

  • long_host_port : le paramètre doit être un spécificateur de port d’hôte long, conformément à la RFC 1639.

  • extended_host_port : le paramètre doit être un spécificateur de port d’hôte étendu, conformément à la RFC 2428.

  • {},| : le paramètre doit être l’une des options entre accolades, séparées par |.

  • {}, [] : le paramètre doit être l’une des options entre accolades. Les valeurs facultatives sont placées entre crochets.

Valeur par défaut : aucune

cmd_validity[].length

Spécifie la longueur maximale en octets du paramètre cmd_validity[].command, en remplaçant la valeur par défaut définie dans def_max_param_len. Si le paramètre de la commande FTP dépasse la valeur de cmd_validity[].length et que la règle 125:3 est activée, Snort génère une alerte. Utilisez cmd_validity[].length pour imposer des restrictions sur la taille des valeurs de paramètres de commandes spécifiques.

Spécifiez 0 pour une longueur illimitée.

Type : entier

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

Valeur par défaut : 0

def_max_param_len

Spécifie la longueur maximale par défaut, en octets, que l’inspecteur autorise pour toutes les commandes FTP gérées par le serveur. Utilisez def_max_param_len pour une détection basique de dépassement de tampon. (Cette valeur peut être redéfinie pour des commandes individuelles à l’aide de cmd_validity[].length.) En ce qui concerne ce paramètre, vous pouvez activer la règle 125:3 pour générer des événements et, dans un déploiement en ligne, supprimer les paquets incriminés.

Spécifiez 0 pour une longueur illimitée.

Type : entier

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

Valeur par défaut : 100

encrypted_traffic

Indique si le trafic FTP chiffré doit être vérifié. À utiliser avec le paramètre check_encrypted. En ce qui concerne ce paramètre, vous pouvez activer la règle 125:7 pour générer des événements et, dans un déploiement en ligne, supprimer les paquets incriminés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

ftp_cmds

Liste des commandes FTP prises en charge par le serveur en plus de celles décrites dans la RFC 959. (Si votre installation utilise les commandes « X » spécifiées dans la RFC 775, par exemple, vous pouvez les ajouter à l’inspecteur à l’aide de ce paramètre).

Type : chaîne

Valeurs valides : liste de commandes FTP valides, séparées par des espaces et entre guillemets doubles.

Valeur par défaut : aucune

ignore_data_chan

Indique si les canaux de données FTP doivent être ignorés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

ignore_telnet_erase_cmds

Indique si les séquences d’échappement Telnet relatives aux caractères d’effacement (TNC EAC) et au caractère d’effacement de ligne (TNC EAL) doivent être ignorées lors de la normalisation du canal de commande FTP. Définissez ignore_telnet_erase_cmds en tenant compte de la manière dont votre serveur FTP gère les commandes d’effacement Telnet. Généralement, les nouveaux clients FTP ignorent ces séquences d’échappement Telnet, tandis que les anciens clients les traitent.

Si les commandes d’effacement Telnet ne sont pas ignorées et que la règle 125:1 est activée, Snort génère un événement et, dans le cadre d’un déploiement en ligne, abandonne les paquets incriminés.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

print_cmds

Indique si la configuration de chaque commande FTP relative à ce serveur doit être imprimée lors de l’initialisation.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

telnet_cmds

Indique si la présence d’éventuelles commandes Telnet doit être recherchée sur le canal de commande FTP. Une telle présence peut révéler une tentative d’évasion sur ce canal.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

Règles de l’inspecteur de serveur FTP

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

Tableau 1. Règles de l’inspecteur de serveur FTP

GID:SID

Message de règle

125:1 Commande TELNET sur le canal de commande FTP

125:2

Commande FTP non valide

125:3

Paramètres de la commande FTP trop longs

125:4

Syntaxe des paramètres de la commande FTP incorrecte

125:5

Format de chaîne suspect dans les paramètres de la commande FTP

125:7

Trafic FTP chiffré

125:9

Commande TELNET évasive (incomplète) sur le canal de commande FTP

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

L’inspecteur ftp_server ne comporte aucune option de règle de prévention des intrusions.