informatique:cisco:securiser_un_routeur
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
informatique:cisco:securiser_un_routeur [2009/07/13 20:35] – créée pteu | informatique:cisco:securiser_un_routeur [2014/02/07 14:29] (current) – [SNMP] pteu | ||
---|---|---|---|
Line 3: | Line 3: | ||
======Sécuriser un routeur Cisco====== | ======Sécuriser un routeur Cisco====== | ||
- | Par sécurité, comme sur tout système informatique, | ||
- | La fonctionnalité Cisco AutoSecure permet d'" | + | Par sécurité, comme sur tout système informatique, |
- | * le mode interacif qui fait des propositions que l' | + | |
- | * le mode non-interactif qui applique automatiquement les bonnes pratiques | + | |
- | Sur les versions | + | |
+ | =====Cisco AutoSecure (CLI)===== | ||
+ | |||
+ | La fonctionnalité **Cisco AutoSecure** permet d' | ||
+ | * le mode interactif qui demande des informations et fait des propositions que l' | ||
+ | * le mode non-interactif qui applique automatiquement les bonnes pratiques (pas conseillé) | ||
+ | |||
+ | Sur les versions | ||
configure replace flash: | configure replace flash: | ||
Line 17: | Line 21: | ||
=> n' | => n' | ||
+ | |||
+ | |||
+ | =====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 affiché ; on peut alors " | ||
+ | * **one-step lockdown** : analyser et appliquer les paramètres recommandés sans interaction avec l' | ||
+ | |||
+ | =====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 inscrits dans la configuration : | ||
+ | |||
+ | service password-encryption | ||
+ | |||
+ | Ils n' | ||
+ | password 7 051F091B2E | ||
+ | |||
+ | * Le 7 indique que l' | ||
+ | * 5 indique un hash MD5 (c'est le cas du '' | ||
+ | |||
+ | * utiliser le mot clé '' | ||
+ | |||
+ | enable secret toto | ||
+ | [..] | ||
+ | username toto secret toto | ||
+ | Cette //best practice// ne rentre pas en contradiction avec celle d' | ||
+ | |||
+ | * Désactiver l' | ||
+ | |||
+ | no service password-recovery | ||
+ | |||
+ | * Pour imposer un temps d' | ||
+ | |||
+ | login delay 10 | ||
+ | |||
+ | * Par défaut, les routeurs Cisco permettent 10 tentatives de login infructueuses avant d' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | login quiet-mode access-class MYACL | ||
+ | |||
+ | * On peut logguer/ | ||
+ | login on-success log [every 10] | ||
+ | login on-failure trap | ||
+ | |||
+ | * définir un timeout d' | ||
+ | |||
+ | exec-timeout 0 | ||
+ | |||
+ | =====Les privilèges===== | ||
+ | |||
+ | Il y a 16 niveaux de privilèges : | ||
+ | * le 0 qui est le " | ||
+ | * le 15 qui est le " | ||
+ | * les niveaux intermédiaires, | ||
+ | |||
+ | Pour configurer un mode de privilège, on doit lui attribuer un mot de passe et des droits : '' | ||
+ | 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 '' | ||
+ | show privilege | ||
+ | | ||
+ | |||
+ | |||
+ | =====Les vues===== | ||
+ | |||
+ | Les vues permettent d' | ||
+ | conf t | ||
+ | aaa new-model | ||
+ | enable view | ||
+ | |||
+ | Puis on créer la vue premiere_view, | ||
+ | parser view premiere_vue | ||
+ | | ||
+ | | ||
+ | ! | ||
+ | parser view seconde_vue | ||
+ | | ||
+ | | ||
+ | |||
+ | On peut créer des super vues qui aggrègent les droits de plusieurs vues ; pour cela on ajoute le mot clé '' | ||
+ | parser view super_vue superview | ||
+ | | ||
+ | view premiere_vue | ||
+ | view seconde_vue | ||
+ | |||
+ | On ne peut pas ajouter de commandes à une superview, elle ne peut qu' | ||
+ | |||
+ | |||
+ | =====Resilient configuration feature===== | ||
+ | |||
+ | Fonctionnalité d'IOS qui permet de conserver une version " | ||
+ | |||
+ | Activer la résilience de l' | ||
+ | secure boot-image | ||
+ | secure boot-config | ||
+ | |||
+ | Pour restaurer l'IOS : démarrer en rommon puis charger l'IOS : | ||
+ | rommon 1 >boot disk0: | ||
+ | |||
+ | Pour restaurer la conf : | ||
+ | secure boot-config restore slot0: | ||
+ | copy slot0: | ||
+ | |||
+ | Vérifs : | ||
+ | show secure bootset | ||
+ | |||
+ | |||
+ | =====Management===== | ||
+ | |||
+ | ====Syslog / trap==== | ||
+ | |||
+ | Configurer un syslog externe : | ||
+ | logging < | ||
+ | |||
+ | Configurer la // | ||
+ | logging trap < | ||
+ | |||
+ | Configurer la // | ||
+ | logging facility < | ||
+ | |||
+ | PS : [[informatique: | ||
+ | |||
+ | Les messages de log sont de la forme : | ||
+ | Jul 16 19:51:00: %SYS-5-CONFIG_I: | ||
+ | |||
+ | ... avec 3 champs distincts, séparés par une virgule : | ||
+ | * '' | ||
+ | * '' | ||
+ | * 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/ | ||
+ | |||
+ | D' | ||
+ | |||
+ | * activer la journalisation : '' | ||
+ | * pour préciser l' | ||
+ | * pour ajouter un timestamp dans les messages de log : '' | ||
+ | |||
+ | Il faut que l' | ||
+ | |||
+ | ====NTP==== | ||
+ | |||
+ | Pour synchroniser l' | ||
+ | |||
+ | On peut définir différents types rôle : | ||
+ | * 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 : autorité de temps ; synchronise les clients qui lui demandent l' | ||
+ | * peer : les requêtes NTP vont dans les 2 sens ; chacun peut être soit client soit serveur | ||
+ | |||
+ | ===ntp client=== | ||
+ | Configuration type : déclaration d'un serveur/ | ||
+ | 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' | ||
+ | ntp authenticate | ||
+ | ntp authenticate-key 1 md5 < | ||
+ | ntp trust-key 1 | ||
+ | | ||
+ | ntp server 10.0.0.111 key 1 | ||
+ | |||
+ | Pour écouter (et se synchroniser dessus) les broadcasts NTP reçus sur une interface : | ||
+ | interface fa0/0 | ||
+ | ntp broadcast client | ||
+ | |||
+ | Utilisation d'une ACL filtrante : | ||
+ | ntp access-group {query-only | serve-only | serve | peer} < | ||
+ | |||
+ | Les machines qui matchent l'ACL auront le droit indiqué. | ||
+ | |||
+ | ===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 : | ||
+ | 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 (les strates 1 sont directement reliées à une horloge atomique) | ||
+ | |||
+ | Pour émettre des broadcasts NTP sur une interface (en config-if) : | ||
+ | interface fa0/0 | ||
+ | ntp broadcast | ||
+ | |||
+ | ====SNMP==== | ||
+ | |||
+ | Pour monitorer/ | ||
+ | |||
+ | Il est conseillé d' | ||
+ | |||
+ | 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 :__ | ||
+ | <code bash> | ||
+ | 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 enable traps cpu | ||
+ | snmp-server enable traps config | ||
+ | snmp-server inform retries 0 | ||
+ | snmp-server source-interface traps loopback 0 | ||
+ | </ | ||
+ | |||
+ | __Liens :__ | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | =====AAA===== | ||
+ | |||
+ | Authentication, | ||
+ | |||
+ | 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' | ||
+ | * **character mode** pour les " | ||
+ | * **packet mode** pour les interfaces (async, serial) => on définit les droits '' | ||
+ | |||
+ | ====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 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, | ||
+ | |||
+ | Le RADIUS permet : | ||
+ | * le chiffrement du mot de passe (uniquement) en MD5 | ||
+ | * l' | ||
+ | |||
+ | Mise en place : | ||
+ | aaa new-model | ||
+ | radius-server host 10.0.0.111 | ||
+ | radius-server key < | ||
+ | |||
+ | |||
+ | ====TACACS+==== | ||
+ | |||
+ | 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/ | ||
+ | |||
+ | TACACS+ permet : | ||
+ | * de chiffrer tout le contenu des transactions | ||
+ | |||
+ | Mise en place : | ||
+ | aaa new-model | ||
+ | tacacs-server host 10.0.0.111 | ||
+ | tacacs-server key < | ||
+ | |||
+ | ====aaa authentication==== | ||
+ | |||
+ | Créer une méthode d' | ||
+ | aaa authentication login default group tacacs+ local | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Pour créer un groupe, applicable sur une ou plusieurs interfaces, on remplace '' | ||
+ | aaa authentication login ma_liste group tacacs+ local | ||
+ | |||
+ | Puis on l' | ||
+ | line vty 0 4 | ||
+ | login authentication ma_liste | ||
+ | |||
+ | ====aaa authorization==== | ||
+ | |||
+ | Pour définir les droits associés à un compte. | ||
+ | |||
+ | aaa authorization exec default group radius local none | ||
+ | |||
+ | ====aaa accounting==== | ||
+ | |||
+ | L' | ||
+ | |||
+ | aaa accouting exec default start-stop group tacacs+ | ||
+ | |||
+ | Cette commande permet de logger chaque début et fin de processus lancé par n' | ||
+ | |||
+ | ====Vérifs==== | ||
+ | |||
+ | debug aaa authentication | ||
+ | debug aaa authorization | ||
+ | debug aaa accounting | ||
+ | |||
+ | =====Vérifs===== | ||
+ | |||
+ | show login [failure] |
informatique/cisco/securiser_un_routeur.1247517351.txt.gz · Last modified: 2013/10/14 20:51 (external edit)