Un peu de sécurité pour nos routeurs…

c2811Ce n’est pas toujours clair, ni même évident à détecter, mais nos routeurs préférés ont parfois une multitude de services actifs qui peuvent potentiellement devenir des failles de sécurités. Voici donc quelques explications concernant certains services, et aussi comment les activer/désactiver le cas échéant…

TCP-SMALL-SERVERS / UDP-SMALL-SERVERS

Ces deux services activent des process en attente de connexions ou données. Par exemple:
Note: Pour la démonstration, le role du PC est assuré par un routeur pour des raison de facilités d’émulation dans GNS3.

  • Protocole Echo (port n°7): renvoi une copie de toute donnée qui lui est passé
    PC1#telnet 192.168.0.1 echo
    Trying 192.168.0.1, 7 ... Open
    hheelloo

    Ce ci est le résultat d’une connexion au service ECHO en lui envoyant le mot « hello »

  • Protocole Finger (port n°79): Ouvre une connexion TCP vers le port 79, le service répond par la liste des lignes actives.
    PC1#telnet 192.168.0.1 finger
    Trying 192.168.0.1, 79 ... Open
    
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:00:01
    * 66 vty 0                idle                 00:00:00 192.168.0.10
    
      Interface    User               Mode         Idle     Peer Address
    
    [Connection to 192.168.0.1 closed by foreign host]
    PC1#
  • Protocole Chargen (port n°19): Envoi des séries de caractères sur la connexion établie par le client
    PC1#telnet 192.168.0.1 chargen
    Trying 192.168.0.1, 19 ... Open
     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
    "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
    #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
    $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
    %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl
  • Protocole Discard (port n°9): Rejette toute donnée envoyée … donc ne fait rien! Difficile à présenter du coup 😉
  • Protocole DayTime (port n°13): Renvoi les dates et heures courantes
    PC1#telnet 192.168.0.1 daytime
    Trying 192.168.0.1, 13 ... Open
    Friday, March 1, 2002 00:23:30-UTC
    
    [Connection to 192.168.0.1 closed by foreign host]
    PC1#

Notez que la version UDP de ces services a exactement le même effet, si ce n’est qu’elle utilise UDP comme protocole de transport. Donc sans connexion au préalable. Envoyer un message UDP à destination du port n°13 du routeur, et il vous renverra l’heure 😉

Bien que ces services ne semblent pas être bien dangereux, il vaut mieux les désactiver, ce qui au minimum économisera les ressources nécessaires pour les faire tourner.

  • Activer les services tcp-small-servers et udp-small-servers
    router(config)# service tcp-small-servers
    router(config)# service udp-small-servers
    ! Selon les versions d'IOS le service finger doit être activé séparément ou pas ... au besoin:
    router(config)# ip finger
  • Désactiver les services tcp-small-servers et udp-small-servers
    router(config)# no service tcp-small-servers
    router(config)# no service udp-small-servers
    ! Selon les versions d'IOS le service finger doit être activé séparément ou pas ... au besoin:
    router(config)# no ip finger

Proxy-Arp

De nouveau selon les versions d’IOS et la plateforme utilisée, il se peut que votre routeur fasse automatiquement office de proxy ARP … Il s’agit simplement de propager les requêtes ARP provenant d’un réseau et les renvoyer dans un autre réseau. Chose qui normalement ne devrait pas se produire … après tout un routeur a pour vocation de limiter la propagation des broadcasts!

La commande « show ip interface … » vous permet de voir si cette fonctionnalité est active ou non.

R1#show ip interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
  Internet address is 192.168.0.1/24
  Broadcast address is 255.255.255.255
  Address determined by setup command
  MTU is 1500 bytes
  Helper address is not set
  Directed broadcast forwarding is disabled
  Outgoing access list is not set
  Inbound  access list is not set
  Proxy ARP is enabled
  Local Proxy ARP is disabled
  Security level is default
  Split horizon is enabled
  ...
  • Activer Proxy-Arp
    router(config)#interface fastEthernet 0/0
    router(config-if)#ip proxy-arp
  • Désactiver Proxy-Arp
    router(config)#interface fastEthernet 0/0
    router(config-if)#no ip proxy-arp

Directed Broadcasts

Si j’envois un des données à destination de l’adresse broadcast d’un réseau distant, ces données devraient être routées comme tout paquet unicast, arriver au routeur connecté dans ce réseau, et celui-ci devrait émettre le broadcast dans le réseau. On comprend vite que ce genre de pratique ouvre d’énormes possibilités en matière de perturbation de réseau, il serait possible d’envoyer des données à tout un réseau, sans même être dedans… Du coup… il est vivement conseillé de désactiver cette fonctionnalité.

C’est de nouveau la commande « show ip interface… » qui permet de voir si cette fonctionnalité est active ou non …

R1#show ip interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
  Internet address is 192.168.0.1/24
  Broadcast address is 255.255.255.255
  Address determined by setup command
  MTU is 1500 bytes
  Helper address is not set
  Directed broadcast forwarding is disabled
  Outgoing access list is not set
  Inbound  access list is not set
  ...
  • Activer les « Directed Broadcasts »
    router(config)#interface fastEthernet 0/0
    router(config-if)#ip directed-broadcast
  • Désactiver les « Directed Broadcasts »
    router(config)#interface fastEthernet 0/0
    router(config-if)#no ip directed-broadcast

Source Routing

Le protocole IPv4 dispose d’une multitude d’options généralement méconnues et très souvent peu utilisées. L’une d’entre elles est le « source routing » qui permet à l’émetteur d’un paquet de lister dans les options du paquet une série de routeurs par lesquels les données devraient transiter. Bien entendu, utilisé à mauvais escient cela peu devenir une faille de sécurité, il est donc généralement de bon ton de désactiver cette option. (Option active par défaut)

  • Activer le « Source routing »
    router(config)#ip source-route
  • Désactiver le « Source routing »
    router(config)#no ip source-route

Conclusion

Voilà donc quelques exemples de services, certes parfois nécessaires, mais le plus souvent il convient de les désactiver, ou du moins de s’assurer qu’ils le soient. La liste n’est bien entendu pas exhaustive, suite au prochain épisode 😉

3 Comments on “Un peu de sécurité pour nos routeurs…

  1. Bonjour Steve, je suis très absent ces temps ci du au fait que j’ai débuté mon module de Sécurité CCIE, mais je veux pouvoir apporter ma contribution relatif a cet article très instructif.

    En effet au programme cette semaine, nous avons passer en revue services actifs sur les routeurs Cisco qui peuvent potentiellement devenir des failles de sécurités.
    Et l’une des méthodes principales etaient soient de les désactiver, ou de les limiter et ou les controler via des Access Control list (ACL).

    Une Astuce pour voir tout les services activer sur votre Routeur :

    R1 #show running-config all

    Une astuce pour configurer les parametres de securite de base :

    R1 #auto secure

    Thanks !!!

  2. Bonjour,
    Merci pour tout, vos articles sont toujours accessibles et utiles.
    Encore merci de mettre a disposition du public toutes ces connaissances
    Continuez svp pour notre plus grand plaisir

    serge

  3. Merci encore Steve pour tes articles qui sont toujours aussi enrichissants.