Pour ce premier article, j’ai décidé de passer en revue les options à configurer ou à désactiver pour sécuriser des commutateurs (désolé je n’y arrive pas à le dire) switchs CISCO.
N’hésitez pas à laisser des commentaires pour me faire par de vos remarques, tips ou correction.
Pour rentrer dans le vif du sujet, je vous conseille pour l’installation et le configuration d’un switch, de le réinitialiser en configuration usine pour éviter tout reliquat d’une conf précédente:
cisco# write erase
Erasing the nvram filesystem will remove all files! Continue? [confirm]y[OK]
Erase of nvram: complete
cisco# reload
Pensez aussi à effacer les VLANs:
cisco# delete flash:/vlan.dat
Delete flash:vlan.dat? [confirm]y
cisco# reload
Proceed with reload? [confirm]y
4w5d: %SYS-5-RELOAD: Reload requested
Au redémarrage, l’assistant d’installation propose de configurer certains paramètres. Perso, je préfère m’en passer pour maîtriser chaque ligne de configuration mais à vous de voir.
Would you like to terminate autoinstall? [yes]: N
Paramètres de base
Changer le nom et le domaine de l’équipement
En prévision de l’activation de SSH, certaines options comme le hostname ou le domain name doivent être définis. Elles sont notamment utilisées lors génération de la paire de clé RSA.
cisco(config)# hostname
cisco(config)# ip domain name
Ajout d’une bannière
Une bannière, ou Message Of The Day (MOTD), est un message d’avertissement affiché lors d’une connexion à un équipement. Il avertit l’utilisateur se connectant des risques encourus en cas de tentative de connexion illégitime.
La commande ci-dessous permet l’ajout d’une bannière. Le ‘^C’ représente ici la combinaison de touche CTRL + C. Il détermine le caractère de fin du message. :
cisco(config)# banner motd ^C
____________________________________________________________________________________
L'acces est limite aux personnes autorisees
Article 323-1 du code penal :
Le fait d'acceder ou de se maintenir, frauduleusement, dans tout ou partie d'un
systeme de traitement automatise de donnees est puni de deux ans d'emprisonnement
et de 30000 Euro d'amende (150 000 Euro pour les personnes morales)
___________________________________________________________________________________^C
Gestion des comptes
Je vous recommande plus que vivement d’utiliser des mots de passe complexes, c’est-à-dire qui doivent contenir au minimum 3 des conditions suivantes :
- Une longueur minimum de 8 caractères
- Contenir des caractères alphabétiques minuscules
- Contenir des caractères alphabétiques majuscules
- Contenir des caractères numériques
- Contenir des caractères spéciaux
Activer un enable secret
Un enable secret de type 5 utilise l’algorithme MD5 (salted) avec du sel. Seules les rainbows tables peuvent théoriquement casser ajourd’hui ce type de protection bien que le sel augmente considérablement la sécurité du chiffrement MD5.
cisco(config)# no enable password
cisco(config)# enable secret MOT_DE_PASSE_COMPLEXE
Aucun enable password ne doit être paramétré sur un équipement du fait que le mot de passe apparaitra en clair dans le fichier de conf. Cette commande est dépréciée par CISCO. C’est pour cette raison qu’un enable secret est plus que conseillé.
Ajout d’un compte local
En cas d’authentification centralisée, il est toujours bon d’avoir un compte de backup pour pouvoir s’authentifier:
cisco(config)# username secret 5 MOT_DE_PASSE_COMPLEXE
Gérer l’authentification RADIUS
Les switchs CISCO supportent l’authentification avec le protocole RADIUS. L’utilisateur peut être ainsi authentifié grâce des systèmes de gestion centralisée de mots de passe supportant ce protocole.
- Pour commencer, il est nécessaire de créer un model AAA (Authentication, Authorization and Accounting).
cisco(config)# aaa new-model
- Ensuite, un groupe de serveurs RADIUS doit être défini
cisco(config)# radius-server host IP_SERVER1 auth-port 1645 acct-port 1646 key 7 PRE_SHARED_KEY
cisco(config)# radius-server host IP_SERVER2 auth-port 1645 acct-port 1646 key 7 PRE-SHARED_KEY
cisco(config)# radius-server directed-request
On Définit un groupe de serveurs RADIUS
cisco(config)# aaa group server radius RadiusGroup
cisco(config)# server IP_SERVER1 auth-port 1645 acct-port 1646
cisco(config)# server IP_SERVER2 auth-port 1645 acct-port 1646
- Viennent ensuite les parties authentication et authorization. Authentication vérifie que les utilisateurs se connectant sont bien autorisés à se logger sur les switchs tandis que authorization contrôle les actions que les utilisateurs peuvent ou ne peuvent pas faire.
Pour cet exemple, les switchs sont configurés pour authentifier les utilisateurs à partir des serveurs RADIUS. S’il ne sont pas joignables, la base de données locale d’authentification sera utilisée.
Le mode User Exec n’est pas autorisé pour les utilisateurs RADIUS. Ils seront directement connectés avec les privilèges enable.
cisco(config)# aaa authentication login LOGIN group RadiusGroup local
cisco(config)# aaa authorization exec default group RadiusGroup none
cisco(config)# aaa authorization network default group RadiusGroup
- L’ID de session utilisé pour l’authentication, l’authorization et l’accounting doit être le même au sein d’une même tentative de connexion.
cisco(config)# aaa session-id common
Pour terminer le paramétrage de l’authentification forte, les line vty doivent être configurés pour utiliser le nouveau mode d’authentification définit aux étapes précédentes. Sans cette étape, seule l’authentification locale sera prise en compte.
cisco(config)# line vty 0 4
cisco(config)# login authentication LOGIN
Sécurisation des accès CLI
Générer des clés RSA
Une paire de clés RSA est utilisée pour les connexions SSH.
Pour plus de sécurité, une clé de 2048 bits semble suffisante pour le moment.
cisco(config)# crypto key generate rsa
The name for the keys will be:
Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 2048 may take
a few minutes.
How many bits in the modulus [2048]:
% Generating 2048 bit RSA keys ....[OK]
Activer SSH
Seul SSH v2 doit être activé pour l’administration à distance.
cisco(config)# ip ssh version 2
Limiter le nombre de sessions et le temps de connexion
Le protocole Telnet, protocole non chiffré, ne doit pas être utilisé. Seules les sessions SSH doivent être autorisées pour l’administration des switchs.
Nous autorisons ici 5 sessions line vty simultanées. Un auto-logout de session est paramétré à 10 minutes.
cisco(config)#line vty 0 4
cisco(config)# transport input ssh
cisco(config)# exec-timeout 10 0
L’accès via le port console doit également avoir une déconnexion automatique en cas d’inactivité, ici paramétrée à 5 minutes.
cisco(config)# line con 0
cisco(config)# exec-timeout 5 0
Renforcement de la sécurité
Désactiver les services inutiles
VTP permet de gérer de manière centralisée les VLANS d’un réseau. Cette option doit être paramétrée en mode transparent si le VTP n’est pas utilisé dans votre LAN. En mode transparent, un switch reçoit les mises à jour de VLANS et les transmet à ses voisins sans les prendre en compte.
cisco(config)# vtp mode transparent
- Service de source-routing
Le service de source-routing permet à l’émetteur d’un paquet IP de spécifier le chemin que doit prendre le paquet pour accéder à sa destination, indépendamment des tables de routage des routeurs traversés. Le destinataire devra utiliser le chemin inverse pour le retour. Son utilisation pourrait donc altérer la politique de routage définie par l’administrateur du réseau. Il est donc prudent de rejeter les paquets qui comportent cette option.
cisco(config)# no ip source-route
Si la résolution DNS n’est pas configurée sur le switch, il est recommandé de désactiver les requêtes DNS pour éviter tout « broadcasting » sur les interfaces du switch, ainsi qu’une mauvaise utilisation du service .
cisco(config)# no ip domain-lookup
Il est recommandé de désactiver les réponses ICMP unreachable émises par le switch, provoquant un trafic non négligeable et permettant l’identification de l’équipement.
cisco(config)# no ip unreachable
- Service Cisco Discovery Protocol (CDP)
Le service CDP (Cisco Discovery Protocol) est utilisé pour certaines fonctionnalités d’administration réseau. Il permet, entre autre, de déterminer la topologie d’un réseau. Mais il est dangereux de l’utiliser dans la mesure où il permet à tout système d’un segment directement joint d’apprendre qu’il s’agit d’un matériel Cisco, de déterminer le numéro du modèle et la version de l’OS utilisé. Ces informations peuvent être utiliser pour trouver les vulnérabilités du switch, et pour préparer une attaque contre le switch.
cisco(config># no cdp run
Le service http est utilisé pour administrer le routeur en http. Ce protocole est non sécurisé notamment pour la transmission des mots de passe en clair sur le réseau, il est donc recommandé de le désactiver.
cisco (config)# no ip http server
Le protocole BootP (Bootstrap Protocol) permet aux administrateurs réseaux de gérer la configuration d’hôtes distants depuis un serveur central de configuration. En général, BootP est utilisé par les administrateurs pour assigner des adresses IP aux stations de travail. Ce protocole fonctionnant en mode non connecté présente de nombreuses failles de sécurité.
cisco(config)# no ip bootp server
Le service finger est utilisé pour découvrir quels utilisateurs sont enregistrés dans un dispositif du réseau. Il est donc recommandé de le désactiver.
cisco(config)# no service finger
Les services « small-server » (echo, daytime…) doivent être désactivés s’ils ne sont pas utilisés.
cisco(config)# no service tcp-small-servers
cisco(config)# no service udp-small-servers
Remarque :
Les service small-servers tcp et udp sont désactivés à partir des versions d’IOS 12.1.
- Service Packet Assembler/Dissassembler (PAD)
Ce service est utilisé dans des réseaux X.25. Il n’est pas utile de garder un tel service activé.
cisco(config)# no service pad
- Service de log en console
Ce service activé par défaut affichera les logs sur la console. Il peut devenir gênant pendant la phase de configuration.
cisco(config)# no logging console
Activer les services de sécurité
- Service password encryption
Le service password-encryption devra être activé. Il chiffre certains mots de passe avec un algorithme dit de type 7 à savoir l’algorithme de Vigenère, considéré comme (très) faible. Il n’a d’utilité que pour protéger visuellement certaines informations de la configuration des regards indiscrets. Il n’est pas possible de changer d’algorithme à l’heure actuelle, il s’agit d’une limitation de CISCO.
cisco(config)# service password-encryption
- Service tcp-keepalives-in
L’activation de ce service peut réduire les effets d’une attaque DoS. Les sessions orphelines seront terminées pour ne pas consommer de ressources système.
cisco(config)# service tcp-keepalive-in
Une fois ce service activé, les processus plantés ou bloqués seront tués.
cisco(config)# scheduler max-task-time 5000
TODO
- Désactivation des interfaces non utilisées
Les interfaces qui ne sont pas utilisées doivent être configurées en shutdown.
cisco(config)# interface FastEthernet0/X
cisco(config-if)# shutdown
cisco(config)# interface range FastEthernet0/X-XX
cisco(config-if)# shutdown