Inspecteur d’analyse de ports

Présentation de l’inspecteur d’analyse de ports

Type

Inspecteur (sonde)

Usage

Global

Type d’instance

Global

Autres inspecteurs requis

Aucun

Activé

faux

Une analyse de ports est une méthode de reconnaissance du réseau souvent utilisée par les agresseurs comme prélude à une attaque. Lors d’une analyse de port, un agresseur envoie des paquets pour tester les protocoles et services réseau d’un hôte ciblé. En examinant les paquets envoyés en réponse par un hôte, l’agresseur peut déterminer quels ports sont ouverts sur celui-ci et, directement ou par déduction, quels protocoles d’application sont exécutés sur ces ports.

En soi, une analyse de ports n’est pas une preuve d’attaque. Les utilisateurs légitimes de votre réseau peuvent utiliser des techniques d’analyse de ports similaires à celles utilisées par les agresseurs.

L’inspecteur port_scan détecte quatre types d’analyse de ports et supervise les tentatives de connexion sur les protocoles TCP, UDP, ICMP et IP. En détectant des schémas d’activité, l’inspecteur port_scan vous aide à identifier les analyses de ports potentiellement malveillantes.

Tableau 1. Types de protocoles d’analyse de ports
Protocole Description
TCP Détecte les sondes TCP telles que les analyses SYN, les analyses ACK, les analyses TCP connect() et les analyses utilisant des combinaisons d’indicateurs inhabituelles (comme Xmas tree, FIN et NULL).
UDP Détecte les sondes UDP telles que les paquets UDP de zéro octet.
ICMP Détecte les demandes ECHO ICMP (pings).
IP Détecte les analyses de protocole IP. Au lieu de rechercher les ports ouverts, Snort recherche les protocoles IP pris en charge sur un hôte cible.

Les analyses de ports sont généralement divisées en quatre types, en fonction du nombre d’hôtes ciblés, du nombre d’hôtes à analyser et du nombre de ports qui sont analysés.

Tableau 2. Types de balayage de ports
Type Description
Balayage de ports

Il s’agit d’une analyse de ports de type un-à-un dans laquelle un agresseur utilise un ou plusieurs hôtes pour analyser plusieurs ports sur un seul hôte cible.

Les analyses de ports de type un-à-un se caractérisent par :

  • un nombre réduit d'hôtes d'analyse

  • un hôte unique qui est analysé

  • un nombre élevé de ports analysés

Une analyse de ports détecte les analyses de ports TCP, UDP et IP.

Balayage de ports multiples

Il s’agit d’un balayage de ports de type un-à-plusieurs dans lequel un agresseur utilise un ou plusieurs hôtes pour analyser un seul port sur plusieurs hôtes cibles.

Les balayages de ports se caractérisent par :

  • un nombre réduit d'hôtes d'analyse

  • un nombre élevé d’hôtes analysés

  • un faible nombre de ports uniques analysés

Un balayage de ports détecte les balayages de ports TCP, UDP, ICMP et IP.

Balayage de ports de leurre

Il s’agit d’une analyse de ports de type un-à-un dans laquelle l’agresseur associe de fausses adresses IP sources à l’adresse IP d’analyse réelle.

Les analyses de ports avec leurres se caractérisent par :

  • un nombre élevé d'hôtes d'analyse

  • un faible nombre de ports qui ne sont analysés qu’une seule fois

  • un seul hôte analysé (ou un faible nombre)

L’analyse de ports avec leurres détecte les analyses des ports des protocoles TCP, UDP et IP.

Balayage de ports distribués

Il s’agit d’une analyse de ports de type plusieurs-à-un dans laquelle plusieurs hôtes interrogent un seul hôte pour identifier les ports ouverts.

Les analyses de ports distribuées se caractérisent par :

  • un nombre élevé d'hôtes d'analyse

  • un nombre élevé de ports qui ne sont analysés qu’une seule fois

  • un seul hôte analysé (ou un faible nombre)

L’analyse de ports distribuée détecte les analyses de ports des protocoles TCP, UDP et IP.

Niveaux de sensibilité de l’analyse de ports

L’inspecteur port_scan propose trois niveaux de sensibilité par défaut :

  • default_low_port_scan

  • default_med_port_scan

  • default_high_port_scan

Vous pouvez configurer des niveaux de sensibilité supplémentaires avec différents filtres :

  • scans

  • rejects

  • nets

  • ports

