mgl9701 - projet en génie logiciel v2.7 - michel hetu

92
Projet de synthèse Cartographie des solutions de sécurité dans le monde du logiciel libre MGL9701 - Projet en génie logiciel Michel Hétu - UQAM Version 2.7 2009-12-02

Upload: vanthuan

Post on 05-Jan-2017

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

Projet de synthèse

Cartographie des solutions de sécurité dans le monde du logiciel libre

MGL9701 - Projet en génie logiciel

Michel Hétu - UQAM

Version 2.7 2009-12-02

Page 2: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

1

Historique des révisions

Version Date Description Auteurs

0.1 2009-02-01 Création du document Michel Hétu

0.2 2009-02-02 Ajout du cadre de référence et de la bibliographie

Michel Hétu

0.3 2009-03-14 Ajout de la section 2 Ajout des références web

Michel Hétu

0.4 2009-03-21 Ajout des sections 3 et 4 Michel Hétu

0.5 2009-03-22 Ajout de la section 5 Michel Hétu

0.6 2009-04-04 Ajout de la section 6 et 7.5 et 7.6 Michel Hétu

0.7 2009-04-11 Ajout de la section 5.6 et 5.7 Michel Hétu

0.8 2009-04-13 Ajout de la section 7.1 à 7.4 Michel Hétu

0.9 2009-04-18 Ajout de la section 8 Michel Hétu

1.0 2009-04-26 Ajout à la section 8 Michel Hétu

1.1 2009-05-10 Ajout de la section 5.2 et section 5.9 Michel Hétu

1.2 2009-05-17 Ajout à la section 9.2 Michel Hétu

1.3 2009-05-23 Ajout du graphique en section 10 Michel Hétu

1.4 2009-06-06 Révisions Michel Hétu

1.5 2009-07-20 Ajout des normes 27000 Michel Hétu

1.6 2009-07-21 Ajout des normes COSO, COBIT, ITIL Michel Hétu

1.7 2009-07-23 Révisions Michel Hétu

1.8 2009-07-24 Révisions des références Michel Hétu

1.9 2009-07-26 Ajout de la figure en 2.7 Michel Hétu

2.0 2009-08-30 Ajout de PostgreSQL à la section 6.6 Michel Hétu

2.1 2009-09-06 Ajout à la section 6.6 Michel Hétu

2.2 2009-09-20 Ajout de la section 12 Michel Hétu

2.3 2009-09-27 Ajout à la section 12 Michel Hétu

2.4 2009-10-03 Révisions Michel Hétu

2.5 2009-11-18 Révisions Michel Hétu

2.6 2009-11-29 Révisions Michel Hétu

2.7 2009-12-02 Révisions Michel Hétu

Page 3: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

2

Table des matières

Historique des révisions.................................................................................................... 1

Table des matières............................................................................................................. 2

Liste des figures................................................................................................................. 4

Liste des tableaux.............................................................................................................. 5

Sigles et abréviations......................................................................................................... 7

1 Introduction ........................................................................................................... 9 1.1 Contexte..................................................................................................................................9 1.2 But et portée............................................................................................................................9

2 Les normes............................................................................................................ 12 2.1 Les certifications du domaine de la sécurité .........................................................................13 2.2 Le référentiel COSO.............................................................................................................14 2.3 Le référentiel COBIT............................................................................................................14 2.4 Le référentiel ITIL ................................................................................................................14 2.5 ISO 13335 : Lignes directrices pour la gestion de sécurité IT ..............................................15 2.6 ISO 15408 : Critères d’évaluation de la sécurité des technologies de l’information ............16 2.7 Les normes ISO 27000 .........................................................................................................17

3 Intégrité ................................................................................................................ 20 3.1 Certificat à clé publique de signature....................................................................................20 3.2 Code d’authentification de message .....................................................................................22 3.3 Empreinte numérique............................................................................................................23 3.4 Notarisation ..........................................................................................................................24

4 Irrévocabilité........................................................................................................ 25 4.1 Certificat à clé publique de signature....................................................................................25 4.2 Journalisation........................................................................................................................25 4.3 Conservation.........................................................................................................................27

5 Identification et authentification........................................................................ 28 5.1 Certificat à clé publique de signature....................................................................................30 5.2 Code d’usager .......................................................................................................................30 5.3 Mot de passe .........................................................................................................................30 5.4 Jeton......................................................................................................................................31 5.5 Carte à puce ..........................................................................................................................32 5.6 Biométrie ..............................................................................................................................32

6 Habilitation et contrôle d’accès .......................................................................... 33 6.1 Gestion des identités et des accès .........................................................................................33 6.2 Contrôle d’accès Web...........................................................................................................36 6.3 Certificat d’attribut ...............................................................................................................37 6.4 NOS/OS................................................................................................................................38 6.5 Application ...........................................................................................................................39

Page 4: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

3

6.6 Apparmor..............................................................................................................................39 6.7 SGBD ...................................................................................................................................41 6.8 Coupe-feu .............................................................................................................................45 6.9 Réseau Privé Virtuel .............................................................................................................47

7 Confidentialité...................................................................................................... 49 7.1 Certificat à clé publique de chiffrement................................................................................49 7.2 Chiffrement des données ......................................................................................................50 7.3 Chiffrement des communications .........................................................................................51

8 Disponibilité ......................................................................................................... 52 8.1 Redondance ..........................................................................................................................53 8.2 Balancement des charges......................................................................................................56 8.3 Mise en grappes ....................................................................................................................59 8.4 Relève ...................................................................................................................................60 8.5 Sauvegarde............................................................................................................................61 8.6 Conservation.........................................................................................................................62

9 Surveillance .......................................................................................................... 63 9.1 Surveillance réseau, serveur et station ..................................................................................63 9.2 Détection des intrusions........................................................................................................64 9.3 Analyseur de vulnérabilités ..................................................................................................66 9.4 Moniteur de contenu actif .....................................................................................................67 9.5 Détection des pourriels .........................................................................................................68 9.6 Détection de virus .................................................................................................................68 9.7 Outils d’audit ........................................................................................................................69

10 Administration ..................................................................................................... 70 10.1 Administration matérielle .....................................................................................................70 10.2 Administration logicielle ......................................................................................................70 10.3 Administration réseau...........................................................................................................73

11 Architecture de sécurité ...................................................................................... 74

12 Recommandations pour les logiciels de la chaire ............................................. 75 12.1 Les approches de sécurité pour les applications ...................................................................75 12.2 Pensez à la sécurité dès le départ ..........................................................................................76 12.3 Topologie des applications ...................................................................................................77 12.4 La ségrégation est la clé........................................................................................................77 12.5 Les solutions de sécurité web les plus populaires.................................................................79 12.6 La solution recommandée.....................................................................................................80 12.7 Les points de contrôle de sécurité.........................................................................................81 12.8 Modèle de déploiement recommandé ...................................................................................85

13 Conclusion ............................................................................................................ 87

14 Bibliographie........................................................................................................ 88

Page 5: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

4

Liste des figures

Figure 1 – Cadre de référence [adapté de 21] ................................................................................11

Figure 2 - Principaux référentiels [28] .............................................................................................13

Figure 3 - La norme ISO 13335 (source : ysosecure) .....................................................................15

Figure 4 - La norme ISO 27002 (source : SSI-Conseil)...................................................................17

Figure 5 - La roue de Deming (source : SSI-Conseil 2006).............................................................18

Figure 6 - Le processus d'un SMSI [9] ............................................................................................18

Figure 7 - Les normes 27000 ..........................................................................................................19

Figure 8 - Signature numérique [29]................................................................................................20

Figure 9 - La solution EJBCA..........................................................................................................21

Figure 10 - Code d'authentification de message .............................................................................22

Figure 11 - Solution de notarisation ................................................................................................24

Figure 12 - La journalisation avec Lasso.........................................................................................26

Figure 13 - La conservation avec splunk.........................................................................................27

Figure 14 - La gestion de jeton........................................................................................................31

Figure 15 - La gestion des identités et des accès ...........................................................................34

Figure 16 - Gestion avancée des annuaires LDAP .........................................................................35

Figure 17 - La solution OpenSSO ...................................................................................................36

Figure 18 - Contrôle d'accès Web...................................................................................................36

Figure 19 - Certificats d'attributs [29]...............................................................................................37

Figure 20 - Gestion conviviale des pare-feux..................................................................................46

Figure 21 - Réseau privé virtuel ......................................................................................................47

Figure 22 - Réseau privé virtuel avec IPSec ...................................................................................48

Figure 23 - Le chiffrement asymétrique [48]....................................................................................49

Figure 24 - Chiffrement des communications (source : Wikipedia) .................................................51

Figure 25 - Solution de stockage distribué ......................................................................................54

Figure 26 - Réseau de stockage .....................................................................................................55

Figure 27 - Équilibrage de la charge ...............................................................................................58

Figure 28 - Mise en grappes ...........................................................................................................59

Figure 29 - Solution de sauvegarde ................................................................................................61

Figure 30 - Surveillance de réseau .................................................................................................63

Page 6: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

5

Figure 31 - Gestion d'incidents et d'évènements.............................................................................64

Figure 32 - Détection des intrusions................................................................................................65

Figure 33 - Moniteur de contenu actif..............................................................................................67

Figure 34 - Gestion des images des serveurs.................................................................................71

Figure 35 - La virtualisation.............................................................................................................72

Figure 36 - Le contrôle d'accès au réseau ......................................................................................73

Figure 37 - Architecture de sécurité en logiciel libre........................................................................74

Figure 38 - Règle d'accès avec OpenSSO......................................................................................75

Figure 39 - Structure d’un site web .................................................................................................76

Figure 40 - Le modèle de rôles .......................................................................................................76

Figure 41 - Architecture multicouche [26]........................................................................................77

Figure 42 - La ségrégation est la clé [26] ........................................................................................78

Figure 43 - Gestionnaire d'accès (source : Sun) .............................................................................80

Figure 44 - Les points de contrôle de sécurité ................................................................................81

Figure 45 – Exemple de Captcha....................................................................................................82

Figure 46 – Détection des attaques (source : OWASP) ..................................................................83

Figure 47 - Apache comme serveur en façade (source : IBM) ........................................................84

Figure 48 - Scénario de déploiment ................................................................................................86

Liste des tableaux

Table 1 – Les fonctions de sécurité.................................................................................................10

Table 2 - Les principales normes de la sécurité ..............................................................................12

Table 3 – Les principaux systèmes de journalisation ......................................................................25

Table 4 - Les implantations « syslog » conformes à la norme RFC 3195 ......................................26

Table 5 – Les principales solutions d'authentification......................................................................29

Table 6 - Les fonctions cryptographiques de PostgreSQL ..............................................................44

Table 7 - Les modes d'opération de OpenVPN...............................................................................47

Table 8 - Mesure de la disponibilité.................................................................................................52

Table 9 – Les composantes d’un système de relève ......................................................................60

Table 10 – Les composantes liées à la conservation des données ................................................62

Table 11 - Les solutions de sécurité web les plus populaires..........................................................79

Table 12 – Durée de vie des sessions (source : CASES) ...............................................................82

Page 7: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

6

Table 13 - Les machines virtuelles et leurs fonctions dans la solution ............................................86

Page 8: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

7

Sigles et abréviations

ACL Access Control List AES Advanced Encryption Standard ARP Address Resolution Protocol CARP Common Address Redundancy Protocol COBIT Control Objectives for Business & Related Technology COSO Committee of Sponsoring Organization of the Treadway Commission CSP Cryptographic Service Provider DHCP Dynamic Host Configuration Protocol DNS Domain Name Service DRBD Distributed Replicated Block Device GBLA Gramm-Leach-Bliley Act HTTP HyperText Transfer Protocol HTTPS Hypertext Transfer Protocol over Secure Socket Layer ICP Infrastructure à clé publique IETF Internet Engineering Task Force IPSec Internet Protocol Security ISAKMP Internet Security Association and Key Management Protocol ISO International Organization for Standardization ISO/IEC ISO / International Electrotechnical Commission ITIL Information Technology Infrastructure Library JCA Java Cryptographic Architecture JCE Java Cryptographic Environment LAMP Linux, Apache, MySQL, PHP LDAP Lightweight Directory Access Protocol LGPL GNU Lesser General Public License MAC Message Authentication Code MD5 Message Digest 5 (algorithme de hachage) NAS Network Area Storage NIST National Institute of Standards and Technology NSA National Security Agency NTP Network Time Protocol OCSP Online Certificate Status Protocol OGC Office of Government Commerce PEM Privacy Enhanced Mail PKCS The Public-Key Cryptography Standards PKI Public-Key Infrastructure PKIX Public-Key Infrastructure X.509 RFC Request For Comments RSA Rivest, Shamir et Adleman. SAN Storage Area Network SHA-1 Secure Hash Algorithm Number 1 S/MIME Secure/Multipurpose Internet Mail Extensions SQL Structured Query Language

Page 9: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

8

SMSI Système de Management de la Sécurité de l’Information SOX Sarbanes-Oxley Act SSL Secure Socket Layer SSO Single Sign On TIC Technologie de l’information et des communications TLS Transport Layer Service RPV Réseau Virtuel Privé XML Extensible Markup Language

Page 10: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

9

1 Introduction

1.1 Contexte

Le sujet du présent projet a été choisi suite à une suggestion de M. Louis Martin qui y voit œuvre utile au sein de la Chaire de logiciel libre, Finance sociale et solidaire lancée officiellement le 29 janvier 2009. Le but de ce projet de synthèse est d’effectuer un survol des normes, bonnes pratiques et technologies permettant d’assurer la sécurité de l’information requise pour la famille de logiciels développée au sein de la Chaire pour ce secteur d'activité. La chaire se veut un incubateur de solutions et de composantes de logiciel libre pouvant être utilisées par les acteurs de l’économie sociale. L’objectif de ce projet est de cartographier les solutions libres pouvant servir à la conception d’architectures de sécurité en accord avec les bonnes pratiques du domaine. Le monde du logiciel libre offre quantité de solutions de sécurité. Ces solutions sont disponibles publiquement de l'Internet et peuvent être téléchargées à volonté et utilisées sans frais. Ce principe s’accorde bien avec celui de l’économie sociale. Ce projet de synthèse s’intéresse aux questions suivantes :

1. Est-ce que le portfolio des solutions de sécurité disponibles de l'Internet fournit un nombre suffisant de briques technologiques pour combler les besoins de sécurité d’une architecture de sécurité moderne?

2. Est-il concevable de créer une architecture de sécurité à partir de ces solutions?

1.2 But et portée

Ce document comporte trois volets. Le premier volet effectue un survol des normes les plus importantes régissant le domaine de la sécurité de l’information. Ces normes ont une portée internationale. Elles constituent un ensemble de référentiels répertoriant les meilleures pratiques de l’industrie permettant d’établir un modèle de gouvernance des TIC dans l’entreprise. Le second volet effectue un inventaire des solutions issues du monde du logiciel libre en fonction d’un cadre de référence émanant du Ministère de la Santé et des Services sociaux [21]. Cet inventaire servira de référentiel de solutions pour les architectures de sécurité conçues dans le cadre des travaux de la Chaire. Finalement, le troisième volet portera une attention particulière à la sécurité logicielle. Il s’attardera notamment à la sécurité des applications web afin d’apporter des solutions pratiques aux développeurs. Les solutions proposées viseront les plateformes de développement et les technologies en usage au sein de la Chaire.

Page 11: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

10

1.2.1 Les fonctions de sécurité

Le tableau suivant donne un aperçu des principales fonctions de sécurité inhérentes aux architectures de sécurité modernes. Une architecture de sécurité englobe un nombre important de processus, de composantes physiques et technologiques ayant pour but d’assurer la sécurité de l’information et des échanges électroniques. Les fonctions de sécurité couvertes dans le cadre de ce projet sont les suivantes: Fonctions Descriptions

