User Tools

Site Tools


informatique:cisco:securiser_un_routeur

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:cisco:securiser_un_routeur [2009/07/17 18:07] – aaa authentication pteuinformatique:cisco:securiser_un_routeur [2014/02/07 14:29] (current) – [SNMP] pteu
Line 4: Line 4:
  
  
-Par sécurité, comme sur tout système informatique, la sécurité dicte de désactiver tout ce qui ne sert pas afin d'éviter que cela ne serve à une personne malintentionnée. Il s'agit donc, sur un routeur, de désactiver les services inutiles (beaucoup sont activés par défaut) et les interfaces inutilisées.+Par sécurité, comme sur tout système informatique, la sécurité dicte de désactiver tout ce qui ne sert pas afin d'éviter que cela soit utilisé par une personne malintentionnée. Il s'agit donc, sur un routeur, de désactiver les services inutiles (beaucoup sont activés par défaut) et les interfaces inutilisées.
  
  
 =====Cisco AutoSecure (CLI)===== =====Cisco AutoSecure (CLI)=====
  
-La fonctionnalité **Cisco AutoSecure** permet d'"auditerla configuration d'un routeur afin de détecter les éventuelle failles de sécurité ; il existe 2 modes : +La fonctionnalité **Cisco AutoSecure** permet d'auditer la configuration d'un routeur afin de détecter les éventuelles failles de sécurité ; il existe 2 modes : 
-  * le mode interacif qui fait des propositions que l'administrateur valide ou non +  * le mode interactif qui demande des informations et fait des propositions que l'administrateur valide ou non 
-  * le mode non-interactif qui applique automatiquement les bonnes pratiques (pas très conseillé)+  * le mode non-interactif qui applique automatiquement les bonnes pratiques (pas conseillé)
  
-Sur les versions pas trop vieille d'IOS (à partir de la 12.3(8)T), il existe une fonctionnalité de rollback qui permet de revenir à la configuration du routeur AVANT le lancement de l'AutoSecure : une version de sauvegarde de la configuration est enregistrée dans la flash, pour la restaurer il faut saisir :+Sur les versions récentes d'IOS (à partir de la 12.3(8)T), il existe une fonctionnalité de rollback qui permet de revenir à la configuration du routeur AVANT le lancement de l'AutoSecure : une version de sauvegarde de la configuration est enregistrée dans la flash, pour la restaurer il faut saisir (NB : ce n'est pas une fonctionnalité liée à l'AutoSecure) :
   configure replace flash:pre_autosec.cfg   configure replace flash:pre_autosec.cfg
  
Line 26: Line 26:
  
 C'est un fonction accessible via la SDM qui compare la configuration courante du routeur à une base de bonnes bonnes pratiques. Il existe 2 possibilités : C'est un fonction accessible via la SDM qui compare la configuration courante du routeur à une base de bonnes bonnes pratiques. Il existe 2 possibilités :
-  * **security audit** : la configuration est passée en revue et chaque point négatif est afficher ; on peut alors "corriger" le point négatif ("fix it !") ou ne rien faire.+  * **security audit** : la configuration est passée en revue et chaque point négatif est affiché ; on peut alors "corriger" le point négatif ("fix it !") ou ne rien faire.
   * **one-step lockdown** : analyser et appliquer les paramètres recommandés sans interaction avec l'utilisateur.   * **one-step lockdown** : analyser et appliquer les paramètres recommandés sans interaction avec l'utilisateur.
  
Line 37: Line 37:
   security passwords min-length 10   security passwords min-length 10
  
-  * Chiffrer les mots de passe écrits dans la configuration :+  * Chiffrer les mots de passe inscrits dans la configuration :
  
   service password-encryption   service password-encryption
Line 44: Line 44:
   password 7 051F091B2E   password 7 051F091B2E
  