L’inspecteur port_scan identifie une sonde en analysant les réponses négatives des hôtes sondés. Par exemple, lorsqu’un client Web utilise TCP pour se connecter à un serveur Web, il peut supposer que le serveur Web écoute sur le port 80. Cependant, lorsqu’un agresseur sonde un serveur, il ne sait pas à l’avance si ce serveur offre des services Web. Lorsque l’inspecteur port_scan détecte une réponse négative (ICMP inaccessible ou paquet TCP RST), il enregistre cette réponse comme une potentielle analyse de ports. Le processus est plus difficile lorsque l’hôte ciblé se trouve de l’autre côté d’un périphérique tel qu’un pare-feu ou un routeur qui filtre les réponses négatives. Dans ce cas, l’inspecteur port_scan peut générer des événements d’analyse de ports filtrés en fonction du niveau de sensibilité que vous sélectionnez.

Bonnes pratiques en matière de configuration de l’inspecteur d’analyse de ports

Pour optimiser la détection des analyses de ports, nous vous recommandons de paramétrer l’inspecteur port_scan en fonction de la configuration de vos réseaux.

  • Veillez à configurer correctement le paramètre watch_ip. Le paramètre watch_ip aide l’inspecteur port_scan à filtrer les hôtes légitimes qui sont très actifs sur votre réseau. Les adresses IP NAT, les serveurs de cache DNS, les serveurs syslog et les serveurs NFS en sont les exemples les plus courants.

  • La plupart des faux-positifs que l’inspecteur port_scan peut générer sont de type alert d’analyse filtrée. Le type alert peut indiquer qu’un hôte a été trop actif pendant une période donnée. Si l’hôte génère continuellement le type alert d’analyse filtrée, ajoutez-le à la liste ignore_scanners ou réduisez le niveau de sensibilité de l’analyse.

  • Utilisez le nombre de priorités, le nombre de connexions, le nombre d’adresses IP, le nombre de ports, la plage d’adresses IP et la plage de ports pour identifier les faux-positifs. Pour identifier les faux-positifs, la méthode la plus simple consiste à utiliser des estimations de rapports simples. La liste suivante présente des rapports à estimer et les valeurs qui leur sont associées pour différencier une analyse légitime d’un faux-positif.

    • Nombre de connexions/Nombre d’adresses IP : ce rapport fournit une estimation de la moyenne des connexions par adresse IP. Ce rapport doit être élevé pour les analyses de ports. Et il doit être faible pour les balayages de ports.

    • Nombre de ports/Nombre d’adresses IP : ce rapport fournit une estimation du nombre moyen de ports utilisés par adresse IP. Pour les analyses de ports, ce rapport doit être élevé, ce qui signifie que les ports de l’hôte analysé ont été utilisés par un nombre réduit d’adresses IP. Et pour les balayages de ports, il doit être faible, ce qui signifie que l’hôte analysé a utilisé peu de ports, mais sur un grand nombre d’hôtes.

    • Nombre de connexions/Nombre de ports : ce rapport fournit une estimation du nombre moyen de connexions par port. Ce rapport doit être faible pour les analyses de ports. Cela indique que chaque connexion s’est faite sur un port différent. Et il doit être élevé pour les balayages de ports. Cela indique que de nombreuses connexions ont été effectuées sur le même port.

    Plus le nombre de priorités est élevé, plus il est probable qu’il s’agisse d’une véritable analyse de ports ou d’un véritable balayage de ports (sauf si l’hôte est géré par un pare-feu).

  • Si vous ne parvenez pas à détecter les analyses de ports, vous pouvez réduire le niveau de sensibilité de l’analyse. Le niveau de sensibilité le plus élevé offre la meilleure protection. Au niveau de sensibilité le plus bas, seules les réponses d’erreur déclenchent des alertes, et les analyses filtrées ne sont pas détectées. Les réponses d’erreur du niveau de sensibilité le plus bas peuvent signaler une analyse de ports, et les alertes générées sont très précises tout en nécessitant peu de réglages. Les analyses filtrées et les analyses du niveau de sensibilité élevé peuvent générer des faux-positifs.

Paramètres de l’inspecteur d’analyse de ports

memcap

Spécifie la mémoire maximale du suivi en octets.

Type : entier

Plage valide : de 1 024 à 9 007 199 254 740 992 (maxSZ)

Valeur par défaut : 10 485 760

protos

Spécifie les protocoles à superviser. Fournissez une chaîne d’abréviations de protocoles. Pour spécifier plusieurs protocoles, utilisez un espace comme séparateur entre les différentes abréviations.

Type : chaîne

Valeurs valides : tcp, udp, icmp, ip, all

Valeur par défaut : all

scan_types

Spécifie les types d’analyse de ports à examiner. Fournissez une chaîne d’abréviations de protocoles. Pour spécifier plusieurs protocoles, utilisez un espace comme séparateur entre les différentes chaînes.