Cette fonction permet de s’assurer qu’une information n’a pas été modifiée ou détruite sans autorisation de façon volontaire ou accidentelle.

L’irrévocabilité est un mécanisme visant à permettre à une partie de faire la preuve de l’existence d’une opération ou d’une transaction avec une autre partie. La signature permet de s’assurer qu’une action ou qu’un document est indéniable et clairement attribué à l’entité qui l’a généré.

La fonction d’authentification consiste à vérifier l'identité d'une entité (personne, ordinateur) afin d'autoriser l'accès de cette entité à des ressources.

Le contrôle d’accès décrit une liste de ressources et de données auxquelles une entité peut avoir accès une fois qu’elle a été dûment authentifiée. Elle contrôle les droits d’accès qui sont accordés et pour poser quels gestes.

La confidentialité permet de s’assurer qu’une information n’est pas divulguée ou mise à la disposition d’une entité ou d’un traitement non autorisé.

La disponibilité permet de s’assurer que les informations numériques et les systèmes sont accessibles en temps voulu et de la manière requise par une entité autorisée.

La surveillance a pour but de mettre en évidence les vulnérabilités d’un système. Elle offre des pistes de vérification et permet la protection contre les tentatives d’intrusion et les programmes malicieux.

L’administration permet une gestion sécuritaire des logiciels, ainsi que des équipements informatiques et de réseautique.

Table 1 – Les fonctions de sécurité

Page 12: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

11

1.2.2 Cadre de référence de la sécurité

La figure qui suit traduit les fonctions de sécurité considérées précédemment en un ensemble de mécanismes de sécurité apte à réaliser ces fonctions. Ces fonctions et mécanismes constituent le référentiel de sécurité qui sera utilisé tout au long de ce document. Ce référentiel de sécurité est utilisé comme guide pour la recherche de solutions dans le domaine du logiciel libre pouvant combler les différentes briques d’architecture requise. Une modification a toutefois été apportée au référentiel afin d’inclure le mécanisme de sécurité de la Gestion des identités et des accès qui gagne de plus en plus d’importance dans les architectures de sécurité modernes.

Figure 1 – Cadre de référence [adapté de 21]

Page 13: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

12

2 Les normes

Avant d’aborder la cartographie des solutions de sécurité dans le monde du logiciel libre, il convient d’établir un modèle de gouvernance permettant de concevoir une architecture de sécurité en fonction des besoins de l’organisation et non seulement des technologies. Pour ce faire, nous disposons d’un certain nombre de normes que nous expliquerons sommairement dans cette section. Le domaine de la sécurité comprend un très grand nombre de normes mais les normes suivantes constituent une fondation solide pour établir un modèle de gouvernance et une architecture de sécurité pour une organisation. Normes Descriptions COSO Committee of Sponsoring Organization of the Treadway

Commission [1] COBIT Control Objectives for Business & Related Technology [2] ITIL Information Technology Infrastructure Library [3] ISO/IEC IS 13335-1 Concepts et modèles pour le management de la sécurité des

TIC [4] ISO/IEC IS 13335-2 Techniques de gestion des risques pour les TIC [5] ISO/IEC TR 13335-4 Sélection de mesures de sécurité [6] ISO/IEC TR 13335-5 Guide pour la gestion de sécurité du réseau [7] ISO/CEI 27000 Introduction et vue globale de la famille des standards, ainsi

qu'un glossaire des termes communs [8] ISO/CEI 27001 Description des exigences pour la mise en place d'un

Système de Management de la Sécurité de l'Information (SMSI) [9]

ISO/CEI 27002 Code de bonnes pratiques pour la gestion de la sécurité d'information [10]

