hardeningnetworkcisco
MDstable
Hardening infrastructure réseau
Sécuriser switches, routeurs, NTP, SNMP, accès de gestion — bonnes pratiques CIS
snippetintermediate 2025-05-14 7 min read
hardeningnetworkciscoswitchroutersnmpntpmanagementaclsecurity
Accès de gestion
text
Variables
{{MGMT_SUBNET}}
{{WILDCARD_MASK}}
{{TACACS_IP}}
{{TACACS_KEY}}
! Désactiver Telnet, SSH v2 uniquementline vty 0 15transport input sshexec-timeout 5 0login locallogging synchronous! Générer les clés RSA (minimum 2048, recommandé 4096)crypto key generate rsa modulus 4096ip ssh version 2ip ssh time-out 60ip ssh authentication-retries 3! ACL de restriction sur les VTY (accès uniquement depuis sous-réseau de gestion)ip access-list standard MGMT-ACLpermit {{MGMT_SUBNET}} {{WILDCARD_MASK}}deny any logline vty 0 15access-class MGMT-ACL in! Authentification AAA avec TACACS+aaa new-modelaaa authentication login default group tacacs+ localaaa authorization exec default group tacacs+ localaaa accounting exec default start-stop group tacacs+tacacs-server host {{TACACS_IP}} key {{TACACS_KEY}}
text
Variables
{{ENABLE_SECRET}}
{{PLAIN}}
{{ADMIN_USER}}
{{PASSWORD}}
! Mots de passe sécurisésservice password-encryptionenable secret {{ENABLE_SECRET}}! enable secret utilise bcrypt (type 9) depuis IOS 15.3+! enable password {{PLAIN}} ← JAMAIS (stocké en clair)! Username avec privilege level et secret (type 9)username {{ADMIN_USER}} privilege 15 algorithm-type sha256 secret {{PASSWORD}}! Bannière légale (obligatoire pour les poursuites légales en cas d'intrusion)banner motd ^*** AUTHORIZED ACCESS ONLY ***This system is for authorized use only. All activity is logged and monitored.Unauthorized access is prohibited and subject to legal prosecution.^
SNMP
text
Variables
{{ANY_COMMUNITY}}
{{GROUP_NAME}}
{{SNMP_USER}}
{{AUTH_PASS}}
{{PRIV_PASS}}
{{VIEW_NAME}}
{{NMS_SERVER_IP}}
{{COMMUNITY}}
{{NMS_IP}}
! Désactiver SNMP v1 et v2c (non chiffrés, community string = mot de passe en clair)no snmp-server community publicno snmp-server community privateno snmp-server community {{ANY_COMMUNITY}}! Si SNMP non utilisé — désactiver complètementno snmp-server! SNMPv3 avec authPriv (authentification SHA + chiffrement AES)snmp-server group {{GROUP_NAME}} v3 privsnmp-server user {{SNMP_USER}} {{GROUP_NAME}} v3 auth sha {{AUTH_PASS}} priv aes 256 {{PRIV_PASS}}snmp-server view {{VIEW_NAME}} iso included! ACL sur les requêtes SNMP (autoriser uniquement le serveur NMS)ip access-list standard SNMP-ACLpermit {{NMS_SERVER_IP}}deny any logsnmp-server community {{COMMUNITY}} RO SNMP-ACL ! Si v2c obligatoiresnmp-server host {{NMS_IP}} version 3 priv {{SNMP_USER}}! Désactiver les traps inutiles, activer les critiquessnmp-server enable traps configsnmp-server enable traps envmonsnmp-server enable traps bgp
⚠ Attention —
SNMP v1/v2c transmettent la community string en clair dans chaque paquet. Sur un réseau sniffable, tout attaquant peut capturer la community string et lire/écrire la configuration complète de vos équipements réseau. Migrer vers SNMPv3 authPriv est non-négociable.
NTP
text
Variables
{{NTP_SERVER_1}}
{{NTP_SERVER_2}}
{{NTP_KEY}}
{{INTERNAL_NTP_SERVERS}}
{{MANAGEMENT_SUBNET}}
! Serveurs NTP internes (hiérarchie)ntp server {{NTP_SERVER_1}} preferntp server {{NTP_SERVER_2}}! Authentification NTP (empêche l'usurpation de serveur NTP)ntp authenticatentp authentication-key 1 md5 {{NTP_KEY}}ntp trusted-key 1ntp server {{NTP_SERVER_1}} key 1! Restreindre qui peut interroger ce routeur comme source NTPntp access-group peer NTP-PEERSntp access-group serve-only NTP-CLIENTSntp access-group query-only NTP-QUERYip access-list standard NTP-PEERSpermit {{INTERNAL_NTP_SERVERS}}ip access-list standard NTP-CLIENTSpermit {{MANAGEMENT_SUBNET}}! Vérifier la synchronisation NTP! show ntp status! show ntp associations
Sécurité des ports switch
text
Variables
{{UNUSED_PORTS}}
{{ACCESS_PORT}}
{{USER_VLAN}}
{{UPLINK}}
! Désactiver les ports inutilisésinterface range GigabitEthernet1/0/{{UNUSED_PORTS}}shutdownswitchport access vlan 999description DISABLED_PORTspanning-tree bpduguard enable! VLAN 999 = Black Hole VLAN (non routé, non trunk)vlan 999name BLACKHOLE! Désactiver CDP sur les ports vers les utilisateursinterface GigabitEthernet1/0/{{ACCESS_PORT}}no cdp enableno lldp transmitno lldp receive! BPDU Guard — protège contre les switches non autorisés! (envoyer un BPDU sur un port access = erreur, port bloqué immédiatement)spanning-tree portfast bpduguard default ! Globalement sur tous les ports PortFastinterface GigabitEthernet1/0/{{ACCESS_PORT}}spanning-tree portfastspanning-tree bpduguard enable! DHCP Snooping — empêche les DHCP servers non autorisés (rogue DHCP)ip dhcp snoopingip dhcp snooping vlan {{USER_VLAN}}no ip dhcp snooping information option ! Eviter les problèmes avec certains DHCP servers! Ports de confiance (uplinks vers le vrai serveur DHCP)interface GigabitEthernet1/0/{{UPLINK}}ip dhcp snooping trust! Dynamic ARP Inspection — empêche ARP spoofing/poisoningip arp inspection vlan {{USER_VLAN}}ip arp inspection validate src-mac dst-mac ipinterface GigabitEthernet1/0/{{UPLINK}}ip arp inspection trust
Sécurité des interfaces routeur
text
! Désactiver les fonctions inutiles sur les interfaces internesinterface GigabitEthernet0/0no ip proxy-arp ! Evite les attaques de type man-in-the-middleno ip redirects ! Pas de redirection ICMP (peut révéler la topologie)no ip unreachables ! Limiter les infos données à un attaquant sur WAN! Interface WAN — protection supplémentaireinterface GigabitEthernet0/1no ip directed-broadcast ! Empêche Smurf amplification attacksno ip proxy-arpno ip redirectsno ip unreachablesip access-group WAN-IN in! uRPF — Unicast Reverse Path Forwarding (anti-spoofing)interface GigabitEthernet0/1ip verify unicast source reachable-via rx! ACL anti-spoofing sur l'interface WAN (bloquer RFC 1918 entrant depuis Internet)ip access-list extended WAN-INdeny ip 10.0.0.0 0.255.255.255 any logdeny ip 172.16.0.0 0.15.255.255 any logdeny ip 192.168.0.0 0.0.255.255 any logdeny ip 127.0.0.0 0.255.255.255 any logdeny ip 0.0.0.0 0.255.255.255 any logdeny ip 169.254.0.0 0.0.255.255 any logdeny ip 224.0.0.0 31.255.255.255 any logpermit ip any any
Plan de contrôle (Control Plane Policing)
text
! CoPP — protège le CPU du routeur contre les attaques par flood vers le plan de contrôle! (BGP, OSPF, SSH, ICMP, etc. — limiter le trafic qui atteint le CPU)class-map match-any CRITICAL-TRAFFICmatch access-group name CRITICAL-ACLclass-map match-any IMPORTANT-TRAFFICmatch access-group name ROUTING-PROTOCOLSclass-map match-any NORMAL-TRAFFICmatch access-group name SSH-TRAFFICpolicy-map COPP-POLICYclass CRITICAL-TRAFFICpolice rate 8000 bps burst 1500class IMPORTANT-TRAFFICpolice rate 64000 bps burst 8000class NORMAL-TRAFFICpolice rate 32000 bps burst 4000class class-defaultdropcontrol-planeservice-policy input COPP-POLICY! Protections TCPip tcp synwait-time 10service tcp-keepalives-inservice tcp-keepalives-out! Désactiver les services legacy inutilesno service padno service udp-small-serversno service tcp-small-serversno ip bootp serverno service fingerno ip source-route ! Empêche le source routing (peut bypasser les ACLs)no ip gratuitous-arpsno ip http server ! Interface web HTTP non chiffréeno ip http secure-server ! Désactiver aussi HTTPS si non nécessaire
Logging
text
Variables
{{SYSLOG_IP}}
! Configurer le syslog centralisélogging host {{SYSLOG_IP}}logging trap informationallogging source-interface Loopback0 ! Source d'IP stable pour les logslogging on! Format des timestamps (critiques pour la forensique)service timestamps log datetime msec show-timezoneservice timestamps debug datetime msec show-timezone! Buffer local (en cas de perte de connectivité vers le syslog)logging buffered 1048576 informational! Vérifier les logs locaux! show logging | tail 50! Activer les logs sur les ACL (ajouter le mot-clé 'log' aux règles critiques)ip access-list extended WAN-INdeny ip any any log ! Loguer les refus
Sauvegarde et gestion de configuration
text
Variables
{{BACKUP_USER}}
{{BACKUP_SERVER}}
! Sauvegarder la configuration via TFTP/SCP (automatisé)archivepath scp://{{BACKUP_USER}}@{{BACKUP_SERVER}}/configs/$h-$twrite-memory! Chiffrer les mots de passe dans la configservice password-encryption! Après toute modification — sauvegarderwrite memory! ou : copy running-config startup-config
Checklist hardening réseau
Checklist0/16
💡 Tip —
no service pad, no service udp-small-servers, no service tcp-small-servers — ces services legacy Cisco (echo, chargen, discard) sont actifs par défaut sur les vieux IOS et créent une surface d'attaque inutile (amplification UDP, test de connectivité pour les attaquants). Les désactiver systématiquement dans tout template de configuration initiale.
OPS·BRAIN v1.075 notes · Securitylocal