summaryrefslogtreecommitdiff
path: root/content/Informatique/2011-06-07-sftp.rst
blob: e226f54c19f87e112ef404690687a95e7db1e255 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

Mettre en place un environnement sftp chrooté (2)
#################################################

:date: 2011-06-07
:tags: Hébergement, sftp, Administration

.. default-role:: literal

Il y a quelque temps, j'avais publié un billet indiquant comment mettre en
place un environnement sftp chrooté, dans lequel l'utilisateur ne peut pas
sortir du répertoire qui lui est assigné.

La solution que j'avais proposée (modifier la configuration de sshd) était
compliquée et lourde à mettre en place. Parmi les commentaires, le logiciel
mysecureshell_ avait été évoqué.

Présentation
============

Mysecureshell est une commande qui se lance au login de l'utilisateur sur la
machine. Il dispose de nombreuses possibilité de paramétrage (débit, droits),
tout en restant très simple à administrer. De plus, il empêche l'utilisateur
d'ouvrir une connexion sur la machine, il ne peut que se connecter en sftp.

Nous allons voir ici comment le
mettre en place sur une machine Debian destinée à accueillir des
connexions sftp.

La documentation en ligne est complète et accessible voici néanmoins une
description qui reprend les principes de l'installation.

Installation
============

Mysecureshell n'est malheureusement pas disponible dans les dépôts debian. Il
est donc nécessaire d'ajouter un dépôt externe pour l'installer. Le site web
fournit des `paquets d'installation`_ pour la plupart des distributions (debian,
fedora…)

Une fois que le dépôt est ajouté, il suffit de l'installer en lançant la
commande suivante (toujours sous debian) :

.. code-block:: console

    # aptitude install mysecureshell


Configuration
=============

Configuration de mysecureshell
------------------------------

La configuration se fait dans le fichier /etc/ssh/sftp-config

Voici les champs importants à noter :

=============== ==============================================================
Champs          Signification
=============== ==============================================================
GlobalDownload  Il s'agit du débit maximal qui sera utilisé quand le serveur
                uploadera des fichiers vers les clients
GlobalUpload    La même chose pour l'upload
StayAtHome      Empêcher l'utilisateur de naviguer hors de son répertoire
                personnel
VirtualChroot   Met en place un faux home pour l'utilisateur
Home            Défini le home que verra l'utilisateur lorsqu'il se connectera
=============== ==============================================================

Je conseille de séparer le home « unix » de l'utilisateur de son home
« chrooté ». Cela permet de mettre en place des fichiers dans le fichier home
de l'utilisateur, sans que celui-ci ne puisse les consulter :

Cela se fait tout simplement en mettant l'option VirtualChroot à True, et en
définissant le Home `mysecureshell` vers un sous-répertoire du home `unix` :


.. code-block:: bash

    StayAtHome              true
    VirtualChroot           true
    Home                    /home/$USER/sftp


Cela oblige à créer pour chaque utilisateur un répertoire sftp dans son home.
Lorsque l'utilisateur se connectera, il accedera uniquement à répertoire sftp,
mais ne pourra pas naviguer plus haut, ni consulter les autres répertoires des
autres utilisateurs.


Gestion des comptes
-------------------

La configuration est assez simple : pour chaque utilisateur nous allons indiquer
que mysecureshell est la commande à exécuter lors du login de l'utilisateur.
Cela se fait en modifiant le fichier /etc/passwd.

.. code-block:: console

    invite:x:1002:1002:,,,:/home/invite:/bin/bash

et le remplacer le dernier champs ainsi :


.. code-block:: console

    invite:x:1002:1002:,,,:/home/invite:/bin/Mysecureshell

Sauvegarder, et voilà, la configuration va s'appliquer lors de la prochaine
connexion de l'utilisateur.

Mise à jour de la configuration
-------------------------------

Lorsque les fichiers de configuration sont mis à jour, les connexions existantes
ne sont affectées. Elles ne le deviennent qu'à partir de la prochaine
reconnexion de l'utilisateur.

Il est tout à fait possibile de forcer mysecureshell à appliquer les
modifications, mais cela oblige à `reconnecter les utilisateurs`_

Au final
========

Il n'y a pas grand chose à faire finalement, et c'est agréable de voir la
configuration se faire aussi rapidement ! Il est vrai que le site web de
l'application peut sembler amateur, mais cela ne reflète en rien la qualité de
l'application.

J'abandonne donc avec plaisir la méthode que j'avais mis en place dans mon
précédent billet pour passer sur mysecureshell !

.. _mysecureshell : http://mysecureshell.sourceforge.net/fr/index.html
.. _paquets d'installation : http://mysecureshell.sourceforge.net/fr/installpak.html
.. _reconnecter les utilisateurs : http://mysecureshell.sourceforge.net/fr/confman.html#question9

.. vim: filetype=rst