Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/11/2015, à 11:56

Morgiver

[Projet d'étude] Installation et configuration d'une PKI

Salut à tous,

Dans le cadre de mes études et de mon boulot, j'ai choisi d'étudier la mise en place d'une PKI (Public Key Infrastructure).

Contexte :
Je met progressivement en place un projet de gestion de données au sein d'un réseau décentralisé.

Les données qui devraient y transiter sont assez sensibles (informations personnelles de personnes en difficulté financière, juridique, et d'autre). Il va de sois que la sécurité doit être adaptée.

J'ai choisi de développer une infrastructure de serveur avec NodeJS. Un serveur d'Authentification, un serveur de Données et un serveur local pour chaque Utilisateur.
Au delà du fonctionnement de l'infrastructure, j'aimerais m'assurer que les machines sont bien certifiées sur le réseau. En effet, nos bureaux sont décentralisés, on est dispatché sur une commune dans plusieurs quartier, cela présente donc quelques risques.

Objectifs :

  • Assurer une certification des machines du réseau

  • Assurer un encryptage des communications

  • Assurer une authentification des utilisateurs sur le réseau

Contraintes :
Il y a une contrainte relativement lourde, le réseau de base ne nous appartient pas, on profite d'un réseau d'une autre association (elle aussi décentralisée) qui elle même profite d'un réseau MAN. Il faut donc considérer que ce réseau comme étant ouvert.
Nous pouvons installer des serveurs sur lesquels nous avons un contrôle total, on a donc la possibilité de créer un réseau dans le réseau.

Moyens actuels :
Mes moyens actuels sont un ordi personnel suffisamment puissant pour supporter une petite dizaine de machines virtuelles (16Go et 12Threads à disposition).

But de ce post
Ce post doit servir à recueillir des informations (si tant est que des gens le suive) et d'organiser ces informations au jour le jour.
Je ne me considère pas comme un crac de la sécurité et j'ai encore beaucoup à apprendre, en postant ici j'espère pouvoir trouver un petit soutient.
Et puis qui sait, peut-être que cela intéressera quelqu'un.

J'invite donc quiconque aurait des informations, des conseils ou des ressources à partager.

Bref... pour l'instant voici un premier tas de tutoriel et de ressources d'informations diverses.

Liens en vrac :

Merci d'avance à tous,

Morgiver

Dernière modification par Morgiver (Le 19/11/2015, à 10:45)

Hors ligne

#2 Le 19/11/2015, à 10:53

Morgiver

Re : [Projet d'étude] Installation et configuration d'une PKI

Ajout de deux lien vers la documentation et le cookbook de openssl (source en anglais, mais super importante)

Hors ligne

#3 Le 20/11/2015, à 10:01

LeoMajor

Re : [Projet d'étude] Installation et configuration d'une PKI

Bonjour,

Par rapport au service, la connexion sécurisée implique l'authentification serveur. Si le service a vocation d'être diffusé publiquement, il faut acheter un certificat chez le marchand.

Assurer une authentification des utilisateurs sur le réseau

L'authentification cliente est traduite en pkcs12, soit en format fichier, fichier plat, ou plus évoluée,  en injectant sous carte à puce, usb token.

J'ai choisi de développer une infrastructure de serveur avec NodeJS. Un serveur d'Authentification, un serveur de Données et un serveur local pour chaque Utilisateur.

Est-ce vraiment utile ? non,  au mieux ldap, au pire sans ldap, selon les besoins.
Lorsque le x509 v3 est supporté nativement au niveau du service, c'est à dire serveur,  bien souvent, mais pas toujours l'authentification cliente de même type ( x509 v3- pkcs12), est aussi supporté.  Il faut juste lire les docs relatives pour untel service, untel logiciel serveur. Pour les services qui ne le supportent pas, je pense qu'il faut passer par ldap en invoquant untel filtre, pour l'authentification par certificat.

Contraintes :

Les contraintes sont surtout du côté utilisateur. J'utilise au quotidien une carte à puce. Il faut penser aussi à un second choix par mot de passe, ou un autre mode opératoire plus terre à terre. L'ergonomie est importante, sinon cela tue la sécurité. Il y a des malheureux exemples du genre pur java et même smime.

Hors service, il y a aussi beaucoup à dire.

Hors ligne

#4 Le 20/11/2015, à 10:22

Morgiver

Re : [Projet d'étude] Installation et configuration d'une PKI

Salut smile

Le réseau dans lequel je me trouve actuellement dispose déjà d'un serveur d'authentification. Mais ma hiérarchie m'interdit d'y toucher, tout comme le serveur mail et d'autres services.
C'est un peu con, c'est certain, sinon je profiterais directement de ces services.

Tout ce que je peux faire, c'est installer un/plusieurs nouveau(x) serveur(s) qui propose(nt) des services supplémentaires sur leur réseau.

D'ailleurs c'est pour ça que j'ai choisi NodeJS et la certification, ça me permet de créer mes services et d'identifier les machines sans demander quoi que ce soit aux proprios du réseau.

Cela dit, est-ce que LDAP me permettrait de fournir un service d'authentification sur un réseau disposant déjà de ce genre de service ? (en plus je suis certains qu'il doit exister un module NodeJS pour gérer LDAP).
N'y aurait-il pas de conflit ?

Hors ligne

#5 Le 21/11/2015, à 16:12

LeoMajor

Re : [Projet d'étude] Installation et configuration d'une PKI

Je vois surtout l'authentification forte par certificat pour un utilisateur, mais pas vraiment pour une machine, un réseau. Au moins, le certificat est nominatif à la personne et fonctionne comme un titre au porteur. Il n' y a pas d'ambiguïté. L'authentification forte est souveraine et écrase tout. Les restrictions par ip, par réseau, euh pourquoi pas au niveau du service, mais sont presque inutiles.
Tu l'auras compris; je ne comprends pas cette approche de "certifier les machines du réseau".

Le service sait qui est l'utilisateur qui se présente, grâce au certificat. Donc, les conditions d'accès de l'utilisateur, qu'il soit sur une ip fixe, dynamique, ordinateur portable, ou pas, ou je ne sais trop quoi, sont quasiment sans importance, puisque le seul critère d'accès sera l'authentification forte par certificat.

Le schéma du ldap, si besoin, sera d'ailleurs relatif à la personne, à l'utilisateur.
Il y a aussi la possibilité de mélanger les certificats commerciaux, rgs, et les certificats issus de pki perso. Le certificat client  peut s'étendre à un groupe de personnes, une entreprise.

Hors ligne

#6 Le 23/11/2015, à 11:24

Morgiver

Re : [Projet d'étude] Installation et configuration d'une PKI

Salut smile

Tewis a écrit :

Je vois surtout l'authentification forte par certificat pour un utilisateur

Ça je l'intègre après.

Tewis a écrit :

Les restrictions par ip, par réseau, euh pourquoi pas au niveau du service, mais sont presque inutiles.

En fait, la restriction par ip ou par réseau, je ne sais pas si je pourrai le faire (petite question en passant, qu'est-ce qui rend inutile la restriction par ip ou par réseau ?)

Dans l'état actuel des choses, mon serveur d'authentification exige un certificat à la machine qui se connecte à lui. Ensuite, vient une couche utilisateur qui demande un login et un mot de passe utilisateur.

J'aimerais bien pouvoir identifier les machines connectées, je prévois de pouvoir recueillir des informations style matos utilisé, OS installé, etc... pour pouvoir faire une rapide évaluation de l'état de nos machines. NodeJS propose quelques méthodes intéressante pour récupérer ce genre d'infos.

Hors ligne

#7 Le 23/11/2015, à 11:48

MicP

Re : [Projet d'étude] Installation et configuration d'une PKI

…le réseau de base ne nous appartient pas, on profite d'un réseau d'une autre association…
…En effet, nos bureaux sont décentralisés, on est dispatché sur une commune dans plusieurs quartier, cela présente donc quelques risques.…

En lisant ça, je me demandais si un VPN sur le port 443 (HTTPS) ne serait pas une solution intéressante.

Hors ligne

#8 Le 23/11/2015, à 11:53

Morgiver

Re : [Projet d'étude] Installation et configuration d'une PKI

Pour l'instant le serveur est configuré pour n'accepter que des connexions HTTPS certifiées.

Justement à propos de la certification, il y a une chose que je ne m'explique pas encore vraiment.
Quand un navigateur se connecte à un site en HTTPS, est-ce qu'il va vérifier l'état du certificat chez l'autorité de certification ? Ou est-ce une information contenue dans le certificat signé ?

Hors ligne

#9 Le 10/12/2015, à 13:18

LeoMajor

Re : [Projet d'étude] Installation et configuration d'une PKI

Dans l'état actuel des choses, mon serveur d'authentification exige un certificat à la machine qui se connecte à lui (1). Ensuite, vient une couche utilisateur qui demande un login et un mot de passe utilisateur(2).

Tu verras qu'en pratique, le certificat client suit son porteur.
Si il est fixe, alors c'est une machine. S'il est mobile, alors c'est l'utilisateur. C'est juste une question de sémantique, concept. (1) ou (2). Finalement, utiliser une surcouche d'authentification est inutile (1+2). L'accès au service sera refusé de toute manière, avec bien souvent une rupture de la session (il n'y a pas de bis repetita, renégociation, de l'authentification)
Le fil conducteur, côte client, est le pkcs12, p12, dans les applications clientes (navigateurs, MUA,  ...). Avec les périphériques de sécurité (exemple; carte à puce, usb token gemalto k30 k50, , ...), le pkcs12 se traduit en pkcs11. Les certficats clients assimilées à du p12, sont inclus dans le périphérique de sécurité (pkcs11). Les passphrases des pkcs12, rendues nulles (comme pour un serveur) sont substituées par le rôle du code pin du pkcs11, qui verrouille l'accès au périphérique de sécurité.
En session telnet/openssl s_client, le pkcs12 est traduit en pem.

voir aussi pam_pkcs11 si utilisation de pkcs11

Quand un navigateur se connecte à un site en HTTPS, est-ce qu'il va vérifier l'état du certificat chez l'autorité de certification ? Ou est-ce une information contenue dans le certificat signé ?

La vérification de l'authentification serveur, c'est la navigateur client qui le fait. L'Autorité de Certification peut être déboutée manuellement chez le client ("ne pas accorder la confiance").
La vérification de l'authentification client, c'est la service qui le fait. L'AC doit être présente si vérification de l'AC, sur le serveur.
(hors cas spécial, open pgp, gpg, assimilé PKI carte à puce, fake PKI, ou AC simulée, n'est pas vérifiée (gnupg-pkcs11-scd)). 

Pour tes histoires de info/maintenance machine, il y a aussi glpi. Je ne sais pas si c'est adapté à ton cas.

Hors ligne

#10 Le 11/12/2015, à 06:31

MicP

Re : [Projet d'étude] Installation et configuration d'une PKI

Pour expliquer le fonctionnement de certains concepts sur la sécurité, les plus beaux cours que j'ai pu voir, (même s'ils datent, il restent encore valables pour en comprendre les bases) sont ceux de Mr Christian.Queinnec
Ce monsieur est, à mon humble avis, un véritable artiste de la pédagogie (très très très rare) : Il sait exposer simplement des concepts qui peuvent sembler très complexes.
Voir ses cours N°11 sur la sécurité, (et tous les autres) extraits de Programmation réticulaire.

En espérant que ça puisse aider.

Dernière modification par MicP (Le 11/12/2015, à 06:33)

Hors ligne