Home

Systèmes de fichiers distribués sécurisés

image

Contents

1. de ce dernier repose sur un probl me arithm tique difficile le logarithme discret 7 tant donn les progr s actuels concernant la recherche de solutions ce probl me les entiers manipul s pour assurer la s curit du protocole doivent se composer d au moins 1024 bits Or l impl mentation de Sun utilise des entiers de 192 bits l algorithme utilis pour authentifier les requ tes est le DES 8 avec une cl de 56 bits Depuis la cryptanalyse diff ren tielle de Biham et Shamir 9 la cryptanalyse lin aire de Matsui 10 et le d veloppement de circuits sp cialis s pour attaquer le DES 11 ce protocole est pr sent consid r comme obsol te par la communaut scientifique le m canisme AUTH_DES ne sert qu authentifier les requ tes RPC les donn es transmises via ces requ tes ne sont pas chiffr es AUTH_KERB n cessite la mise en place d un serveur Kerberos nous n aborderons pas ce sujet 3 Redirection de ports avec SSH Le protocole SSH a t d velopp en 1995 par T Yl nen 12 Actuellement le protocole en est sa version 2 Il se compose de 3 couches la couche connexion qui se charge de l authentification du serveur par l utilisateur de l laboration d une cl de chiffrement commune pour assurer la confidentialit des donn es et du contr le de l int grit de ces derni res la couche authentification qui permet au serveur d authentifier l utilisateur
2. Del Sorbo et P Persiano The design and implementation of a transparent cryptographic file system for unix Dans USENIX Annual Technical Conference 2001 Boston MA Juin 2001 R Srinivasan Rpc Remote procedure call specification version 2 Ao t 1995 W Diffie et M E Helmann New directions in cryptography IEEE Transactions on Information Theory IT 22 6 644 654 Novembre 1976 B A LaMachhia et A M Odlyzko Computation of discrete logarithms in prime fields Design Codes and Cryptography 1 46 62 1991 NBS FIPS PUB 46 Data encryption standard Rapport technique National Bureau of Standard U S Department of Commerce 1977 E Biham et A Shamir Differential cryptanalysis of des like cryptosystems Dans Advances in Cryptology CRYPTO 90 pages 2 21 Berlin 1991 M Matsui The first experimental cryptanalysis of the data encryption standard Dans Advances in Cryptology CRYPTO 94 pages 1 11 Berlin 1994 Electronic Frontier Foundation Cracking DES Secrets of Encryption Research Wiretap Politics and Chip Design O Reilly and Associates 1998 T Yl nen Secure login connections over the internet Dans 6th USENIX Security Symposium pages 37 42 San Jose Juillet 1996 R L Rivest et A Shamir et L M Adleman A method for obtaining digital signatures and public key cryptosystems Communications of the ACM 21 2 120 126 F vrier 1978 NBS FIPS PUB 186 Digital signature standard Rapport technique Nationa
3. L installation de cryptofs n cessite la recompila tion du noyau la fois sur le serveur et le poste client 11 Nis 4 Le protocole NFS 4 2 apporte de nombreuses am liorations dans divers domaines Nous nous focaliserons uniquement dans ce paragraphe sur les nouveaux m canismes de s curit Le protocole s appuie toujours sur l change de messages RPC pour la communication entre le client et le serveur NFS 4 dispose des m thodes d authentification des versions pr c dentes et en propose une nouvelle intitul e RPCSEC_GSS 34 Cependant cette nouvelle m thode ne se contente pas de r aliser l authen tification des messages c est un m canisme de s curit part enti re qui repose sur la GSSAPI Generic Security Service Application Program 35 Il existe de nombreux proc d s permettant de s curiser les transmissions entre deux intervenants certains utilisent la fois la cryptographie cl publique et la cryptographie cl priv e d autres uniquement la cryptogra phie cl priv e L objectif de la GSSAPI est de fournir une interface de programmation g n rique qui encapsule plusieurs m canismes de s curit Toute session RPC de type RPCSEC_GSS est constitu e de 3 phases une phase de cr ation de contexte Le client et le serveur se mettent d accord sur le m canisme de s curit qu ils vont utiliser les algorithmes permettant de mettre en uvre ce m canisme et le type de service mettre
4. Ova nes client serveur et serveur client Contrairement sfsagent J teq Cauth sited cr ation de var sfs serveur_nfs Us a ce qui a t pr sent en introduction dans ce contexte CEE Tequ te d authentification sign e z le client ne peut authentifier le serveur partir de Ks num ro d authentiication 3 z amp requ te NFS puisqu il ne conna t pas HostID Cependant seul le pos sesseur de l inverse de la cl re ue normalement Ls est capable pr sent de d chiffrer les transactions On peut donc se trouver dans l un des deux cas suivants un intrus s est plac en coute sur la ligne il ne peut obtenir aucune information un intrus a intercept la communication et a envoy sa cl K la place de Kg il peut d chiffrer les communications Une fois le canal s curis en place les programmes sfskey et sfsauthd d marrent le protocole SRP D apr s ce qui a t dit pr c demment si le protocole aboutit le poste client et le serveur se sont authentifi s mutuellement Dans le cas contraire le client tait en contact avec un serveur lui ayant envoy un fausse cl publique Le d mon sfsauthd envoie alors sfskey la cl priv e chiffr e de l utilisateur user1 et le germe associ sfskey d chiffre la cl l aide du germe et de la phrase cl et la transmet sfsagent Ce dernier pourra l utiliser lorsqu il s agira d authentifier les requ tes de l utilisateur comm
5. de Salerne en Italie La derni re version est la 3 0b2 31 Son installation n cessite de recompiler le noyau du poste client afin d y inclure le support d un nouveau syst me de fichiers le syst me tcfs L administrateur syst me du poste client monte la partition NFS en sp cifiant option t tcfs pour la commande mount Le serveur doit tre configur comme un serveur NFS standard Sur le poste client le fichier etc tcfspwdb contient pour chaque utilisateur une cl priv e chiffr e avec le mot de passe de ce dernier et une variante de l algorithme MD5 Chaque nouvelle entr e dans ce fichier est cr e par l administrateur avec la commande tcfsadduser u login Chaque utilisateur y inscrit sa cl en sp cifiant avec quel algorithme de chiffrement cl priv e elle doit tre utilis e tcfsgenkey c 3des Dans la derni re version les algorithmes support s sont BLOWFISH 3 DES RC5 32 et un algorithme d velopp par les membres du projet TCFS Chaque requ te NFS est intercept e par le module tcfs Si une action de chiffrement ou d chiffrement est n cessaire elle est effectu e en utilisant la cl de l utilisateur qui doit tre charg e en m moire Pour cela l utilisateur aura ex cut lors de sa connexion la commande tcfsputkey qui r cup re la cl priv e de ce dernier dans le fichier tcfspwdb et la d chiffre en utilisant son mot de passe L utilitaire tcfsrmkey permet de supprimer la cl de la m moire L u
6. home ne puisse tre mont e nous conseillons dans ce cas de g n rer la cl id rsa_ tunnel en utilisant une phrase cl On utilisera l agent SSH afin de n avoir saisir cette derni re qu une seule fois lors du d marrage du syst me Remarque Bien que la communication soit pr sent chiffr e d une extr mit l autre il subsiste un dernier petit inconv nient L administrateur syst me du serveur SSH peut se servir de l existence du deuxi me tunnel pour acc der la partition home du serveur NFS 5 S curiser un serveur NFS UDP avec SSH Le logiciel SEC RPC d velopp par J Bowmman 23 permet d uti POSTE CLIENT SERVEUR NFS liser SSH dans le cas d un serveur NFS en mode UDP La derni re n G Requ te Requ te Serveurs version 1 52 1 date de Juillet 2003 et se compose de trois pa ne as Be ckages RPM sec_rpc 1 52 1 sec_rpe client 1 52 1 et sec_rpc server 1 52 1 Le premier est installer la fois sur le poste client et le serveur NFS Le fonctionnement de SEC RPC nee Tunnel SSH ae est le suivant cf fig 4 Sur le poste client deux programmes s enregistrent au niveau du port mapper local Ils sont associ s un m me port Figure 4 Fonctionnement de Sec Rpc en utilisant les directives mountprog et nfsprog de la commande mount on redirige les requ tes de type MOUNT et NF S vers ces programmes un d
7. serveur_ ssh h berge aussi un serveur Pop ceci permet par exemple de relever son courrier sans que les messages transitent en clair La communication n est pas chiffr e au niveau de l interface loopback Le tunnel reste actif tant que le client SSH qui tourne en tache de fond sur poste_client n est pas arr t par l utilisateur Pour que le tunnel disparaisse automatiquement lorsque I application qui l utilise se termine il suffit de modifier la commande initiale comme suit client ssh f L port local poste_distant port distant login serveur_ ssh sleep 30 Le tunnel est cr et la commande sleep 30 est lanc e sur le serveur SSH Au bout de 30 secondes le client SSH dispara t ainsi que le tunnel Cependant si dans ce laps de temps une connexion TCP est initi e sur le port port_local de poste _client le tunnel reste actif jusqu la terminaison de la communication La cl ture de la session TCP provoquera automatiquement la destruction du tunnel une fois le tunnel cr n importe qui peut l utiliser SsH n est capable de rediriger que le flux TCP or le protocole NFS utilise UDP par d faut dans le noyau 2 4 x de Linux Pour obtenir une version en mode TCP il est n cessaire de recompiler le noyau Bien que consid r comme exp rimental le serveur en mode TCP fonctionne parfaitement Si on ne souhaite pas recompiler le noyau le package nfs user server pour la distribution Debian propose un serveur
8. te de demande de montage de la partition distante est alors envoy e en UDP sur le port p de h te Les acc s la partition sont effectu s en envoyant des requ tes sur le port p2 de h te Dans le cas o les options mountport et port sont sp cifi es ce seront ces valeurs qui seront utilis es pour les requ tes RPC l appel initial au portmapper distant est dans tous les cas effectu Sans aucune authentification n importe quel client pourrait envoyer des requ tes RPC un serveur et obtenir sa r ponse Le ser veur RPC doit pouvoir disposer d un m canisme pour savoir s il peut d livrer ou non des informations au client l interrogeant Il existe 4 syst mes d authentification de base d velopp s par Sun AUTH_NONE l acc s est anonyme c est au serveur de d terminer quelles informations sont accessibles pour ce type d acc s AUTH_UNIX ou AUTH_SYS l uid et le gid du demandeur sont envoy s au serveur qui v rifie en fonction de ces valeurs si la requ te est autoris e AUTH_DES non disponible sous linux utilise un m canisme classique combinant la cryptographie cl publique et cl priv e permettant l metteur de la requ te et au serveur de partager une cl de chiffrement commune Nous ne d taillerons pas le m canisme d authentification mais nous insisterons sur trois probl mes essentiels la cl commune est mise en place avec l algorithme de Diffie Helmann 6 La s curit
9. tre install sur le client et le serveur 8 1 Acc s direct Configuration du serveur L installation des deux packages cr e un utilisateur sfs sur le syst me ainsi qu un r pertoire etc sfs Bien que sfscd corresponde la partie cliente du protocole il est pr f rable de l ex cuter aussi sur le serveur car il g re un m canisme permettant d augmenter l entropie du flux al atoire utilis par les diff rents algorithmes Le couple de cl priv e publique du serveur est g n r en ex cutant sfskey gen P b 1024 etc sfs sfs_host_key L option P signifie que la cl priv e n est pas prot g e par une phrase cl Il faut en suite cr er le fichier etc sfs sfsrwsd config qui contient des informations concernant les r pertoires exporter Dans le protocole NFS le client voit une partie de l arborescence du serveur Avec SFs il est possible d exporter une arbo rescence logique diff rente de l arborescence physique en attribuant un nom chaque r pertoire export L association nom physique nom logique est contenue dans le fichier sfsrwsd_config en utilisant la directive Export dont la syntaxe est Export nom_physique nom_logique Le nom logique de la premi re directive doit tre Les autres doivent correspondre a des r pertoires de la racine virtuelle Le r pertoire racine de l arborescence logique ainsi que tous les r pertoires logiques doivent tre cr s dans le r pertoire var sfs Exemple
10. Ce qui revient exporter la partition home du serveur NFS vers lui m me puisque les deux serveurs tournent sur la m me machine home serveur_nfs rw root_squash insecure Remarques Il est conseill d exporter la partition en pr cisant soit l adresse IP du serveur soit son nom Il existe en effet des attaques pour les serveurs exportant des partitions vers localhost via l interface locale Le d mon de montage n accepte que des requ tes issues d un port r serv sauf si la directive insecure est utilis e Cette derni re est indispensable car les requ tes mises par le serveur SSH proviennent d un port al atoire cf 3 Automatisation de la proc dure En rajoutant dans le fichier etc fstab de poste_client la ligne suivante localhost home mnt home nfs tcp intr bg mountport 25000 port 250001 la partition sera automatiquement mont e au d marrage du syst me si le tunnel est d j en place Ceci n cessite de la part de l administrateur syst me du poste client de s identifier chaque red marrage Pour viter cela l administrateur peut g n rer un jeu de cl s non li es un mot de passe ou une phrase cl ssh keygen t rsa Lorsque la commande demande de rentrer une phrase cl il suffit de valider pour engendrer le couple de cl s On supposera pour la suite que la cl publique g n r e est dans le fichier id_rsa_ tunnel pub L administrateur de poste_client place dans son compte
11. NFS en mode TCP qui s ex cute dans l espace utilisateur Nous distinguerons donc pour la suite les deux modes de connexion possibles UDP et TCP Nous supposerons de plus pour les exemples que le serveur NFS exporte la partition home Remarque FreeBSD et Solaris supportent nativement une version TCP de NFS 4 S curiser un serveur NFS TCP avec SSH 4 1 Acc s direct Le serveur NFS doit aussi dans ce cas h berger un serveur SSH Configuration poste client A l aide de la commande rpcinfo on d termine sur quels ports les d mons correspondants aux services MOUNT et NFS sont en coute sur le serveur client rpcinfo p serveur_nfs G n ralement le d mon mount d est en coute sur un port al atoire d termin par le portmapper au moment du lancement du serveur cependant celui ci peut tre fix une fois pour toutes en utilisant l option p de rpc mountd Le d mon nfsd est par d faut en coute sur le port 2049 Une fois ces informations obtenues on peut lancer la cr ation du tunnel pour acc der en mode s curis ces ports client ssh f N L 25000 serveur nfs 1025 L 25001 serveur nfs 2049 login serveur _nfs Remarques il n est pas indispensable que le tunnel SSH soit cr par l administrateur du syst me cependant ce dernier est normalement le seul pouvoir utiliser la commande mount les ports 25000 et 25001 ne sont donn s qu titre d exemple Une fois la phase d identification t
12. Research in Cryptography pages 181 190 Rome Italie 1993
13. Supposons que l on d sire exporter les r pertoires des utilisateurs userl user2 et le r pertoire var www html vers l arborescence logique sfsuserl sfsuser2 et sfsweb On commence par cr er l arborescence logique dans var sfs serveur _nfs mkdir var sfs sfsroot serveur _nfs mkdir var sfs sfsuserl serveur _nfs mkdir var sfs sfsuser2 serveur _nfs mkdir var sfs sfsweb Le fichier sfsrwsd_config correspondant contiendra Export var sfs sfsroot Export home userl sfsuserl Export home user2 sfsuser2 Export var www html sfsweb Le d mon sfssd agissant comme un client NFS standard pour le serveur NFS local il traduit chaque requ te des tination d une arborescence logique en une requ te destination d une arborescence physique Pour cela il utilise l interface Loopback il faut donc que le serveur NFS exporte vers localhost les partitions var sfs root home userl home user2 et var www html De plus sfssd s ex cutant sous luid root il faut rajouter l option no_root_squash dans le fichier etc exports Il ne reste plus qu lancer le serveur NFS et le serveur SFS etc rc d init d nfs start etc rc d init d sfssd start Configuration du client il suffit de lancer etc rc d init d sfscd start Le r pertoire sfs est automa tiquement cr et le client SFS est en coute Exemple d utilisation Pour qu un utilisateur user1 puisse acc der ses ressources sur le serve
14. cryptofs engendre une cha ne d information et la chiffre avec la cl de chiffrement du fichier le r sultat est pass au client NFS qui le signe avec la cl priv e du fichier s il existe une association reliant l uid au nom de fichier et a sa cl priv e la chaine chiffr e et sa signature sont envoy es au serveur NFS celui ci calcule partir de la cl publique du fichier et de la cha ne re ue la signature de cette derni re Il d chiffre la signature re ue avec la cl publique du fichier et compare le r sultat obtenu avec la signature qu il a calcul e Si les deux concordent la requ te est accept e Une fois la requ te accomplie par le serveur celui ci signe le r sultat avec la cl publique du fichier et renvoie le tout au client NFS qui contr le la validit de la signature Le r sultat est alors pass au module cryptofs qui le d chiffre si des donn es sont pr sentes avant de le transmettre au processus utilisateur Ainsi pour effectuer une op ration d criture sur un fichier il faut connaitre sa cl priv e pour une op ration de lecture il suffit de poss der sa cl publique Les donn es qui transitent sont chiffr es soit par le module cryptofs soit parce qu elles proviennent du serveur et le fait de signer chaque transaction assure leur int grit et permet d authentifier les droits de l utilisateur Le client NFS et le serveur NFS ont t r crits pour g rer les signatures
15. distant avec lequel le client va communiquer Une fois cette commande ex cut e sur le poste client le serveur SSH s assure de l identit de l utilisateur l origine de cette requ te Sur le poste client un client SSH se met en coute sur port_local via l interface r seau locale loopback toute requ te vers localhost port local est automatiquement transmise de fa on confidentielle via l interface r seau externe par le client SSH g n ration d un nouveau num ro de port source vers le port 22 de serveur_ssh le serveur SSH met alors la requ te comme un client normal vers poste_ distant port_ distant port_distant re oit un paquet avec pour port source un port al atoire engendr par serveur_ssh et pour adresse IP source l adresse IP de serveur_ ssh poste distant renvoie sa r ponse serveur_ssh qui son tour la retransmet via le tunnel vers le client SSH de poste _client le client SSH transmet la r ponse re ue vers localhost port_local a figure 2 illustre ce m canisme dans le cas o le poste client d sire contacter le serveur TELNET du poste distant Pour chaque requ te sont pr cis s le port source la machine mettrice et le port destination client ssh f N L 2323 poste distant 23 Ser telnet localhost 2323 2000 localhost 2323 veur_ssh client telnet localhost 2323 _ 29 dd 987uyfs telnet poste_distant 4000 serveur_ssh 23 ee ail Remarques importante
16. forme sfs serveur_nfs HostID chemin o HostID est l image via la fonction de hachage SHA 1 de la cha ne 1 serveur_nfs Ks 1 serveur_nfs K s le fait de dupliquer le motif d entr e est une s curit suppl mentaire pour contrer la recherche de collisions Lorsque le client acc de un chemin de ce type une requ te est mise vers serveur_nfs celui ci renvoie sa cl Ks et le client peut calculer SHA 1 1 serveur_nfs Ks 1 serveur_nfs Ks et comparer le r sultat avec HostID Nous verrons un peu plus loin que selon le contexte d utilisation ce n est pas r ellement ce m canisme qui est utilis Une question naturelle se pose par quel moyen peut on obtenir un HostID sans conna tre la cl publique d un serveur Dans sa th se D Mazi res propose plusieurs solutions que nous ne pouvons toutes d tailler les nombreuses fonctionnalit s offertes par le protocole SFs justifiant elles seules un article complet Nous nous contenterons de pr senter par la suite la solution d crite dans la manuel d utilisation de SFs pour laquelle la proc dure d authentification du serveur diff re de ce qui a t nonc ci dessus Remarquons auparavant que du fait des propri t s de SHA 1 la quantit HostID est unique pour chaque machine Ainsi un intrus voulant usurper l identit d un serveur ne peut envoyer une fausse cl publique la diff rence de SSH lors de la premi re connexion L avantage d un tel syst me est que n
17. importe qui peut mettre en place un serveur SFS sans avoir besoin de faire certifier sa cl publique par une autorit externe quelconque Il y a essentiellement 5 programmes qui interviennent dans le protocole SFs le serveur s f ssd le client s f sca l agent utili sateur sfsagent pr sent sur le poste client et en ex cution pour chaque utilisateur le d mon d authentification sfsauthd pr sent sur le serveur De fa on g n rale le d mon sfscd se charge lors de l acc s un serveur d authentifier ce dernier et de mettre au point deux cl s de session entre le poste client et le serveur l une servant chiffrer les communications du client vers le serveur et l autre du serveur vers le client En ce qui concerne le serveur la construction de ces deux cl s n cessite l utilisation de la cl secr te Lg ainsi le poste client est assur que seul le serveur peut d chiffrer la communication Lauthentification des utilisateurs est effectu e avec un algorithme cl publique chaque utilisateur poss de donc un couple de cl s et le serveur poss de un fichier associant chaque cl publique un couple uid gid d finissant les droits associ s cette cl Lorsqu un utilisateur acc de pour la premi re fois aux ressources export es par le serveur s fcd envoie tout d abord une requ te sfsagent qui la signe en utilisant la cl priv e de l utilisateur ce qui suppose qu il y ait acc s Le message sign est
18. les bits de sortie sont combin s par un ou exclusif avec les bits du message chiffrer Cet algorithme est tr s peu s r au sens acad mique du terme cependant il n existe aucune attaque r ellement pratique quand il est employ correctement au sein d un protocole bien pens comme SSL par exemple BLOWFISH est un algorithme de chiffrement par blocs comme 3DES et l AES Il fait partie de SSH car les concepteurs de ce protocole cherchaient un algorithme libre de droit qui ne soit pas un standard recommand par le gouvernement am ricain Le 3DES est tr s robuste mais beaucoup plus lent que les autres Aucune cryptanalyse lin aire ou diff rentielle applicable ces 3 algorithmes n a t trouv e ce jour La redirection de ports consiste mettre en place un tunnel chiffr entre deux applications non s curis es afin que celles ci puissent communiquer en mode TCP de fa on confidentielle Le manuel de SSH n tant pas tr s explicite sur cette fonctionnalit notamment en ce qui concerne le trajet sur lequel les donn es seront r ellement chiffr es nous commencerons par bri vement rappeler le d roulement d une communication s curis e via un tunnel SSH La commande permettant la mise en place d un tunnel SSH est la suivante client ssh f N L port local poste distant port distant login serveur_ssh Trois machines sont impliqu es lors de la cr ation du tunnel le poste client un serveur SSH et le poste
19. pas une authentification forte du client puisqu il suffit d usurper l adresse IP de ce dernier Il n y a pas d authentification des utilisateurs autre que la v rification classique du couple uid gid acc dant aux ressources du serveur NFS seul le cr ateur du tunnel s curis a t authentifi par le serveur l exception de SHFS et SEC RPC dans le cas o ce n est pas la partition utilisateur qui doit tre mont e 8 SFS SFs Self certifying File System 25 est issu d une th se effectu e au MIT par D Mazi res 26 soutenue en Mai 2000 Ce syst me permet le chiffrement des donn es entre le poste client et le serveur ainsi que le contr le de leur int grit l authentification du serveur par le poste client l authentification par le serveur de chaque requ te mise par un utilisateur selon l utilisation l authentification du poste client par le serveur Pour s authentifier chaque serveur poss de un couple de cl s priv e publique Ls Ks Ceci pose le probl me classique de la gestion des cl s comment le poste client r cup re t il la cl publique du serveur en tant certain de son authenticit ce probl me est d ailleurs l origine d une attaque sur le protocole SSH SFS contourne de fa on assez l gante ce probl me en introduisant la notion de chemin auto certifi self certifying pathname Sur le poste client tout acc s au serveur se fera via un chemin de la
20. plac s Se Road x Sec Rpc AES 128 dans le contexte de l acc s direct serveur aoe A iis 3 Z Shfs Blowfish DD et client sont reli s directement via le r Shfs 3 DES Shfs Arcfour seau Le poste client est un PC Pentium II Shfs Gp e 1Ghz et le serveur NFS un PC Pentium II ss RS 350 Mhz Les deux machines sont connec Os 25s 50s 75s 100s 125s 150s 175s 200s t es un commutateur 100Mbits sec Le test consiste en la copie d un fichier de 100Mo du poste client vers le serveur 10 Autres syst mes Figure 6 Analyse des performances Dans ce paragraphe nous d taillons rapidement deux autres produits TCFS et CRYPTOFS qui adoptent une autre strat gie par rapport aux solutions pr c dentes les donn es pr sentes sur le serveur NFS sont chiffr es Pour que l acc s ces derni res soit transparent pour les applications un module sur le poste client est charg de chiffrer et d chiffrer les donn es 4 la vol e Cependant le projet TCFS n a plus volu depuis Avril 2001 et ne fonctionne que sur des postes clients disposant d un noyau 2 2 17 Redaht 6 2 apr s contact avec l un des responsables du projet CRYPTOFS il s av re que pour instant les sources et les binaires ne sont pas disponibles et qu un autre projet est en cours de d veloppement 10 1 Tefs TcFs Transparent Cryptographic File System a t d velopp au d partement d informatique et applications de l universit
21. remarquer que le programme rpc_psrv est en ex cution et appartient l utilisateur snfs un client SSH appartenant snfs lance l ex cution du programme rpc_pcl sur le serveur NFS la commande rpcinfo p indique que deux programmes sont enregistr s au niveau du portmapper local l aide de la commande netstat ap on v rifiera que le programme en coute sur le port 1027 est rpc_psrv program vers proto port 200000 3 udp 1027 250000 3 udp 1027 Sur le serveur le programme rpc_pcl est en ex cution et appartient snfs Pour d monter la partition il suffit d ex cuter etc rc d init d snfs stop Bien que cette configuration permette lors du d marrage du syst me de monter automatiquement une partition utilisateur sans aucune intervention de l administrateur elle poss de un inconv nient majeur La cl priv e de l utilisateur snfs n tant pas prot g e un intrus r ussissant la subtiliser obtiendrait un acc s au serveur NFS Nous proposons donc la solution suivante qui ne devrait pas tre trop p nalisante quant l automatisation de toute la proc dure Engendrer sur le poste client un couple de cl s RSA prot g es par une phrase cl Placer le contenu de id_rsa pub dans le fichier authorized_keys de l utilisateur snfs sur serveur_nfs Modifier le fichier de configuration etc snfs serveur_nfs de fa on ce que le programme rpc_psrv soit lanc en tant que root ce qui signifie qu
22. 001 ser veur_nfs 2049 login serveur_nfs sleep 10 Remarques l option i permet de sp cifier la cl utiliser pour le m canisme d identification l option T signifie que l on ne d sire pas allouer de terminal pour l ex cution de la commande la commande est lanc e en tache de fond cependant l option f ne peut tre utilis e que si l on sp cifie une commande distante ex cuter C est pourquoi nous avons rajout sleep 10 qui ne sera jamais ex cut e tant donn e que la confi guration du fichier authorized_keys sur serveur_ssh lance l ex cution de sleep 300 lors de l utilisation de la cl id_rsa_ tunnel le tunnel SSH est actif pour 300 secondes ce qui laisse le temps au client de monter la partition home et de maintenir l existence du tunnel lors du d montage de la partition le tunnel sera automatiquement d truit 4 2 Acc s indirect Configuration du serveur NFS Il faut modifier le fichier etc exports afin d exporter la partition home vers le serveur SSH puisque c est lui qui va retransmettre les requ tes NFS home serveur_ssh rw root_squash insecure Configuration du poste client Il suffit d ex cuter ssh N L 25000 serveur nfs 1025 L 25001 serveur_nfs 2049 login serveur_ssh Selon le contexte de travail une telle configuration soul ve le probl me suivant la communication entre le serveur SSH et le serveur NFS n est pas s curis e Pour rem dier ce
23. SshCommand il n est pas n cessaire que l utilisateur snfs existe sur le serveur SSH Il suffit que l administrateur syst me de poste_client poss de un compte utilisateur standard sur le serveur pour mettre en place le tunnel le serveur NFS doit aussi h berger un serveur SSH 6 SHFS L installation de SHFS 24 ne concerne que le poste client La derni re version en date du 5 septembre 2003 est la 0 32 2 Ce logiciel se compose essentiellement d un module pour le noyau permettant d utiliser un nouveau type de syst me de fichiers pour la commande mount le type shfs 6 1 Acc s direct L utilisation de la commande mount t shfs revient ex cuter le programme shfsmount fourni dans le package dont la syntaxe g n rale est shfsmount opts login serveur_nfs partition point de montage o mount _opts login tant le compte utilisateur sur le serveur NFS de l administrateur syst me de poste _client L originalit de SHFS r side dans le fait que toutes les requ tes d acc s distantes sont en fait g r es via un shell SSH Ainsi il est inutile d avoir un d mon NES sur le serveur_nfs il suffit qu un serveur SSH soit actif Pour la suite nous continuerons cependant comme dans les paragraphes pr c dents appeler la machine distante serveur_nfs Pour monter la partition home de serveur_nfs l adminis trateur syst me ex cute client shfsmount serveur_nfs home mnt home o rmode 755 L option r
24. Syst mes de fichiers distribu s s curis s Pascal V ron Groupe de Recherche en Informatique et Math matiques Universit de Toulon Var veron univ tin fr R sum Malgr les nombreux protocoles permettant de partager des fichiers via le r seau NFS reste de nos jours le plus largement d ploy de par sa simplicit sa disponibilit sur diff rentes plates formes et sa transparence d utilisation En contrepartie les m canismes de s curit propos s par NFS sont pratiquement inexistants L objet de ce document n est pas de discuter de protocoles alternatifs mais de pr senter diff rentes m thodes permettant d utiliser un serveur NFS op rationnel de fa on s curis e Dans un premier temps nous montrerons comment renforcer la s curit de NFS en utilisant le tunneling SSH Nous pr senterons ensuite quelques syst mes qui se placent en amont de NFS et utilisent des algorithmes cryptographiques robustes pour s curiser les changes et authentifier les utilisateurs Pour chaque cas tudi nous montrerons comment mettre en place un acc s s curis entre un poste client se trouvant sur un r seau public et un serveur NFS situ dans un r seau priv via une passerelle SSH Mots clefs CryptoFS Nfs Rpc Sec Rpc Sfs Shfs Ssh Tcfs Partage s curis Tunneling 1 Introduction D velopp dans les ann es 80 par la soci t SUN MICROSYSTEMS le protocole NFS en est actuellement sa version 3 1 la version 4 2 devrai
25. UNTPROG et NF SPROG MOUNTPROG 50000 soient deux programmes n tant pas d j enregistr s au niveau du portmapper On supposera pour la suite que MOUNTPROG 2000000 Le fichier ainsi cr a pour nom serveur_nfs Il contient les directives n cessaires pour rediriger les appels RPC destination des programmes associ s MOUNTPROG et NFSPROG vers le serveur NFS via SSH On y trouve aussi la ligne de commande permettant de lancer sur le serveur l ex cution du client proxy RPC rpc_pcl On rajoute dans le fichier etc fstab la ligne poste_client home mnt home nfs mountprog 200000 nfsprog 250000 hard intr noauto Finalement afin que la communication SSH puisse se faire automatiquement entre le client et le serveur il faut d placer la cl id_rsa situ e sur le serveur de l utilisateur snfs dans son compte sur le poste client On pourra effacer les cl s DSA et renommer le fichier authorized_keys2 en authorized_keys l utilisation de SSH V 1 tant d conseill e Assurez vous que le r pertoire ssh appartienne l utilisateur snfs V rifiez que l utilisateur snfs peut bien se connecter sans mot de passe sur le serveur Pour monter la partition il suffit alors d ex cuter etc rc d init d snfs start Remarque si la cl publique de serveur_nfs n est pas pr sente chez l utilisateur snfs la commande chouera il faut donc avoir effectu une connexion au pr alable pour viter ce probl me Sur le poste client vous pourrez
26. acun d entre eux peut monter dans son propre r pertoire de travail les donn es le concernant s il dispose videmment d un acc s SSH sur la machine Pour cela l administrateur syst me de poste_client doit activer le bit suid pour les commandes shfsmount et shfsumount Chaque utilisateur peut alors ex cuter apr s avoir cr un r pertoire mnt dans son r pertoire de travail shfsmount login serveur_nfs home login mnt Le r pertoire mnt se verra automatiquement attribu un ugo de 700 Une question l gitime se pose Que se passe t il si l utilisateur ex cute la commande shfsmount login serveur _nfs mnt L ensemble du syst me de fichiers de serveur_nfs sera mont dans le r pertoire mnt de l utilisateur Les op rations pouvant tre effectu es par ce dernier seront d pendantes de ses droits Alors qu un serveur NFS exporte uniquement ce qui doit tre visible de l ext rieur ici c est l ensemble du syst me qui est visible Ceci n est pas choquant tant donn que l utilisateur a un acc s SSH sur le serveur et peut donc prendre connaissance de l arborescence du serveur uniquement en lan ant un shell Cette solution permet donc une authentification forte par le serveur de l utilisateur acc dant une ressource modulo les r serves que l on peut mettre quant la pr sence d ex cutables suid sur le syst me 6 2 Acc s indirect Il suffit de mettre en place un tunnel vers le se
27. d un certificat l authentification n est alors pas r alis e par mot de passe NES 4 utilisant la GSSAPI il est tr s facile d y rajouter d autres m canismes de s curit selon les contextes d utilisation du serveur Actuellement il n existe pas de versions officielles d un client et d un serveur NFS 4 pour Linux Une version de d veloppement est disponible dans la s rie 2 5 du noyau et devrait faire partie int grante de la version 2 6 Cependant il est pr f rable d utiliser les versions de d veloppement mises au point par le CITI Center for Information Technology Integration de l universit du Michigan dans lesquelles de nombreux bugs de la version propos e dans le noyau 2 6 ont d j t corrig s De plus les packages fournis peuvent tre install s sur un syst me pourvu d un noyau 2 4 Cependant tous les m canismes de s curit ne sont pas pr sents R f rences 1 B Callaghan et B Pawlowski et P Staubach Nfs version 3 protocol specification RFC 1813 Juin 1995 2 3 4 5 6 7 8 9 mer 10 11 12 13 14 15 16 17 18 19 S Shepler et B Callaghan et D Robinson et R Thurlow et C Beame et M Eisler et D Noveck Network file system nfs version 4 protocol RFC 3530 Avr 2003 D P O Shanahan Cryptofs Fast cryptographic secure nfs M moire de D E A Univ of Dublin 2000 G Cattaneo et L Catuogno et A
28. e cela a t expliqu dans l introduction sfskey calcule partir de Ks la valeur HostID qui est forc ment valide et cr automatiquement le lien var sfs serveur_nfs var sfs serveur_nfs HostID Ce lien n est visible que par l utilisateur user1 qui peut acc der ses donn es distantes via le chemin var serveur_nfs sfsuser1 Remarque un autre contexte d utilisation correspond au cas o le lien var sfs serveur_nfs existe d j cr par exemple par l administrateur syst me qui certifie que la valeur HostID est valide l utilisateur se connecte toujours partir du m me poste et conserve sa cl priv e dans son r pertoire de travail sur le poste client la cl publique correspondant tant sur le serveur Dans ce cas le protocole SRP n est pas utilis L utilisateur ex cute sfsagent et sfskey add pour transmettre son agent sa cl priv e D s qu il acc de var sfs serveur_nfs sfsuser1 le client sfscd tablit un canal s curis et authentifie le serveur comme explicit dans l introduction tant donn que HostID est connu L agent prend ensuite le relais pour authentifier les requ tes de l utilisateur aupr s du serveur Dans ce contexte le poste client n est pas authentifi sfsauthd 13 requ te NFS num auth 15 V rif signature Figure 5 Une session sfs 8 2 Acc s indirect Le protocole SFs communique en mode TCP Par d faut le client s fcd met t
29. e le client SSH sera lanc en tant que root Il suffit pour cela de changer la directive Id snfs par Id root le client SSH charg de l ex cution de rpc_pcl s authentifie en tant qu utilisateur snfs sur le serveur NFS On com mentera pour cela les lignes Host et RemoteCommand et on ajoutera la ligne SshCommand ssh ssh c blowfish x oFallBackToRsh no snfs serveur nfs rpc_pcl P 1 M 200000 100005 M 250000 100003 Lancer l agent SSH pour le root et rajouter dans le script snfs la ligne ssh add etc snfs ssh id_rsa avant l appel snfsmount et la ligne ssh add d etc snfs ssh id_rsa avant l appel snfsumount Dor navant l ex cution de etc rc d init d snfs start demandera de fournir la phrase cl associ e la cl id_rsa de snfs et cette cl sera automatiquement utilis e lors de la connexion au serveur NFS Remarques Poption M num num2 du client proxy RPC signifie que les requ tes RPC manant du programme num ro num doivent tre adress es au programme num ro num2 enregistr aupr s du portmapper local dans le cas d un d marrage automatique on peut lancer l ex cution de ssh agent dans le script sn fs il faudra cependant r cup rer dans un fichier les variables d environnement cr es par ce dernier qui sont indispensables ssh add d lors de l arr t du script On pourra rajouter la commande ssh agent k pour supprimer l agent lors du d montage de la partition on peut conserver
30. e si au moins p d entre eux ont donn leur autorisation Pour cela le fichier est prot g par une cl de groupe et chaque membre poss de un morceau de la cl de telle fa on que si au moins p d entre eux se r unissent la cl enti re puisse tre recons truite Ceci est possible en utilisant un protocole cryptographique classique de partage de secrets bas sur l interpolation polynomiale 33 10 2 CryptoFS Ce protocole a t d velopp en 2000 par D P O Shanahan l universit de Dublin 3 A la diff rence de TCFS l ensemble des donn es est chiffr e sur le serveur contenu et nom de fichiers C est l algorithme BLOWFISH avec une cl de 448 bits qui est utilis CRYPTOFS ne contr le pas l identit de l utilisateur effectuant une action mais v rifie simplement s il est autoris le faire Pour cela un nouveau m canisme de contr le d acc s au syst me de fichiers a t mis en place en utilisant le principe des signatures num riques Le protocole RSA ainsi que la fonction de hachage MDS sont exploit s de fa on classique pour le calcul des signatures un condens du message est calcul via la fonction MDS et ce dernier est trait par l algorithme RSA Toutes les op rations de chiffrement et d chiffrement sont effectu es sur le poste client par le module cryptofs qui intercepte les requ tes syst mes mises par un processus utilisateur et les transmet ensuite au client NFS Lorsqu un no
31. echnology 2000 N Provos et D Mazi res A future adaptable password scheme Dans Proceedings of the 1999 USENIX Freenix Track Monterey CA 1999 T Whu The secure remote password protocol Dans Proceedings of the 1998 Internet Society Neywork and Distributed Security Symposium pages 97 111 San Diego CA 1998 G Savvides Access control lists for the self certifying filesystem M moire de D E A Massachusetts Institute of Technology 2002 H C Williams A modification of the rsa public key encryption procedure IEEE Transactions on Information Theory 26 6 726 729 Novembre 1980 Transparent cryptographic file system http vww tcfs it R L Rivest The rc5 encryption algorithm Dans K U Leuven Workshop on Cryptographic Algorithms Belgique 1995 A Shamir How to share a secret Communications of the ACM 24 11 612 613 Novembre 1979 M Eisler et A Chiu et L Ling Rpcsec gss protocol specification Sep 1997 J Linn Generic security service application program interface version 2 RFC 2743 Javn 2000 J Linn The kerberos version 5 gss api mechanism RFC 1964 Juin 1996 K Raeburn Aes encryption for kerberos 5 draft raeburn krb rijndael krb 05 txt Juin 2003 M Eisler Lipkey a low infrastructure public key mechanism using skpm RFC 2847 Juin 2000 C M Adams et S E Tavares Designing s boxes for ciphers resistant to differential cryptanalysis Dans Proceedings of the 3rd Symposium on State and Progress
32. en place service d authentification les ent tes RPC sont authentifi es avec l algorithme s lectionn lors de la phase pr c dente service d int grit les ent tes RPC sont authentifi es L int grit des donn es est v rifi e service de confidentialit inclus le service d int grit et chiffrement des donn es RPC une phase d change de donn es correspondant la communication entre le client et le serveur une phase de destruction de contexte Remarque lors de la mise en place de la phase de cr ation de contexte le serveur renvoie une valeur indiquant le nombre maximum de requ tes pouvant tre trait es durant l existence du contexte Lorsqu un client NFS contacte pour la premi re fois un serveur il envoie la requ te RPC SECINFO afin d obtenir la m thode d authentification devant tre utilis e pour la suite de la communication C est cette tape que le serveur peut choisir entre RPCSEC_GSS et les autres alternatives Le serveur a la possibilit d associer 4 chaque syst me de fichiers qu il exporte une m thode d authentification Cette premi re communication se fait via un canal s curis pour viter qu un attaquant actif sur la ligne ne modifie le niveau de s curit requis Actuellement trois m canismes de s curit sont disponibles dans le protocole NFS 4 KERBEROS V5 36 utilisant uniquement la cryptographie cl priv e L algorithme impos pour le c
33. er aux cl s g n r es lancer le serveur sfssd De plus un client SFS refusant par d faut de requ tes SFs locales il faut relancer sur le client le programme sfcd avec l option 1 pour que les acc s 127 0 0 1 soient accept s Remarques SFS ne permet pas pour l instant de monter automatiquement la partition utilisateur au d marrage du syst me il est possible d utiliser le m canisme des ACL Access Control Lists sous SFS suite un travail d velopp par G Sav vides 29 les donn es chang es entre le serveur et le client sont chiffr es avec l algorithme ARCFOUR les requ tes NFS sont sign es en utilisant le syst me cl publique de Rabin Williams 30 qui est aussi s r que le RSA si l on consid re que la fonction SHA 1 se comporte comme un oracle al atoire De plus ce syst me a la particularit suivante le chiffrement et la v rification d une signature n utilisent pas une op ration d exponentiation modulaire contrairement RSA 9 Analyse des performances Les diff rents m canismes de s curit no ss tamment les op rations de chiffrement et de NFS TCP d chiffrement ont n cessairement un impact NFS SSH Blowfish NFS SSH 3 DES sur le d bit de transmission entre le poste NFS SSH Arcfour NFS SSH AES128 client et le serveur Pour tudier les d gra se rpe iowtish dations induites nous nous sommes
34. ermin e pour monter le syst me de fichiers il suffit d ex cuter en tant que root client mount t nfs otcp mountport 25000 port 25001 localhost home mnt home Quelques commentaires sur la commande Une requ te de montage pour la partition home est envoy e sur le port local 25000 puisque la commande mount s adresse a localhost La requ te transite via le tunnel s curis jusqu au serveur SSH Le serveur SSH engendre alors vers le port 1025 du serveur NFS nous rappelons qu il s agit de la m me machine une requ te de montage pour la partition home Si la requ te est accept e cf configuration du serveur NFS l autorisation est renvoy e au serveur SSH qui son tour la transmet au poste client Pour la suite toutes les requ tes de type NFS sont dirig es vers Localhost 25001 et sont donc transmises vers le port 2049 du serveur NFS Pour que l ensemble fonctionne correctement il est indispensable que le serveur NFS accepte les requ tes envoy es par le serveur SSH Configuration serveur NFS Comme pr cis dans le paragraphe 3 les requ tes de type MOUNT ou NESS re ues par le serveur NFS ne proviennent pas du poste client mais du serveur SSH Outre la v rification de l uid et du gid du demandeur le serveur NFS v rifie l adresse IP source de la requ te avant de l accepter Il faut donc indiquer dans le fichier etc exports que la partition home est accessible pour le serveur SSH
35. es utilisateurs doivent avoir toute confiance en l administrateur syst me du serveur NFS es diff rentes m thodes pr sent es dans ce document tunneling SSH SECRPC SHFS et SFS apportent toutes une solution aux deux premiers points et assurent l authentification du serveur par le poste client Seul SFs utilise le principe de la signature num rique pour certifier chaque requ te Le chiffrement des donn es sur le serveur peut apporter une solution au dernier point nous y reviendrons lorsque nous voquerons les syst mes CRYPTOFS 3 et TCFS 4 A l exception de TCFS toutes nos exp rimentations ont t effectu es sur des machines LINUX pourvues d un noyau de la s rie 2 4 x redhat 7 3 ou 8 0 Cependant les solutions propos es doivent pou serveur ah voir s adapter sans probl me sous d autres sys t mes Unix Nous avons orient notre recherche gt D D poste_client serveur _nfs poste_client serveur_nfs r 3 2 ES EP A mms vers des solutions rapides mettre en uvre n ET gt BER gt cessitant une intervention minimum de la part RESEAU EXTERNE RESEAU PRIVE de l administrateur syst me et pour lesquelles si possible il n est pas utile de recompiler le noyau Chaque solution est tudi e dans deux contextes particuliers cf fig 1 Acc s direct le poste client nomm poste _client et le serveur NFS nomm serveur_nfs so
36. et non pas le poste client la couche connexion qui permet en particulier de mettre en place des tunnels s curis s Les phases d authentification sont assur s par un algorithme cl publique g n ralement RSA 13 ou DSA 14 Par d faut dans la distribution OPENSSH 15 la cl publique du serveur est de taille 768 bits comme pour la carte bancaire mais nous conseillons d en g n rer une nouvelle de taille 1024 La mise au point de la cl commune est assur e par l algorithme de Diffie Helmann en utilisant des entiers de taille 1024 bits On pourra consulter la table de Lenstra Verheul 16 qui indique en fonction des attaques connues 4 ce jour quelle taille de cl s doit tre utilis e en cryptographie a cl publique pour obtenir une s curit quivalente au DES en 1982 Le chiffrement des donn es est effectu par des algorithmes cl secr te dont la s curit a t longuement analys 3DES 17 AES 18 BLOWFISH 19 ARCFOUR 20 Par d faut c est l AES successeur du DES depuis octobre 2000 avec une cl de 128 bits qui est utilis L utilisation de fonctions de hachage comme SHA 1 21 ou MD5 22 permet d assurer l int grit des donn es BLOWFISH et ARCFOUR sont moins populaires que 3DES et l AES car ils sont difficiles impl menter au niveau mat riel Ils poss dent tous deux un d bit de chiffrement lev L algorithme ARCFOUR est un g n rateur de flux pseudo al atoire dont
37. hiffrement est le DES il est donc vivement conseill d attendre une mise jour de la RFC 1964 prenant en compte l AES Un draft internet est en cours de r daction ce sujet 37 LIPKEY 38 les algorithmes d authentification d int grit et de chiffrement sont n goci s entre le client et le serveur Cependant certains sont recommand s et si un serveur ne les propose pas le client peut refuser la communication et vice versa Pour authentifier le serveur le client v rifie son certificat en le comparant avec une liste issue de serveurs de certification Le client g n re alors une cl de session et la chiffre ainsi que l identifiant et le mot de passe de l utilisateur avec la cl publique du serveur Le tout est envoy au serveur qui contr le l identit de l utilisateur en v rifiant l identifiant et le mot de passe associ La cl de session est utilis e pour chiffrer le reste des transactions Pour le contr le d int grit l algorithme HMAC MDS est recommand Pour l authentification l utilisation du RSA avec MDS est conseill L algorithme CAST 39 en mode cbc est sugg r pour le chiffrement ce dernier r sistant aux cryptanalyses diff rentielles et lin aires SPKM 3 qui consiste en un sur ensemble de LIPKEY Ce m canisme est utilis dans le cas o le client r alise un acc s anonyme il ne dispose donc ni d un identifiant ni d un mot de passe ou bien lorsque le client dispose
38. l Institute of Standards and Technology U S Department of Commerce Mai 1993 Openssh http www openssh org Arjen K Lenstra et Eric R Verheul Selecting cryptographic key sizes Journal of Cryptology the journal of the International Association for Cryptologic Research 14 4 255 293 2001 ANSI X9 17 Revised Rapport technique American National Standard for Financial Institution Key Management Wholesale 1985 J Daemen et V Rijmen The block cipher rijndael Dans Smart Card Research and Applications num ro LNCS 1820 pages 288 296 Novembre 2000 B Schneier Description of a new variable length key 64 bit block cipher blowfish Dans Fast Software Encryption Cambridge Security Workshop Proceedings pages 191 204 Cambridge 1994 K Kaukonen et R Thayer A stream cipher encryption algorithm arcfour Internet draft draft kaukonen cipher arcfour 03 Network working group July 1999 Proposed revision of federal information processing standard fips 180 secure hash standard dss Federal Register 59 131 35317 35318 1994 R L Rivest The md5 message digest algorithm RFC1321 1992 J Bowman Secure nfs and nis via ssh tunnel http Avww math ualberta ca imaging snfs secure shell filesystem linux kernel module shfs sshfs http shfs sourceforge net Self certifying file system http Avww fs net sfswww D Mazi res Self certifying File System Th se de doctorat Massachusetts Institute of T
39. la directive Id snfs si dans le script snfs les appels ssh add et ssh agent sont pr c d s de la commande su snfs c et si on utilise une petite astuce pour la transmission des variables d environnement li es ssh agent on peut restreindre les requ tes relay es dans le tunnel en fonction du couple uid gid Si chaque utilisateur cr e son propre tunnel et si ce dernier refuse toute requ te non associ e l uid de l utilisateur on obtient alors une authentification forte de chaque utilisateur par le serveur NFS une attaque reste possible en se pla ant sur le serveur entre le client proxy RPC et le serveur NFS Cependant ceci ne peut s appliquer dans le cas o la partition mont e est la partition utilisateur SEC RPC peut tre utilis conjointement avec l automounter AMD on se r f rera au fichier README NF S pour plus d in formations 5 2 Acc s indirect Il suffit d utiliser un tunnel SSH afin que la demande d ex cution distante du client proxy RPC soit transmise jusqu au serveur SSH qui se chargera alors de l mettre en direction du serveur NFS Afin d essayer d automatiser au mieux le proc d sans n gliger la s curit nous proposons la d marche suivante Sur le poste client l administrateur syst me cr e un couple de cl s priv e publique non prot g es qui servira la mise en place du tunnel Pour la suite ces cl s seront nomm es id_tunnel etid tunnel pub Le co
40. mations sont consultables via la commande rpcinfo p A titre d exemple voici un extrait du r sultat obtenu sur une machine linux h bergeant un serveur NFS 100005 3 udp 1025 mountd 100005 3 tcp 1025 mountd 100003 3 udp 2049 nfs La version 3 de mountd est en coute en mode TCP et UDP sur le port 1025 et correspond au num ro 100005 Le d mon nfsd est en coute en mode UDP sur le port 2049 Lorsqu un client RPC veut envoyer une requ te vers un serveur RPC il interroge le portmapper du serveur distant afin d obtenir le port d coute du serveur concern Parler du protocole NFS est un abus de langage NFS se compose en fait de deux protocoles distincts MOUNT et NFS MOUNT intervient lors de la n gociation initiale entre le serveur et le client Il permet de d terminer quelles partitions sont export es et fournit au client un descripteur de fichiers utilis par la suite pour acc der la racine du syst me de fichiers export NFS prend alors le relais et g re toutes les demandes d acc s criture lecture La syntaxe g n rale de la commande mount est la suivante mount omountport port hote partition point de montage La partie h te indique la commande mount o se trouve le portmapper interroger Ce dernier renvoie une liste des serveurs RPC enregistr s sur h te De cette liste mount extrait les ports p et p2 associ s aux programmes 100005 et 100003 qui correspondent mount d et nfsd Une requ
41. mode pr cise quels sont les privil ges donner au point de montage Par d faut les privil ges sont d finis avec un ugo de 700 Lorsque la commande shfsmount est ex cut e une fois la phase d identification effectu e un acc s shell SSH vers le serveur NFS est lanc en tache de fond par le syst me A chaque fois qu un acc s au r pertoire mont est effectu le module shfs o l intercepte et transforme tout appel syst me en une requ te shell L ensemble des donn es transite via deux tubes pipes l un pour la lecture des donn es et l autre pour l criture Un syst me de cache permet de limiter les transferts n cessaires Pour chaque utilisateur l acc s aux donn es de la partition mnt home se fait traditionnellement par v rification du couple uid gid Remarques l administrateur syst me de poste_client doit aussi tre l administrateur syst me de serveur_nfs si la commande ex cut e est shfsmount login serveur_nfs home mnt home o rmode 755 alors toute op ration sera associ e l uid et au gid de login En utilisant les m canismes d crits dans les paragraphes pr c dents il est tr s simple de pouvoir automatiser le montage de la partition utilisateur partir d un serveur NFS au d marrage d une machine Contr le au niveau utilisateur Dans le cas o les comptes pr sents sur le serveur NFS ne contiennent que des don n es annexes pour les utilisateurs de poste _ client ch
42. mon serveur proxy RPC en coute sur le port associ ces derniers r cup re les requ tes UDP les encapsule dans une trame TCP et les transmet via SSH un programme en coute sur le serveur client proxy RPC celui ci d code les requ tes et les retransmet comme un client RPC normal au portmapper local ce qui signifie que pour le serveur toutes les requ tes NFS re ues proviendront en fait de lui m me 5 1 Acc s direct Configuration du serveur NFS Apr s installation des packages sec_rpc 1 52 1et sec _ rpc server 1 52 1 un utilisateur snfs est cr et des couples de cl s priv es publiques non prot g es par une phrase cl sont g n r es dans etc snfs ssh Le client proxy RPC se nomme rpc_pcl Les requ tes NFS tant transmises du serveur vers lui m me le fichier etc exports doit tre configur ainsi serveur_nfs home rw Configuration du client Apr s installation des packages sec_rpc 1 52 1etsec_rpc client 1 52 1 unutilisateur snfs a t cr C est le programme rpc_psrv qui se charge de l enregistrement de nouveaux services dans le portmapper du lancement du serveur proxy RPC et de l ex cution du client proxy RPC sur le serveur NFS via l utilisateur snfs Pour cela il utilise un fichier de configuration situ dans etc snfs La cr ation de ce dernier s effectue en ex cutant client snfshost serveur_nfs MOUNTPROG MOUNTPROG est un entier choisir entre 200000 et 249999 de fa on ce que MO
43. nt reli s via le r seau Acc s indirect le serveur NFS se trouve sur un r seau priv et le poste client sur un r seau externe Le r seau priv dispose d un serveur SSH nomm serveur_ssh reli au r seau externe Seul le flux entrant destination du port 22 et le flux sortant issu du port 22 sont autoris s sur l interface externe de cette machine Figure 1 Contexte de travail Afin de mieux aborder les solutions pr sent es nous commencerons dans une premi re partie par rappeler quelques notions indispensables concernant le protocole NFS et les RPC Nous d crirons ensuite le m canisme du tunneling SSH Nous d taillerons alors les diff rentes solutions retenues et nous terminerons par une analyse de l impact de l ajout de m canismes de s curit sur les performances g n rales 2 NFSet RPC NFS s appuie sur le protocole RPC Remote Procedure Call d velopp par Sun 5 qui de fa on non formelle permet un programme le client RPC d ex cuter une fonction d un programme le serveur RPC en ex cution sur une autre machine Les messages RPC appel une fonction sont envoy s en mode TCP ou UDP NFS utilise UDP par d faut Quand un serveur RPC s ex cute par exemple le d mon nfsd ou mountd il s enregistre sur la machine aupr s d un programme sp cial le portmapper qui recense tous les serveurs RPC disponibles et assigne chacun d entre eux un num ro et un port d coute Ces infor
44. ntenu de id_tunnel pub est plac sur le serveur SSH dans le fichier authorized_ keys situ dans le compte utilisateur permettant l administrateur syst me d acc der au serveur On rajoute au d but de la ligne les directives from poste client permitopen serveur nfs 22 command bin sleep 100 comme explicit pr c demment on cr un autre couple de cl s priv e publique prot g es id_rsa et id_rsa pub qui serviront l ex cution distante du client proxy RPC Le contenu de id_rsa pub est rajout dans le fichier authorized_keys de l utilisateur snfs sur serveur_nfs L administrateur syst me lance sur le poste client son agent SSH et cr le tunnel de communication client eval ssh agent client ssh f i root ssh id tunnel L 2222 poste_client 22 login serveur_ssh sleep 100 Pour que la demande d ex cution distante lanc e par rpc_psrv soit redirig e dans le tunnel on modifie la directive SShCommand comme suit SshCommand ssh ssh p2222 c blowfish x oFallBackToRsh no snfs localhost rpc_pcl P 1 M 200000 100005 M 250000 100003 L administrateur syst me peut alors ex cuter etc rc d init d snfs start modifi comme ci dessus Il devra rentrer la phrase cl associ e l utilisateur snfs du serveur NFS Remarques la diff rence d un serveur en mode TCP il est inutile ici de cr er deux tunnels puisque le serveur SSH communique avec le serveur NFS via un client SSH directive
45. outes ses requ tes vers le port 4 port d coute du serveur Il n est pas possible d indiquer sfsagent et sfskey de s adresser vers un autre port Ce dernier tant pri vil gi seul l administrateur syst me de poste_client peut cr er un tunnel SSH entre le poste client et le serveur SSH Les utilisateurs pouvant se connecter de fa on irr guli re au serveur NFS il est donc conseill de cr er un tunnel permanent ssh f N L 4 serveur nfs 4 login serveur_ ssh Pour contacter le serveur NFS l utilisateur ex cutera sfskey lo gin userl localhost Cependant un probl me se pose une fois les phases d authentification effectu es sfskey va cr er un lien du type var sfs serveur_nfs En effet les informations re ues par s f skey contiennent entre autres le nom du serveur Tout acc s via le lien cr dans var sfs entrainera une requ te de connexion directe vers serveur_nfs et non pas vers le tunnel Pour r gler ce probl me il faudrait que lors de la communication initiale sfskey re oive comme nom de serveur l adresse IP 127 0 0 1 de fa on ce que l acc s var sfs 127 0 0 1 soit redirig e dans le tunnel Pour cela sur le serveur il faut affecter la variable d environnement SFS_HOSTNAME 127 0 0 1 g n rer un nouveau couple de cl s priv e publique pour le serveur La variable SF S_HOSTNAME tant d finie le programme n interrogera pas le DNS pour obtenir le nom du serveur afin de l associ
46. renvoy par sfsagent sfscd qui le communique au serveur sfssd Ce dernier demande au d mon sfsauthd de v rifier la signature de la requ te En cas de succ s sfsauthd renvoie au d mon s fssd le couple uid gid qui engendre un num ro d authentification Afin que le serveur puisse authentifier les requ tes manants de l utilisateur ces derni res seront marqu es avec ce num ro par sfscd Pour la suite sfssd agit comme un client NFS en relayant les demandes au serveur NFS local Le protocole SFS a t d velopp avec pour objectif principal de pouvoir fournir a un utilisateur un acc s s curis 4 son serveur de donn es et ceci depuis n importe quelle machine disposant de sfscd et sfsagent Si chaque utilisateur stocke dans son r pertoire sa cl priv e il doit alors le faire sur tous les postes clients utilis s Dupliquer des informations secr tes n est jamais une bonne chose et rend de plus compliqu e leur mise jour en cas de changement de la cl publique Bien que ceci soit possible nous l avons d j dit il existe plusieurs sc narios d utilisation du protocole SFS propose une option permettant l utilisateur de stocker sa cl priv e sur le serveur Au cas o le serveur serait corrompu cette cl est stock e de fa on chiffr e par une phrase cl et un germe al atoire de 128 bits en utilisant l algorithme EKSBLOWFISH 27 SFS offre un m canisme permettant partir de la phrase cl de l u
47. rveur SSH interm diaire Diff rents sc narios sont envisageables pour la cr ation de ce dernier selon que seul l administrateur syst me ou que chaque utilisateur de poste_client poss de un acc s vers le serveur SSH et selon le contexte d utilisation du serveur NFS montage des comptes utilisateurs ou acc s des donn es annexes A titre d exemple dans le cas o la partition home est mont e au d marrage par l administrateur de poste _client et qu il est le seul disposer d un acc s au serveur SSH le tunnel sera cr comme suit ssh f L 2222 serveur nfs 22 login serveur ssh sleep 100 et la partition sera mont e en ex cutant shfsmount P 2222 localhost home home o rmode 755 7 Bilan sur l utilisation de SSH pour s curiser NFS La confidentialit des donn es transmises sur le r seau est assur e ainsi que leur int grit Le serveur NFS est authentifi par le poste client sauf dans le cas de l utilisation d un seul tunnel lors d un acc s indirect un serveur NFS en mode TCP Il n y a pas d authentification du poste client par le serveur NFS En effet lors de la mise en place du tunnel seule l identit de l utilisateur est contr l e Le tunnel et donc l acc s au serveur NFS peut tre cr partir de n importe quelle machine On peut restreindre l acc s en associant la cl utilis e pour la cr ation du tunnel la directive from poste client ce qui en soit n est
48. s l administrateur de poste _ client ajoute dans le fichier authorized_ keys dans son compte sur serveur SSH le contenu de id_rsa_tunnel pub et y rajoute les directives from poste client permitopen localhost 25001 permitopen localhost 25003 command ssh T L 25001 serveur nfs 1025 L 25003 serveur nfs 2049 login serveur _nfs il fait de m me sur le serveur NFS en sp cifiant pour directive from serveur_ssh permitopen serveur_nfs 1025 permitopen serveur_nfs 2049 command bin sleep 300 mount loeahostshome La cr ation du deuxi me tunnel n cessite l au momies thentification d un utilisateur avec la cl publique nnnn serveur_nfs 1025 id_rsa_tunnel pub Pour cela il faut que la cl mew y priv e id_rsa_tunnel stock e sur poste_client soit mount localhost home xxxx localhost 25000 CN 22 dd 987uyts J yyyy poste_client 22 L Client Client SSH SSH E a aussi pr sente sur serveur_ssh dans le r pertoire ssh de l utilisateur Cette cl n tant pas prot g e par une phrase eS De ie 112 Zz A e 1 ere AJ cl il est conseill d viter sa duplication dans des endroits ES diff rents C est ce stade qu intervient ssh_agent MOUNT OK P A torsseneur ate Cette commande permet d encha ner une succession de F BE D 221 0 5xf6 22 serveut_ssh yyyy AJ TUNNEL 1 MOUNT OK 25000 localhost xxxx 25001 oealho
49. s Ged RE Ar 22 L option N signifie que l on ne d sire pas ex cuter une com SSH ix a zz SST q mande distante sur le serveur SSH l option f permet de lan 22 serveur_ssh 3 q poste_distant login 23 poste_distant 4000 cer la commande en tache de fond une fois le mot de passe ou TUNNEL SSH la phrase cl saisie pour l identification poste distant login 2323 localhost 2000 Seul l administrateur syst me peut mentionner en tant que port local un port privil gi lt 1024 Figure 2 M canisme de redirection de ports Le tunnel n est accessible que via l interface loopback du poste client Pour le poste distant la requ te est mise depuis le serveur SSH il n a pas connaissance du poste client Le poste distant n tant contact que par le serveur SSH il n est pas n cessaire de sp cifier sur la ligne de commande pour poste distant une adresse IP ou un nom de machine directement joignable par le poste client ceci permet par exemple d atteindre des machines d un r seau priv disposant d une machine bastion h bergeant un serveur SSH Seules les communications entre le poste client et le serveur SSH sont chiffr es Un intrus peut observer la communication en clair entre le serveur SSH et poste _ distant Dans le cas o poste distant et serveur_ssh sont une seule et m me machine on obtient une communication enti rement s curis e ainsi dans le cas o
50. stxxax connexions SSH d un serveur sur un autre en utilisant une m me cl publique sans qu il soit n cessaire que la cl Figure 3 Utilisation de 2 tunnels priv e soit pr sente sur chacun des comptes travers s A chaque demande d identification la requ te est retransmise via les diff rents clients SSH jusqu l agent pr sent sur le premier client Ce dernier ayant acc s la cl priv e de l utilisateur il prend en charge la requ te d authentification et renvoie la r ponse au serveur concern sans intervention de l utilisateur Pour mettre en place ce m canisme on ex cute sur poste_client la commande eval ssh agent qui permet de lancer l agent et de positionner certaines variables d environnement on fournit l agent la cl n cessaire pour l identification ssh add id rsa tunnel on indique lors de la cr ation du premier tunnel que le serveur distant devra utiliser l agent s il initie une connexion SSH vers un autre serveur option A de SSH client ssh A f i id rsa tunnel L 25000 localhost 25001 L 25002 localhost 25003 login serveur_ssh sleep 30 Un intrus qui aurait r ussi subtiliser la cl id_rsa_tunnel peut partir du serveur SSH soit lancer l ex cution de la commande sleep sur le serveur NFS soit monter la partition home via un tunnel partir du poste client uniquement monter la partition home via un double tunnel Pour viter que la partition
51. sur le serveur SSH dans le fichier authorized_keys situ dans le r pertoire ssh le contenu de id_rsa_tunnel pub qui est de la forme ssh rsa cl publique encod e en base64 root poste_client et rajoute au d but de cette ligne les directives from poste client permit open serveur ssh 1025 permit open serveur ssh 2049 command bin sleep 300 La cl priv e n tant pas prot g e par une phrase cl si un intrus arrivait la subtiliser il pourrait acc der via SSH au compte de l administrateur syst me de poste client sur serveur_ssh sans aucune identification La ligne ci dessus limite le champ d action d un tel individu en effet la directive host ne permet l utilisation de la cl id_rsa_ tunnel qu partir de la machine poste _client obligeant l attaquant pratiquer aussi l IP spoofing pour parvenir ses fins ou mener l attaque depuis le poste client la directive command lance l ex cution de la commande sp cifi e lors d une connexion SSH utilisant la cl id_rsa_tunnel et ignore toute autre commande sp cifi e par le client SSH la directive permitopen n autorise la redirection de ports que vers la ou les machine s et le ou les port s distant s sp cifi s Il suffit alors de rajouter sur poste client dans l un des scripts ex cut s au d marrage et avant la consultation de etc fstab la ligne ssh f T i root ssh id rsa tunnel L 25000 serveur nfs 1025 L 25
52. t appara tre tr s prochainement et apportera de nombreuses modifications qui devraient rendre le reste de ce document plus ou moins obsol te si toutes les sp cifications requises sont effectivement op rationnelles et si l ensemble des serveurs et clients de la plan te migrent vers cette derni re version On peut consid rer que dans le milieu UNIX NFS est actuellement le protocole de partage de fichiers le plus utilis Il poss de cependant de nombreuses lacunes en ce qui concerne la s curit les donn es transitent en clair sur le r seau entre le client et le serveur aucun contr le sur l int grit des donn es chang es n est effectu les donn es peuvent donc tre intercept es et modifi es lors de leurs parcours hormis le contr le de l adresse IP le poste client n a aucun moyen d authentifier l identit du serveur NFS et vice versa le contr le de l acc s aux donn es se fait uniquement par v rification du couple uid gid associ la requ te Le serveur ne dispose d aucun moyen pour v rifier que ce couple correspond bien l metteur de la demande Un administrateur syst me peu scrupuleux peut cr er sur son poste de travail des utilisateurs fictifs ayant pour uid et gid des valeurs lui permettant d acc der aux donn es situ es sur un serveur NFS il ne lui reste plus qu usurper l adresse IP d un client autoris pour pouvoir effectivement acc der ces derni res l
53. t inconv nient on peut combiner 2 tunnels pour obtenir une communication s curis e sur l ensemble du trajet si le serveur NFS h berge aussi un serveur SSH et que l administrateur de poste_client poss de un compte utilisateur sur le serveur NFS Nous commencerons par donner une explication g n rale puis nous d taillerons comment automatiser le proc d en utilisant les fonctionnalit s de ssh agent L id e est donc de cr er un tunnel de poste client vers serveur ssh et un tunnel de serveur ssh vers serveur _nfs Sur le poste client on ex cute ssh f L 25000 1ocalhost 25001 L 25002 localhost 25003 login serveur ssh sleep 30 et sur le serveur SSH ssh f L 25001 serveur_nfs 1025 L 25003 serveur_nfs 2049 login serveur_nfs sleep 30 On peut alors ex cuter sur le client mount otcp mountport 25000 port 25002 localhost home mnt home Remarque Sur le client le fait de sp cifier dans la commande localhost et non pas serveur_ssh est indispensable En effet le deuxi me tunnel sur serveur_ssh n est accessible que via l interface de loopback sur le port 25001 cf 3 En pr cisant serveur_ssh au lieu de localhost toute requ te sur le poste client destination de localhost 25000 aurait t transmise au serveur SSH qui aurait essay de les retransmettre sur le port 25001 via l interface r seau La figure 3 illustre le parcours aller retour d une requ te de type mount Pour automatiser la cr ation des 2 tunnel
54. tilisateur d authentifier le serveur d authentifier le poste client de r cup rer la cl priv e chiffr e de l utilisateur de r cup rer la cl publique du serveur tant donn que beaucoup d utilisateurs choisissent des phrases cl peu fiables et sensibles aux attaques par dictionnaire on peut difficilement faire confiance un protocole se basant uniquement sur de telles donn es pour r aliser une authentification SFS utilise le protocole SRP 28 pour r aliser les quatre op rations pr c dentes A partir de donn es faibles le protocole SRP construit des quantit s secr tes fiables qui seront utilis es comme donn es d initialisation pour un algorithme d authentification bas sur le probl me du logarithme discret Le protocole assure qu un intrus observant les quantit s chang es sur la ligne n a aucun moyen de retrouver les donn es faibles Dans le cas de SFS la phrase cl est transform e via l algorithme EKSBLOWFISH et un germe al atoire en une instance difficile du logarithme discret Le protocole SRP a t con u de fa on effectuer une authentification mutuelle des deux parties l utilisant Afin d illustrer les propos pr c dents nous traiterons un exemple apr s le d tail de la configuration du poste client et du serveur La version actuelle de SFs est la 0 7 2 1 et peut tre obtenue sous la forme de deux packages rpm sfs 0 7 2 1et sfs server 0 7 2 1 Le premier doit
55. tilisateur d finit quels doivent tre les fichiers prot g s sur le serveur en ex cutant la commande tcfsflags qui place l attribut X sur le fichier concern Tout fichier ayant un attribut X ne sera accessible que si la cl de l utilisateur est pr sente en m moire Du c t du serveur non seulement le contenu du fichier est illisible mais de plus son nom est chiffr Un contr le d int grit est int gr dans le fichier si bien que tout changement du fichier effectu directement sur le serveur ou lors de son transfert sur le r seau est d tect par le module tcfs au moment des op rations de d chiffrement Quelques remarques les donn es circulant entre le client et le serveur sont chiffr es et leur int grit est assur e il n y a pas d authentification du serveur ni du client Cependant seul la personne poss dant la cl priv e utilis e pour chiffrer les fichiers peut y acc der la s curit des cl s priv es stock es sur le poste client ne d pend que du mot de passe des utilisateurs TCFS permet de charger une cl en m moire en donnant directement sa valeur sur la ligne de commande ce qui permet d utiliser ventuellement une autre m thode de stockage TCFS propose une API de d veloppement permettant de programmer tr s facilement d autres algorithmes de chiffrement TCFS poss de un m canisme de partage dans lequel l acc s un fichier appartenant n utilisateurs n est possible qu
56. ur SFS il doit tout d abord enregistrer sur ce dernier un couple de cl priv e publique qui permettront de l authentifier userl serveur_ nfs sfskey register Une phrase cl prot geant la cl priv e sera demand e ainsi que 64 caract res al atoires utilis s pour initialiser un g n rateur al atoire Finalement le mot de passe de user1 est demand au cas o user1 aurait laiss son terminal accessible et que quelqu un en profiterait pour changer son couple de cl s sfskey calcule partir de la phrase cl et d un germe al atoire les donn es n cessaires au protocole SRP qu il stocke dans le fichier etc sfs sfs_ users ainsi que Puid et le gid de user1 sa cl priv e chiffr e avec l algorithme EKSBLOWFISH en utilisant pour cl de chiffrement le germe al atoire et la phrase cl et le germe Pour acc der ses donn es user1 ex cute partir du poste client sfskey login user1 serveur_nfs et rentre sa phrase cl cf fig 5 la partie gris e correspond une communication chiffr e Le programme sfskey lance l agent utilisateur sfskey login contact du serveur sfsagent rentre en contact avec le client sfcd et lui utilisateur demande d tablir une communication s curis e avec S le serveur Comme explicit pr c demment le serveur Cee ee envoie sa cl publique Kg et deux cl s communes de PR Li chiffrement sont mises en place pour la communication D ss w
57. uveau fichier est cr sur la partition import e le syst me lui associe automatiquement une cl de chiffrement et un couple de cl priv e publique utilis e pour l authentification et l int grit Une copie de la cl publique est stock e sur le serveur tant donn que les d veloppeurs de CRYPTOFS ne souhaitaient pas modifier la structure du syst me de fichiers EXT2 plusieurs fichiers interm diaires sont cr s permettant au client NFS de disposer d informations reliants un uid un nom de fichier et sa cl publique ou un uid un nom de fichier et son couple de cl priv e publique luid correspondant tant alors le propri taire du fichier Ainsi dans CRYPTOFS l utilisateur est lib r de tout probl me de gestion de cl s Lorsqu un utilisateur met une requ te de lecture pour un fichier le module cryptofs engendre une cha ne d information et la chiffre avec la cl de chiffrement du fichier le r sultat est pass au client NFS qui le signe avec la cl publique du fichier s il existe une association reliant l uid au nom de fichier et sa cl publique la cha ne chiffr e et sa signature sont envoy s au serveur NFS celui ci calcule partir de la cl publique du fichier et de la cha ne re ue la signature de cette derni re et la compare avec la signature Si les deux concordent la requ te est accept e Lorsqu un utilisateur met une requ te d criture pour un fichier le module

Download Pdf Manuals

image

Related Search

Related Contents

Gembird EG-PM2-LAN power extension      User Manual  User manual  AVI201 / 202 / 212 Network Camera Manuel d`utilisateur FRANCAIS  manual de instruções do multímetro digital modelo md  Katrin 953609  MODEL FP0S1775A - Depco Pump Company    

Copyright © All rights reserved.
Failed to retrieve file