Installation et configuration d'un serveur SFTP et MySecureShell

De Wiki de la communauté Mandriva.

(Redirigé depuis Sftp)
Cette page est une ébauche. Elle mérite des améliorations.
Si vous voulez contribuer, cliquez simplement sur l'onglet modifier. Consultez également les autres pages dont le contenu est à réviser.
Le FTP (File Transfert Protocol) a longtemps et est encore largement utilisé comme protocole de transfert de fichier. Mais le FTP possède un inconvénient non négligeable ; il n’est pas sécurisé. Tout ce que vous transférez, pire, vos mots de passes, tout passe en clair sur le réseau. Pour ceux soucieux de leur vie privée et de la confidentialité de leurs échanges, une autre solution doit impérativement être mise en place.


Le SFTP (Secure File Tranfert Protocol) n'est pas un serveur FTP sécurisé comme on peut l'entendre ici et là mais est bien un protocole de transfert de fichier à part entière. Il peut utiliser les mêmes commandes que le FTP. En clair, nous pourrons supprimer, créer, renommer, downloder, uploader des fichiers, etc... Nous dirons que c'est une amélioration du FTP qui utilise une connexion sécurisée (cryptée) en passant par un tunnel ssh (port 22).

Consulter cette page pour plus d'information sur le ssh.


Sommaire

Avant propos

Client : Windows 2000

Serveur : GNU/Linux Mandriva 2008.1.

IP: 192.168.1.16


Installation

Ouvrez une console et tapez:

Image:Konsole.png
[utilisateur@ordi ~]$ su

Puis le mot de passe root.

Nous installerons : OpenSSH qui sera utilisé par sftp-server

RSSH qui permettra de sécuriser notre serveur et restreindre l'utilisateur au serveur sftp

WinSCP qui sera notre client sftp


Normalement, OpenSSH est déjà installé sur votre distribution Mandriva, tapez tout de même :

Image:Konsole.png
[root@ordi ~]# urpmi openssh
pour vérifier


Pour installer rssh, lancez Image:drakrpm-icon.png Installer et désinstaller des logiciels et recherchez le paquet rssh .

Sélectionnez-le et cliquez sur Appliquer. Aide - Fiche du paquet dans Doc4Mandriva


Vous pouvez également l'installer en utilisant la console en tant qu'administrateur avec la commande suivante : urpmi rssh

Configuration

Astuce !
Voir comment éditer des fichiers de configuration si vous ne savez pas comment proceder.

Editons le fichier /etc/shells (exemple avec Vi) :

Image:Konsole.png
[root@ordi ~]# vi /etc/shells

Vous trouverez vraisemblablement les lignes :

/bin/sh

/bin/bash


Rajouter y la ligne:

/usr/bin/rssh


Votre fichier /etc/shells devrait ressembler à ça:

Enregistrez, puis fermez-le.

Maintenant, éditons le fichier /etc/rssh.conf qui est le fichier de configuration de RSSH. Faire une sauvegarde avant avec:

Image:Konsole.png
[root@ordi ~]# cp /etc/rssh.conf /etc/rssh.conf.old

Editer le fichier :

Image:Konsole.png
[root@ordi ~]# vi /etc/rssh.conf

Supprimer tout le contenu du fichier et mettez-y à la place les trois lignes :

logfacility = LOG_USER
allowsftp
umask = 022

Votre fichier /etc/rssh.conf devrait ressembler à ça:

Enregistrer le fichier. Cette configuration permet de filtrer RSSH a une utilisation unique au sftp.

Création des utilisateurs

Maintenant, on peut créer nos utilisateurs qui ne feront QUE du sftp. Nous créerons l'utilisateur test11 avec le mot de passe test12.

- création de l'utilisateur

Image:Konsole.png
[root@ordi ~]# adduser -d /home/test11 -s /usr/bin/rssh test11

- création du mot de passe de l'utilisateur

Image:Konsole.png
[root@ordi ~]# passwd test12

Lancer le service SSH si cela n'est pas encore fait avec la commande :