ISO/CEI 27003 Guide d’implantation d’un SMSI [11] ISO/CEI 27004 Guide d’implantation d’un système de mesure [12] ISO/CEI 27005 Proposition d'une méthode d'appréciation des risques (cette

phase est obligatoire dans le cadre d'une certification ISO/CEI 27001) [13]

ISO/CEI 27006 Contient des informations sur le profil propre de l'auditeur 27001 [14]

ISO 15408 Critères communs pour l'évaluation de la sécurité des Technologies de l'Information [15] [16] [17]

Table 2 - Les principales normes de la sécurité

Page 14: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

13

2.1 Les certifications du domaine de la sécurité

Un domaine d’activité très populaire dans le monde de la sécurité d’aujourd’hui concerne la conformité. Sous la poussée des différentes législations nées des nombreux scandales financiers connus au début de la décennie, les organisations font face au défi de la conformité. Les institutions financières et les sociétés publiques sont soumises à des réglementations telles que la loi C-198 au Canada, SOX, GBLA aux États-Unis qui exigent que les dirigeants d’entreprise puissent garantir l’intégrité des états financiers trimestriels qu’ils produisent et conséquemment les données comptables et les logiciels utilisés pour les produire. Elles sont donc tenues d’établir un modèle de gouvernance des TIC et empruntent en général la voie de la certification afin de démontrer cette conformité.

COSOCOSO

COBIT

ISO 9000

ISO 27001-2

ITILQuoi Comment

Figure 2 - Principaux référentiels [28]

En termes de gouvernance, les normes COSO [1], COBIT [2], ITIL [3] et ISO 27000 sont les plus utilisées. Les certifications ISO 20001 [9] et ISO 20002 [10] sont celles directement liées au domaine de la sécurité. Le processus de certification ISO 27001/2 est généralement assez long et coûteux. La durée varie en fonction du niveau de maturité de l’organisation en matière de sécurité (6 mois à 2 ans en moyenne). Les logiciels peuvent également être soumis à un processus de certification. C’est le cas de la certification ISO 15408 [15] [16] [17]. Les logiciels civils ou militaires peuvent être classés selon une échelle de confiance de 1 à 7 que nous verrons plus loin. Ce processus est très coûteux. Quantité de logiciels en libre pourraient obtenir leurs lettres de noblesse en étant certifiés. Malheureusement, le coût prohibitif de la certification ISO 15408 (la certification AL4 de Windows 2000 aurait coûté près de 4 millions de dollars) exclut ces logiciels du processus.

Page 15: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

14

Une avenue intéressante pour l’UQAM serait d’obtenir les formations requises afin d’effectuer elle-même ces certifications comme agent autorisé par la suite dans le domaine du logiciel libre et de l’économie sociale à des coûts plus raisonnables.

2.2 Le référentiel COSO

Le « Committee of Sponsoring Organization of the Treadway Commission » a élaboré un cadre d’analyse visant à évaluer les mesures de contrôle interne mises en place par les organisations afin de rendre plus fiable l’information financière délivrée. Ce cadre d’analyse, appelé référentiel COSO, étudie cinq composantes essentielles pour un contrôle interne efficace :

• L’environnement de contrôle • L’évaluation des risques • Les activités de contrôle • L’information et la communication • La supervision

2.3 Le référentiel COBIT

« Control Objectives for Business & Related Technology » est un référentiel des meilleures pratiques en audit et maîtrise des risques des systèmes d’information. COBIT sert de support pour les activités de gouvernance et d’audit des systèmes d’information d’un grand nombre d’entreprises privées et publiques. COBIT permet d’évaluer et de contrôler les systèmes informatiques afin qu’il contribue constamment aux objectifs de l’entreprise. COBIT représente tout système d’information par 34 processus regroupés en 4 domaines:

• Planification et organisation (PO) • Acquisition et mise en place (AMP) • Distribution et support (DS) • Surveillance (S)

2.4 Le référentiel ITIL

« Information Technology Infrastructure Library » est un référentiel des meilleures pratiques de la gestion des services informatiques. ITIL a été développé par l’Office of Government Commerce (OGC) britannique et est maintenant adopté par les grandes entreprises internationales tant dans le secteur public que privé. ITIL décrit les processus de gestion à implémenter dans les fonctions de gestion suivantes :

• Gestion de la configuration • Gestion du changement • Gestion des versions • Gestion du support

Page 16: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

15

• Gestion des incidents • Gestion des problèmes • Gestion de la sécurité

ITIL propose de manière détaillée les processus de gestion à utiliser pour gérer efficacement les services informatiques mais en bout de ligne laisse les entreprises choisir les outils requis pour implémenter ces processus.

2.5 ISO 13335 : Lignes directrices pour la gestion de sécurité IT

La norme ISO 13335 [4] [5] [6] [7] propose une approche du management de la sécurité des technologies de l’information. Elle aborde le sujet à différents niveaux dans ses rapports techniques 13335-1 à 13335-5. Elle trouve son origine des quatre documents publiés en 1996 considérés comme des références dans le monde de la sécurité.

Figure 3 - La norme ISO 13335 (source : ysosecure)

Aujourd’hui, la norme a été révisée. Elle propose d’abord une approche stratégique dans ses parties 13335-1 et 13335-2. La première partie présente les concepts et modèles de la sécurité des technologies de l’information. La seconde propose une approche du management et de la planification de la sécurité des technologies de l’information. Ces deux parties sont destinées à donner aux dirigeants et aux responsables de la sécurité de l’information d’une organisation, les concepts et méthodes relatifs au management de la sécurité des technologies de l’information. Les deux autres documents sont des rapports techniques.

• ISO/IEC IS 13335-1 : Concepts et modèles pour le management de la sécurité des TIC.

• ISO/IEC IS 13335-2 : Techniques de gestion des risques pour les TIC. • SO/IEC TR 13335-4 2000: Sélection de mesures de sécurité. • ISO/IEC TR 13335-5 2001: Guide pour la gestion de sécurité du réseau.

Page 17: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

16

2.6 ISO 15408 : Critères d’évaluation de la sécurité des technologies de l’information

La norme ISO 15408 [15] [16] [17] baptisée « Critères communs » permet de certifier les niveaux de défense procurés par les composantes de sécurité des systèmes d'information. Cette norme vise à vérifier si un produit est sécuritaire (pare-feu, système de détection d’intrusion, système d’exploitation, serveur mandataire, etc.). Elle attribue au produit évalué un niveau de sécurité sur une échelle de 1 à 7. La norme ISO 15408 définit les critères communs de sécurité que les technologies doivent respecter. Ces critères communs permettent l’évaluation des fonctions de sécurité via les onze classes fonctionnelles suivantes :

• L'audit • La communication • Le support cryptographique • La protection des données utilisateur • L'identification et l'authentification • La gestion des fonctions de sécurité • La vie privée • La protection des fonctions de sécurité • L'utilisation des ressources • L’accès aux composantes • Les voies de confiance (trusted paths)

Le nom de "Critères communs" origine du fait que les critères de validation sont communs entre les grands pays industriels tels que les États-Unis, le Japon, le Canada, l’Allemagne, la Grande-Bretagne, la France, l’Italie, etc. Les EAL (Evaluation Assurance Level) constituent l'échelle d'assurance prédéfinie des "Critères communs". Il y a sept niveaux :

• EAL1 - Testé fonctionnellement • EAL2 - Testé structurellement • EAL3 - Testé et vérifié méthodiquement • EAL4 - Conçu, testé et vérifié méthodiquement • EAL5 - Conçu et testé de façon semi-formelle • EAL6 - Vérifié, conçu et testé de façon semi-formelle • EAL7 -Vérifié, conçu et testé de façon formelle

La norme ISO 15408 affecte donc la manière de concevoir et de réaliser un logiciel. Les logiciels commerciaux certifiés selon la norme ISO 15408 ne dépassent pas normalement le niveau EAL4. Les niveaux supérieurs étant en général observés chez les systèmes critiques que l’on retrouve dans le monde militaire.

Page 18: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

17

2.7 Les normes ISO 27000

La série ISO 27000 constitue l’ensemble de normes le plus en vogue aujourd’hui. Les deux normes les plus utilisées en ce moment sont les normes ISO 27001 [9] et ISO 27002 [10]. La norme ISO 27002 notamment constitue le référentiel des bonnes pratiques de la sécurité le plus populaire du monde de la sécurité. La norme ISO/IEC 27002:2005 définit onze domaines de sécurité de l'information au sein desquelles ont été définies 133 mesures de sécurité (contrôles). Chacune des mesures de sécurité permet de s'assurer que les bonnes pratiques communément admises sont mises en œuvre et respectées pour chacune des catégories dans chaque domaine de la sécurité de l'information.

Figure 4 - La norme ISO 27002 (source : SSI-Conseil) La figure ci-dessus comprend douze branches plutôt que onze car elle inclut la gestion du risque comme première étape à tout projet en sécurité.

La norme ISO 27001 est un cadre de référence pour tout système de gestion de la sécurité de l’information. La norme ISO 27001 décrit les processus de gestion à mettre en œuvre afin de se conformer aux bonnes pratiques de sécurité édictées dans la norme ISO 20002. La norme ISO 27001 étudie et évalue un système de gestion de la sécurité de l’information selon différents axes :

Page 19: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

18

• Politique de sécurité • Organisation de la sécurité • Inventaire et classification • Sécurité du personnel • Sécurité de l’environnement et des biens physiques • Administration • Contrôle d’accès • Développement et maintenance • Plan de continuité • Conformité légale et audit de contrôle

La présente norme internationale encourage l'adoption d'une approche processus pour l'établissement, la mise en oeuvre, le fonctionnement, la surveillance et le réexamen, la mise à jour et l'amélioration du SMSI (système de management de la sécurité de l’information) d'un organisme.

Figure 5 - La roue de Deming (source : SSI-Conseil 2006)

La norme adopte le modèle de processus "Planifier-Déployer-Contrôler-Agir" (PDCA) ou roue de Deming qui est appliqué à la structure de tous les processus d’un SMSI. La figure suivante illustre comment un SMSI utilise comme élément d'entrée les exigences relatives à la sécurité de l'information et les attentes des parties intéressées, et comment il produit, par les actions et processus nécessaires, les résultats de sécurité de l'information qui satisfont ces exigences et ces attentes.

Figure 6 - Le processus d'un SMSI [9]

Page 20: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

19

La norme ISO 27001 est en somme le moteur animant les autres normes de la série. Parmi les normes présentes dans la série 27000, les normes suivantes sont celles les plus intimement liées à la norme ISO 27001.

Figure 7 - Les normes 27000

2.7.1 Standards publiés

• ISO/CEI 27001 : Standard de certification des SMSI (publié en 2005) • ISO/CEI 27002 : Guide des bonnes pratiques en SMSI (précédemment connu

sous le nom de ISO/CEI 17799, et avant BS 7799 Partie 1 (dernière révision en 2005, et renuméroté en ISO/CEI 27002:2005 en juillet 2007)

• ISO/CEI 27005 : Standard de gestion de risques liés à la sécurité de l'information (publié le 4 juin 2008)

• ISO/CEI 27006 : Guide de processus de certification et d'enregistrement (publié en 2007)

• ISO/CEI 27011 : Guide pour l'implémentation de ISO/CEI 27002 dans l'industrie des télécommunications (publié le 15 décembre 2008)

• ISO/CEI 27799 : Guide pour l'implémentation de ISO/CEI 27002 dans l'industrie de la santé (publié le 12 juin 2008) (sera sûrement renommé en 2701x)

2.7.2 Standards en préparation

• ISO/CEI 27000 : Introduction et vue globale de la famille des standards, ainsi qu'un glossaire des termes communs

• ISO/CEI 27003 : Guide d'implémentation d'un SMSI • ISO/CEI 27004 : Standard de mesures de management de la sécurité de

l'information • ISO/CEI 27007 : Guide directeur pour l'audit des SMSI

Page 21: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

20

3 Intégrité

L'intégrité des données est une fonction de base du monde de la sécurité. Elle fournit l’assurance que les données qu’elles soient en cours de traitement, transmises ou encore conservées, soient maintenues exemptes d’altération volontaire ou accidentelle. Cette section explorera les mécanismes de sécurité utilisés généralement pour s’assurer que les données sont exactes et authentiques.

3.1 Certificat à clé publique de signature

Les certificats de signature sont généralement utilisés pour signer des documents (fichiers et courriels) ou encore s'authentifier sur un site web. La signature numérique est une marque personnelle apposée sur un document électronique par l'utilisation d'un procédé cryptographique. Elle permet de s’assurer de l'identité du signataire d’un document. Chaque détenteur se voit attribuer une paire de clés. Une d’elles est publique et l’autre privée. La clé publique est généralement disponible aux autres utilisateurs utilisant l’infrastructure à clé publique. Elle sert à protéger la confidentialité d'un document et à vérifier la signature d'un autre détenteur. La clé privée est détenue uniquement par le détenteur. L'une sert à signer un document électronique et l'autre à le déchiffrer pour en vérifier l'intégrité.

Figure 8 - Signature numérique [29]

Afin de s'assurer de la validité d'une signature, le destinataire doit consulter la liste de certificats révoqués publiée par la solution. La consultation de la liste de révocation se fait en ligne et de façon automatique lors de l'utilisation du logiciel intégrant cette technologie.

Page 22: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

21

La procédure permettant de signer des données est relativement simple comme en témoigne l’exemple suivant :

Signature dsa = Signature.getInstance("SHA1withDSA"); PrivateKey priv = pair.getPrivate(); dsa.initSign(priv); dsa.update(data); byte[] sig = dsa.sign();

La mise en œuvre d’une infrastructure à clés publiques nécessite plusieurs composantes logicielles et surtout la définition d’un ensemble de processus nommé CPS « Certificate Practice Statement » permettant la gestion du cycle de vie des certificats émis par le système.

Figure 9 - La solution EJBCA

Une solution gratuite peut être obtenue via le lien suivant : http://www.ejbca.org/

Page 23: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

22

3.2 Code d’authentification de message

Un code d'authentification de message ou CAM est un code accompagnant des données dans le but d'assurer l'intégrité de ces dernières, en permettant de vérifier qu'elles n'ont subies aucune modification, après une transmission par exemple.

Le concept est relativement semblable aux fonctions de hachage. Il s’agit ici aussi d’algorithmes qui créent un petit bloc de données de taille fixe. La grande différence est que ce bloc ne se base plus uniquement sur le message, mais également sur une clé secrète. Tout comme les fonctions de hachage, les CAM n’ont pas besoin d’être réversibles. En effet, le récepteur exécutera le même calcul sur le message et le comparera avec le CAM reçu.

KeyGenerator kg = KeyGenerator.getInstance("HmacMD5"); SecretKey sk = kg.generateKey(); Mac mac = Mac.getInstance("HmacMD5"); mac.init(sk); byte[] result = mac.doFinal("Hi There".getBytes());

Le CAM assure non seulement une fonction de vérification de l'intégrité du message, comme le permettrait une simple fonction de hachage mais de plus authentifie l’expéditeur, détenteur de la clé secrète. Il peut également être employé comme un chiffrement supplémentaire (rare) et peut être calculé avant ou après le chiffrement principal, bien qu’il soit généralement conseillé de le faire avant.

Figure 10 - Code d'authentification de message

http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html

Page 24: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

23

3.3 Empreinte numérique

Le résultat d'une fonction de hachage forme une empreinte cryptographique ou encore un condensé. Les fonctions de hachage peuvent être mises en œuvre aisément grâce aux bibliothèques cryptographiques offertes par le langage java. En voici en exemple. Supposons que nous avons trois tableaux d'octets soit i1, i2 et i3 formant le message dont nous voulons calculer. Ce digest (ou "hash") pourrait être calculé par les appels suivants:

MessageDigest sha = MessageDigest.getInstance("SHA-1"); sha.update(i1); sha.update(i2); sha.update(i3); byte[] hash = sha.digest();

http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#MessageDigest

Les fonctions cryptographiques de l’implantation de référence de SUN sont généralement suffisantes mais pour des fonctions additionnelles, il existe un fournisseur en logiciel libre fournissant une implantation JCE et une JCA gratuite. L’implantation inclut les points suivants:

• Une bibliothèque pour lire et écrire des objets encodés en ASN.1. • Des Générateurs pour les versions 1 et 3 des certificats X.509 et des fichiers

PKCS12. • Des Générateurs pour la version 2 des certificats de l'attribut X.509. • Des Générateurs/Processeurs pour S/MIME et CMS (PKCS7). • Des Générateurs/Processeurs pour OCSP (RFC 2560). • Des Générateurs/Processeurs pour TSP (RFC 3161). • Des Générateurs/Processeurs pour OpenPGP (RFC 2440). • Une version jar signée, appropriée pour les JDK 1.4/1.5 et la JCE de Sun. • L'API légère fonctionne avec tout, de la J2ME à la JDK 1.5.

La solution peut être obtenue via le lien suivant : http://www.bouncycastle.org/fr/index.html

Page 25: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

24

3.4 Notarisation

Un serveur de signature est une application pour les signatures automatiques. Il peut être invoqué par d’autres applications lui déléguant ainsi l’autorité de signer des transactions, messages ou assertions variés de manière centralisée. Un bon serveur de signature doit offrir une autorité d’horodatage (compatible RFC 3161). La fonction de signature et la fonction d’horodatage sont des briques fondamentales pouvant permettre de réaliser des transactions comportant un bon niveau d’intégrité. La notarisation des transactions est liée à des réglementations et à la classification des données. Les preuves liées aux transactions peuvent être conservées pendant des années. Le SignServer est une solution gratuite qui a été conçue de manière à offrir de la haute disponibilité et supporte la configuration par grappes pour un maximum de fiabilité.

Figure 11 - Solution de notarisation

La solution peut être obtenue via le lien suivant : http://www.signserver.org/

Page 26: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

25

4 Irrévocabilité

L’irrévocabilité est un mécanisme complexe impliquant certaines fonctions cryptographiques et des processus de sorte à permettre à une partie de faire la preuve de l’existence d’une opération ou d’une transaction avec une autre partie. Cette preuve ne peut être assemblée que si la partie devant faire la preuve s’est dotée de l’infrastructure nécessaire pour réaliser les fonctions de notarisation (serveur de signature), de journalisation (enregistrement des transactions signées par le serveur de signature) et de conservation (durée de vie des journaux en fonction de la classification des données) nécessaires pour supporter cette fonction d’irrévocabilité.

4.1 Certificat à clé publique de signature

La fonction de signature cryptographique a déjà été traitée à la section 2.1. Le même mécanisme est employé pour réaliser la fonction d’irrévocabilité.

4.2 Journalisation

La journalisation est l'action de relever dans un journal l’ensemble des évènements qui se produisent dans un système informatique pendant son fonctionnement. Des règles de filtrage permettent en général de contrôler la somme des évènements collectés. Ces journaux sont de la première importance lorsque l’on doit effectuer des activités d’informatique judiciaire. Il n’existe pas de solution unique et les journaux d’activité sont le plus souvent liés aux plateformes. Le tableau suivant décrit les principaux systèmes de journalisation pouvant être retrouvés sur les plateformes courantes.

Plateformes Systèmes de journalisation

Linux/Unix http://www.infodrom.org/projects/sysklogd/

Applications http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/ http://logging.apache.org/log4j/1.2/index.html http://commons.apache.org/logging/

Windows 200X http://technet.microsoft.com/fr-fr/library/dd491940.aspx

Table 3 – Les principaux systèmes de journalisation Syslog est le mécanisme de journalisation le plus populaire sous Unix et Linux. Il a été élaboré à une époque où la sécurité des journaux n'était pas une considération majeure. En conséquence, il ne comporte pas les contrôles de sécurité nécessaires pour préserver la confidentialité, l'intégrité et la disponibilité de journaux produits.

Page 27: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

26

Comme à travers le temps, la sécurité des journaux est devenue une plus grande préoccupation, plusieurs implantations de « syslog » ont été créées mettant davantage l'accent sur la sécurité. La plupart ont été fondées sur la norme RFC 3195, qui a été conçue spécifiquement pour améliorer la sécurité de la fonction « syslog ». Les implantations basées sur la norme RFC 3195 [23] offrent désormais un transport fiable utilisant TCP et des transmissions sécuritaires à travers SSL. Le tableau suivant énumère des implantations de « syslog » selon la norme RFC 3195.

Plateformes Implantations RFC 3195

Unix et Linux http://freshmeat.net/projects/syslog-ng

Unix et Linux http://www.rsyslog.com

Windows http://sourceforge.net/projects/lassolog

Table 4 - Les implantations « syslog » conformes à la norme RFC 3195 La figure suivante démontre comment personnaliser la fonction de journalisation avec la solution Lasso sous Windows.

Figure 12 - La journalisation avec Lasso

Page 28: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

27

4.3 Conservation

La conservation est une fonction importante d’une architecture de sécurité. La conservation des données permet de réaliser ultérieurement des activités d’informatique judiciaire aussi nommées « Digital forensics » lorsqu’un crime ou une activité malveillante est suspecté avoir été commis. Le but de l'informatique judiciaire consiste à enquêter de sorte à trouver une preuve appelée artefact numérique. Le terme artefact numérique peut inclure un système informatique, un support de stockage comme un disque dur ou un CD-ROM, un document électronique ou même une séquence de paquets se déplaçant sur un réseau informatique. Les recommandations contenues dans le guide du NIST 800-63 [22] conseillent la conservation des données en fonction de la classification de celles-ci. Par exemple, des données classées 1 selon la méthode d’analyse de risques MEHARI ne réclament rien de particulier tandis que de l’information classée 4 réclame une durée de conservation de 10 années.

Avec Splunk, les utilisateurs peuvent indexer, effectuer des recherches et analyser l'ensemble de leurs données informatiques à partir d'un seul emplacement en temps réel. La solution permet d'enquêter sur les incidents de sécurité et de répondre aux exigences de conformité des entreprises. Elle offre la possibilité de faire des enquêtes sur les incidents rapidement car toutes les données requises sont disponibles en un seul endroit, en temps réel. Splunk collecte et conserve les journaux et les données de n'importe quel système et dispositif de sécurité.

Figure 13 - La conservation avec splunk

La solution peut être obtenue via le lien suivant : http://www.splunk.com/

Page 29: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

28

5 Identification et authentification

La fonction d’authentification consiste, pour un système informatique, à vérifier l'identité d'une entité (personne, ordinateur) afin d'autoriser l'accès de cette entité à des ressources (systèmes, réseaux, applications...). L'authentification permet donc de valider l'authenticité de l'entité en question. La procédure d’authentification afin d’être gérée convenablement est généralement accompagnée de certains processus tels que l’enregistrement, l’émission, la certification et la révocation des identifiants. La méthode d’authentification utilisée est également soumise à des critères tels que le niveau de criticité des données accédées, l’origine de l’accès (interne, externe) et le niveau de contrôle de la posture du poste de travail accédant les ressources. Les recommandations issues du guide du NIST 800-63 [22] sont reconnues et appliquées tant par les gouvernements Canadiens et Américains que par l’entreprise privée. Le tableau suivant décrit un ensemble de solutions d’authentification issu du domaine du logiciel libre. Ces solutions offrent une gamme variée de méthodes d’authentification telles que des authentifications aux des services d’annuaire ou encore des authentifications en mode fédérée.

Briques Éditeurs

Authentification et SSO

Authentification et SSO

Authentification, SSO contrôle d’accès, délégation, méta annuaire

Fédération d’identité

Fédération d’identité

Page 30: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

29

Briques Éditeurs

Fédération d’identité

Infrastructure à clé publique

SSO Web

Authentification, SSO contrôle d’accès, délégation, fédération d’identité

Annuaire LDAP

Annuaire LDAP

Annuaire LDAP

Table 5 – Les principales solutions d'authentification

Page 31: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

30

5.1 Certificat à clé publique de signature

L’authentification par certificat X.509 est considérée comme une authentification forte lorsque le certificat réside sur un jeton. Le cycle de vie des certificats est géré par des administrateurs de l’organisation. L’émission d’un certificat nécessite normalement un processus d’identification de l’utilisateur qui doit fournir une ou des preuves d’identité en produisant par exemple son permis de conduire ou encore une identification visuelle d’un supérieur hiérarchique. Pour être considéré comme une authentification forte, le certificat doit reposer sur un média non reproductible. Nous verrons plus loin une solution en logiciel libre permettant de créer des jetons matériels.

5.2 Code d’usager

Le code usager est l’identifiant le plus populaire du monde de la sécurité. Le code usager doit identifier de manière unique un utilisateur d’un système. Il est composé généralement de caractères alphanumériques. Il existe une multitude d’applications et systèmes utilisant le code usager comme moyen d’identification d’un utilisateur. Plusieurs solutions sont disponibles en logiciel libre. Les solutions les plus populaires sont les suivantes :

http://www.jasig.org/cas

http://freeradius.org/

http://www.gazi.edu.tr/tacacs/

5.3 Mot de passe

Le mot de passe est le compagnon du code usager. Il varie en taille mais le mot de passe de 8 caractères est très fréquent pour l’usager ordinaire mais peut comporter aisément 12 caractères dans le cas des mots de passe des administrateurs de systèmes. Des politiques reconnues à l’égard des mots de passe sont publiées par l’institut SANS et peuvent être consultées sur le site web http://www.sans.org.

Page 32: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

31

5.4 Jeton

Lorsque la criticité des données que l’on accède est élevée, il convient généralement d’utiliser une méthode d’authentification plus forte que le mot de passe. L’utilisation d’un jeton permet d’ajouter la notion du « quelque chose que l’on possède » à la notion du « quelque chose que l’on connaît » proposée par l’authentification par mot de passe. On appelle communément cette manière de s’authentifier, une authentification double facteur ou encore une authentification forte. Il existe un projet sur le réputé site http://sourceforge.net nommé « Hard Token Management Framework » ayant pour objectif de permettre à une organisation de gérer le cycle de vie de jetons de type cartes à puce ou de clés USB. Il communique avec les jetons par le biais d'une interface PKCS11 [24]. Il s'agit d'une extension à la solution EJBCA. La plateforme vise les développements en langage Java.

Figure 14 - La gestion de jeton

La solution peut être obtenue via le lien suivant : http://www.hardtokenmgmt.org/index.html

Page 33: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

32

5.5 Carte à puce

Voir la section précédente.

5.6 Biométrie

Aucune information n’a été trouvée à ce sujet dans le monde du logiciel libre.

Page 34: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

33

6 Habilitation et contrôle d’accès

Le contrôle d'accès consiste à vérifier si une entité demandant d'accéder à une ressource a les droits nécessaires pour le faire. Un contrôle d'accès offre donc la possibilité d'accéder à des ressources physiques (un département) ou logiques (une application informatique). Le contrôle d’accès peut être réalisé à l'aide de mécanismes permettant l'authentification de l'entité soit par mot de passe, carte à puce ou autres et par la vérification de ses habilitations pour les ressources qu’elle désire accéder.

Les moyens technologiques permettant le contrôle d’accès sont multiples. Le contrôle d’accès peut prendre la forme de simples « Access Control List », bien connu sur les systèmes d’exploitation UNIX et Windows. On le retrouve aussi sur le périmètre de l’entreprise avec les réseaux virtuels privés, les serveurs mandataires et les coupe-feux. Il permet également de contrôler les accès aux bases de données et aux annuaires LDAP.

6.1 Gestion des identités et des accès

Dans le domaine du contrôle d’accès, l’approche la plus reconnue et la plus efficace est sans contredit celle utilisant une solution de GIA (Gestion des identités et des accès). Cette solution est désormais mature et plus de 10 fournisseurs nous offrent les fonctionnalités d’approvisionnement en utilisateurs et privilèges via des flux de travail automatisés dans le monde commercial. Des applications libre-service permettent également de déléguer la gestion des utilisateurs et des droits d’accès aux fonctionnels des unités d’affaires ayant une compréhension plus précise des règles d’affaires de leurs unités et donc une meilleure compréhension des privilèges qu’ils accordent. Une application de certification des privilèges permet également de gérer des campagnes annuelles de certification des privilèges afin d’éviter les incontournables accumulations de privilèges en absence de ce processus. Les solutions de GIA couvrent en général bon nombre des besoins de contrôle d’accès requis par les diverses réglementations (SOX, GBLA, C-198, etc.) étant apparues suite aux scandales financiers connus au début des années 2000. La capacité des solutions de GIA de pouvoir approvisionner tous les systèmes et applications à partir d’une source autoritaire (en général l’application des ressources humaines) à travers le cycle de vie des employés dans l’entreprise (embauche, promotion, retraire, congédiement, etc.) permet d’éviter les principaux problèmes liés à la gestion des identités soit :

• La présence de comptes orphelins • L’accumulation de privilèges de promotion en promotion

Page 35: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

34

• Le manque de moyen et de rapports permettant de recadrer les privilèges • Le manque d’automatisation des processus • Les erreurs liées à l’approvisionnement manuel • Etc.

Figure 15 - La gestion des identités et des accès

Selon nos recherches, une seule solution aussi complète existe en logiciel libre dans ce domaine du contrôle d’accès. La solution peut être obtenue via le lien suivant : http://www.openiam.com/index.php/IDM/IDM-Overview.html

Page 36: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

35

InterLDAP est une solution permettant une gestion avancée des annuaires LDAP. Elle permet la création de modèles de délégation de la gestion des utilisateurs et des droits d’accès essentiels aux entreprises d’aujourd’hui. La solution est composée de différents modules répondant à des problématiques bien distinctes mais complémentaires. Les modules les plus importants sont les suivants :

• LSC (LDAP Synchronization Connector) : moteur de synchronisation d'annuaires LDAP depuis ou vers des fichiers plats (CSV, LDIF) et des bases de données.

• LAAP (Liberty Alliance Attribute Provider) : fournisseur d'attributs Liberty Alliance.

• WUI (Web User Interface) : interface de gestion de contenu d'annuaire, avec gestion avancée du schéma et des autorisations.

Figure 16 - Gestion avancée des annuaires LDAP

La solution peut être obtenue via le lien suivant : http://wiki.interldap.ow2.org/xwiki/bin/view/Main/WebHome

Page 37: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

36

6.2 Contrôle d’accès Web

Une variété de solutions très populaire depuis les dernières 10 années est celle liée au contrôle d’accès web. La solution OpenSSO offre la gamme complète des fonctionnalités pour ce type de contrôle. Cette solution de contrôle d’accès web est la même que celle vendue commercialement par le vendeur SUN sous le nom de Java System Access Manager. C’est celle qui inspirera donc le plus confiance de la part des partenaires et utilisateurs étant donné que ce produit est exploité commercialement et protège déjà des applications d’affaires partout dans le monde. Cette solution pourra donc servir à sécuriser des applications d’affaires ayant une vitrine sur le web. Le contrôle d’accès peut être effectué de manière déclarative ou programmatique. La méthode déclarative est une méthode d’accès à gros grains qui utilise seulement des règles d’accès configurées au niveau du système. Des agents déployés sur les composantes web (serveurs web et serveurs applicatifs) interceptent les requêtes aux ressources (pages HTML, JSP, etc.) et requièrent une décision de la part du centre de décision. La méthode programmatique implique le concours des applications qui deviennent des agents effectuant des appels explicites au centre de décision. Cette méthode est dite à grains fins car les autorisations peuvent être granulées au niveau d’un bouton ou d’une boîte de texte du formulaire. Figure 17 - La solution OpenSSO

Figure 18 - Contrôle d'accès Web

Ces solutions peuvent être obtenues via les liens suivants :

https://opensso.dev.java.net/

Access Control http://www.openiam.com/index.php/AM/AM-Overview.html

Page 38: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

37

6.3 Certificat d’attribut

Ce mécanisme profite de la fondation offerte par une infrastructure à clés publiques pour retourner des attributs de certificat supplémentaires lors de l’authentification. Ces attributs servent à lier une entité à des habilitations, par exemple des rôles ou des permissions.

Figure 19 - Certificats d'attributs [29]

Encore une fois, outre le modèle de gouvernance de l’infrastructure à clés publiques à mettre en place, l’aspect technologique est disponible gratuitement via la solution EJBCA déjà discutée dans ce document. La solution peut être obtenue via le lien suivant : http://www.ejbca.org/

Page 39: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

38

6.4 NOS/OS

Sous UNIX, les ACLs ne remplacent pas la méthode habituelle des droits, pour garder une compatibilité, elles s’ajoutent à elle, ce qui permet aux systèmes l'utilisant de rester conformes à la norme POSIX. Les systèmes de type UNIX n'acceptent que trois types de droits :

• Lecture ; • Écriture ; • Exécution,

Pour trois types d’utilisateurs:

• Le propriétaire du fichier ; • Les membres du groupe auquel appartient le fichier ; • Tous les autres utilisateurs.

En utilisant cette méthode, on couvre de nombreux cas, mais l'intervention de l'administrateur est souvent nécessaire pour créer les groupes qui permettront de partager des fichiers entre plusieurs utilisateurs, tout en les gardant confidentiels face aux autres. Les ACLs permettent de combler ce manque. On peut permettre à n'importe quel utilisateur, ou groupe, un des trois droits (lecture, écriture et exécution) et cela sans être limité par le nombre d'utilisateurs que l'on veut ajouter.

Sous Windows, les ACLs sont implantées par le système de fichiers NTFS et prises en charge par Windows NT 4.0 et ses successeurs (Windows 2000, Windows XP, Windows Server 2003 et Windows Vista). Les ACLs peuvent être définis sur des fichiers ou des répertoires. Sous NTFS, les ACLs acceptent les types de droits suivants :

• Parcours d'un dossier ; • Liste d'un dossier ; • Lecture des méta-données ; • Ajout de fichier ; • Ajout de répertoire ; • Ajout de données à un fichier existant ; • Modification des droits ; • Suppression ; • Lecture ; • Appropriation ; • Exécution.

Page 40: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

39

6.5 Application

La sécurité des applications peut être exploitée selon deux méthodes. La première consiste à gérer la sécurité de manière déclarative, c’est-à-dire, d’utiliser un système de sécurité externe pour protéger les accès aux applications. La deuxième dite programmatique réclame le concours des applications pour la gestion des accès de la part des utilisateurs. La première méthode est très désirable pour les administrateurs de la sécurité car les déclarations nécessaires à la gestion des accès sont indépendantes des applications et donc des propriétaires de ces applications. Les politiques mises en place peuvent l’être sans avoir à obtenir le consentement des propriétaires des applications. Par contre, la méthode déclarative ne permet toutefois qu’un contrôle des accès à gros grains. Les solutions modSecurity, Apparmor et SELinux correspondent à cette méthode. La deuxième méthode quant à elle permet un contrôle des accès à grains fins et permet l’affichage des éléments d’un formulaire en fonction des politiques d’accès spécifiques à l’utilisateur. En général, la création d’un formulaire variera dynamiquement en fonction du rôle ou du groupe associé à l’utilisateur. Un exemple de cette méthode est ACEGI.

6.5.1 Pare-feu applicatif (modSecurity)

ModSecurity est un système de détection d’intrusion et un moteur de prévention de failles de sécurité au sein des applications web. Il fonctionne comme un module Apache ou bien de manière autonome. Il permet de filtrer les requêtes, d’analyser le contenu des formulaires, de journaliser les requêtes, d’effectuer du filtrage HTTPS et des données compressées. La solution peut être obtenue via le lien suivant : http://www.modsecurity.org/

6.6 Apparmor

AppArmor ou « Application Armor » est un logiciel de sécurité pour Linux édité sous Licence publique générale GNU. Il est actuellement développé par Novell. La solution permet à l'administrateur système d'associer à chaque programme un profil de sécurité qui restreint ses capacités. Il accompagne le traditionnel modèle d'Unix du contrôle d'accès discrétionnaire DAC en lui permettant d'utiliser le contrôle d'accès obligatoire MAC conçu par la NSA (National Security Agency). La solution peut être obtenue via le lien suivant : http://en.opensuse.org/AppArmor

Page 41: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

40

6.6.1 SELinux ou Security-Enhanced Linux

SELinux conçu par la NSA (National Security Agency) est un module de sécurité optionnel ajouté au noyau Linux. SELinux intègre un système de contrôle d'accès obligatoire selon le modèle MAC (mandatory access control) au noyau Linux.

Sous un système standard de contrôle d'accès discrétionnaire tel que Linux, une application ou un processus exécuté en tant qu'utilisateur (UID ou SUID) reçoit la permission de l'utilisateur sur des objets tels que des fichiers, des « sockets » et d'autres processus. L'exécution d'un noyau MAC SELinux permet de protéger le système contre des applications malveillantes ou défectueuses qui peuvent endommager ou détruire le système. SELinux définit les droits d'accès et de transition de chaque utilisateur, application, processus et fichier du système. SELinux gouverne alors les interactions de ces sujets et objets à l'aide d'une politique de sécurité qui spécifie le degré de rigueur ou de souplesse d'une installation donnée de Linux. La solution peut être obtenue via le lien suivant : http://selinux.sourceforge.net/

6.6.2 Spring Security (ACEGI)

Une des plateformes de développement les plus populaires est sans conteste la plateforme Spring. Spring a fait sienne la solution de sécurité offerte précédemment par ACEGI qui est devenue « Spring Security ». La solution supporte un grand nombre de dispositifs de sécurité tel que :

• La solution de SSO OpenID • La norme WS-Security • Le SSO avec CAS (Central Authentication Service) ou JOSSO • Les annotations de sécurité de EJB3 • La sécurité selon le modèle REST • Etc.

La solution peut être obtenue via le lien suivant : http://static.springframework.org/spring-security/site/index.html

Page 42: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

41

6.7 SGBD

Le Système de Gestion de Base des Données le plus populaire dans le marché du logiciel libre est MySQL. On recense plus de 4 millions d’installations dans le monde. Sur le plan de la sécurité, MySQL supporte les stratégies de haute disponibilité grâce à l’approche multi tiers et à la redondance. De plus, le système offre la possibilité de gérer les privilèges de manière granulaire. Les privilèges sont les suivants :

• Alter • Delete • Create • Drop • Execute • Select • Update

Le tableau qui suit démontre les options offertes par la solution pour la gestion des privilèges. L’accès aux données peut nécessiter si requis une authentification via mot de passe ou encore via SSL.

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...] ON {tbl_name | * | *.* | db_name.*} TO user_name [IDENTIFIED BY [PASSWORD] 'password'] [, user_name [IDENTIFIED BY 'password'] ...] [REQUIRE NONE | [{SSL| X509}] [CIPHER cipher [AND]] [ISSUER issuer [AND]] [SUBJECT subject]] [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # | MAX_UPDATES_PER_HOUR # | MAX_CONNECTIONS_PER_HOUR #]]

La solution permet également d’assurer de la confidentialité des données via le chiffrement. Par exemple, la fonction AES_ENCRYPT () chiffre une chaîne de caractères et renvoie une chaîne binaire. AES_DECRYPT () décrypte la chaîne chiffrée et retourne la chaîne originale. Vous pouvez utiliser les fonctions AES pour stocker des données sous une forme chiffrée en modifiant vos requêtes de la manière suivante :

INSERT INTO t VALUES (1,AES_ENCRYPT('text','password')); La solution peut être obtenue via le lien suivant : http://www.mysql.com/

Page 43: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

42

PostgreSQL est un système de gestion de base de données relationnelle et objet (SGBDRO). Ce projet a plus de 15 ans de développement à son actif et offre une architecture éprouvée tant pour sa fiabilité que pour l'intégrité des données. Il fonctionne sur tous les principaux systèmes d'exploitation, dont Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), et Windows. PostgreSQL inclut des fonctions de sécurité plus élaborées que MySQL notamment au niveau des algorithmes cryptographiques offerts. Les sections suivantes décrivent de manière sommaire les mécanismes de sécurité du système.

6.7.1 Authentification

Une bonne pratique dans le monde des SGBDs, à l’instar des autres systèmes, est d’identifier un utilisateur voulant accéder à de l’information. À ce niveau, PostgreSQL offre une panoplie de méthodes d'authentification différentes. Les méthodes les plus importantes sont les suivantes:

• Mot de passe • Certificat • MD5 • Kerberos • LDAP

L'authentification du client est contrôlée par un fichier, traditionnellement nommé pg_hba.conf. Les lignes qui suivent décrivent le fonctionnement de la sécurité et démontre l’usage du fichier de configuration.

# Si ces trois lignes traitent seules les connexions locales, elles n'autorisent les # utilisateurs locaux qu'à se connecter à leur propre base de données (base ayant # le même nom que leur nom d'utilisateur) exception faite des administrateurs et # des membres du rôle "support" qui peuvent se connecter à toutes les bases de # données. Le fichier $PGDATA/admins contient une liste de noms # d'administrateurs. Un mot de passe est requis dans tous les cas. # # Aussi, un utilisateur de l’hôte 192.168.12.10 peut se connecter à la base de # données « postgres » via une authentification basée md5. # # TYPE DATABASE USER CIDR-ADDRESS METHOD local sameuser all md5 local all @admins md5 local all +support md5 host postgres all 192.168.12.10/32 md5

Page 44: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

43

6.7.2 Autorisation

PostgreSQL gère les droits d'accès aux bases de données en utilisant le concept de rôle. Un rôle peut être vu soit comme un utilisateur de la base des données, soit comme un groupe d'utilisateurs de la base des données, suivant la façon dont le rôle est configuré. Les rôles peuvent posséder des objets de la base de données (par exemple des tables) et peuvent affecter des droits sur ces objets à d'autres rôles pour contrôler qui a accès à ces objets. De plus, il est possible de déléguer un rôle à un autre rôle, l'autorisant ainsi à utiliser les droits affectés au rôle dont il est membre. Les privilèges associés aux rôles sont les suivants :

• SELECT • INSERT • UPDATE • DELETE • REFERENCES • TRIGGER • CREATE • CONNECT • TEMPORARY • EXECUTE • USAGE

La gestion des rôles est réalisée via un langage de commande. Par exemple, la première ligne de commande sert à créer un rôle, la seconde à octroyer les droits d’administrateur au rôle dev et donc aux utilisateurs assignés à ce rôle et finalement la dernière commande est utilisée pour supprimer le rôle dev existant.

CREATE ROLE dev; GRANT dev TO admins; DROP ROLE dev;

La configuration de l'authentification du client détermine avec quel rôle de base la connexion cliente se connectera. Comme le rôle détermine l'ensemble des droits disponibles pour le client connecté, il est important de configurer cela soigneusement quand un environnement multi-utilisateur est mis en place.

Page 45: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

44

6.7.3 Fonctions cryptographiques

PostgreSQL offre également des fonctions cryptographiques par l’intermédiaire du programme pgcrypto. Le tableau ci-dessous démontre les possibilités de PostgreSQL en cette matière. Le programme s’appuie sur OpenPGP et OpenSSL de sorte à élargir l’ensemble des fonctions cryptographiques disponibles.

Fonctions De base Avec OpenSSL MD5 oui oui SHA1 oui oui SHA224/256/384/512 oui oui Other digest algorithms non oui Blowfish oui oui AES oui oui DES/3DES/CAST5 non oui Raw encryption oui oui PGP Symmetric encryption oui oui PGP Public-Key encryption oui oui

Table 6 - Les fonctions cryptographiques de PostgreSQL Les fonctions cryptographiques offertes via le programme pgcrypto permettront donc de générer, par exemple, le haché d’un mot de passe ou encore de créer un code d’authentification d’un message (MAC) pour un témoin (cookie). Les méthodes sont invoquées de la manière suivante : digest(data text, type text) returns bytea digest(data bytea, type text) returns bytea hmac(data text, key text, type text) returns bytea hmac(data bytea, key text, type text) returns bytea pgp_sym_encrypt_bytea(data bytea, psw text [, options text ]) returns bytea

La base de données PostgreSQL est donc très bien équipée pour traiter les données sensibles telles que les numéros d’assurance sociale, les numéros de carte de crédit, les numéros de comptes bancaires ou autres données nominatives jugées confidentielles par les différentes lois sur la protection de la vie privée à travers le monde.

Page 46: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

45

6.8 Coupe-feu

Le coupe-feu est un mécanisme essentiel de la sécurité. Il sert de premier rempart pour l’entreprise contre les attaques extérieures. Deux coupe-feux se distinguent dans le monde du logiciel libre. Il s’agit de SmoothWall Express et de IPCop. Ces solutions sont populaires car elles sont conviviales grâce à leurs interfaces web faciles à utiliser. Malgré tout, des solutions telles que netfilter et ipfilter demeurent tout de même des solutions populaires et fiables.

6.8.1 IPCop et SmoothWall Express

La solution IPCop offre un moyen simple mais puissant pour configurer un coupe-feu sur une architecture de type PC. Elle peut protéger un réseau familial ou de petites ou moyennes entreprises (SOHO). Elle offre la possibilité de créer une zone démilitarisée ainsi que des tunnels en réseau privé virtuel. Il est à noter que IPCop est une solution complète incluant son propre système d’exploitation bastionné.

IPCop peut également servir de serveur mandataire (proxy), de serveur fournissant des adresses IP dynamiques (DHCP), de relais DNS, de serveur DNS dynamique, de serveur de temps (NTP). Il est de plus extensible via l’installation de modules additionnels (plugins). On peut donc ajouter bien d'autres fonctions permettant de réaliser du contrôle de contenu, de gérer des listes noires, des listes d'accès, de contrôler le trafic, etc.

À l'origine, IPCop était un « fork » de la distribution Linux Smoothwall, depuis ces deux projets se sont développés indépendamment, IPCop conservant une approche en logiciel libre plus pure que SmoothWall qui offre une version commerciale.

La solution peut être obtenue via le lien suivant : http://www.ipcop.org/ et http://www.smoothwall.org/ .

Page 47: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

46

6.8.2 Firewall Builder

Pour les mordus des solutions de coupe-feux originales telles que netfilter ou ipfilter, il est possible d’adjoindre une composante améliorant la convivialité de ces solutions. Il s’agit de la solution Firewall Builder. La solution permet de configurer ces coupe-feux via une interface web plutôt qu’à travers la ligne de commande.

Figure 20 - Gestion conviviale des pare-feux

La solution peut être obtenue via le lien suivant : http://www.fwbuilder.org/

Page 48: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

47

6.9 Réseau Privé Virtuel

Une autre solution très intéressante et surtout très utile dans le domaine du contrôle d’accès est le Réseau Privé Virtuel ou RPV. Cette solution se décline en deux grandes familles soit le RPV-SSL et le RPV-IPSEC. Les spécifications de IPSEC (IP Security) proviennent du IETF (Internet Engineering Task Force).

Figure 21 - Réseau privé virtuel

La première famille convient bien aux utilisateurs car il ne nécessite pas de client lourd sur les postes clients. Un simple fureteur web fait l’affaire. Dans le second cas, un client IPSEC doit être installé sur le poste de travail de l’utilisateur. La configuration des RPV-IPSEC est également plus complexe. Voilà pourquoi, le protocole IPSEC est plus souvent utilisé pour créer des canaux virtuels entre machines.

La grande force d'OpenVPN est d'être extrêmement facile à installer et à configurer, ce qui est rarement le cas pour des outils utilisés pour créer des RPVs. De plus, la solution se retrouve sur un grand nombre de plateformes comme Linux, Microsoft Windows 2000/XP/Vista, OpenBSD, FreeBSD, NetBSD, Mac OS X et Solaris. Le RPV peut être utilisé selon deux modes. Le premier mode, le plus facile, utilise une clé partagée. Un second mode plus sécuritaire repose sur une infrastructure à clés publiques. Le tableau suivant résume les avantages et les inconvénients des deux modes :

Mode OpenVPN Clefs partagées SSL Mode de cryptographie: Symétrique Asymétrique/Symétrique Implantation: Plus facile Plus compliquée Vitesse: Plus rapide Plus lente Consommation CPU: Plus petite Plus grande Échange des clefs: OUI NON Renouvellement des clefs: NON OUI Authentification des passerelles: NON OUI

Table 7 - Les modes d'opération de OpenVPN La solution peut être obtenue via le lien suivant : http://openvpn.net/

Page 49: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

48

Un exemple de la seconde famille de RPV est le très célèbre FreeS/WAN. Cette solution est aussi connue pour sa complexité et est représentative de cette famille de RPV. Le protocole au cœur du RPV IPSec, ISAKMP ou « Internet Security Association and Key Management Prococol » réclame l’utilisation d’une ICP. La solution peut être téléchargée et installée comme une solution complète mais elle est aussi souvent intégrée à d’autres solutions de coupe-feux comme SmoothWall ou encore Astaro, un coupe-feu commercial très réputé. Dans cet exemple, le Client RPV IPSec doit se connecter au réseau local derrière le routeur RPV Linux. Le Client RPV est connecté à Internet via une connexion commutée ou un accès DSL. Le Client RPV aura une adresse IP virtuelle dans le réseau local distant.

Figure 22 - Réseau privé virtuel avec IPSec

La solution peut être obtenue via le lien suivant : http://www.freeswan.org/

Page 50: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

49

7 Confidentialité

En informatique, la confidentialité fait partie, avec l'intégrité et la disponibilité, des trois grands principes de sécurité informatique. La confidentialité est définie comme un moyen de s'assurer que l'information n'est accessible qu'à ceux dont l'accès est autorisé. Dans la pratique, la confidentialité est atteinte par les techniques de la cryptographie moderne.

7.1 Certificat à clé publique de chiffrement

Le chiffrement asymétrique n’est pas, règle générale, utilisée pour le chiffrement de gros blocs de données car le chiffrement asymétrique est très exigeant et serait trop lent. Les certificats de chiffrement sont le plus souvent utilisés dans les applications de courriel électronique pour chiffrer certains courriels dont le contenu est confidentiel. L'utilisation des certificats pour chiffrer et signer des courriels se fait en utilisant le standard S/MIME qui permet l'encapsulation des données cryptographiques dans le format MIME des courriels. Les certificats électroniques se distinguent des solutions de simple cryptographie (signature et chiffrement) comme OpenPGP par le fait qu'ils renferment des attributs ou champs d'information certifiés par des autorités de certification reconnues telles que VeriSign ou Entrust.

Figure 23 - Le chiffrement asymétrique [48]

Les partenaires ou collègues qui vous envoient des courriels utilisent la partie publique de votre certificat pour chiffrer le contenu que vous serez seul à pouvoir déchiffrer. Le chiffrement asymétrique résout le problème du partage de la même clé, élément essentiel du chiffrement symétrique. La solution peut être obtenue via le lien suivant : http://www.ejbca.net

Page 51: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

50

7.2 Chiffrement des données

Truecrypt est une solution de chiffrement de disque fonctionnant sous Windows Vista/XP, Mac OS X et Linux. Cette solution permet de se déplacer avec son ordinateur portable avec plus de sécurité. Le chiffrement est automatique et transparent. Le logiciel peut chiffrer tant le disque dur que les médias mobiles (clés USB, CD et DVD). La solution peut être obtenue via le lien suivant : http://www.truecrypt.org/

Les fonctions de chiffrement fournies par l’implantation de référence du JDK1.6 sont en général très convenables pour la plupart des besoins en cryptographie. L’architecture du système cryptographique est très flexible et encapsule les fonctions de sécurité derrière des interfaces normalisées appelées « Cryptographic Service Provider » ou CSP. L’utilisation en est simple comme en témoigne l’extrait de code suivant : import javax.crypto.*; Cipher aesCipher; aesCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

aesCipher.init(Cipher.ENCRYPT_MODE, aesKey); byte[] cleartext = "C’est un exemple".getBytes(); byte[] ciphertext = aesCipher.doFinal(cleartext); L’implantation de référence de SUN peut être obtenue via le lien suivant : http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#SimpleEncrEx Dans le cas ou des fonctions additionnelles sont requises, par exemple, l’utilisation d’une taille de clé supérieure à ce que la loi américaine autorise (128 bits), il existe un fournisseur en logiciel libre européen fournissant une implantation JCE et une JCA gratuite.

La solution peut être obtenue via le lien suivant : http://www.bouncycastle.org/fr/index.html

Page 52: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

51

7.3 Chiffrement des communications

Un autre aspect du chiffrement est la protection des données en transit à travers les réseaux. Le protocole le plus populaire pour cette fonction est sans contredit le protocole « Secure Socket Layer ». La version 3 du protocole est devenue la version du protocole officiel « Transport Layer Security V1» mais l’usage de l’ancien nom demeure toujours généralisé afin de désigner ce protocole. Le protocole est décrit sommairement ci-dessous.

Figure 24 - Chiffrement des communications (source : Wikipedia)

Les solutions les plus populaires sont les suivantes:

http://www.openssl.org/

http://www.openssh.org/fr/index.html

http://winscp.net/eng/index.php

http://www.modssl.org/ http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

Page 53: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

52

8 Disponibilité

La haute disponibilité est un terme souvent utilisé dans le monde des technologies de l’information. Dans l’esprit des exploitants, on parle d'architecture de systèmes ou de services dont le taux de disponibilité est acceptable. La disponibilité est aujourd'hui un enjeu important des infrastructures informatiques. On estime aujourd'hui que l’indisponibilité d'un service informatique peut entraîner des coûts astronomiques pour des domaines de l'industrie tels que le domaine bancaire ou celui de l’énergie où l'arrêt des opérations de production peut mettre l’existence de l’entreprise en péril ou encore avoir un effet désastreux chez les consommateurs. Plusieurs moyens complémentaires sont utilisés pour améliorer la haute disponibilité :

1. La mise en place d'une infrastructure comportant de la redondance matérielle. On crée des grappes de haute disponibilité dont l’objectif est d'assurer un service en évitant au maximum les indisponibilités.

2. On effectue du balancement de la charge en tirant profit des grappes de serveurs décrits précédemment.

3. On prévoit un site secondaire offrant une infrastructure redondante ou du moins pouvant assurer les services essentiels du site primaire.

Pour mesurer la disponibilité, on utilise souvent un pourcentage composé de ‘9’. Les 9 désignent en fait la quantité de temps d’indisponibilité sur une année pour un service donné.

Pourcentages Indisponibilités

99% Moins de 3,65 jours par an

99,9% Moins de 8,75 heures par an

99,99%, Moins de 52 minutes par an

99,999%, Moins de 5,2 minutes par an

99,9999%, Moins de 54,8 secondes par an

99,99999%, Moins de 3,1 secondes par an

Table 8 - Mesure de la disponibilité

Page 54: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

53

8.1 Redondance

La redondance est un sujet très vaste. À la base, la redondance permet à un service de demeurer disponible même dans le cas de bris matériel ou de défaillance logicielle. Le principe étant de dupliquer le service sur plusieurs serveurs de sorte à pouvoir récupérer la charge sur les serveurs restants lorsqu’un serveur éprouve des problèmes ou requiert de la maintenance. Afin de nous familiariser avec ce principe, nous allons décrire deux solutions très populaires dans le monde de Linux.

8.1.1 Common Address Redundancy Protocol

« Common Address Redundancy Protocol » ou CARP est un protocole permettant à un groupe de serveurs sur un même segment réseau de partager une adresse IP. CARP est une alternative sécurisée et libre aux protocoles « Virtual Router Redundancy Protocol » développés par CISCO. CARP appose une signature cryptographique aux messages en transit ce qui est avantageux en termes de sécurité.

On appelle un groupe de serveurs utilisant CARP un "groupe de redondance". Le groupe de redondance se voit attribuer une adresse IP partagée entre les membres du groupe. Au sein de ce groupe, un serveur est désigné comme "maître". Les autres membres sont appelés "esclaves". Le serveur maître est celui qui "prend" l'adresse IP partagée. Il répond à tout trafic ou requête ARP à l'attention de cette adresse. Chaque serveur peut appartenir à plusieurs groupes de redondance. Chaque serveur doit avoir une seconde adresse IP unique.

Dans le cas où le serveur maître rencontre une panne ou est déconnecté du réseau, l'adresse IP virtuelle sera prise par un des serveurs esclaves et le service continuera à être rendu sans interruption. Chaque élément du groupe émet ainsi sur le réseau des signes de vie de façon à ce que les autres éléments ayant la même adresse IP virtuelle prennent le relais lorsque l'élément défaillant ne donne plus ces signes de vie.

La solution peut être obtenue via le lien suivant : http://www.ucarp.org/project/ucarp ou http://sourceforge.net/projects/vrrpd/

Page 55: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

54

8.1.2 Distributed Replicated Block Device

DRBD est un module du noyau Linux qui constitue un système de stockage distribué. Vous pouvez utiliser DRBD pour partager des périphériques entre des serveurs Linux et de ce fait, partager des systèmes de fichiers et des données. Ce module peut donc être utilisé pour construire des SAN (Storage Area Network). Cette forme de stockage est très populaire aujourd’hui. En fait, la consolidation des serveurs grâce à la virtualisation et les réseaux de stockage font parti des stratégies TI les plus à la mode aujourd’hui. DRBD met en œuvre un dispositif de stockage permettant de répliquer les données d’un serveur principal sur un ou plusieurs serveurs secondaires.

Figure 25 - Solution de stockage distribué

Les données primaires sont écrites à la fois sur le périphérique physique et sur le lien réseau, permettant de distribuer ces données sur des périphériques secondaires éloignés. L'information est donc partagée entre le serveur et le serveur secondaire de manière synchrone, ce qui signifie que DRBD peut être utilisé pour réaliser de la haute disponibilité au niveau des systèmes de données. Des solutions libres comme MySQL tirent profit de ce mécanisme dans leurs stratégies de redondance. La solution peut être obtenue via le lien suivant : http://www.linux-ha.org/DRBD .

Page 56: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

55

En complément de DRBD, openfiler offre la composante de stockage requise. La solution peut être utilisée tant en mode SAN (Storage Area Network) qu’en mode NAS (Network Attached Storage). La différence principale entre les deux modes, est que le SAN interagit directement avec le périphérique via le protocole natif des contrôleurs SATA ou iSCSI alors que le NAS utilise des protocoles de plus haut niveau tels que NFS, SMB/CIFS ou FTP pour communiquer. Les solutions de stockage SAN sont donc par définition plus performantes car de plus de bas niveaux. La figure suivante démontre un exemple de l’application de gestion de openfiler. Dans cet exemple, un nouveau volume SCSI est ajouté à la configuration.

Figure 26 - Réseau de stockage

La solution peut être obtenue via le lien suivant : http://www.openfiler.com/community .

Page 57: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

56

8.2 Balancement des charges

Le balancement des charges est une technique utilisée en informatique pour distribuer un travail entre plusieurs processus, ordinateurs ou autres ressources. Les avantages sont nombreux :

• Augmentation de la qualité des services. • Amélioration des temps de réponse des services. • Capacité à pallier la défaillance d'une ou de plusieurs machines. • Possibilité d'ajouter des serveurs sans interruption de service.

Il existe différentes techniques allant du plus simple au plus complexe. Nous en verrons donc une simple et une plus élaborée.

8.2.1 Technique de balancement de charge simple

Un exemple de balancement de charge relativement simple est le « Round-Robin ». Cette technique est souvent utilisée avec les serveurs de type DNS. Elle est utilisable tant dans des environnements Linux que Microsoft Windows 200X. Le principe est le suivant.

1. Pour un nom de domaine précis, le serveur DNS possède plusieurs adresses IP. 2. À chaque requête, le serveur DNS choisit l'adresse IP à inclure dans la réponse de

manière à ce que chaque adresse IP soit présentée dans les réponses de manière équitable.

3. Les différents accès au nom de domaine sont par conséquent répartis équitablement entre les différentes adresses IP.

Il faut noter que cette technique de « round-robin » peut être exploitée pour appliquer de l’équilibrage de charge pour d’autres services. Par exemple, vous pouvez équilibrer votre service de courriels en configurant votre serveur DNS avec plusieurs enregistrements MX ayant la même priorité (10). ; zone file fragment IN MX 10 mail.example.com. IN MX 10 mail1.example.com. IN MX 10 mail2.example.com. .... mail IN A 192.168.0.4 mail1 IN A 192.168.0.5 mail2 IN A 192.168.0.6

Page 58: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

57

Vous pouvez obtenir le même résultat pour les services web et de ftp en créant des enregistrements comportant des noms identiques mais des adresses IP différentes comme le propose l’exemple qui suit. ; zone file fragment ftp IN A 192.168.0.4 ftp IN A 192.168.0.5 ftp IN A 192.168.0.6 www IN A 192.168.0.7 www IN A 192.168.0.8 La solution peut être obtenue via le lien suivant : https://www.isc.org/software/bind

Page 59: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

58

8.2.2 Technique de balancement de charge élaborée

« Linux Virtual Server » est un serveur offrant une haute évolutivité et une haute disponibilité en utilisant une grappe de serveurs physiques. Il comprend également un équilibreur de charge exécutant sur le système d'exploitation Linux. L'architecture du serveur de grappe est entièrement transparente pour les utilisateurs. Les utilisateurs interagissent avec le système comme s'il s'agissait d'un seul serveur virtuel haute performance.

Figure 27 - Équilibrage de la charge

« Linux Virtual Server » en tant que solution d'équilibrage de charge peut être utilisé afin de construire des services de réseau nécessitant une haute évolutivité et une haute disponibilité. Les services les plus communs sont les suivants :

• Web • Mise en cache • Courriel • Transmission de fichiers tel FTP • Médias • VoIP • Etc.

La solution peut être obtenue via le lien suivant : http://www.linux-vs.org/

Page 60: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

59

8.3 Mise en grappes

La mise en grappe est un élément d’architecture de réseau fondateur. Par la mise en grappe, on réalise de la redondance pour les services hébergés par les serveurs. Afin de distribuer la charge, on utilise une technique de balancement de charge. On peut utiliser une technique passive tel le « round-robin » ou encore des techniques dynamiques prenant en compte des facteurs de distribution tels que le temps-réponse du serveur ou encore le poids relatif d’un serveur donné dans une grappe. Un système de poids est mis en place ou les valeurs correspondent à la capacité de traitement des serveurs de la grappe.

Figure 28 - Mise en grappes

Encore une fois, la solution la plus populaire pour remplir cette fonction est LVS. La solution peut être obtenue via le lien suivant : http://www.linux-vs.org/

Page 61: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

60

8.4 Relève

Toute entreprise devant assurer une haute disponibilité de ses services doit envisager un plan de continuité ou de relève en cas de désastre. Dans certains cas, une copie complète de l’infrastructure informatique est maintenue sur un site secondaire éloigné du premier. Un plan de continuité des affaires doit être réalisé selon des normes établies par des experts du domaine. Sur le plan pratique, nous avons déjà survolé plusieurs solutions permettant un certain niveau de redondance entre les sites primaires et secondaires. Un second site pourrait contenir une grappe de serveurs balancés dont les données seraient répliquées de manière synchrone entre les sites. Des solutions telles que « rsync » ou DRBD peuvent être utilisées pour synchroniser les deux sites. Le programme rsync est similaire à « rcp » d'Unix, mais possède des fonctionnalités supplémentaires. Il utilise un protocole de mise à jour à distance incrémental afin d'accélérer le transfert des fichiers plutôt que de transférer des fichiers qui existent déjà.

Le programme Heartbeat est un module de base de l’architecture de haute disponibilité de linux. Dans notre plan de relève, la détection de la perte du serveur primaire pourrait être confiée à un module « Heartbeat » déployé sur le serveur maître du site secondaire. Au moment où le site primaire n’est plus disponible, « Heartbeat » mettrait en activité la grappe de repli qui prendra dès lors le relais des opérations. Une simple mise à jour du DNS publique permettra de basculer les utilisateurs vers le site secondaire. Notre système de relève est donc composé des quatre composantes suivantes :

Composantes Fonctions

Linux Virtual Server Offre la capacité de mise en grappe et de balancement de charge

Distributed Replicated Block Device

Offre un système de stockage distribué maintenant une copie des données en miroir du site primaire.

Heartbeat Permet la détection de la perte du site primaire. rsync Maintient les deux sites en miroir.

Table 9 – Les composantes d’un système de relève LVS peut être obtenue via le lien suivant : http://www.linux-vs.org/ DRDB peut être obtenue via le lien suivant : http://www.linux-ha.org/DRBD Heartbeat peut être obtenue via le lien suivant : http://www.linux-ha.org/Heartbeat . rsync peut-être obtenue via le lien suivant : http://samba.anu.edu.au/rsync/

Page 62: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

61

8.5 Sauvegarde

La sauvegarde des données est un processus de base des technologies de l’information. Les activités liées à cette fonction sont des opérations quotidiennes pour les administrateurs de systèmes. La sauvegarde des données est également un mécanisme de sécurité d’importance car il permet de récupérer des données qui auraient été autrement perdues ou corrompues. Les activités de surveillance s’alimentent également des données sauvegardées lorsqu’il faut retourner en arrière pour déceler des méfaits.

Amanda est la solution en logiciel libre la plus populaire au monde en ce qui a trait à la sauvegarde et à la récupération des données. Amanda protège plus d'un demi-million de serveurs et d’ordinateurs de bureau exécutant sur différentes versions de Linux, de UNIX, BSD, Mac OS-X ou encore sur les systèmes d’opération de Microsoft Windows. De plus, la solution est sécuritaire car elle supporte le chiffrement des données sur les clients, assurant ainsi la sécurité des données en transit ainsi que le chiffrement sur les serveurs de sauvegarde.

Figure 29 - Solution de sauvegarde

La solution peut être obtenue via le lien suivant : http://amanda.zmanda.com/

Page 63: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

62

8.6 Conservation

Plusieurs règlementations de l’industrie et du gouvernement exigent que les nombreux journaux produits par les systèmes TI soient recueillis, surveillés et conservés. Afin de se conformer à ces exigences, les journaux provenant souvent de centaines de sources (Unix, Windows 2003, IDS, serveurs web, applicatifs, SGBD, etc.) doivent être conservés afin d’être examinés régulièrement pour détecter les failles de sécurité et les écarts de conformité. Cette analyse et cette conservation approfondies peuvent représenter des millions de méga-octets. Des mécanismes de sauvegarde des données et des réseaux de stockage permettent de remplir les exigences des différentes réglementations. Des solutions telles que Amanda et openFiler sont des réponses pertinentes à ces besoins dans le domaine du logiciel libre. En plus des solutions technologiques envisagées, des politiques de conservation basées sur une classification des données (par exemple, la cote Méhari) détermineront la durée qu’une information devra être conservée. Le tableau suivant démontre les éléments minimaux pour la conservation.

Solutions Besoins

Une analyse de risque comprenant une classification des actifs selon la méthode Méhari ou encore Ebios, Octave ou Marion est requise. https://www.clusif.asso.fr/fr/production/mehari/

La solution permet de créer un réseau de stockage partagé pour le réseau d’entreprise. En général, les réseaux de stockage ont une très grande capacité et accroissent la disponibilité des données. http://www.openfiler.com/community

La solution permet de sauvegarder et restaurer les données à conserver sur disques ou sur bandes en fonction des politiques de conservation. http://amanda.zmanda.com

Splunk collecte et conserve les journaux et les données de n'importe quels système et dispositif de sécurité d’une manière centralisée. http://www.splunk.com

Table 10 – Les composantes liées à la conservation des données

Page 64: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

63

9 Surveillance

La surveillance est une fonction de sécurité incontournable dans les systèmes informatiques d’aujourd’hui. Cette fonction consiste à surveiller les actifs de l’entreprise afin de détecter des problèmes variés tels que des débordements de capacité, des défaillances matérielles et logicielles, des problèmes d’engorgement de réseau ou encore des tentatives d’intrusion. En général, ces systèmes de surveillance utilisent des agents déployés sur les différents serveurs qui surveillent l’état de santé du serveur local et qui émettent des alertes dans le cas où un problème survient ou qu’une valeur de seuil est dépassée. Quand la condition le réclame, un administrateur de système peut recevoir un message via téléchasseur, téléphone cellulaire ou encore via courriel.

9.1 Surveillance réseau, serveur et station

Le logiciel libre le plus populaire, dans le domaine de la surveillance des réseaux et des serveurs, est sans nul doute Nagios (plus de 3 millions de téléchargements). Nagios est une application web présentant un riche tableau de bord des différentes activités du réseau de l’entreprise. Nagios bénéficie de ses différents agents pour collecter l’information nécessaire des serveurs Windows 200X, Unix/Linux ou encore de composantes réseau comme des routeurs, des commutateurs ou des imprimantes. Sans oublier des services tels HTTP, FTP, POP3, etc. Les images suivantes décrivent le concept de collection de Nagios. Des données telles que la disponibilité, l’espace mémoire et le niveau d’utilisation du UCT sont des exemples d’information recueillie par Nagios.

Figure 30 - Surveillance de réseau

La solution peut être obtenue via le lien suivant : http://www.nagios.org/

Page 65: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

64

Une autre solution libre pouvant convenir aux besoins de surveillance est OSSIM. Cette solution est en fait le fruit de l’assemblage de plusieurs des meilleures solutions de surveillance sur le marché. Ce travail d’intégration a permis de les consolider sous un même guichet. OSSIM permet donc de compiler les données des solutions telles que Nessus, Snort, Nagios, Spade, OSSEC et plusieurs autres et d’organiser ces données en des tableaux de bord sophistiqués.

Figure 31 - Gestion d'incidents et d'évènements

La solution peut être obtenue via le lien suivant : http://www.ossim.net/

9.2 Détection des intrusions

Dans le champ de la détection des intrusions, Snort est le logiciel incontournable. En fait, bon nombre de solutions commerciales comprennent à la base la solution Snort. Il y a quelques concepts de base à connaître pour utiliser Snort car la solution peut être configurée pour fonctionner selon plusieurs modes:

1. Le mode « Sniffer » qui lit tout simplement les paquets voyageant sur le réseau et qui les affiche en un flux continu sur la console.

2. Le mode « Packet Logger » qui trace les paquets voyageant sur le réseau sur le disque de votre ordinateur.

Page 66: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

65

3. Le mode « Système de Détection d'Intrusion» ou NIDS, le plus complexe, qui permet d’analyser le trafic réseau afin de détecter des patrons d’évènements à partir d’une banque de patrons mise à jour périodiquement et de prendre action.

4. Le mode « inline » qui permet d’obtenir les paquets du réseau directement du coupe-feu « iptables » plutôt que de « libpcap ». Une fois les règles jouées, Snort peut décider via « iptables » de bloquer ou de transmettre un paquet. Ce mode introduit l’aspect NIPS (network intrusion protection system) dans l’offre de Snort.

Le comportement de Snort est basé sur un ensemble de règles. Une règle dans le monde de Snort s’exprime de la manière suivante : Alert tcp any any -> 198.168.1.0/24 111 (content : « |00 01 86 a5|”; msg:”mountd access”;) La solution peut être obtenue via le lien suivant : http://www.snort.org/

Une autre solution intéressante est OSSEC (Open Source Host-based Intrusion Detection System). La solution s’utilise dans le champ de la détection des intrusions comme Snort mais offre en plus la possibilité de détecter les « rootkit » présents sur les serveurs.

Figure 32 - Détection des intrusions

Page 67: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

66

9.3 Analyseur de vulnérabilités

Nessus est un outil de sécurité informatique très réputé. Nessus a été offert en logiciel libre jusqu’en 2005 mais depuis lors, le code n’est plus ouvert. De plus, la version sans frais, dite « home feed », procure une alimentation limitée d’extensions et n’est utilisable qu’à des fins personnelles. La version fournissant une alimentation complète coûte environ $1500 par année.

Il signale les faiblesses potentielles ou réelles sur les machines ciblées. Plus précisément, Nessus est capable de balayer un équipement, un ensemble d'équipements ou encore un réseau entier. Le résultat du balayage fournira :

• Une liste des vulnérabilités par niveaux de criticité,

• Une description des vulnérabilités, • La méthode pour résoudre le

problème.

Il s'appuie pour cela sur une base de signatures des vulnérabilités connues sur un large ensemble de systèmes.

La solution peut être obtenue via le lien suivant : http://www.nessus.org/nessus/

Page 68: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

67

Si l’on recherche une solution complètement libre, nous pouvons nous tourner vers NMAP. NMAP est un outil qui utilise la technique du balayage de ports dans le but d’identifier les ports ouverts, ainsi que les services en écoute sur un réseau. NMAP (Network Mapper) permet d’explorer les réseaux, et de produire un inventaire des ordinateurs et des services qu’ils hébergent. Il permet aussi d’identifier les systèmes d’exploitation, ainsi que leurs versions. Il s’agit donc d’un outil très utile pour les administrateurs de réseaux, car il permet d’identifier les faiblesses potentielles. La solution peut être obtenue via le lien suivant : http://nmap.org/

9.4 Moniteur de contenu actif

Pour des raisons éthiques ou encore par souci d’économie de la bande passante, il est courant pour les entreprises de contrôler les accès des utilisateurs à l’Internet. C’est ce à quoi s’emploie la solution « Web Content Control » de untangle. L'application s’alimente d’une source commerciale pour sa liste noire, « URLBlacklist.com ». Cette liste organise les sites par catégories. Il y a plus de 50 sujets variés. Ces catégories incluent par exemple, la pornographie, les jeux à l'argent et les sites de recherche d'emploi. « Web Content Control » permet de choisir entre ces catégories et de définir des politiques de contrôle de contenu Web personnalisées. La solution peut aussi utiliser des listes de blocage personnalisées pour bloquer des serveurs, des domaines et des types de fichiers particuliers.

Figure 33 - Moniteur de contenu actif

La solution peut être obtenue via le lien suivant : http://www.untangle.com/Web-Filter

Page 69: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

68

9.5 Détection des pourriels

Le but de ce logiciel est de filtrer le trafic des courriels pour éliminer les courriels reconnus comme pourriels ou courriels non sollicités. La solution SpamAssassin est issue de la réputée fondation Apache. C’est une solution qui s’intègre comme un filtre aux serveurs SMTP tels Postfix ou sendmail. SpamAssassin fait passer un certain nombre de tests au message. En fonction du résultat de ces tests, il attribue un « score » au message. Si le « score » dépasse un certain seuil, le courriel est alors considéré comme du Spam. SpamAssassin modifie alors le titre du message (il l'encadre avec ***** SPAM *****).

La solution peut être obtenue via le lien suivant : http://spamassassin.apache.org/

9.6 Détection de virus

Les antivirus sont des logiciels conçus pour identifier, neutraliser et éliminer les logiciels malveillants tels les virus, les vers et les chevaux de Troie de votre ordinateur. De plus, ils permettent généralement de se débarrasser des logiciels-espions qui sans être aussi dangereux que les précédents, permettent tout de même de révéler vos habitudes de navigation et donc vos goûts et préférences. Ce qui est indésirable. Il existe trois logiciels antivirus très populaires au moment de la rédaction de ces lignes. Ces trois solutions mettent à jour automatiquement leurs banques de données de virus et offrent une interface graphique conviviale. Ces solutions sont les suivantes:

http://www.avast.com/fre/download-avast-home.html

http://free.avg.com/

http://fr.clamwin.com/

Page 70: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

69

9.7 Outils d’audit

Les outils d'audit ont pour fonction de détecter les failles de sécurité et de les documenter de manière à permettre aux administrateurs de systèmes de colmater ces brèches. Le processus d’audit s’appuie sur un ensemble d’outils dont deux des meilleurs ont déjà été couverts, Nmap et Nessus. À ces deux outils, nous pouvons adjoindre SARA ou « Security Auditor's Research Assistant » qui est un outil d'administration permettant de tester la sécurité d'un réseau. SARA tire son origine de SATAN qui est lui-même un descendant de SAINT. La solution peut être obtenue via le lien suivant : http://www-arc.com/sara/ .

Page 71: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

70

10 Administration

10.1 Administration matérielle

L’administration matérielle consiste à implanter des contrôles physiques afin de contrôler les accès aux lieux de travail et aux installations informatiques ou autres. Ces contrôles physiques sont nombreux. Ils sont aussi très variés. En voici quelques exemples :

• Portes • Serrures • Chauffage et de climatisation • Détecteurs de fumée et alarmes incendie • Systèmes de suppression des incendies • Caméras • Barricades et clôtures • Gardes de sécurité • Etc.

L’administration matérielle et les contrôles physiques sont hors de portée de notre cartographie des solutions libres disponibles pour des raisons évidentes.

10.2 Administration logicielle

Les entreprises possédant un nombre élevé de serveurs et de postes de travail ne peuvent logiquement réaliser l’administration logicielle de ces équipements manuellement. Elles doivent disposer de solutions permettant une gestion centralisée du parc informatique. Les sections suivantes décrivent les solutions libres disponibles permettant l’installation et la distribution de logiciels à distance de manière automatisée. Ces solutions font parties des infrastructures technologiques modernes.

Page 72: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

71

10.2.1 Gestion des images des serveurs et des postes de travail

SystemImager est un logiciel qui automatise l'installation de Linux à distance, la distribution de logiciels et les déploiements en production. Il est utilisé pour faire des installations par clonage, pour distribuer des logiciels, pour appliquer des modifications à la configuration et effectuer des mises à jour au système d'exploitation d’un réseau de machines Linux.

Figure 34 - Gestion des images des serveurs

La solution peut également être utilisée pour assurer la sécurité de la production. En enregistrant l’image actuelle de l’environnement de production avant la mise en production d’une nouvelle image, on dispose d'un mécanisme fiable de contingence. Si le nouvel environnement de production est jugé instable, il suffit de revenir en arrière en restaurant la dernière image stable de production. Le logiciel peut être utilisé pour gérer les environnements suivants:

• Serveurs web • Serveurs de bases de données • Grappes haute performance • Laboratoires informatiques • Les environnements de bureau corporatif • Etc.

La solution peut être obtenue via le lien suivant : http://sourceforge.net/projects/systemimager

Page 73: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

72

opsi est un logiciel qui automatise l'installation des postes de travail Windows à distance, la distribution de logiciels, la gestion de la configuration et permet de gérer l’inventaire matériel et logiciel. La solution peut être obtenue via le lien suivant : http://www.opsi.org/

10.2.2 La virtualisation

La virtualisation est une tendance très forte actuellement dans le mode des TI. La virtualisation permet de faire fonctionner sur une seule machine plusieurs systèmes d'exploitation et/ou plusieurs applications, séparément les uns des autres, comme s'ils fonctionnaient sur des machines physiques distinctes.

Figure 35 - La virtualisation

Un projet de virtualisation est structurant car il permet de consolider un nombre élevé de serveurs physiques et de gérer plus efficacement les ressources. Plusieurs solutions existent dans le monde commercial mais la solution en logiciel libre est Xen. Cette solution a été développée par l'université de Cambridge au Royaume-Uni. Xen permet de faire fonctionner plusieurs systèmes d'exploitation virtuels (invités) sur une seule machine hôte. La solution peut être obtenue via le lien suivant : http://www.xen.org/ .

Page 74: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

73

10.3 Administration réseau

Le contrôle d'accès au réseau (Network Access Control ou NAC) est un mécanisme informatique permettant de soumettre les accès à un réseau d'entreprise à un protocole d'identification et de soumettre les machines à des restrictions d'usage définies pour ce réseau. Ce mécanisme permet lors d’un accès au réseau de vérifier la posture du poste de travail venant de se brancher et de le rediriger vers une zone du réseau appelé « zone de remédiation » si la posture ne correspond pas aux politiques établies par l’entreprise. Ce mécanisme réclame la présence d’un agent sur tous les postes de travail appelé « supplicant ». Cet agent effectue l’inventaire du poste de travail (OS, rustines appliquées, présence des défenses requises comme des antivirus, etc.) et informe le serveur qui agit comme centre de décision.

Figure 36 - Le contrôle d'accès au réseau

Il existe une solution gratuite qui remplit ce mécanisme de contrôle du réseau. La solution peut être obtenue via le lien suivant : http://www.packetfence.org/fr/home.html

Page 75: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

74

11 Architecture de sécurité

La figure suivante décrit les mécanismes de sécurité les plus importants cartographiés dans le cadre de ce travail. Le modèle d’architecture à base de zones a été utilisé car il permet de réaliser une bonne séparation des fonctions et l’établissement des points de contrôle requis dans une bonne architecture de sécurité. L’architecture de sécurité ci-dessous met en œuvre des solutions libres reconnues dans le marché pour leur stabilité et leur fiabilité

Figure 37 - Architecture de sécurité en logiciel libre

Page 76: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

75

12 Recommandations pour les logiciels de la chaire

Cette section vise à fournir une information pratique et plus spécifique sur les mécanismes de sécurité à mettre en place afin de protéger les applications déployées sur les serveurs d’application de la Chaire. Nous nous concentrerons sur les plateformes de développement utilisées de manière à proposer une architecture de sécurité spécialement conçue pour ces besoins précis. Les plateformes de développement sont les suivantes :

• TOMCAT • SPRING • REST

12.1 Les approches de sécurité pour les applications

Tel que décrit précédemment à la section 6.2, la sécurité déclarative décrit le scénario où les règles d’accès sont définies en dehors de l'application. La sécurité programmatique est utilisée lorsque l'application doit effectuer un contrôle fin des accès aux ressources. On parle ici d’une sécurité ne s’appliquant plus seulement au niveau du formulaire mais au niveau de l’élément de formulaire ou à des ressources arbitraires (une autorisation peut se faire sur autre chose qu’un URI) gérées par l’application (tables dans une SGBD, imprimantes, etc.).

Figure 38 - Règle d'accès avec OpenSSO

La sécurité déclarative est à plus gros grains (URI). Elle accomplit généralement un travail efficace dans la sécurité des applications. Elle permet d’établir des règles d’accès au niveau de la ressource (pages web, JSP, images, etc.). Ceci sied parfaitement à toutes les applications à base de URI (J2EE, REST, etc.). L’image précédente décrit comment spécifier une règle d’accès avec OpenSSO.

Page 77: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

76

12.2 Pensez à la sécurité dès le départ

Il est impératif de concevoir un site web d’une manière structurée avec la sécurité en tête dès le départ. Les chemins aux différentes transactions et aux ressources web doivent être bien ségrégés afin de limiter le nombre de règles requises pour sécuriser les applications et les transactions. Dans l’exemple suivant, les ressources web liées aux transactions sont bien délimitées et une seule règle d’accès au niveau de la transaction de retrait suffirait pour demander une nouvelle authentification.

Figure 39 - Structure d’un site web

Le modèle de rôles devra aussi intégrer l'ensemble du tableau et aligner les rôles définis au niveau d’OpenSSO, aux rôles définis au niveau du serveur de bases de données PostgreSQL. Par exemple, le rôle « gestionnaire » permettra d’accéder aux formulaires web permettant l’approbation des feuilles de temps. Le processus d’approbation permettra également au gestionnaire de mettre à jour la table associée aux feuilles de temps dans PostgreSQL via le rôle « gestionnaire » définit au niveau de la sécurité de PostgreSQL. La méthode est décrite à la section 6.7.

Figure 40 - Le modèle de rôles

Un modèle de sécurité de type RBAC (Role-based Access Control) permet d’associer à un utilisateur, un rôle d’affaires octroyant les accès d’une collection logique de ressources web. Ces accès permettent de réaliser une fonction d’affaires bien définie tels que secrétaire, comptable ou gestionnaire dans une entreprise.

Page 78: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

77

12.3 Topologie des applications

L’architecture multicouche est la pratique consistant à découper une application dans ses parties logiques. Initialement développée pour surmonter des problèmes liés au modèle client/serveur, elle apparaît aujourd'hui comme la principale méthode de déploiement des applications Web. Une application multicouche se compose habituellement d'au moins trois niveaux, bien que de nombreuses alternatives existent:

• La couche présentation – En général, le navigateur web client • La couche affaires – Les serveurs web et les serveurs d'applications • La couche des données - La base de données PostgreSQL

Figure 41 - Architecture multicouche [26]

12.4 La ségrégation est la clé

Il existe de nombreuses raisons pour séparer les applications en diverses composantes. Les principales raisons sont décrites ci-dessous.

• La simplicité - En minimisant le nombre de composantes installées sur un système donné, on simplifie l’administration de celui-ci et l’on réduit les risques de conflits de bibliothèques.

• La performance - Avec un nombre réduit de composantes, le système bénéficiera d'un gain de performance et sera en mesure d’assurer les besoins d’évolutivité et de montée en puissance des applications.

• La sécurité - La distribution des composantes sur plusieurs systèmes réduit considérablement les risques. Par exemple, un système pour une application de type LAMP renferme en général toutes les composantes de la solution (Linux, Apache, PHP, MySQL). Si la machine est compromise, toutes les composantes le sont, les données comprises.

o La ségrégation facilite également la distribution des points de contrôle de sécurité pour une solution donnée (pare-feux, IDS, etc.).

Page 79: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

78

o La ségrégation permet également l’instauration d’une séparation des rôles (administrateurs de systèmes, de la sécurité, des données, etc.).

Figure 42 - La ségrégation est la clé [26]

Page 80: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

79

12.5 Les solutions de sécurité web les plus populaires

Au chapitre de la sécurité des applications, les trois solutions suivantes ont été évaluées. Ces solutions sont les plus utilisées pour remplir les besoins d’authentification centralisée requis par les entreprises déployant un nombre élevé d’applications. Ces solutions offrent également la fonction de SSO permettant à l’utilisateur de s’authentifier qu’une seule fois et d’accéder à plusieurs applications par la suite sans avoir à se réauthentifier. Une stratégie de gestion d’identités basée sur un annuaire LDAP contribuera également à réduire les besoins de se réauthentifier.

Solutions Options

CAS ou « Central Authentication Service » est un système développé à l’origine par l’université de Yale. C’est un système d’authentification centralisé conçu pour les infrastructures J2EE et Spring.

JOSSO ou “Java Open Single Sign-On” est un système d’authentification centralisé conçu pour les infrastructures J2EE et Spring.

OpenSSO est un système de contrôle d’accès web. C’est un système d’authentification centralisé conçu pour les infrastructures J2EE et Spring. Il offre aussi les fonctions d’autorisation et de fédération d’identités.

Table 11 - Les solutions de sécurité web les plus populaires

Page 81: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

80

12.6 La solution recommandée

En raison de ses capacités d’intégration et de ses fonctions de sécurité supérieures, OpenSSO se distingue notablement de CAS et de JOSSO. En plus d’offrir les fonctions d’authentification centralisée et de SSO, OpenSSO couvre également les volets de l’autorisation et de la fédération d’identité selon la norme « Liberty Alliance ». La solution permet de gérer de manière centralisée les accès aux applications exécutant sur Tomcat et d’éliminer les besoins d’administration serveur par serveur imposés par le modèle de sécurité de la spécification J2EE.

Figure 43 - Gestionnaire d'accès (source : Sun)

La communauté OpenSSO est très active et les différents logiciels enfichables (plugins) développés par la communauté permettent d’intégrer la sécurité d’OpenSSO aux plateformes de développement les plus populaires telles que :

• Tomcat • Spring • REST (incluant OAUTH)

Le support de OpenSSO s’étend même aux langages « scriptés » les plus modernes. En effet, des « plugins » ont été développés afin d’intégrer par exemple :

• Grails – http://grails.org/plugin/opensso • Ruby on rail - http://developers.sun.com/identity/reference/techart/app-

integration.html Finalement, OpenSSO s’installe très facilement comme un simple .WAR sur Tomcat, JBOSS, etc.

Page 82: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

81

12.7 Les points de contrôle de sécurité

La figure suivante décrit les principaux points de contrôle nécessaires à la protection d’une application web. Ces points de contrôle associés aux bonnes pratiques de programmation concernant la gestion des sessions et la validation des données fourniront une fondation solide pour la sécurité des applications web.

Figure 44 - Les points de contrôle de sécurité

12.7.1 Gestion des sessions

On nomme session l’ensemble des mécanismes permettant de créer et de maintenir comme une suite logique et cohérente les requêtes provenant d’un utilisateur. Plusieurs solutions techniques s’offrent au développeur web afin de réduire les risques en matière de gestion des sessions.

• Utiliser des identifiants de session non prédictibles et uniques. o Utiliser des éléments aléatoires ou spécifiques à l’utilisateur comme :

� L’heure et la date de connexion, � L’adresse IP de l’utilisateur � Un générateur de nombres aléatoires � Etc.,

Page 83: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

82

o Utiliser une fonction de hachage (SHA, MD5) sur le résultat obtenu ou encore un CAM afin d’assurer l’authenticité de d’identifiant. Le mécanisme est décrit à la section 3.2.

• Utiliser les fonctions de génération de nombres aléatoires offertes par les bibliothèques cryptographiques de java décrites à la section 7.2 pour générer des identifiants de session. Cela permet de s'assurer que personne ne pourra usurper la session de quelqu’un d'autre.

• Chiffrer l'identifiant de session pour rendre opaque les informations liées à l'identifiant de session.

• Utiliser une clé de chiffrement connue seulement de l'application web. • Utiliser un nouvel identifiant de session à chaque nouvelle connexion à

l’application. • Invalider l’ancien identifiant de session. • Fermer les sessions

o En réponse à une demande explicite de l’utilisateur o En raison d’une erreur o En raison d’un période d’inactivité

Le tableau ci-dessous propose des valeurs de durée de vie des sessions en fonction du risque. Les durées associées aux sessions inactives correspondent au temps d’inactivité d’un utilisateur. Les durées associées aux sessions longues correspondent au temps maximal d’attente pour obtenir le résultant d’une transaction.

Table 12 – Durée de vie des sessions (source : CASES)

Éviter les inscriptions automatiques réalisées par les robots en utilisant un CAPTCHA (Completely Automated Public Turing test to Tell Computers and Humans Apart) lors de l’enregistrement.

Figure 45 – Exemple de Captcha

.

Page 84: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

83

12.7.2 Détection des intrusions via ModSecurity

Le module ModSecurity est un « firewall » applicatif. Il fonctionne comme les systèmes de détection d’intrusions que l’on retrouve dans les réseaux mais a ceci de particulier qu’il est spécialement conçu pour la détection des intrusions au niveau applicatif (couche 7). Les différentes règles de ModSecurity permettent de détecter les attaques suivantes lancées contre les applications et de les bloquer.

• Les attaques par XSS (Cross Site Scripting) • Les injections de SQL • Les injections de Javascript • Les injections AJAX • Les injections d’entêtes HTTP • Le piratage de sessions • etc.

Figure 46 – Détection des attaques (source : OWASP) Par exemple, afin d’éliminer une attaque voulant injecter une commande SQL « drop table », la règle suivante sera utilisée. SecFilter "drop[[ :space :]]table " Afin de prohiber les téléchargements de fichiers vers votre site web, la règle suivante sera utilisée :

SecFilterSelective "HTTP_CONTENT_TYPE" multipart/form-data

Page 85: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

84

12.7.3 Façade et aiguillage via mod_proxy

Une autre bonne pratique de la sécurité concerne la mise en place d’un serveur mandataire (proxy). En plus d’être un requis pour ModSecurity, ce mode de déploiement permet d’introduire une notion de façade, un pattern bien connu dans le monde java. En effet, grâce au module mod_proxy, les requêtes peuvent être acheminées aux différents serveurs résidant dans l’intranet d’une manière opaque à l’utilisateur. L’exemple suivant démontre l’aiguillage réalisé par mod_proxy. Les adresses IP et les ports des serveurs applicatifs sont totalement invisibles du monde extérieur.

Figure 47 - Apache comme serveur en façade (source : IBM)

12.7.4 Authentification à l’annuaire LDAP

Afin de pouvoir réaliser une gestion du cycle de vie des identités adéquate, il est vital de considérer dès le départ que la source autoritaire d’identités sera l’annuaire LDAP. Toutes les applications devront s’alimenter à cette source afin d’éliminer les problèmes liés aux multiples bases de comptes (une par application). Dans notre modèle, OpenSSO et PostgreSQL utiliseront l’annuaire OpenDS comme source d’identité et d’authentification.

Page 86: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

85

12.7.5 Chiffrement des données sensibles

En raison des différentes législations relatives à la protection de la vie privée, les entreprises et donc les développeurs sont tenus de maintenir la confidentialité des données nominatives des utilisateurs. Afin de se conformer à ces règles, le développeur dispose des bibliothèques cryptographiques intégrées au JDK telles que décrites à la section 7.2. Le développeur peut également utiliser les outils cryptographiques de la base des données tel que le programme pgcrypto de PostgreSQL décrit à la section 6.7.3.

12.7.6 Journaux sécurisés

La production de journaux et leur conservation sont des tâches essentielles tant pour les systèmes que pour les applications. Les journaux produits, afin d’être utilisables lors d’éventuelles investigations, doivent être intègres et libres de toutes modifications. Il existe deux avenues principales lorsque l’on développe sur Unix/Linux tel que décrit à la section 4.2.

• Syslog-ng • rsyslog

Dans les deux cas, ces moutures de syslogd sont des versions améliorées en termes de fiabilité, de performance et surtout en termes de sécurité. Elles comprennent les fonctionnalités requises suivantes :

• Horodatage des événements • Écriture des événements via un tunnel chiffré • Signature des journaux • Garantie de livraison

12.8 Modèle de déploiement recommandé

Une tendance technologique actuellement incontournable est la virtualisation. Les objectifs de réduction de coûts et de valorisation des ressources des ordinateurs ne sont pas que l’apanage des grosses entreprises mais constituent aussi une réalité de tous les jours pour les développeurs. En effet, le développeur est souvent confronté à des situations ou les moyens alloués pour la création des environnements de développement sont plutôt réduits. La virtualisation offre une alternative attrayante car elle permet d’exécuter sur un seul ordinateur plusieurs machines virtuelles et ainsi refléter la distribution multicouche du modèle de déploiement recommandé. Dans notre contexte de sécurisation des applications, la virtualisation permet de créer les points de contrôle précédents dans un environnement de développement formé d’un seul ordinateur. Un coupe-feu (ipcop) installé localement sur chacune des machines virtuelles permettra de restreindre les flux entre les composantes.

Page 87: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

86

Figure 48 - Scénario de déploiment

Le tableau suivant décrit notre scénario de déploiement. Il résume parfaitement les recommandations précédentes en ce qui a trait à la ségrégation logique des composantes des applications et applique également à la lettre, la ségrégation des rôles des différents administrateurs de la solution.

Machines virtuelles Fonctions

MV1 Cette machine virtuelle servira à gérer les autres machines virtuelles. Elle est accessible uniquement par le biais du protocole SSH et les accès sont limités aux administrateurs de systèmes. Les journaux sont également centralisés sur cette machine virtuelle.

MV2 Cette machine virtuelle exécute la solution OpenSSO. Cette machine virtuelle ne peut être accédée que par des administrateurs de la sécurité.

MV3 Cette machine virtuelle exécute le serveur mandataire et les modules de sécurité de première ligne. Cette machine virtuelle ne peut être accédée que par des administrateurs de la sécurité.

MV4 Cette machine virtuelle exécute les applications. Cette machine virtuelle ne peut être accédée que par des administrateurs d’applications.

MV5 Cette machine virtuelle exécute la SGBD. Cette machine virtuelle ne peut être accédée que par des administrateurs des données.

Table 13 - Les machines virtuelles et leurs fonctions dans la solution Une fois les phases de développement et de tests intégrés réalisées, il suffira de réaliser une mise en grappe de la solution en production afin d’assurer évolutivité et résilience aux pannes à notre solution. Le balancement de charge tel que décrit à la section 8.2.2 pourra être mis à contribution.

Page 88: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

87

13 Conclusion

En conclusion et en réponse aux questions formulées dans l’introduction de ce document, il semble évident que le monde du logiciel libre comporte une gamme très étendue de solutions, et ce, dans tous les domaines de la sécurité. Dans bien des cas, l’auteur a dû faire des choix face à la quantité de solutions s’offrant à lui. À l’exception de l’authentification biométrique et de l’administration matérielle, la totalité des fonctions du cadre de référence de sécurité a été couverte. Il n’y a donc pas de réelles limitations concernant la conception d’architectures de sécurité en libre. La seconde question portait sur la viabilité des architectures de sécurité conçues à partir de solutions libres. Nous devons faire preuve d’une certaine prudence mais dans l’ensemble, il n’y a pas de limitations majeures si l’on s’en tient à des solutions éprouvées. En fait, bon nombre des solutions répertoriées dans ce document sont déjà utilisées dans les entreprises. Des logiciels tels que Snort, SpamAssassin, modSecurity, OpenVPN, OpenSSH, OpenSSO, freeRadius, BIND, Nessus, nmap, Linux HA, SELinux, JCA/JCE et encore bien d’autres, sont des solutions solides et éprouvées. Les architectes peuvent donc, dès lors, intégrer ces solutions à leurs architectures sans mettre en péril leurs systèmes d’information. Le monde du logiciel libre offre aussi une alternative intéressante aux solutions commerciales dans des secteurs aussi en vogue que le « cloud computing » et les TI vertes « Green IT ». La famille de logiciels de Linux HA (High Availability) combinée à l’hyperviseur Xen de l’université de Cambridge, fournissent une infrastructure technologique fonctionnelle et ayant fait ses preuves. Au chapitre de la sécurité logicielle, nous avons émis certaines recommandations en ce qui a trait aux logiciels utilisés dans le cadre des travaux de la Chaire. Nous avons proposé un ensemble limité mais efficace de mesures de sécurité afin de ne pas décourager leur mise en application. À travers le temps, des mesures additionnelles pourront s’ajouter en fonction des besoins de la Chaire. Ce document pourra, à ce titre, servir de référentiel de solutions de sécurité afin de bonifier l’architecture de sécurité proposée.

Page 89: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

88

14 Bibliographie

Les références suivantes ont été utilisées dans le cadre de ce travail. Elles ont servies à valider le cadre de référence ou référentiel de sécurité utilisé et à organiser l’information d’une manière structurée. [1] Committee of Sponsoring Organization of the Treadway Commission (COSO) [2] Control Objectives for Business & Related Technology (COBIT), ISACA [3] Information Technology Infrastructure Library (ITIL) [4] ISO/IEC 13335-1:2004, Technologies de l'information -- Techniques de sécurité -- Gestion de la sécurité des technologies de l'information et des communications -- Partie 1: Concepts et modèles pour la gestion de la sécurité des technologies de l'information et des communications [5] ISO/IEC IS 13335-2:1997, Technologies de l'information -- Lignes directrices pour le management de sécurité IT -- Partie 2: Management et planning de sécurité IT [6] ISO/IEC TR 13335-4:2000, Technologies de l'information -- Lignes directrices pour la gestion de sécurité IT -- Partie 4: Sélection de sauvegardes [7] ISO/IEC TR 13335-5:2001, Technologies de l'information -- Lignes directrices pour la gestion de sécurité IT -- Partie 5: Guide pour la gestion de sécurité du réseau [8] ISO/CEI 27000, Technologies de l'information — Techniques de sécurité — Introduction et vue globale de la famille des standards, ainsi qu'un glossaire des termes communs [9] ISO/CEI 27001, Technologies de l'information — Techniques de sécurité — Systèmes de gestion de la sécurité de l'information — Exigences, Numéro de référence ISO/CEI 27001:2005(F) [10] ISO/CEI 27002, Technologies de l'information — Techniques de sécurité — Code de bonne pratique pour la gestion de la sécurité de l'information, Numéro de référence ISO/CEI 27002:2005(F)

[11] ISO/CEI 27003, Technologies de l'information — Techniques de sécurité — Guide d’implantation d’un SMSI

[12] ISO/CEI 27004, Technologies de l'information — Techniques de sécurité — Standard de mesures de management de la sécurité de l'information

Page 90: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

89

[13] ISO/CEI 27005, Technologies de l'information — Techniques de sécurité — Standard de gestion de risques liés à la sécurité de l'information

[14] ISO/CEI 27006, Technologies de l'information — Techniques de sécurité —- Guide de processus de certification et d'enregistrement

[15] ISO/IEC 15408-1, First Information technology — Security techniques — Evaluation criteria for IT security — Part 1: Introduction and general model, Reference number ISO/IEC 15408-1:1999(E) [16] ISO/IEC 15408-2, Information technology — Security techniques — Evaluation criteria for IT security —Part 2: Security functional requirements, Reference number ISO/IEC 15408-2:1999(E) [17] ISO/IEC 15408-3, Information technology — Security techniques — Evaluation criteria for IT security —Part 3: Security assurance requirements, Reference number ISO/IEC 15408-3:1999(E) [18] IT Governance Institute, Office of Governance Commerce , Aligning CobiT 4.1, ITIL V3 and ISO/IEC 27002 for Business Benefit, A Management Briefing From ITGI and OGC [19] Stamp, Paul & Khalid, Kark, Information Security Framework, May 2007, Forrester Research [20] Poggi, Sébastien, Novembre 2005, Modèle de référence de processus, CASES [21] Blouin, Jean, Ministère de la santé et des services sociaux, Architecture de sécurité Infrastructure technologique, Volet Échange, Version 1.5 [22] NIST Special Publication 800-63-1, Information Security Electronic Authentication Guideline [23] NIST Special Publication 800-92, Guide to Computer Security Log Management [24] RSA Laboratories, PKCS #11 v2.20: Cryptographic Token Interface Standard 28 June 2004 [25] IETF, RFC 3161, Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP), August 2001 [26] NISCC, Briefing 10/2006, Secure Web Applications, Development, Installation and security testing [27] CLUSIF, Les dossiers techniques, Gérer la sécurité d’un site de commerce électronique, Mai 2001, Version 1.0, Commission Réseaux et Systèmes Ouverts

Page 91: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

90

[28] Groupe CGI Inc, La Gouvernance TI et la sécurité informatique, 2008-06-11 [29] Paul Axayacatl, FRAUSTO BERNAL, Utilisation des certificats d'attribut pour accélérer l'usage de la signature électronique, JRES 2003 [30] Ann Cavoukian, Ph.D., Commissaire à l’information et à protection de la vie privée/Ontario, Le chiffrement du courrier électronique : Rien de plus simple!, Août 1999 Références Web

Fonctions Liens Gouvernance http://www.coso.org/

http://www.isaca.org/ http://www.itil-officialsite.com/home/home.asp http://www.27000.org/

Administration

http://sourceforge.net/projects/systemimager http://www.opsi.org/ http://www.cl.cam.ac.uk/research/srg/netos/xen/ http://www.packetfence.org/fr/home.html

Authentification

http://docs.safehaus.org/display/PENROSE/Home http://www.opends.org/ http://www.openldap.org/ http://directory.apache.org/ http://www.sun.com/software/products/directory_srvr_ee/ http://www.jasig.org/cas http://www.sun.com/software/products/opensso_enterprise/index.xml http://openid.net/ http://www.hardtokenmgmt.org/

Confidentialité

http://java.sun.com/javase/technologies/security/ http://www.bouncycastle.org/ http://www.truecrypt.org/ http://www.openssl.org/ http://www.openssh.org/fr/index.html http://winscp.net/eng/index.php http://www.chiark.greenend.org.uk/~sgtatham/putty/ http://java.sun.com/javase/6/docs/technotes/guides/security/

Conservation

http://amanda.zmanda.com/ http://www.openfiler.com/community http://www.splunk.com/

Contrôle d’accès http://en.opensuse.org/AppArmor http://selinux.sourceforge.net/ http://ws.apache.org/rampart/ https://spaces.internet2.edu/display/OpenSAML/Home/ http://static.springframework.org/spring-security/site/index.html http://openvpn.net

Page 92: MGL9701 - Projet en génie logiciel V2.7 - Michel Hetu

MGL9701 - Projet en génie logiciel

91

http://www.untangle.com/OpenVPN http://www.freeswan.org http://www.smoothwall.org/ http://www.ipcop.org/ http://www.netfilter.org/ http://www.untangle.com/Firewall http://www.fwbuilder.org/ http://www.openiam.com/ https://opensso.dev.java.net/ http://wiki.interldap.ow2.org/xwiki/bin/view/Main/WebHome

Disponibilité

http://www.linux-vs.org http://www.linux-ha.org/DRBD http://www.linux-ha.org/Heartbeat http://www.rsync.net/ http://www.openfiler.com/community

Intégrité http://www.ejbca.org/ http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#MessageDigest http://www.bouncycastle.org/fr/index.html

Irrévocabilité

http://www.ejbca.org/ http://www.signserver.org/ http://www.splunk.com/ http://www.infodrom.org/projects/sysklogd/ http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/ http://logging.apache.org/log4j/1.2/index.html http://commons.apache.org/logging/ http://www.rsyslog.com http://freshmeat.net/projects/syslog-ng http://sourceforge.net/projects/lassolog

Surveillance

http://www.nagios.org/ http://www.ossec.net/ http://www.snort.org/ http://www.untangle.com/Intrusion-Prevention http://www.ossim.net/ http://clamav.net/ http://www.untangle.com/Virus-Blocker http://www.untangle.com/Spyware-Blocker http://www.untangle.com/Spam-Blocker http://spamassassin.apache.org/