Je suis récemment tombé sur un site comportant plusieurs modules, chacun d'entre eux faisant suivre des paquets. Dans le pire des cas, le rythme était d'un toutes les deux secondes environ. Pas très rapide, vous dites, mais il y a 86 400 secondes dans une journée, donc en une journée, ce module pourrait transférer 63 mégaoctets (86 400 / 2 * 1472)1 de données hors de votre réseau à partir d'un serveur "sécurisé" ou transférer 63 mégaoctets d'outils de piratage dans votre réseau sécurisé.
Cependant, dans la plupart des cas, la transmission de paquets est le signe d'un problème de configuration et non d'une faille de sécurité. Par exemple, supposons qu'un module possède 2 interfaces IP
enet1 10.1.1.1 255.255.0.0
enet2 192.168.1.1 255.255.255.0
supposons également que le routeur par défaut soit 192.168.1.254
Tous les hôtes du premier réseau devraient avoir une adresse IP de la forme 10.1.X.Y avec un masque de sous-réseau de 255.255.0.0 mais que se passe-t-il si le serveur_17 avec l'adresse IP 10.1.1.17 est configuré pour utiliser un masque de sous-réseau avec plus de bits, disons 255.255.255.0 ? Il peut toujours communiquer avec n'importe quel hôte ayant une adresse IP de la forme 10.1.1.X, donc il peut ne pas remarquer de problème. MAIS lorsqu'il envoie un paquet de diffusion IP, il adresse ce paquet IP à 10.1.1.255 au lieu de 10.1.255.255. La trame Ethernet qui encapsule ce paquet a pour destination l'adresse de diffusion Ethernet, de sorte que le pilote Ethernet du module lit la trame et transmet le paquet au pilote IP. Le pilote IP examine l'adresse IP et détermine qu'elle n'est pas adressée à enet1 ou enet2 et n'est pas 10.1.255.255, l'adresse de diffusion. Si la redirection est activée, le pilote IP essaiera de transmettre le paquet à l'hôte avec l'adresse IP 10.1.1.255. Si le module n'a pas d'entrée pour 10.1.1.255 dans son cache ARP, il transmettra une requête ARP. S'il reçoit une réponse (ou s'il a déjà une entrée), il transmettra le paquet à 10.1.1.255. S'il ne reçoit pas de réponse, il supprime la trame. Le module peut également envoyer un message de redirection de routage ICMP indiquant que le "routeur" est l'adresse IP de l'hôte.
Que se passe-t-il si server_17 utilise un masque de sous-réseau avec moins de bits, disons 255.0.0.0 ? Dans ce cas, l'adresse de diffusion IP qu'il utilise est 10.255.255.255. Le pilote IP décide que ce n'est pas une adresse sur un réseau auquel il est connecté et transmet le paquet au routeur par défaut 192.168.1.254. Non seulement les ressources du module sont gaspillées, mais celles du routeur le sont également. Le même scénario se produit si vous avez deux sous-réseaux dans le même domaine de diffusion.
Enfin, revenons sur la question de la sécurité. Supposons que le serveur sécurisé_S, ait une adresse IP de 10.1.1.100 et le masque de sous-réseau correct de 255.255.0.0. Il n'y a pas de routeurs sur le réseau 10.1.0.0, alors comment l'espionne industrielle Eve peut-elle envoyer des données du serveur_S à son employeur sur Internet au 5.6.7.8 ? C'est simple, elle configure simplement une route hôte sur le server_S pour que tous les paquets adressés à 5.6.7.8 soient envoyés à 10.1.1.1. C'est tout ce qu'il faut. Le module transmet les paquets au routeur par défaut et, à supposer que le filtrage des adresses IP ne soit pas effectué par le routeur par défaut, il transmet les paquets au routeur suivant, etc. jusqu'à ce qu'ils atteignent 5.6.7.8. Il n'y a aucun moyen pour le 5.6.7.8 de répondre au 10.1.1.100 mais cela ne pose pas de problème à Eve, elle a d'autres moyens de confirmer que les données parviennent à son employeur.
Comment pouvez-vous savoir si votre module transmet des paquets, ou du moins s'il est configuré pour transmettre des paquets ? La sortie de "
netstat -statistics
" vous montrera tout ce dont vous avez besoin.
n etstat -statistics . . . ip: . . . 1 ipforwarding (ON) . . . 3117 ipForwDatagrams . . . |
Si le module est configuré pour transmettre des paquets, le
ipforwarding
sera 1 et l'étiquette portera le suffixe (ON). Si le module transmet effectivement des paquets, la variable ipForwDatagrams
Le compteur s'incrémentera. Notez que le compteur est incrémenté même si le paquet n'est pas réellement transmis car il n'y a pas d'entrée de cache ARP.
Pour désactiver la transmission IP, exécutez la commande "
>system>stcp>command_library>IP_forwarding off
", oui la PI est en majuscule.À ce stade, les statistiques de netstat -statistics montreront que le
ipforwarding
pour avoir une valeur de 2 et l'étiquette sera suffixée par (OFF). Notez que la variable ipForwDatagrams
n'est pas réinitialisée ; elle affichera toujours une valeur positive. Malheureusement, il n'y a pas moyen d'effacer la valeur.
n etstat -statistics . . . ip: . . . 2 ipforwarding (OFF) . . . 3117 ipForwDatagrams . . . |
Un dernier avertissement : si le transfert est activé et que vous l'éteignez et que quelqu'un (autre qu'Eve) utilise effectivement le module comme routeur, vous allez casser ce qu'il fait. À mon avis, ce n'est pas une mauvaise chose, le STCP n'a pas été conçu pour être un routeur, mais soyez prêt à faire face à certaines plaintes.
————-
Notes
1 1472 est le nombre maximum d'octets que vous pouvez mettre dans un paquet d'écho ICMP transmis sur Ethernet