Sécuriser Un Routeur Cisco
Sécuriser Un Routeur Cisco
Sécuriser Un Routeur Cisco
Par scurit, comme sur tout systme informatique, la scurit dicte de dsactiver tout ce qui ne sert pas afin d'viter que cela soit utilis par une personne malintentionne. Il s'agit donc, sur un routeur, de dsactiver les services inutiles (beaucoup sont activs par dfaut) et les interfaces inutilises.
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 conseill)
Sur les versions rcentes 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 enregistre dans la flash, pour la restaurer il faut saisir (NB : ce n'est pas une fonctionnalit lie l'AutoSecure) :
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 dfaut) ou non ; prcise la configuration du ntp/login/ssh/firewall ou tcp-intercept.
security audit : la configuration est passe en revue et chaque point ngatif est affich ; on peut alors corriger le point ngatif (fix it !) ou ne rien faire. one-step lockdown : analyser et appliquer les paramtres recommands sans interaction avec l'utilisateur.
Configuration
Politique de scurit
Imposer des mots de passe d'au moins 10 caractres (on peut aller de 0 16) :
service password-encryption
Le 7 indique que l'algorithme utilis est celui propritaire Cisco (peu fiable en ralit) 5 indique un hash MD5 (c'est le cas du enable secret ; plus secur (plus d'informations : dtails 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 :
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'accs aux lignes (con, aux, vty,)
Dsactiver l'accs au ROMMON par la console (pas du tout conseill car cela dsactive la procdure de rcupration du mot de passe - et tout le monde le perd un jour ou l'autre ;) ) :
no service password-recovery
Pour imposer un temps d'attente (ici de 10 secondes) entre chaque tentative de login :
login delay 10
Par dfaut, les routeurs Cisco permettent 10 tentatives de login infructueuses avant d'initier un dlai de 15 secondes pour la prochaine tentative. Pour modifier le seuil de tentatives infructueuses (et mettre un message dans le syslog) 5 :
Pour viter les attaques par force brute, on peut bloquer les tentatives de login aprs un certains seuil d'chec par seconde : par exemple pour bloquer les logins pendant 100 secondes si on dpasse 3 checs de login en 10 secondes :
On peut dfinir une ACL dont les IPs qui matchent ne dclencheront pas le blocage des logins, et qui, mme une fois le routeur bloqu, pourront quand mme 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 rsultat des tentatives de login, et mme dterminer un seuil :
dfinir un timeout d'inactivit : exec-timeout minutes [seconds] en mode (config-line) ; pour dfinir un timeout infini on spcifie 0 (! pas conseill car cela bloc la ligne si l'utilisateur ne se dconnecte pas proprement - et aussi par scurit (poste non verrouill)) :
exec-timeout 0
Les privilges
Il y a 16 niveaux de privilges :
le 0 qui est le user-mode le 15 qui est le enable-mode ou mode privilgi les niveaux intermdiaires, de 1 14, qui peuvent tre configurs
Pour configurer un mode de privilge, on doit lui attribuer un mot de passe et des droits : privilege mode {level level command | reset command} ; par exemple pour le mode privigi n2 on 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 accder ce mode, un utilisateur doit se logguer en mode utilisateur (normal), puis taper enable 2. Pour voir ses privilges du mode courant, on utilise :
show privilege Current privilege level is 2
Les vues
Les vues permettent d'tendre les possibilits des privilges (et de palier leurs limitations). Pour crer une vue, qui permet de limiter les commandes vues par un utilisateur, il faut crer un nouveau modle aaa, et activer la root view (c'est le mot de passe enable ; s'il n'existe pas il faut le crer) :
conf t aaa new-model enable view
Puis on crer 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 secret mon_mdp commands exec include show version ! parser view seconde_vue secret second_mdp commands exec include show ip interface brief
On peut crer des super vues qui aggrgent les droits de plusieurs vues ; pour cela on ajoute le mot cl superview lors de la cration de la vue :
parser view super_vue superview secret superview_mdp view premiere_vue view seconde_vue
On ne peut pas ajouter de commandes une superview, elle ne peut qu'avoir les droits d'une vue existante.
Vrifs :
show secure bootset
Management
Syslog / trap
Configurer un syslog externe :
logging <IP_du_serveur_syslog>
PS : signification des valeurs du syslog (priorit et service) 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)
le timestamp indique le niveau de scurit 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 rcupre dans un syslog ils sont prcds (dpend du syslogd utilis) du timestamp de rception du serveur syslog et de l'IP source/hostname du paquet reu. D'autres commandes utiles :
pour prciser l'interface source des paquets syslog mis logging sourceinterface <interface>
pour ajouter un timestamp dans les messages de log : service timestamps log
datetime msec
Il faut que l'horloge des quipements soient synchroniss afin de pouvoir exploiter les logs NTP.
NTP
Pour synchroniser l'horloge de toutes les machines il est recommands d'utiliser NTP (Network Time Protocole) qui est un protocole de synchronisation d'horloge fonctionnant sur udp/123. Le terme strate dsigne le nombre de hop pour atteindre une autorit de temps (par exemple une horloge atomique). On peut dfinir diffrents types rle :
client : se synchronise auprs d'une autorit de temps = le routeur met des requtes pour se synchroniser auprs d'un serveur serveur : autorit de temps ; synchronise les clients qui lui demandent l'heure peer : les requtes NTP vont dans les 2 sens ; chacun peut tre soit client soit serveur
ntp client Configuration type : dclaration d'un serveur/peer NTP sur lequel le routeur va se synchroniser :
ntp {server | peer} 10.0.0.111
Pour couter (et se synchroniser dessus) les broadcasts NTP reus sur une interface :
interface fa0/0 ntp broadcast client
Les machines qui matchent l'ACL auront le droit indiqu. Serveur ntp NB : il me semble que les routeurs agissent par dfaut comme serveur NTP. Pour faire d'un routeur un serveur ntp autoritatif :
ntp master [stratum]
stratum indique la prcision suppose (de 1 15) : plus la valeur est faible plus le serveur sera considr comme fiable par les clients NTP (les strates 1 sont directement relies une horloge atomique) Pour mettre des broadcasts NTP sur une interface (en config-if) :
interface fa0/0 ntp broadcast
SNMP
Pour monitorer/interroger les routeurs, le SNMP est parfait ceci prs qu'il n'est pas scuris (jusqu' la version 2). Il est conseill d'utilis SNMPv3 (pour ses fonctions d'authentification et de chiffrement), ou dfaut de dsactiver l'accs rw (criture) et configurer un nom de communaut (~ sorte de mot de passe, mais qui transite en clair) pour l'accs ro (lecture). Procdure de configuration du SNMPv3 :
configurer le server-ID local du routeur ; Il est optionnel de prciser l'IP, l'ID et le numro de port (par dfaut 161) d'un quipement distant. configurer les noms de groupes configurer les utilisateurs configurer les machines
Exemple :
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 snmp-server snmp-server snmp-server snmp-server enable traps cpu enable traps config inform retries 0 source-interface traps loopback 0
Liens :
http://www.cisco.com/en/US/docs/switches/lan/catalyst3560/software/release/12. 2_46_se/configuration/guide/swsnmp.html
AAA
Authentication, Authorization and Accounting est un mcanisme de scurit qui permet d'authentifier une personne, de lui attribuer des droits et d'auditer ce qu'il fait. Cela permet de contrler les accs au rseau. 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 crer un serveur AAA externe Cisco Secure ACS Solution Engine quipement ddi
character mode pour les line (vty, con) on dfinit les droits exec packet mode pour les interfaces (async, serial) on dfinit les droits network
RADIUS
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 associs zro ou plusieurs paires AV (Attribute-Value) qui dfinissent ses droits. Il y a une 50aine de paires AV prdfinies, mais RADIUS permet des extensions propritaires. Le RADIUS permet :
le chiffrement du mot de passe (uniquement) en MD5 l'authentification des paquets par hash MD5
Mise en place :
aaa new-model radius-server host 10.0.0.111 radius-server key <secretkey>
TACACS+
Le TACACS+ ressemble au RADIUS ceci prs qu'il est propritaire Cisco et utilise tcp/49. Lui aussi associe chaque compte zro ou plusieurs AV. On peut s'en servir pour identifier un utilisateur et appliquer un profil rseau (ses VLAN/ACL/adresse IP/droits persos). TACACS+ permet :
Mise en place :
aaa new-model tacacs-server host 10.0.0.111 tacacs-server key <secretkey>
aaa authentication
Crer une mthode d'authentification par dfaut :
aaa authentication login default group tacacs+ local
Elle utilisera en premier lieu le serveur TACACS+ ; si ce dernier ne rpond 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 mthodes parmi celles-ci : enable, group, krb5, line, local, local-case, none. Pour crer un groupe, applicable sur une ou plusieurs interfaces, on remplace default par un nom :
aaa authentication login ma_liste group tacacs+ local
aaa authorization
Pour dfinir les droits associs un compte.
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 dbut et fin de processus lanc par n'importe quel profil (default) du groupe tacacs+.
Vrifs
debug aaa authentication debug aaa authorization debug aaa accounting
Vrifs
show login [failure]