-7 indique que l'algorithme utilisé est celui propriétaire Cisco (peu fiable) +    * Le 7 indique que l'algorithme utilisé est celui propriétaire Cisco (peu fiable en réalité
-5 indique un hash MD5 (c'est le cas du ''enable secret''un peu plu secure)+    5 indique un hash MD5 (c'est le cas du ''enable secret''plus securé (plus d'informations : [[http://www.nemako.net/dc2/?post/2008/07/10/Detail-sur-les-hashs-de-mot-de-passe-IOS|détails sur les hashs des mots de passe IOS]]))
  
   * utiliser le mot clé ''secret'' à la place de ''password'' afin de hasher le mot de passe en MD5 dans la configuration, par exemple :   * utiliser le mot clé ''secret'' à la place de ''password'' afin de hasher le mot de passe en MD5 dans la configuration, par exemple :
Line 52: Line 52:
   [..]   [..]
   username toto secret toto   username toto secret toto
 +Cette //best practice// ne rentre pas en contradiction avec celle d'avant car il existe certains mots de passe que l'on ne peut pas hasher en MD5 : les mots de passe d'accès aux lignes (con, aux, vty,...)
  
-  * Désactiver l'accès au ROMMON par la console (pas conseillé car cela désactive la procédure de récupération du mot de passe !) :+  * Désactiver l'accès au ROMMON par la console (pas __du tout__ conseillé car cela désactive la procédure de récupération du mot de passe - et tout le monde le perd un jour ou l'autre ;) ) :
  
   no service password-recovery   no service password-recovery
  
-  * Pour imposer un temps (ici de 10 secondes) entre chaque tentative de login :+  * Pour imposer un temps d'attente (ici de 10 secondes) entre chaque tentative de login :
  
   login delay 10   login delay 10
Line 65: Line 66:
   security authentication failure rate 5 log   security authentication failure rate 5 log
  
-  * Pour éviter les attaques par force brute, on peut bloquer les tentatives de login après un certains seuil d'échec par unité de temps : par exemple pour bloquer les logins pendant 100 secondes si on atteint plus de 3 échecs de login en 10 secondes :+  * Pour éviter les attaques par force brute, on peut bloquer les tentatives de login après un certains seuil d'échec par seconde : par exemple pour bloquer les logins pendant 100 secondes si on dépasse 3 échecs de login en 10 secondes :
  
   login block-for 100 attemps 3 within 10   login block-for 100 attemps 3 within 10
Line 77: Line 78:
   login on-failure trap   login on-failure trap
  
-  * définir un timeout d'inactivité (idle timeout) : ''exec-timeout minutes [seconds]'' en mode (config-line) ; pour supprimer le timeout on spécifit 0 (! pas conseillé car cela bloc la ligne) :+  * définir un timeout d'inactivité : ''exec-timeout minutes [seconds]'' en mode (config-line) ; pour définir un timeout infini on spécifie 0 (! pas conseillé car cela bloc la ligne si l'utilisateur ne se déconnecte pas proprement - et aussi par sécurité (poste non verrouillé)) :
  
   exec-timeout 0   exec-timeout 0
Line 88: Line 89:
   * les niveaux intermédiaires, de 1 à 14, qui peuvent être configurés   * les niveaux intermédiaires, de 1 à 14, qui peuvent être configurés
  
-Pour configurer un mode de privilège, on doit lui attribuer un mot de passe et des droits : ''privilege //mode// {level //level command// | reset //command//}'' ; par exemple pour le on lui donne le mdp "toto" ; ce mode n'aura le droit qu'à la commande ''ping'' :+Pour configurer un mode de privilège, on doit lui attribuer un mot de passe et des droits : ''privilege //mode// {level //level command// | reset //command//}'' ; par exemple pour le mode priviégié n°2 on donne le mdp "toto" ; ce mode n'aura le droit qu'à la commande ''ping'' :
   privilege exec level 2 ping   privilege exec level 2 ping
   enable secret level 2 toto   enable secret level 2 toto
Line 99: Line 100:
 =====Les vues===== =====Les vues=====
  
-Les vue permettent d'étendre les possibilités des privilèges (et de palier à leurs limitations). Pour créer une vue, qui permet de limiter les commandes vues par un utilisateur, il faut créer un nouveau modèle aaa (mot-à-mot :/), et activer la root view (c'est le mot de passe enable) :+Les vues permettent d'étendre les possibilités des privilèges (et de palier à leurs limitations). Pour créer une vue, qui permet de limiter les commandes vues par un utilisateur, il faut créer un nouveau modèle aaa, et activer la **root view** (c'est le mot de passe enable ; s'il n'existe pas il faut le créer) :
   conf t   conf t
    aaa new-model    aaa new-model
   enable view   enable view
  
-Puis on créer la vue premiere_view, on lui affecte un mot de passe et on lui attribut des droits sur les commandes :+Puis on créer la vue premiere_view, on lui affecte un mot de passe et on lui attribut des droits sur les commandes (en mode ''(config)#''):
   parser view premiere_vue   parser view premiere_vue
    secret mon_mdp    secret mon_mdp
Line 113: Line 114:
    commands exec include show ip interface brief    commands exec include show ip interface brief
  
-On peut créer des super vues qui aggrèges les droits de plusieurs vues ; pour cela on ajoute le mot clé superview lors de la création de la vue :+On peut créer des super vues qui aggrègent les droits de plusieurs vues ; pour cela on ajoute le mot clé ''superview'' lors de la création de la vue :
   parser view super_vue superview   parser view super_vue superview
    secret superview_mdp    secret superview_mdp
    view premiere_vue    view premiere_vue
    view seconde_vue    view seconde_vue
 +
 +On ne peut pas ajouter de commandes à une superview, elle ne peut qu'avoir les droits d'une vue existante.
  
  
Line 124: Line 127:
 Fonctionnalité d'IOS qui permet de conserver une version "safe" de l'image IOS et/ou de la running-config afin de contrecarrer la compromission du routeur. La facilité de restauration de la version safe permet de réduire le //downtime//. Fonctionnalité d'IOS qui permet de conserver une version "safe" de l'image IOS et/ou de la running-config afin de contrecarrer la compromission du routeur. La facilité de restauration de la version safe permet de réduire le //downtime//.
  
-Activer la résilience de l'image IOS :+Activer la résilience de l'image IOS et de la configuration :
   secure boot-image   secure boot-image
- 
-Pour la configuration : 
   secure boot-config   secure boot-config
  
-Pour restaurer l'IOS : démarrer en rommon puis : +Pour restaurer l'IOS : démarrer en rommon puis charger l'IOS 
-  rommon 1 >boot disk0:<imageIOS>+  rommon 1 >boot disk0:c3825-advipservicesk9-mz.124-21.bin
  
 Pour restaurer la conf : Pour restaurer la conf :
Line 137: Line 138:
   copy slot0:rescue running-config   copy slot0:rescue running-config
  
-Vérif :+Vérifs :
   show secure bootset   show secure bootset
  
Line 148: Line 149:
   logging <IP_du_serveur_syslog>   logging <IP_du_serveur_syslog>
  
-Configurer le niveau (de 0 à 7) de trap :+Configurer la //priority// (priorité) (de 0 à 7, càd de //emergencies// à //debugging//) de trap :
   logging trap <level>   logging trap <level>
  
-Configurer le syslog facility (valeurs de ''local0'' à ''local7'') :+Configurer la //facility// (service) (valeurs de ''local0'' à ''local7'') :
   logging facility <facility-type>   logging facility <facility-type>
 +
 +PS : [[informatique:linux:syslog|signification des valeurs du syslog (priorité et service)]]
  
 Les messages de log sont de la forme : Les messages de log sont de la forme :
Line 162: Line 165:
   * le reste : le texte du message   * le reste : le texte du message
  
-Si on les récupère dans un syslog ils sont précédés (dépend du syslogd utilisé) du timestamp de réception du serveur syslog et de l'IP source du paquet reçu.+Si on les récupère dans un syslog ils sont précédés (dépend du syslogd utilisé) du timestamp de réception du serveur syslog et de l'IP source/hostname du paquet reçu.
  
 D'autres commandes utiles : D'autres commandes utiles :
  
-  * activer la journalisation : ''logging on''+  * activer la journalisation : ''logging on'' (à valider l'intérêt de cette commande)
   * pour préciser l'interface source des paquets syslog émis ''logging source-interface <interface>''   * pour préciser l'interface source des paquets syslog émis ''logging source-interface <interface>''
 +  * pour ajouter un timestamp dans les messages de log : ''service timestamps log datetime msec''
  
-Quoiqu'il en soit il vaut mieux que l'horloge des équipements soient synchronisé => NTP.+Il faut que l'horloge des équipements soient synchronisés afin de pouvoir exploiter les logs => NTP.
  
 ====NTP==== ====NTP====
  
-Pour synchroniser l'horloge de toutes les machines il est recommandés d'utiliser NTP qui est un protocole de synchronisation d'horloge. Le terme strate désigne le nombre de hop pour atteindre une autorité de temps (par exemple une horloge atomique).+Pour synchroniser l'horloge de toutes les machines il est recommandés d'utiliser **NTP** (Network Time Protocole) qui est un protocole de synchronisation d'horloge fonctionnant sur udp/123. Le terme //strate// désigne le nombre de hop pour atteindre une autorité de temps (par exemple une horloge atomique).
  
-On peut définir différents types de dépendance avec une machine distante +On peut définir différents types rôle 
-  * client : le routeur émet des requêtes pour se synchroner auprès d'un serveur +  * client : se synchronise auprès d'une autorité de temps = le routeur émet des requêtes pour se synchroniser auprès d'un serveur 
-  * serveur : le serveur NTP fourni l'ajustement du temps à tous les clients +  * serveur : autorité de temps ; synchronise les clients qui lui demandent l'heure 
-  * peer : les requêtes NTP vont dans les 2 sens et chacun peut être soit client soit serveur+  * peer : les requêtes NTP vont dans les 2 sens chacun peut être soit client soit serveur
  
-Configuration type : déclaraion d'un serveur NTP sur lequel se synchroniser :+===ntp client=== 
 +Configuration type : déclaration d'un serveur/peer NTP sur lequel le routeur va se synchroniser :
   ntp {server | peer} 10.0.0.111   ntp {server | peer} 10.0.0.111
 +
 +On peut en définir plusieurs, ainsi qu'un ordre de préférence :
 +  ntp server 10.0.0.111
 +  ntp server 192.168.0.1 prefer
  
 Pour mettre en place de l'authentification : Pour mettre en place de l'authentification :
   ntp authenticate   ntp authenticate
-  ntp authenticate key 1 md5 <mdp_secret>+  ntp authenticate-key 1 md5 <mdp_secret>
   ntp trust-key 1   ntp trust-key 1
      
-  ntp server 10.0.0.254 key 1 prefer+  ntp server 10.0.0.111 key 1
  
-Le mot de passe ne doit pas dépasser 8 caractères.+Pour écouter (et se synchroniser dessus) les broadcasts NTP reçus sur une interface : 
 +  interface fa0/0 
 +   ntp broadcast client
  
-Pour écouter les broadcasts NTP reçus sur une interface (en mode ''(config-if)#'') : +Utilisation d'une ACL filtrante :
-  ntp broadcast client +
- +
-Mise en place d'une ACL :+
   ntp access-group {query-only | serve-only | serve | peer} <ACL-number>   ntp access-group {query-only | serve-only | serve | peer} <ACL-number>
  
Line 201: Line 209:
  
 ===Serveur ntp=== ===Serveur ntp===
 +//NB : il me semble que les routeurs agissent par défaut comme serveur NTP.//
 +
 Pour faire d'un routeur un serveur ntp autoritatif : Pour faire d'un routeur un serveur ntp autoritatif :
   ntp master [stratum]   ntp master [stratum]
  
-Stratum indique la précision supposée (de 1 à 15) : plus la valeur est faible plus le serveur sera considéré comme fiable par les clients NTP.+//stratum// indique la précision supposée (de 1 à 15) : plus la valeur est faible plus le serveur sera considéré comme fiable par les clients NTP (les strates 1 sont directement reliées à une horloge atomique)
  
-Pour émettre des broadcast NTP sur une interface (en config-if) : +Pour émettre des broadcasts NTP sur une interface (en config-if) : 
-  ntp broadcast+  interface fa0/0 
 +   ntp broadcast
  
 ====SNMP==== ====SNMP====
  
-Pour monitorer/interroger les routeurs, le SNMP est parfait à ceci près qu'il n'est pas du tout sécurisé.+Pour monitorer/interroger les routeurs, le protocole SNMP est parfait à ceci près qu'il n'est pas sécurisé (jusqu'à la version 2) et fait transiter ses données en clair sur le réseau.
  
-Il est conseillé d'utilisé SNMPv3 (pour ses fonctions d'authentification et de chiffrement), ou à défaut de désactiver l'accès rw (écriture) et à mettre un nom de communauté (~ sorte de mot de passe) pour l'accès ro (lecture).+Il est conseillé d'utiliser SNMPv3 (pour ses fonctions d'authentification et de chiffrement), ou à défaut de désactiver l'accès RW (lecture/écriture) et de configurer un nom de communauté (~ sorte de mot de passe) pour l'accès RO (lecture seule).
  
 Procédure de configuration du SNMPv3 : Procédure de configuration du SNMPv3 :
-  * configurer le server-ID local du routeur ; Il est optionnel de préciser l'IP, l'ID et le numéro de port (par défaut 161) d'un équipement distant.+  * configurer le server-ID local du routeur ; il est optionnel de préciser l'IP, l'ID et le numéro de port (par défaut 161) d'un équipement distant.
   * configurer les noms de groupes   * configurer les noms de groupes
   * configurer les utilisateurs   * configurer les utilisateurs
   * configurer les machines   * configurer les machines
  
-Exemple +__Exemple :__ 
-  snmp-server enable traps cpu +<code bash> 
-  snmp-server enable traps config +snmp-server engineID local 0123456789 
-  snmp-server inform retries 0 +snmp-server engineID remote 10.0.0.100 00000063000100a1c0b4011b 
-  snmp-server source-interface traps loopback 0+ 
 +snmp-server group authgroup v3 auth 
 +snmp-server group authgroup v3 priv
      
-  snmp-server engineID local 0123456789 +snmp-server user authuser authgroup v3 auth md5 mypassword priv des56 encryptedpasswd 
-  snmp-server engineID remote 10.0.0.100 00000063000100a1c0b4011b+snmp-server user authuser authgroup v3 auth md5 mypassword
      
-  snmp-server group authgroup v3 auth +snmp-server host 10.0.0.111 traps version 3 priv authuser
-  snmp-server group authgroup v3 priv+
      
-  snmp-server user authuser authgroup v3 auth md5 mypassword priv des56 encryptedpasswd +snmp-server enable traps cpu 
-  snmp-server user authuser authgroup v3 auth md5 mypassword +snmp-server enable traps config 
-   +snmp-server inform retries 0 
-  snmp-server host 10.0.0.111 traps version 3 priv authuser +snmp-server source-interface traps loopback 0 
 +</code>
  
-Liens :+__Liens :__
   * http://www.cisco.com/en/US/docs/switches/lan/catalyst3560/software/release/12.2_46_se/configuration/guide/swsnmp.html   * http://www.cisco.com/en/US/docs/switches/lan/catalyst3560/software/release/12.2_46_se/configuration/guide/swsnmp.html
  
Line 245: Line 257:
 =====AAA===== =====AAA=====
  
-Authentication, Authorization and Accounting est un mécasnisme de sécurité qui permet d'authentifier une personne, de lui attribuer des droits et de "pister" ce qu'il fait.+Authentication, Authorization and Accounting est un mécanisme de sécurité qui permet d'authentifier une personne, de lui attribuer des droits et d'auditer ce qu'il fait. Cela permet de contrôler les accès au réseau.
  
 Il existe 3 types de configurations possibles : Il existe 3 types de configurations possibles :
Line 253: Line 265:
  
 2 modes d'accès au routeur : 2 modes d'accès au routeur :
-  * **character mode** pour les "line" (vty, con) +  * **character mode** pour les "line" (vty, con) => on définit les droits ''exec'' 
-  * **packet mode** pour les interfaces (async, serial)+  * **packet mode** pour les interfaces (async, serial) => on définit les droits ''network''
  
 ====RADIUS==== ====RADIUS====
  
-L'un des 2 protocoles AAA les plus connu avec TACACS ; il est normalisé par l'IETF (RFC 2865) et utilise des datagrammes udp/1812 et 1813 (le serveur Cisco Secure ACS utilise lui udp/1645 et 1646). A chaque compte sont associés des paires AV (Attribute-Value) qui définissent ses droits. Il y a une 50aine de paires AV prédéfinies, mais RADIUS permet des extension propriétaires.+Le **RADIUS** est, avec TACACS+, l'un des 2 protocoles AAA les plus connus ; il est normalisé par l'IETF (RFC 2865) et utilise des datagrammes udp/1812 et 1813 (le serveur Cisco Secure ACS utilise lui udp/1645 et 1646). A chaque compte sont associés zéro ou plusieurs **paires AV** (Attribute-Value) qui définissent ses droits. Il y a une 50aine de paires AV prédéfinies, mais RADIUS permet des extensions propriétaires.
  
 Le RADIUS permet : Le RADIUS permet :
Line 272: Line 284:
 ====TACACS+==== ====TACACS+====
  
-Le TACACS+ ressemble au RADIUS à ceci près qu'il est propriétaire Cisco et utilise tcp/49. Lui aussi associe à chaque compte ou plusieurs AV. On peut 'en servir pour identifier un utilisateur et appliquer un profil réseau (ses VLAN/ACL/adresse IP/droits persos).+Le **TACACS+** ressemble au RADIUS à ceci près qu'il est propriétaire Cisco et utilise tcp/49. Lui aussi associe à chaque compte zéro ou plusieurs AV. On peut s'en servir pour identifier un utilisateur et appliquer un profil réseau (ses VLAN/ACL/adresse IP/droits persos).
  
 TACACS+ permet : TACACS+ permet :
Line 289: Line 301:
 Elle utilisera en premier lieu le serveur TACACS+ ; si ce dernier ne répond pas on essaie dans la base locale. S'il renvoie une erreur d'authentification le routeur ne recherche pas dans la base locale. On peut lister jusqu'à 4 méthodes parmi celles-ci : ''enable, group, krb5, line, local, local-case, none''. Elle utilisera en premier lieu le serveur TACACS+ ; si ce dernier ne répond pas on essaie dans la base locale. S'il renvoie une erreur d'authentification le routeur ne recherche pas dans la base locale. On peut lister jusqu'à 4 méthodes parmi celles-ci : ''enable, group, krb5, line, local, local-case, none''.
  
-Pour créer un groupe, applicable sur une ou plusieurs interfaces on remplace ''default'' par un nom :+Pour créer un groupe, applicable sur une ou plusieurs interfaceson remplace ''default'' par un nom :
   aaa authentication login ma_liste group tacacs+ local   aaa authentication login ma_liste group tacacs+ local
  
Line 296: Line 308:
    login authentication ma_liste    login authentication ma_liste
  
-===Vérifs===+====aaa authorization==== 
 + 
 +Pour définir les droits associés à un compte. 
 + 
 +  aaa authorization exec default group radius local none 
 + 
 +====aaa accounting==== 
 + 
 +L'accounting permet d'auditer et de facturer un compte utilisateur. 
 + 
 +  aaa accouting exec default start-stop group tacacs+ 
 + 
 +Cette commande permet de logger chaque début et fin de processus lancé par n'importe quel profil (default) du groupe tacacs+. 
 + 
 +====Vérifs====
  
   debug aaa authentication   debug aaa authentication
   debug aaa authorization   debug aaa authorization
 +  debug aaa accounting
  
 =====Vérifs===== =====Vérifs=====
  
   show login [failure]   show login [failure]
informatique/cisco/securiser_un_routeur.1247854022.txt.gz · Last modified: 2013/10/14 20:52 (external edit)