User Tools

Site Tools


informatique:cisco:securiser_un_routeur

This is an old revision of the document!


sécurité

Sécuriser un routeur Cisco

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.

Cisco AutoSecure (CLI)

La fonctionnalité Cisco AutoSecure permet d'“auditer” la configuration d'un routeur afin de détecter les éventuelle failles de sécurité ; il existe 2 modes :

  • le mode interacif qui fait des propositions que l'administrateur valide ou non
  • le mode non-interactif qui applique automatiquement les bonnes pratiques (pas très 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 :

configure replace flash:pre_autosec.cfg

Utilisation de la commande :

auto secure [management | forwarding] [no-interact | full] [ntp | login | ssh | firewall | tcp-intercept]

⇒ n'affecte que le management/forwarding plane ; en mode interactif (par défaut) ou non ; précise la configuration du ntp/login/ssh/firewall ou tcp-intercept.

Security Audit (SDM)

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.
  • one-step lockdown : analyser et appliquer les paramètres recommandés sans interaction avec l'utilisateur.

Configuration

Politique de sécurité

  • Imposer des mots de passe d'au moins 10 caractères (on peut aller de 0 à 16) :
security passwords min-length 10
  • Chiffrer les mots de passe écrits dans la configuration :
service password-encryption

Ils n'apparaissent plus en clair dans la conf :

password 7 051F091B2E

7 indique que l'algorithme utilisé est celui propriétaire Cisco (peu fiable) 5 indique un hash MD5 (c'est le cas du enable secret ; un peu plu secure)

  • utiliser le mot clé secret à la place de password afin de hasher le mot de passe en MD5 dans la configuration, par exemple :
enable secret toto
[..]
username toto secret toto
  • 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 !) :
no service password-recovery
  • Pour imposer un temps (ici de 10 secondes) entre chaque tentative de login :
login delay 10
  • Par défaut, les routeurs Cisco permettent 10 tentatives de login infructueuses avant d'initier un délai de 15 secondes pour la prochaine tentative. Pour modifier le seuil de tentatives infructueuses (et émettre un message dans le syslog) à 5 :
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 :
login block-for 100 attemps 3 within 10

On peut définir une ACL dont les IPs qui matchent ne déclencheront pas le blocage des logins, et qui, même une fois le routeur bloqué, pourront quand même se logguer dessus. En clair cela permet d'outrepasser la commande block-for :

login quiet-mode access-class MYACL
  • On peut logguer/émettre un trap avec le résultat des tentatives de login, et même déterminer un seuil :

login on-success log [every 10]

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) :
exec-timeout 0

Les privilèges

Il y a 16 niveaux de privilèges :

  • le 0 qui est le “user-mode”
  • le 15 qui est le “enable-mode” ou mode privilégié
  • 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 2 on lui donne le mdp “toto” ; ce mode n'aura le droit qu'à la commande ping :

privilege exec level 2 ping
enable secret level 2 toto

Pour accéder à ce mode, un utilisateur doit se logguer en mode utilisateur (normal), puis taper enable 2. Pour voir ses privilèges du mode courant, on utilise :

show privilege
 Current privilege level is 2

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) :

conf t
 aaa new-model
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 :

parser view premiere_vue
 secret mon_mdp
 commands exec include show version
! 
parser view seconde_vue
 secret second_mdp
 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 :

parser view super_vue superview
 secret superview_mdp
 view premiere_vue
 view seconde_vue

Resilient configuration feature

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 :

secure boot-image

Pour la configuration :

secure boot-config

Pour restaurer l'IOS : démarrer en rommon puis :

rommon 1 >boot disk0:<imageIOS>

Pour restaurer la conf :

secure boot-config restore slot0:rescue
copy slot0:rescue running-config

Vérif :

show secure bootset

Management

Syslog / trap

Configurer un syslog externe :

logging <IP_du_serveur_syslog>

Configurer le niveau (de 0 à 7) de trap :

logging trap <level>

Configurer le syslog facility (valeurs de local0 à local7) :

logging facility <facility-type>

Les messages de log sont de la forme :

Jul 16 19:51:00: %SYS-5-CONFIG_I: Configured from console by resadm on vty0 (10.0.0.100)

… avec 3 champs distincts, séparés par une virgule :

  • Jul 16 19:51:00 le timestamp
  • %SYS-5-CONFIG_I indique le niveau de sécurité de 0 à 7 (ici 5 ⇒ “Notification”) suivi du nom du message de log (ici un message touchant la configuration du routeur)
  • 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.

D'autres commandes utiles :

  • activer la journalisation : logging on
  • pour préciser l'interface source des paquets syslog émis logging source-interface <interface>

Quoiqu'il en soit il vaut mieux que l'horloge des équipements soient synchronisé ⇒ 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).

On peut définir différents types de dépendance avec une machine distante :

  • client : le routeur émet des requêtes pour se synchroner auprès d'un serveur
  • serveur : le serveur NTP fourni l'ajustement du temps à tous les clients
  • peer : les requêtes NTP vont dans les 2 sens et chacun peut être soit client soit serveur

Configuration type : déclaraion d'un serveur NTP sur lequel se synchroniser :

ntp {server | peer} 10.0.0.111

Pour mettre en place de l'authentification :

ntp authenticate
ntp authenticate key 1 md5 <mdp_secret>
ntp trust-key 1

ntp server 10.0.0.254 key 1 prefer

Le mot de passe ne doit pas dépasser 8 caractères.

Pour écouter les broadcasts NTP reçus sur une interface (en mode (config-if)#) :

ntp broadcast client

Mise en place d'une ACL :

ntp access-group {query-only | serve-only | serve | peer} <ACL-number>

Les machines qui matchent l'ACL auront le droit indiqué.

Serveur ntp

Pour faire d'un routeur un serveur ntp autoritatif :

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.

Pour émettre des broadcast NTP sur une interface (en config-if) :

ntp broadcast

SNMP

Pour monitorer/interroger les routeurs, le SNMP est parfait à ceci près qu'il n'est pas du tout sécurisé.

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).

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 les noms de groupes
  • configurer les utilisateurs
  • configurer les machines

Exemple :

snmp-server enable traps cpu
snmp-server enable traps config
snmp-server inform retries 0
snmp-server source-interface traps loopback 0

snmp-server engineID local 0123456789
snmp-server engineID remote 10.0.0.100 00000063000100a1c0b4011b

snmp-server group authgroup v3 auth
snmp-server group authgroup v3 priv

snmp-server user authuser authgroup v3 auth md5 mypassword priv des56 encryptedpasswd
snmp-server user authuser authgroup v3 auth md5 mypassword

snmp-server host 10.0.0.111 traps version 3 priv authuser

Liens :

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.

Il existe 3 types de configurations possibles :

  • Self-contained AAA : il s'agit d'un serveur inclus dans l'IOS (authentification locale)
  • Cisco Secure ACS Server for Windows Server : un logiciel installé sur un serveur pour créer un serveur AAA externe
  • Cisco Secure ACS Solution Engine équipement dédié

2 modes d'accès au routeur :

  • character mode pour les “line” (vty, con)
  • packet mode pour les interfaces (async, serial)

Vérifs

show login [failure]
informatique/cisco/securiser_un_routeur.1247776421.txt.gz · Last modified: 2013/10/14 20:51 (external edit)