Type : chaîne

Valeurs valides : portscan, portsweep, decoy_portscan, distributed_portscan, all

Valeur par défaut : all

watch_ip

Spécifie une liste de blocs CIDR et d’adresses IP avec des ports facultatifs à superviser.

Si watch_ip n’est pas défini, l’inspecteur port_scan examine tout le trafic réseau.

Type : chaîne

Valeurs valides : CIDR ou adresse IP, liste de CIDR ou d’adresses IP

Valeur par défaut : aucune

alert_all

Indique si une alerte doit être générée pour tous les événements de dépassement du seuil dans la fenêtre établie. Si alert_all est défini sur false, l’inspecteur port_scan ne génère une alerte qu’au premier événement de dépassement du seuil dans la fenêtre.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

include_midstream

Indique si une liste des CIDR avec ports facultatifs doit être créée.

Type : booléen

Valeurs valides : true, false

Valeur par défaut : false

tcp_decoy.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

tcp_decoy.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_decoy.scan

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

tcp_decoy.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_dist.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

tcp_dist.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_dist.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

tcp_dist.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_ports.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

tcp_ports.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_ports.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

tcp_ports.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_sweep.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

tcp_sweep.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_sweep.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

tcp_sweep.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_decoy.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

udp_decoy.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_decoy.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

udp_decoy.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_dist.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

udp_dist.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_dist.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

udp_dist.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_ports.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

udp_ports.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_ports.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

udp_ports.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_sweep.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

udp_sweep.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

udp_sweep.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

udp_sweep.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_decoy.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

ip_decoy.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_decoy.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

ip_decoy.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_dist.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

ip_dist.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_dist.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

ip_dist.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_sweep.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

ip_sweep.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_sweep.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

ip_sweep.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_proto.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

ip_proto.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

ip_proto.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

ip_proto.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

icmp_sweep.rejects

Spécifie le nombre de tentatives d’analyse avec réponses négatives.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 15

icmp_sweep.ports

Spécifie le nombre de fois où le port (ou le protocole) a changé par rapport à une tentative précédente.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

icmp_sweep.scans

Spécifie le nombre de tentatives d’analyse.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 100

icmp_sweep.nets

Spécifie le nombre de fois où l’adresse a changé par rapport aux tentatives précédentes.

Type : entier

Plage valide : de 0 à 65 535

Valeur par défaut : 25

tcp_window

Spécifie l’intervalle de détection pour les analyses du protocole TCP (Transmission Control Protocol).

Type : entier

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

Valeur par défaut : 0

udp_window

Spécifie l’intervalle de détection pour les analyses du protocole UDP (User Datagram Protocol).

Type : entier

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

Valeur par défaut : 0

ip_window

Spécifie l’intervalle de détection pour les analyses du protocole IP (Internet Protocol).

Type : entier

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

Valeur par défaut : 0

icmp_window

Spécifie l’intervalle de détection pour les analyses du protocole ICMP (Internet Control Message Protocol).

Type : entier

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

Valeur par défaut : 0

Règles de l’inspecteur d’analyse de ports

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

Tableau 3. Règles de l’inspecteur d’analyse de ports

GID:SID

Message de règle

122:1

Analyse de ports TCP

122:2

Analyse de ports TCP avec leurres

122:3

Balayage de ports TCP

122:4

Analyse de ports TCP distribuée

122:5

Analyse de ports TCP filtrée

122:6

Analyse de ports TCP avec leurres filtrée

122:7

Balayage de ports TCP filtré

122:8

Analyse de ports TCP distribuée et filtrée

122:9

Analyse de protocoles IP

122:10

Analyse de protocoles IP avec leurres

122:11

Balayage de protocoles IP

122:12

Analyse de protocoles IP distribuée

122:13

Analyse de protocoles IP filtrée

122:14

Analyse de protocoles IP avec leurres filtrée

122:15

Balayage de protocoles IP filtré

122:16

Analyse de protocoles IP distribuée et filtrée

122:17

Analyse de ports UDP

122:18

Analyse de ports UDP avec leurres

122:19

Balayage de ports UDP

122:20

Analyse de ports UDP distribuée

122:21

Balayage de ports UDP filtré

122:22

Analyse de ports UDP avec leurres filtrée

122:23

Balayage de ports UDP filtré

122:24

Analyse de ports UDP distribuée et filtrée

122:25

Balayage ICMP

122:26

Balayage ICMP filtré

122:27

Port ouvert

Options des règles de prévention des intrusions de l’inspecteur d’analyse de ports

L’inspecteur port_scan ne comporte aucune option pour les règles de prévention des intrusions.