Fortinet - Analyser les problèmes de réseau avec un FortiGate
Fortinet
Les réseaux deviennent de plus en plus complexes et confus. C'est pourquoi il est nécessaire de disposer d'outils permettant d'analyser et d'identifier les problèmes.
Un pare-feu FortiGate offre ici un large éventail d'outils. Je voudrais aujourd'hui vous en présenter quelques-uns et vous expliquer comment les utiliser.
L'outil le plus simple est bien sûr le ping classique, qui est exécuté sur un FortiGate via le CLI avec la commande execute ping. Il existe toutefois des possibilités d'utiliser le ping de manière plus ciblée. Pour cela, on utilise la commande execute ping-options <'parameter'>. Les paramètres suivants peuvent être utilisés :
-
adaptive-ping
FortiGate envoie le paquet suivant dès que la dernière réponse a été reçue. - data-size <'bytes'> Indiquez la taille du datagramme en octets.
- df-bit <'yes | no'> Définissez df-bit sur yes pour empêcher la fragmentation du paquet ICMP. Définissez df-bit sur no pour autoriser la fragmentation du paquet ICMP.
- pattern <'2-byte_hex'> Utilisé pour remplir le tampon de données optionnel à la fin du paquet ICMP. La taille de la mémoire tampon est indiquée par le paramètre data_size. Cela permet d'envoyer des paquets de différentes tailles afin de tester l'effet de la taille du paquet sur la connexion.
- repeat-count <'repeats'> Indiquez le nombre de fois que le ping doit être répété.
- Source {auto | <'source-intf_ip'> } Indiquez l'interface FortiGate à partir de laquelle le ping doit être envoyé. Si vous indiquez auto, l'unité FortiGate choisit l'adresse et l'interface source en fonction de la route vers <'host-name_str'> ou <'host_ip'>. L'indication de l'adresse IP d'une interface FortiGate est utilisée pour tester les connexions à différents segments du réseau à partir de l'interface indiquée.
- timeout <'seconds'> Indiquez en secondes le délai d'attente avant l'expiration du ping.
- tos <'service_type'> Définissez le champ ToS (Type of Service) dans l'en-tête du paquet pour donner une indication sur la qualité de service souhaitée.
- minimiser le délailowdelay
- throughput maximiser le débit
- reliability maximiser la fiabilité
- minimiser les coûtslowcost
-
ttl
Indiquez le time to live. Time to live est le nombre de sauts que le paquet ping peut faire avant d'être rejeté ou renvoyé. - validate-reply {yes | no} Sélectionnez oui pour valider les données de réponse.
- view-settings Affiche les paramètres actuels des options ping.
- reset Réinitialise les paramètres.
Vous pouvez bien sûr combiner les options pour obtenir le résultat souhaité. Voici un exemple :
Execute ping-options source 192.168.10.254 repeat-count 50
execute ping 10.10.10.234
Avec cette combinaison, un ping serait exécuté avec l'adresse source 192.168.10.254 et l'adresse de destination 10.10.10.234. 50 paquets PING seraient envoyés.
Si l'on veut savoir quelle règle de pare-feu s'applique dans un cas particulier, on peut également le faire via l'interface de ligne de commande. Pour cela, il faut utiliser la commande suivante :
diag firewall iprope lookup <'src_ip'> <'src_port'> <'dst_ip'> <'dst_port'> <'protocol'> <'Source interface'>
- <'src_ip'> Adresse source
- <'src_port'> Port source
- <'dst_ip'> Adresse de destination
- <'dst_port'> Port de destination
- <'protocol'> Quel est le protocole à simuler, par exemple TCP ou UDP ?
- <'source interface'> Interface source à partir de laquelle la demande doit être simulée
Si les requêtes sont correctement exécutées, on obtient des résultats tels que ceux-ci :
FortiGate # diag firewall iprope lookup 10.187.1.100 12345 8.8.8.8 53 udp port2
FortiGate # diag firewall iprope lookup 10.187.1.100 12345 8.8.8.8 53 tcp port2
Lors de la première requête, le résultat est la politique de pare-feu avec l'ID 0. Il s'agirait de la règle Implicit-Deny qui se trouve toujours tout en bas et qui bloque tout le trafic réseau qui ne correspond pas à l'une des règles précédentes.
Lors de la deuxième interrogation, nous obtenons le résultat que la règle de pare-feu avec l'ID 2 est compétente. On peut ainsi s'assurer que la règle de pare-feu correcte est appliquée.
Mais que faire si tout semble correct, mais que cela ne fonctionne pas correctement ?
Il faut alors regarder directement le trafic réseau. Pour cela, FortiGate offre plusieurs possibilités. Via l'interface utilisateur Web (WebGUI) ou via l'interface de ligne de commande (CLI).
Capture de paquets via WebGUI
Via Network --> Packet Capture dans le FortiGate WebGUI, vous pouvez rapidement générer des données pour une analyse à l'aide de quelques options.
- Sélectionnez l'interface sur laquelle le FortiGate doit collecter les données.
- Le nombre de paquets à collecter, le maximum étant de 10 000.
Si vous activez les filtres, vous disposez encore des options utiles suivantes :
- Hôte(s) Indiquez les adresses dont les données doivent être collectées. Vous pouvez saisir plusieurs adresses avec un ,. Exemple : 192.168.10.254, 10.10.10.234
- Port(s) Ici, vous pouvez à nouveau définir plusieurs ports séparés par un ,. Exemple : 443, 80
- VLAN(s) Si vous utilisez plusieurs VLAN sur une interface dans votre réseau, vous pouvez indiquer les VLAN de manière ciblée. Exemple : 1, 4096
- Protocol(s) Vous indiquez ici les numéros des protocoles que vous souhaitez analyser. Vous trouverez ces numéros dans la documentation officielle de l'IANA : IANA Protocol numbers
- Include IPv6 Packets Cela vous permet d'enregistrer non seulement les paquets IPv4, mais aussi les paquets IPv6 s'ils sont utilisés dans votre réseau.
- Include Non-IP Packets Si vous souhaitez enregistrer ARP, DHCP ou d'autres protocoles qui n'utilisent pas toujours des IP, vous pouvez les enregistrer via cette option.
Enregistrez la sélection. Elle est alors sélectionnable sous Network -> Packet Capture. Vous pouvez démarrer l'enregistrement par le menu du clic droit.
Si vous téléchargez l'enregistrement, ce qui est également possible lorsque l'enregistrement est encore en cours, vous obtenez un fichier PCAP que vous pouvez ouvrir et visualiser dans un outil d'analyse comme Wireshark.
Sniffing de paquets via CLI
La ligne de commande vous permet également d'observer rapidement et confortablement le trafic réseau ciblé.
La commande est structurée comme suit :
diag sniffer packet <'interface'> <'filter'> <'verbose'> <'count'> a
- <'interface'> L'interface sur laquelle l'écoute doit être effectuée. Le nom est requis ici. Exemple : wan1 ou WLAN-Gaeste. Veuillez noter que l'indication est sensible à la casse. Si vous avez une interface de tunnel appelée WLAN-Gaeste, wlan-gaeste ne fonctionnera pas.
- <'filter'> Probablement le paramètre le plus complexe et le plus puissant. Vous avez ici plusieurs possibilités qui peuvent être combinées :
-
src|dst host
Indication de l'adresse source ou de l'adresse cible. - arp|ip|gre|esp|udp|tcp Quels protocoles doivent être surveillés.
-
port
Quel port doit être surveillé. - <'verbose'> Le niveau de détail de l'enregistrement des paquets :
- 1 : Éditer les en-têtes des paquets.
- 2 : Éditer les en-têtes et les données des paquets IP.
- 3 : Émettre des en-têtes et des données Ethernet à partir de paquets.
- 4 : Éditer les en-têtes des paquets avec les noms d'interface.
- 5 : Imprimer les en-têtes et les données IP des paquets avec noms d'interface.
- 6 : En-tête et données Ethernet des paquets avec nom d'interface.
-
Combien de paquets doivent être enregistrés. Si un 0 est saisi ici, l'enregistrement est permanent. L'enregistrement peut être arrêté en appuyant sur Ctrl+C. - a Les horodatages absolus sont alors utilisés ici. Normalement, le temps est affiché en secondes par ordre croissant à partir du début de l'enregistrement. Avec ce paramètre, l'heure et la date actuelles sont alors affichées.
Exemple : diag sniffer packet internal 'host 192.168.0.130 and 192.168.0.1 and tcp port 80' 1
Ici, seul le trafic réseau qui a eu lieu entre les deux hôtes sur le port 80 avec le protocole TCP est enregistré.
J'espère vous avoir donné une bonne première impression des méthodes d'analyse du FortiGate.