Image:Konsole.png
[root@ordi ~]# /etc/init.d/sshd start

Utilisation

1er test (localhost)

Si vous êtes toujours connecté en root, déconnectez-vous en tapant:

Image:Konsole.png
[root@ordi ~]# exit

Ensuite, connectez vous a votre sftp en local pour faire un premier teste de fonctionnement.

Image:Konsole.png
[utilisateur@ordi ~]$ sftp test11@localhost

Vous devriez, après avoir renseigné le mot de passe, arriver à l'invite

sftp> 

Les commandes de base sont :

  • ls : lister
  • cd : changer de répertoire (directory)
  • put : déposer un fichier
  • get : recupperer un fichier
  • mkdir : créer un répertoire (make directory)
  • rm : supprimer (remove)
  • quit : quitter

2ème test (IP)

Vérifions maintenant que le serveur est accessible depuis son adresse IP avec sftp test11@votre_adresse_IP :


Image:Konsole.png
[utilisateur@ordi ~]$ sftp test11@192.168.1.16

Si vous obtenez le message: " Warning : Permanently added '192.168.1.16' (RSA) to list of known host ", patientez, vous devriez retomber sur l'invite où le mot de passé vous sera demandé.


3ème test (Autre IP)

Ici, nous testerons notre connexion à notre serveur sftp depuis un client Windows (sur Windows 2000) qui se trouve dans le même réseau local. Exemple avec le client WinSCP. Téléchargez-le puis installez-le (tout par défaut).

http://www.01net.com/telecharger/windows/Internet/ftp/fiches/31668.html


Lancer WinSCP et rentrer :

Nom d'hôte : 192.168.1.16

Port : 22

Nom d'utilisateur : test11

Mot de passe : test12

Cliquez sur Connecter.


Si vous obtenez ce message, vérifier votre réseau ou le pare-feu de votre Mandriva. Configurer le comme ceci :

Centre de Contrôle de Mandriva -> Sécurité -> Configurer votre pare-feu personnel.

