Filtrer les paquets avec la syntaxe du filtre de paquets de Berkeley
Recherchez des paquets avec la syntaxe du filtre de paquets Berkeley (BPF), seule ou en combinaison avec les filtres intégrés.
Les filtres de paquets Berkeley sont une interface brute avec les couches de liaison de données et constituent un outil puissant pour l'analyse de la détection des intrusions. La syntaxe BPF permet aux utilisateurs d'écrire des filtres qui explorent rapidement des paquets spécifiques pour en extraire les informations essentielles.
Le système ExtraHop construit un en-tête de paquet synthétique à partir des données d'index des paquets, puis exécute les requêtes de la syntaxe BPF par rapport à l'en-tête du paquet afin de s'assurer que les requêtes sont beaucoup plus rapides que l'analyse de la charge utile complète du paquet. Notez qu'ExtraHop ne prend en charge qu'un sous-ensemble de la syntaxe BPF (voir Syntaxe BPF prise en charge).
La syntaxe BPF consiste en une ou plusieurs primitives précédées d'un ou plusieurs qualificatifs. Les primitives consistent généralement en un ID (nom ou numéro) précédé d'un ou plusieurs qualificatifs. Il existe trois types de qualificateurs :
- le type
- Qualificatifs indiquant à quel type le nom ou le numéro de l'identifiant se réfère. Par exemple, host, net, port, et portrange. En l'absence de qualificatif, host est considéré comme tel.
- dir
- Qualificatifs indiquant une direction de transfert particulière vers ou à partir d'un ID. Les directions possibles sont src, dst, src and dst, et src or dst. Par exemple, dst net 128.3.
- proto
- Qualificatifs qui limitent la correspondance à un protocole particulier. Les protocoles possibles sont ether, ip, ip6, tcp et udp.
Syntaxe BPF prise en charge
Le système ExtraHop prend en charge le sous-ensemble suivant de la syntaxe BPF pour le filtrage des paquets.
Remarque : |
|
Primitive | Exemples de primitives | Description |
---|---|---|
[src|dst] host <host ip> |
host 203.0.113.50
dst host 198.51.100.200 |
Correspond à un hôte en tant que source IP, destination ou l'un ou l'autre. Ces expressions d'hôte peuvent être spécifiées en conjonction avec d'autres protocoles tels que ip, arp, rarp ou ip6. |
ether [src|dst] host <MAC> |
ether host 00:00:5E:00:53:00
ether dst host 00:00:5E:00:53:00 |
Correspond à un hôte en tant que source Ethernet, destination ou l'un ou l'autre. |
vlan <ID> | vlan 100 | Correspond à un VLAN. Les numéros d'identification valides sont 0-4095. Si le paquet d'origine avait plus d'une balise VLAN, le paquet synthétique auquel le BPF se réfère n'aura que la balise VLAN la plus interne . |
[src|dst] portrange <p1>-<p2>
ou [tcp|udp] [src|dst] portrange <p1>-<p2> |
src portrange 80-88
tcp dst portrange 1501-1549 |
Correspond aux paquets en provenance ou à destination d'un port dans la plage donnée. Les protocoles peuvent être appliqués à une plage de ports pour filtrer des paquets spécifiques dans cette plage. |
[ip|ip6][src|dst] proto <protocol> |
proto 1
src 10.4.9.40 and proto ICMP ip6 and src fe80::aebc:32ff:fe84:70b7 and proto 47 ip and src 10.4.9.40 and proto 0x0006 |
Correspond aux protocoles IPv4 ou IPv6 autres que TCP et UDP. Le protocole peut être un numéro ou un nom. |
[ip|ip6][tcp|udp] [src|dst] port <port> |
udp and src port 2005
ip6 and tcp and src port 80 |
Correspond aux paquets IPv4 ou IPv6 sur un port spécifique. |
[src|dst] net <network> |
dst net 192.168.1.0
src net 10 net 192.168.1.0/24 |
Correspond aux paquets en provenance ou à destination d'une source ou d'une destination, ou de l'une ou l'autre, qui résident dans un réseau. Un numéro de réseau IPv4 peut être spécifié comme l'une des valeurs suivantes :
|
[ip|ip6] tcp tcpflags & (tcp-[ack|fin|syn|rst|push|urg|) |
tcp[tcpflags] & (tcp-ack) !=0
tcp[13] & 16 !=0 ip6 and (ip6[40+13] & (tcp-syn) != 0) |
Correspond à tous les paquets avec l'indicateur TCP spécifié |
Paquets IPv4 fragmentés (ip_offset != 0) | ip[6:2] & 0x3fff != 0x0000 | Correspond à tous les paquets contenant des fragments. |
Nous vous remercions pour vos commentaires. Pouvons-nous vous contacter pour vous poser des questions complémentaires ?