Retrouvez cet article dans : Misc 19
1. La problématique de la consistance des configurations
Les inconsistances des configurations des équipements réseau dues à des erreurs de configuration, qu’elles soient volontaires ou involontaires, peuvent mettre en danger le réseau mais aussi les serveurs attachés à ce réseau. Ces inconsistances peuvent venir notamment des règles de filtrage ou ACL (Access Control List), définies mais jamais appliquées ou des règles de filtrage appliquées mais jamais définies. On peut aussi avoir au sein d’une ACL des règles qui peuvent être redondantes, voire contradictoires. Cet exemple illustre les redondances et incohérences contenues dans l'ACL suivante [1,2] : access-list 101 permit IP 10.0.0.0 0.255.255.255 10.0.0.0 0.255.255.255 access-list 101 permit IP 14.0.0.0 0.255.255.255 14.0.0.0 0.255.255.255 access-list 101 permit IP 14.7.6.0 0.0.0.255 14.7.6.0 0.0.0.255 access-list 101 deny IP 14.4.0.0 0.0.255.255 14.4.0.0 0.0.255.255Les inconsistances détectées sont les suivantes :
[2] access-list 101 permit ip 14.0.0.0 0.255.255.255 14.0.0.0 0.255.255.255 [3] access-list 101 permit ip 14.7.6.0 0.0.0.255 14.7.6.0 0.0.0.255Les lignes 2 et 3 sont redondantes.
[2] access-list 101 permit ip 14.0.0.0 0.255.255.255 14.0.0.0 0.255.255.255 [4] access-list 101 deny ip 14.4.0.0 0.0.255.255 14.4.0.0 0.0.255.255Les lignes 2 et 4 sont contradictoires. De manière générale, la configuration d’un équipement réseau est constituée de lignes référant à des éléments de configuration. Ces lignes de configuration suivent une syntaxe et un ordre de configuration qui sont propres à chaque type d’équipement. Par exemple, la configuration d’un équipement CISCO est foncièrement différente de celle d’un équipement JUNIPER. Même au sein d’un même constructeur comme CISCO, on peut constater que la configuration d’un PIX est très différente de celle d’un routeur. Chaque équipement met également en œuvre une sémantique différente qui peut engendrer des problèmes subtils comme appliquer une ACL sans pour autant être obligé de la définir ! Quels que soient cette syntaxe et cet ordre, si des éléments de configuration sont définis mais jamais appliqués, si des éléments de configuration sont appliqués sans être définis, si des lignes de configuration sont redondantes ou contradictoires, la configuration de l’équipement réseau est alors inconsistante et peut engendrer des comportements anormaux ou inattendus. L’inconsistance d’une configuration peut donc engendrer de sérieux problèmes de sécurité.
2. Exemple d'analyse
de la consistance de configuration des ACL Les ACL sont des éléments de configuration permettant de filtrer les flux réseau à des fins de sécurité. Il est donc essentiel d’analyser ces ACL en profondeur. Toute inconsistance détectée sur une ACL impliquant la sécurité, comme le filtrage des protocoles réseau, doit être connue et répertoriée. Nous considérerons qu’une configuration est consistante par rapport aux ACL si les deux conditions suivantes (ou invariants) sont remplies :- Tous les éléments de filtrage de type ACL définis doivent être référencés.
- Tous les éléments de filtrage de type ACL référencés doivent être définis.
# lecture d’une configuration
Lire le fichier de configuration
# stockage des filtrages dans des tableaux associatifs
POUR chaque ligne de la configuration FAIRE
Stocker dans acl_defined si la ligne définit une ACL
Stocker dans acl_referenced si la ligne référence une ACL
FIN POUR
# vérifier que les filtrages définis sont référencés
POUR chaque élément dans acl_defined FAIRE
Si élément n’appartient pas à acl_referenced
Alors une ACL est définie et pas référencée.
FIN POUR
# vérifier que les filtrages référencés sont définis
POUR chaque élément dans acl_referenced FAIRE
Si élément n’appartient pas à acl_defined
Alors une ACL est référencée mais pas définie.
FIN POUR
Le script 3. Exemple d'analyse de la consistance de configuration d'IPSEC
De même que pour les ACL et afin d'assurer les services réseau attendus, les configurations des services réseau doivent être analysées pour s'assurer de l'application de la politique de sécurité.3.1. Consistance de configuration des CryptoMap
Dans les MISC 15 & 16 – " IPSEC et router CISCO – Fiche Technique " –, des configurations CISCO implémentant IPSEC étaient expliquées. Nous proposons ici de vérifier la consistance d'une configuration IPSEC en considérant la configuration CISCOhostname conf_test ! crypto isakmp key 4cewao6wcbw83 address 192.168.1.154 ! crypto isakmp policy 10 encr 3des hash md5 authentication pre-share group 2 ! crypto ipsec transform-set chiff_auth esp-3des esp-md5-hmac ! crypto map VPN_1_1 10 ipsec-isakmp set peer 192.168.1.154 set transform-set chiff_auth match address 110 ! interface FastEthernet0 ip address 192.168.1.1 255.255.255.0 crypto map VPN_1_1 ! access-list 110 permit ip 10.0.1.0 0.0.0.255 10.0.2.0 0.0.0.255 ! endLe script
bash$ awk -f ./ipsec.sh ./conf_test bash$Modifions la configuration IPSEC afin d'introduire des inconsistances comme l'illustre la commande UNIX
bash$ diff ./conf_test ./conf_test1 1c1 < hostname conf_test --- > hostname conf_test1 11c11 < crypto ipsec transform-set chiff_auth esp-3des esp-md5-hmac --- > crypto ipsec transform-set chiff_auth1 esp-3des esp-md5-hmac 16c16 < match address 110 --- > match address 120 20c20 < crypto map VPN_1_1 --- > crypto map VPN_1_11Si on exécute ce script sur la nouvelle configuration IPSEC
bash$ awk -f ./ipsec.sh ./conf_test1 ./conf_test; déf/non réf;110;access-list 110 permit ip 10.0.1.0 0.0.0.255 10.0.2.0 0.0.0.255(line 22) ./conf_test; déf/non réf;chiff_auth1;crypto ipsec transform-set chiff_auth1 esp-3des esp-md5-hmac(line 11) ./conf_test; déf/non réf;VPN_1_1;crypto map VPN_1_1 10 ipsec-isakmp(line 13) ./conf_test; réf/not déf;chiff_auth ; set transform-set chiff_auth(line 15) ./conf_test; réf/not déf;120 ; match address 120(line 16) ./conf_test; réf/not déf;VPN_1_11 ;FastEthernet0; crypto map VPN_1_11(line 20) bash$Il doit être noté que CISCO ne permet pas de supprimer une cryptomap si celle-ci est appliquée sur des interfaces, à moins de la supprimer sur toutes les interfaces préalablement. En revanche, l'inconsistance de configuration d'une ACL, non définie mais appliquée dans une cryptomap, peut effectivement bloquer le routeur et le service réseau associé.
3.2. Consistance de configuration des politiques ISAKMP
Si on désire vérifier la consistance de configuration de la politique IPSEC# !/bin/sh
awk ‘
/crypto isakmp policy/, /!/ {
if ($0 ~ /crypto isakmp policy/) {
policy=$0;
} else {
# imprime une ligne de la politique de sécurité
if ($0 !~ /!/) print policy, $0;
}
# On trie et on imprime les doublons
}' $1 $2 | sort | uniq -u
Si on exécute ce script sur deux fichiers (bash$ ./ipsec_isakmp.sh ./ conf_test ./conf_test1 bash$En revanche, si on modifie dans
bash$ ./ipsec_isakmp.sh ./ conf_test ./conf_test1 crypto isakmp policy 10 encr 3des crypto isakmp policy 10 encr des crypto isakmp policy 10 group 1 crypto isakmp policy 10 group 2
3.3. Consistance de configuration des périmètres IPSEC
Si on désire vérifier les périmètres de configuration des réseaux privés virtuels IPSEC, l'approche consiste à analyser le graphe IPSEC engendré par les configurations des VPN IPSEC. Pour cela, nous considérerons tout d'abord que le nom d'une cryptomap suit la règle de configuration suivante :X: identifiant unique d'un VPN IPSECY: instance d'une nouvelle politique pour un VPN IPSEC

hostname conf_test ! crypto isakmp key 4cewao6wcbw83 address 192.168.1.154 crypto isakmp key pvntl2o9xsra5 address 192.168.1.155 crypto isakmp key 6rtzlmkw6awvp address 192.168.1.156 crypto isakmp key p0vzuxb74uvjx address 192.165.1.154 crypto isakmp key pfjgkw1ml3hl8 address 192.165.1.155 crypto isakmp key qgp5h3fblo92p address 192.165.1.156 ! crypto isakmp policy 10 encr 3des hash md5 authentication pre-share group 2 ! crypto ipsec transform-set chiff_auth1 esp-3des esp-md5-hmac ! crypto map VPN_1_1 10 ipsec-isakmp set peer 192.168.1.154 set peer 192.168.1.155 set peer 192.168.1.156 set transform-set chiff_auth match address 110 ! crypto map VPN_2_1 10 ipsec-isakmp set peer 192.165.1.154 set peer 192.165.1.155 set peer 192.165.1.156 set transform-set chiff_auth match address 120 ! interface FastEthernet0 ip address 192.168.1.1 255.255.255.0 crypto map VPN_1_1 ! interface FastEthernet1 ip address 192.165.1.1 255.255.255.0 crypto map VPN_2_1 ! access-list 110 permit ip 10.0.1.0 0.0.0.255 10.0.2.0 0.0.0.255 access-list 120 permit ip 10.0.3.0 0.0.0.255 10.0.4.0 0.0.0.255 ! endOn obtient alors le résultat suivant :
bash$ awk -f ./ipsec_extract.sh ./conf_test ./conf_test 1 192.168.1.1 192.168.1.154 ./conf_test 1 192.168.1.1 192.168.1.155 ./conf_test 1 192.168.1.1 192.168.1.156 ./conf_test 2 192.165.1.1 192.165.1.154 ./conf_test 2 192.165.1.1 192.165.1.155 ./conf_test 2 192.165.1.1 192.165.1.156Une fois la table IPSEC construite à partir de l'extraction des informations contenues dans les configurations, le produit cartésien de la table IPSEC par elle-même, conditionné par le fait que l'adresse IP de l'interface (où est appliquée une cryptomap) soit égale à l'adresse IP destinatrice du tunnel IPSEC et que les cryptomapId soient identiques, donne alors tous les arcs de notre graphe IPSEC comme l'illustre la requête SQL suivante :
SELECT
Ipsec.NomRouteur, Ipsec.CryptoMapId, Ipsec.IpAdresse, Ipsec.IpAdresseDestination,
Ipsec_1.NomRouteur, Ipsec_1.CryptoMapId, Ipsec_1.IpAdresse, Ipsec_1.IpAdresseDestination
FROM
Ipsec, Ipsec AS Ipsec_1
WHERE
Ipsec.IpAdresseDestination=Ipsec_1.IpAdresse and
Ipsec.CryptoMapId = Ipsec_1.CryptoMapId
Un sommet du graphe IPSEC est donc représenté par le couple (NomRouteur, cryptomapId) et un arc par un enregistrement trouvé par le produit cartésien précédemment décrit. Par ailleurs, l'asymétrie de configuration d'un tunnel IPSEC indique que le graphe IPSEC construit est dirigé comme l'illustre le schéma 1.



Fig. 2
Si on extrait des configurations les éléments permettant de construire la table IPSEC, on obtient alors après le produit cartésien les informations suivantes :
(routeur1,1) est ipsec-connecté à (routeur2,1) && (routeur2,1) est ipsec-connecté à (routeur1,1) (routeur1,1) est ipsec-connecté à (routeur3,1) && (routeur3,1) est ipsec-connecté à (routeur1,1) (routeur2,1) est ipsec-connecté à (routeur3,1) && (routeur3,1) est ipsec-connecté à (routeur2,1) (routeur2,2) est ipsec-connecté à (routeur4,2) && (routeur4,2) est ipsec-connecté à (routeur2,2) (routeur3,2) est ipsec-connecté à (routeur4,2) && (routeur4,2) est ipsec-connecté à (routeur3,2) (routeur3,2) est ipsec-connecté à (routeur2,2) && (routeur2,2) est ipsec-connecté à (routeur3,2)
Les composantes fortement connexes de notre graphe IPSEC sont donc {(routeur1,1), (routeur2,1), (routeur3,1)} et {(routeur2,2), (routeur3,2), (routeur3,2)} et permettent alors de vérifier les périmètres configurés. Dans notre exemple, les périmètres de sécurité sont bien restreints aux VPN IPSEC définis dans les configurations (VPN 1 et VPN 2).
Il est donc possible à partir d'un grand nombre de configurations réseau de retrouver les périmètres des réseaux privés virtuels IPSEC par une analyse des composantes fortement connexes du graphe IPSEC [5].
Enfin, si les composantes connexes (s’il existe un chemin entre toute paire de sommets (x, y) de la composante) du graphe IPSEC ne sont pas égales aux composantes fortement connexes (si pour toute paire de sommets (x, y) de la composante, il existe un chemin de x à y et de y à x) du graphe IPSEC, il y a alors des inconsistances de configuration des VPN IPSEC. De même, toute configuration non bidirectionnelle entre deux sommets montre aussi des inconsistances de configuration des VPN IPSEC.
4. Vers des politiques de consistance des configurations réseau
Les configurations des équipements réseau détiennent toute l'information permettant de construire le réseau et ses services. La politique de sécurité réseau " logique " peut se décliner en l’ensemble de règles de sécurité génériques suivantes garantissant la disponibilité et l’intégrité du réseau et de ses services : voir tableau ci-dessous.

5. Vers des outils d'analyse des configurations (Router Audit Tool)
Écrit par George M. Jones (<gmj@cisecurity.org>), RAT est distribué par le CIS (Center for Internet Security). Disponible gratuitement sur Internet pour un usage personnel, RAT est composé des programmes suivants :
rat: le programme principal.snarf: qui permet de télécharger les configurations des routeurs.ncat_config: qui permet de générer une configuration d’audit.ncat_report: qui permet de générer des rapports d’audit.
Avant de lancer tout audit, un fichier de configuration d’audit doit être défini afin de préciser les commandes d’audit ou de vérification de la configuration qui seront lancées. Ce fichier s’appuie sur une bibliothèque de règles définissant des standards de sécurité. Cette bibliothèque est aujourd’hui divisée en deux parties, Level-1 Benchmark, qui contient un ensemble de règles élémentaires et Level-2 Benchmark, qui contient des règles plus étendues.
Chaque règle contient les champs ou attributs suivants :
- Impact de sécurité : décrit l’impact de sécurité associé si la règle n’est pas appliquée.
- Importance : associe une valeur entre 1 et 10 reflétant l’importance de l’impact de sécurité si la règle n’est pas appliquée.
- Actions associées à la règle : décrit les actions pour corriger et donc appliquer la règle.
- Expression régulière définissant la règle : décrit une expression régulière à partir de laquelle l’outil vérifie si une règle est appliquée.
L’outil RAT est aussi accompagné d’un outil d’audit permettant de noter les éléments suivants :
- nombre de tests réalisés ;
- nombre de règles de sécurité appliquées ;
- nombre de règles de sécurité non appliquées ;
- pourcentage de règles de sécurité appliquées ;
- score pondéré par l’importance des règles de sécurité appliquées ;
- score pondéré par l’importance si toutes les règles de sécurité sont appliquées.
RAT est le premier outil permettant d’analyser les configurations des routeurs. Il évolue sans cesse et intègre désormais des vérifications de plus en plus évoluées. Cependant, les scores fournis doivent être interprétés non pas comme un niveau de sécurité, mais plutôt comme un indicateur d’application des règles de sécurité.
6. Conclusion
Les configurations des équipements réseau détiennent toute l'information permettant de construire le réseau et ses services. La vérification de ces configurations est et deviendra un enjeu majeur dans les années à venir. Par ailleurs, il s'agira aussi de définir un cadre complet permettant de décrire une politique de sécurité réseau, de vérifier l’application de la politique de sécurité dans les configurations des équipements réseau, de définir des indicateurs de sécurité afin d’établir un tableau de bord de la sécurité réseau, de quantifier le risque associé à la non application de la politique de sécurité et enfin de définir des priorités pour corriger les faiblesses de sécurité les plus critiques [6,7].
Références
- [1] Valois (D.), Llorens (C.), " Network device configuration validation ", Proceedings of 14th annual FIRST conference, Hawaii, 2002.
- [2] Llorens (C.), Valois (D.), Le Teigner (Y.), Gibouin (A.), " Computational complexity of the network routing logical security ", Proceedings of the IEEE international Information Assurance Workshop, Darmstadt – Germany, p. 37-49, 2003.
- [3] Warkhede (P.), Suri (S.), Varghese (G.), " Fast packet classification for two-dimensional conflict-free filters ", Proceedings of the Twentieth Annual Joint Conference of the IEEE Computer and Communications Societies, vol. 3, p. 1434-1443, 2001.
- [4] Eppstein (D.), Muthukrishnan (S.), " Internet packet filter management and rectangle geometry ", Proceedings of the twelfth annual ACM-SIAM symposium on Discrete algorithms, p. 827-835, 2001.
- [5] Brassard (G.), Bratley (P.), Fundamentals of algorithmics, Prentice Hall, ASINÂ : 0133350681, 1995.
- [6] Llorens (C.), Levier (L.), Tableaux de bord de la sécurité réseau, Eyrolles, ISBN : 2-212-11273-4, 2003.
- [7] Llorens (C.), Conférence SAR 2004, http://www.hds.utc.fr/sar04/files/llorens-pres.pdfÂ
 Retrouvez cet article dans : Misc 19





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.