Sélectionnez Serveur SSH (n'oublions pas que notre connexion se fera via une connexion ssh).


Je sais, elle est belle.... ^^ Maintenant fermez la bouche et validez les modifications.

Taper en root :

Image:Konsole.png
[root@ordi ~]# /etc/init.d/sshd restart

Retourner sur votre client Windows et relancez WinSCP et rentrez à nouveau:

Nom d'hôte : 192.168.1.16

Port : 22

Nom d'utilisateur : test11

Mot de passe : test12

Cliquez sur Connecter.

Si tout se passe bien, vous obtiendrez la fenêtre :



Cliquez sur Oui. Jetez tout de même un coup d'œil sur l'empreinte. Une fois cette fenêtre valide, vous arriverez à la fenêtre :



La connexion est établie.

Il se peut que vous ayez un message vous avertissant que la connexion prend quelques secondes pour s'établir. N'y faite pas attention si votre connexion s'établit tout de même.


Maintenant, vous êtes connecté à votre serveur SFTP sur votre Mandriva 2008 depuis votre Client Windows 2000 avec le client WinSCP. C'est à vous de jouer pour créer les répertoires et les droits des fichiers. Fermer la console connecté en root.

Chroot

L’inconvénient maintenant est que certes, on utilise maintenant une connexion sécurisée, mais en temps qu’utilisateur Mandriva. L’utilisateur créé (ici test11) peut parcourir les répertoires à sa guise. C’est la qu’entre en jeu « chroot ».

Chroot permet de changer le répertoire racine vers un autre emplacement. Vous pouvez donc utiliser chroot pour cloisonner le processus dans un path donné.


Nous utiliserons le logiciel MySecureShell pour chrooter nos utilisateurs car en plus du chroot, il offre d’autres options que nous verrons plus loin.


Pour ceux qui ne veulent pas utiliser MySecureShell et faire le chroot à la main, je vous montre rapidement la marche à suivre. Cependant, je vous conseille vivement d’utiliser le très bon logiciel MySecureShell. Pour les autres, passez à la suite.


Si vous voulez par exemple chrooter les utilisateurs de sftp dans le répertoire /home/sftp ainsi, tous les utilisateurs sftp ne pourront pas sortir de ce répertoire, suivre les étapes suivantes.

Il faut noter qu’une fois cloisonné, les utilisateurs ne pourront pas sortir donc utiliser les exécutables et librairie faisant fonctionner sftp. C’est pour cette raison que nous devons rajouter ces fichiers dans notre espace sécurisé.

Nous verrons deux méthodes.

- 1 - le chroot à la main

- 2 - le chroot via MySecureShell (solution que nous utiliserons ici)


- 1 - Solution 1 à titre d'information

En root, vous devez :

  • créer le répertoire /home/sftp
  • se rendre dans le répertoire crée
  • créer les répertoires pour les exécutables (usr - usr/bin - usr/lib - usr/lib/ssh)
  • copier les exécutables sftp – scp – rssh – rssh_chroot_helper – sftp-server dans les répertoires que vous avez crées. Ex : #cp /usr/bin/sftp usr/bin
  • créer les répertoires pour les librairies (lib – lib/i686)
  • taper par ex : #ldd /usr/bin/sftp pour connaître les dépendances de sftp

Les bibliothèques doivent êtres copiés dans /home/sftp/lib ou /home/sftp/usr/lib en fonction de l’endroit ou elles apparaissent dans la liste si dessus. Nous allons donc faire les copies suivantes : (prenez votre respiration et faites craquer vos doigts. :-)

  • faire pareil pour tous les exécutables
  • Maintenant nous allons référencer notre path auprès de rssh.
  • ouvrir rssh.conf avec
Image:Konsole.png
[root@ordi ~]# vi /etc/rssh.conf

et à la fin du fichier, nous rajouterons la ligne :

chrootpath="/home/sftp"

La configuration du Chroot est terminée. Votre utilisateur est maintenant cloisonné dans le répertoire défini pour le chroot.

Votre Chroot devrait fonctionner.

J’avoue que je n’ai pas essayé, trop « long », j’ai préféré passer par : MySecureShell.

MySecureShell

solution 2

Installation

Connectons-nous en root :

Image:Konsole.png
[utilisateur@ordi ~]$ su -


À noter !
N'oubliez pas le ptit trait après su.

Suivi du mot de passe root.

Et tapons :

Image:Konsole.png
[root@ordi ~]# urpmi openssl
Image:Konsole.png
[root@ordi ~]# urpmi libc.so.6
Image:Konsole.png
[root@ordi ~]# urpmi libcrypto.so.0.9.8


Récupérons l’archive « mysecureshell_0.95_linux_i686.tgz » sur : http://sourceforge.net/project/showfiles.php?group_id=117807

Et enregistrons la dans /tmp

Une fois le téléchargement terminé, rendons-nous dans le répertoire {{file|/tmp}

Image:Konsole.png
[root@ordi ~]# cd /tmp

Puis décompressons l’archive en tapant :

Image:Konsole.png
[root@ordi ~]# tar xvzf mysecureshell_0.95_linux_i686.tgz

Maintenant, lançons l’installation de MySecureShell. Vous devez être connecté en root.

Tapons donc :

Image:Konsole.png
[utilisateur@ordi ~]$ su -

Suivi du mot de passe root.

Ps: n'oubliez pas le ptit trait après su

Puis :

Image:Konsole.png
[root@ordi ~]# ./install.sh fr


L’installation début


À noter !
NB.1 : Si vous avez un échec pour l’existence du fichier MySecureShell, vérifier qu’il est bien présent dans l’archive.
À noter !
NB.2 : Si un message vous dit que vous n’êtes pas connecté en root alors que vous l’êtes, c’est que vous avez tapez su et non su – pour vous connecter en root.


Tapons y pour continuer.

Si vous rencontrez le problème :

./MySecureShell: /usr/lib/libcrypto.so.0.9.8: no version information available (required by ./MySecureShell)

Tapez :

Image:Konsole.png
[root@ordi ~]# ln -s /usr/lib/libcrypto.so /usr/lib/libcrypto.so.0.9.8


Tapons y pour continuer


Tapons yes pour « shuttdown server ...»


Tapons y pour remplacer le fichier de configuration sftp_config


Tapons y pour lancer automatiquement les logs de MySecureShell


L’installation de MySecureShell est terminée.


Les utilisateurs

Les utilisateurs du serveur SFTP doivent êtres configurés avec MySecureShell.

Créons l’utilisateur testmss :

Image:Konsole.png
[root@ordi ~]# adduser -d /home/testmss -s /bin/MySecureShell testmss

Création du mot de passe:

Image:Konsole.png
[root@ordi ~]# passwd testmss
> testmss12

Les utilisateur crées avant l'utilisation de MySecureShell doivent être modifiés : rssh devient MySecureShell Pour rajouter l’utilisateur test11 que nous avions crée plus haut, nous allons éditer le fichier passwd en tapant :

Image:Konsole.png
[root@ordi ~]# vi /etc/passwd

Maintenant, nous allons remplacer dans la ligne de l’utilisateur test11 :

/usr/bin/rssh   par   /bin/MySecureShell

Exemple :

Test11:x:503:503::/home/test11:/usr/bin/rssh

Devient

Test11:x:503:503::/home/test11:/bin/MySecureShell


Configuration

Passons maintenant à la configuration. Editons le fichier sftp_config

Tapons, toujours en root :

Image:Konsole.png
[root@ordi ~]# vi /etc/ssh/sftp_config

Nous remarquons dans ce fichier :

Une partie Default qui concerne le serveur et tous les utilisateurs par défaut. Si une configuration n’est pas définit pour un utilisateur, il prendra celle par défaut définit dans la balise <Default>.


'''GlobalDownload		50k'''

tous les utilisateurs réunis ne pourront récupérer des fichiers sur le serveur qu’à une vitesse de 50k

'''GlobalUpload		0'''

tous les utilisateurs réunis n’ont pas de limite de débit pour déposer des fichiers sur le serveur

'''StayAtHome			true'''

tous les utilisateurs sont limités dans leur exploration des fichiers a leur Home personnel

'''VirtualChroot		true'''

Le Chroot est actif pour tous les utilisateurs

'''LimitConnection		10'''

Le serveur n’accepte que 10 connections à la fois

'''LimitConnectionByUser	1'''

Le serveur n’accepte pas plus d’une connexion pour un même utilisateur

'''LimitConnectionByIP	2'''

Le serveur n’accepte que deux connections simultanées pour une seule adresse IP au maximum

'''IdleTimeOut			300'''

Apres 300 secondes sans activité, le client sera déconnecté automatiquement

Affiner les valeurs en fonction de vos désirs.


Configuration d’un utilisateur. La configuration d’un utilisateur est pareille que pour un groupe. Nous rajoutons dans notre fichier :


<User test11>

Home /var/ftp

Download 20k

Upload 0

</User>

Upload 0 : l’utilisateur peut déposer sur le serveur de façons illimité
Download 20k : l’utilisateur test11 ne peux récupérer des fichiers sur le serveur qu’a 20k
Home /var/ftp : est le home de l’utilisateur, on peut donc le changer ici


Pour simplifier l’utilisation du serveur, nous allons créer trois groupes. Puis nous ajouterons dans ce groupe les utilisateurs souhaités.

Nous rajoutons dans notre fichier :

<Group sftp-users>

Download 1m

Upload 0

StayAtHome true

VirtualChroot true

LimitConnection 5

LimitConnectionByIP 2

</Group>


<Group sftp-users-power>

Download 1m

Upload 0

StayAtHome false

VirtualChroot false

LimitConnection 5

LimitConnectionByIP 5

</Group>


<Group sftp-users-root>

Download 0

Upload 0

StayAtHome false

VirtualChroot false

LimitConnection 10

LimitConnectionByIP 10

</Group>


Puis nous tapons en tant que root sous la console :

Image:Konsole.png
[root@ordi ~]# groupadd sftp-users

[root@ordi ~]# groupadd sftp-users-power

[root@ordi ~]# groupadd sftp-users-root


Maintenant que la configuration est terminée, lançons MysecureShell avec la commande:

Image:Konsole.png
[root@ordi ~]# sftp-state start


La configuration de MySecureSell peut aussi s’effectuer en mode graphique. Pour cela, télécharger le fichier MySecureShell Graphical tools v1.7 ici :

http://sourceforge.net/project/showfiles.php?group_id=117807&package_id=156080

Enregistrons-le par exemple dans : /tmp

Une fois termine, rendons-nous dans le répertoire /tmp

Image:Konsole.png
[root@ordi ~]# cd /tmp

Puis décompressons l’archive en tapant :

Image:Konsole.png
[root@ordi ~]# unzip MSS_Frontend_v1.7.zip

Maintenant, lançons MySecureShell Graphical tools v1.7 avec la commande en root :

Image:Konsole.png
[root@ordi ~]# java –jar sftp-mss.jar


NB

Si l’interface graphique ne s’ouvre pas, c’est probablement parce que java n’est pas installé sur votre Mandriva. N’hésitez donc pas à taper en tant que root :

#urpmi java.

Une fois lancé, vous obtiendrez l’écran :



Vous retrouverez toutes les options de configuration possible ainsi que les utilitaires sftp-who et sftp-State.

Utilitaires

A entrer dans une console:

sftp-who Permet de connaître les utilisateurs connectés au serveur sftp a un instant (t)


sftp-kill permet de déconnecter un utilisateur. Exemple :

Image:Konsole.png
[root@ordi ~]# sftp-kill testmss


sftp-state Permet d’activer ou désactiver MySecureShell


sftp-admin Pour l’administration a distance


sftp-verif Etablit un check de MySecureShell


sftp-user Permet de gérer les utilisateurs. Exemple :

Image:Konsole.png
[root@ordi ~]# sftp-user list
(liste les utilisateurs de MySecureShell)
Image:Konsole.png
[root@ordi ~]# sftp-user create test11 /home/testmss
(créer le user test11)
Image:Konsole.png
[root@ordi ~]# sftp-user delete
(supprime le user test11)

Tests

Maintenant que notre serveur est correctement configuré, lançons-le puis testons-le.

Lançons MySecureShell en tapant en root :

Image:Konsole.png
[root@ordi ~]# sftp-state

Vérifions que le service ssh est bien lancé en tapant :

Image:Konsole.png
[root@ordi ~]# /etc/init.d/sshd start


Rendons-nous sur notre machine Windows (notre client) pour tester la connexion au serveur.

Lançons WinSCP avec :

Nom d'hôte : 192.168.1.16

Port : 22

Nom d'utilisateur : testmss

Mot de passe : testmss12

Puis cliquons sur Connecter.

Si vous obtenez le message :

Attendez quelques secondes.

La connexion est établit entre le client et le serveur SFTP.


À noter !
Nous remarquons que grâce a l’option Chroot de MySecureShell, l’utilisateur a pour racine son propre home et ne peut remonter dans l’arboressance. Ici son home étant /home/testmss, l’utilisateur y est cloisonné et ne peut en sortir.


Retournons sur le serveur Mandriva et tapons la commande :

Image:Konsole.png
[root@ordi ~]# sftp-who

Nous obtenons les informations :

Nombre de client connecte au serveur : 1/10 Utilisateur connecte : testmss avec l’IP : 192.168.1.5

Nous pouvons obtenir les même informations en cliquant sur sftp-who dans l’interface graphique.

Fin

Maintenant, nous avons terminé l’installation, et la configuration de notre serveur. A vous de le personnaliser et de mettre les personnes que vous souhaitez dans les groupes que vous souhaitez selon les droits à leur attribuer.

Aide

Commandes de base VI

  •  :q – quiter
  •  :w – save
  • « esc » - retour en mode commande
  • « ent » - passer a la ligne
  • « insert » - inserer du text

Sources :

-> kenny

kenny.ker@gmail.com

en recherche d’emploi ?