# Comment j'ai fait mon serveur ftp sécurisé

**URL:** <https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453>\
**Category:** Trucs et Astuces\
**Created:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453 "2016-02-21T20:46:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/1 "2016-02-21T20:46:27Z")

</div>

Bonjour à tous,  
Je vous propose la mise en place d’un serveur ftp.  
Avec ce serveur, chacun a un espace personel et un partagé  
commençons par installer vsftpd et openssl:

[code]$ su

# apt-get install vsftpd openssl[/code]

le serveur ftp sécurisé a besoin d’un certificat. On le crée avec les commandes suivantes:

[code]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

# mv vsftpd.pem /etc/ssl/certs

# chown root:root /etc/ssl/certs/vsftpd.pem

# chmod 600 /etc/ssl/certs/vsftpd.pem[/code]

nous allons produire le fichier de configuration. Je me suis aidé de la page manuel vsftpd.conf. J’y ai omit les options qui ont une valeur par défaut qui me convient.

```auto

```

pour éditer ce fichier:

[code]$ su

# sudo gedit /etc/vsftpd.conf[/code]

par exemple:

[code]async\_abor\_enable=YES  
debug\_ssl=YES  
delete\_failed\_uploads=YES  
dirlist\_enable=YES  
download\_enable=YES  
local\_enable=YES  
listen=YES  
require\_ssl\_reuse=NO  
ssl\_enable=YES  
strict\_ssl\_read\_eof=YES  
userlist\_deny=NO  
userlist\_file=/etc/vsftpd.userlist  
userlist\_enable=YES  
validate\_cert=NO  
write\_enable=YES  
local\_umask=0111  
connect\_from\_port\_20=YES  
listen\_port=21  
chroot\_local\_user=YES  
chroot\_list\_file=/etc/vsftpd.chroot\_list  
ssl\_ciphers=HIGH  
require\_ssl\_reuse=NO  
allow\_anon\_ssl=NO  
force\_local\_data\_ssl=YES  
force\_local\_logins\_ssl=YES  
ssl\_tlsv1=YES  
ssl\_sslv2=NO  
ssl\_sslv3=NO

xferlog\_enable=YES  
xferlog\_std\_format=YES

ftpd\_banner="Bienvenu chez \*\*\*\*\*\*"  
rsa\_cert\_file=/etc/ssl/certs/vsftpd.pem  
secure\_chroot\_dir=/var/run/vsftpd/empty

pasv\_address=  
pasv\_min\_port=40000  
pasv\_max\_port=40010  
pasv\_promiscuous=YES  
pasv\_enable=YES  
[/code]  
les option “chroot\_local\_user=YES” et “chroot\_list\_file=/etc/vsftpd.chroot\_list” indiquent le fichier /etc/vsftpd.chroot\_list où l’on y trouve les utilisateur locaux qui ne seront pas enfermé dans leur dossier personel. Avant de créer les utilisateurs qui pourrons se logger, nous allons créer le fichier /etc/vsftpd.chroot\_list avec la commande cut (si on le fait après, il y aura des utilisateurs qui pourrons sortir de leur dossier personel):

```auto

```

pour faire les utilisateurs, j’ai écris ce script qui ajoute un utilisateur au système. Pour en créer plusieus, utilisez une boucle for:

```auto

```

ce script attribue aux utilisateur le shell /bin/false. Il faut donc l’ajouter dans le fichier /etc/shells (mettez bien \>\> et non pas \> sinon le fichier sera effacé):

```auto

```

nous allons créer un utilisateur pour avoir un dossier à se partager entre les utilisateurs du serveur:

[code]# adduser commun

# usermod -s /bin/false commun

# chmod -R 755 /home/commun

# mkdir /home/commun/pub

# chmod 777 /home/commun/pub

# chown commun:commun -R /home/commun

[/code]  
voici le script:

`#!/bin/bash
if [$USER = "root"]; then
   if ["$1" != ""]; then
      adduser "$1"
      usermod -s /bin/false "$1"
      chown root:root /home/"$1"
      mkdir /home/"$1"/commun
      chown commun:commun /home/"$1"/commun
      chmod 755 /home/"$1"/commun
      mkdir /home/"$1"/mesfichiers
      chown "$1":"$1" /home/"$1"/mesfichiers
      chmod 755 /home/"$1"/mesfichiers
      echo "$1" >> /etc/vsftpd.userlist
      echo "/home/commun /home/"$i"/commun auto bind,defaults 0 0" >> /etc/fstab
      mount /home/"$i"/commun
   else
      echo "indiquez le nom de l'utilisateur en parametre"
   fi
else
   echo "script à éxecuter par root"
fi
`  
pour rendre le script éxecutable:

```auto

```

Dans le fichier /etc/vsftpd.conf de mon exemple, les ports utilisés vont de 40000 à 40010. Il faudra donc ouvrir la plage de ports 40000 à 40010. De quelle manière? cela dépend de votre fournisseur d’accès, ou de votre materiel. Si Vous êtes chez free, il vous faudra vous rendre sur la page de votre compte, choisir l’onglet freebox, gérer le routeur freebox, redirection. indiquez la plage 40000 à 40010, redirigez-la vers l’adresse ip privé où se trouve votre serveur ftp, cliquez sur le plus, cliquez sur enregistrer et redémarrez votre freebox. Pour que cette adresse soit toujours la même, faite un bail dhcp permanent. Vous obtiendrez l’adresse mac avec la commande ifconfig.  
on va bientôt lancer le serveur ftp. Avant cela, vérifions que nous avons bien le réseau:

```auto

```

arrêter avec ctrl+c  
si vous n’avez pas de réseau:

```auto

```

Nous pouvons maintenant lancer le serveur ftp:

```auto

```

si vous voulez utiliser ftp-ssl, il faudra le lancer en mode passif avec l’argument -p:

```auto

```

Vous pouvez visualiser les connexions en temps réel avec la commande ps en argument de watch:

```auto

```

vous pouvez aussi voir qui a téléchargé quoi avec le fichier xferlog (sous root):

```auto

```

vous trouverez la syntaxe de ces lignes ici: [http://www.castaglia.org/proftpd/doc/xferlog.html](http://www.castaglia.org/proftpd/doc/xferlog.html)

et voila…

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/2 "2016-02-21T20:46:29Z")

</div>

Je n’ai fait que parcourir mais quand on parle de “sécurité”, en principe, on évite ce genre de lignes :

> [@](#):
>
> # chmod 777 /home/commun/pub

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/3 "2016-02-21T20:46:31Z")

</div>

c’est un dossier monté dans le dossier personnel qui doit être accessible par tous ceux qui ont un compte sur mon serveur.

mais sinon, j’ai une idée: créer un groupe pour ces utilisateur et chmod 770. Qu’en pensez-vous?

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/4 "2016-02-21T20:46:31Z")

</div>

Loin de moi l’idée de critiquer cette initiative, je me posais juste la question de l’intérêt du ftp devant le sftp? J’ai d’ailleurs un tuto sur le sujet qui traine sur mon serveur, actuellement down pour cause de déménagement si ça en intéresse certains.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/5 "2016-02-21T20:46:31Z")

</div>

[quote=“matser”]c’est un dossier monté dans le dossier personnel qui doit être accessible par tous ceux qui ont un compte sur mon serveur.

mais sinon, j’ai une idée: créer un groupe pour ces utilisateur et chmod 770. Qu’en pensez-vous?[/quote]  
C’est ce à quoi je pensais.  
Par principe, sans rares exceptions, je ne me sers jamais du 777.  
Les groupes ont été fait pour ça.

@ Thuban :  
Oui, je le pensais aussi avec le tuto de Yanlolot, que j’ai utilisé longtemps.  
[https://www.debian-fr.org/serveur-sftp-shell-reduit-rssh-et-chroot-t27796.html](https://www.debian-fr.org/serveur-sftp-shell-reduit-rssh-et-chroot-t27796.html)

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/6 "2016-02-21T20:46:33Z")

</div>

voici ce que j’ai fait:  
le dossier pub appartient à commun:commun. J’ai ajouté les utilisateurs au groupe commun, puis chmod 770 sur le dossier pub  
en regardant un peu le tuto indiqué, je vois que c’est pour faire du sftp. Mon tuto est pour faire du ftps, ce n’est pas pareil.  
ce n’est pas du pur ftp, il y a la couche ssl/tls dans ce serveur. Dans filezilla, on n’accède pas à mon serveur en remplissant les champs host user password. On y accède par le gestionnaire de site. On doit choisir tls explicite, demander mot de passe et dans l’onglet type de transfert, on doit choisir le mode passif. Lors du login, il y a des transaction en tls et ssl

`Statut :	Connexion à 78.227.84.43:21...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 "Bienvenu chez ******"
Commande :	AUTH TLS
Réponse :	234 Proceed with negotiation.
Statut :	Initialisation de TLS...
Statut :	Vérification du certificat...
Commande :	USER moi
Statut :	Connexion TLS/SSL établie.
Réponse :	331 Please specify the password.
Commande :	PASS **********
Réponse :	230 Login successful.
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse : AUTH TLS
Réponse : EPRT
Réponse : EPSV
Réponse : MDTM
Réponse : PASV
Réponse : PBSZ
Réponse : PROT
Réponse : REST STREAM
Réponse : SIZE
Réponse : TVFS
Réponse : UTF8
Réponse :	211 End
Commande :	OPTS UTF8 ON
Réponse :	200 Always in UTF8 mode.
Commande :	PBSZ 0
Réponse :	200 PBSZ set to 0.
Commande :	PROT P
Réponse :	200 PROT now Private.
Statut :	Connecté
Statut :	Récupération du contenu du dossier...
Commande :	PWD
Réponse :	257 "/"
Commande :	TYPE I
Réponse :	200 Switching to Binary mode.
Commande :	PASV
Réponse :	227 Entering Passive Mode (78,227,84,43,156,71).
Commande :	LIST
Réponse :	150 Here comes the directory listing.
Réponse :	226 Directory send OK.
Statut :	Contenu du dossier affiché avec succès`  
qu’en pensez-vous?

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/7 "2016-02-21T20:46:35Z")

</div>

voici les commandes pour créer commun:

[code]# adduser commun

# usermod -s /bin/false commun

# chmod -R 755 /home/commun

# mkdir /home/commun/pub

# chmod 770 /home/commun/pub

# chown commun:commun -R /home/commun

[/code]  
voici aussi le script modifié pour mettre les nouveaux utilisateurs dans le groupe “commun”

`#!/bin/bash
if [$USER = "root"]; then
   if ["$1" != ""]; then
      adduser "$1"
      usermod -a -G commun -s /bin/false "$1"
      chown root:root /home/"$1"
      mkdir /home/"$1"/commun
      chown commun:commun /home/"$1"/commun
      chmod 755 /home/"$1"/commun
      mkdir /home/"$1"/mesfichiers
      chown "$1":"$1" /home/"$1"/mesfichiers
      chmod 755 /home/"$1"/mesfichiers
      echo "$1" >> /etc/vsftpd.userlist
      echo "/home/commun /home/"$i"/commun auto bind,defaults 0 0" >> /etc/fstab
      mount /home/"$i"/commun
   else
      echo "indiquez le nom de l'utilisateur en parametre"
   fi
else
   echo "script à éxecuter par root"
fi
`

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/8 "2016-02-21T20:53:31Z")

</div>

petite correction:  
dans ce script, il faut remplacer “$i” par “$1”

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/9 "2016-02-21T20:53:38Z")

</div>

`#!/bin/bash
if [$USER = "root"]; then
   if ["$1" != ""]; then
      adduser "$1"
      usermod -a -G commun -s /bin/false "$1"
      chown root:root /home/"$1"
      mkdir /home/"$1"/commun
      chown commun:commun /home/"$1"/commun
      chmod 755 /home/"$1"/commun
      mkdir /home/"$1"/mesfichiers
      chown "$1":"$1" /home/"$1"/mesfichiers
      chmod 755 /home/"$1"/mesfichiers
      echo "$1" >> /etc/vsftpd.userlist
      echo "/home/commun /home/"$1"/commun auto bind,defaults 0 0" >> /etc/fstab
      mount /home/"$1"/commun
   else
      echo "indiquez le nom de l'utilisateur en parametre"
   fi
else
   echo "script à éxecuter par root"
fi`

---

<div class="post-metadata">

**Author:** ![piratebab](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/58f4c7/32.png) [@piratebab](https://www.debian-fr.org/u/piratebab)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/10 "2016-02-21T20:53:40Z")

</div>

Moi, ce qui me gène, c’est ça:

[code]$ su

# sudo gedit /etc/vsftpd.conf[/code]

Si tu fais un su (sous entendu su root), inutile de faire un sudo ensuite, d’ailleurs pour se substituer à quel utilisateur ?  
Mais surtout, il y a beaucoup plus propre en utilisant la commande gksu si tu veux modifier un fichier système avec gedit.

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/11 "2016-02-21T20:53:40Z")

</div>

Salut,

Auriez vous TOUS oublié que nous avons un wiki pour ce genre de recettes ![:041](https://www.debian-fr.org/uploads/default/original/1X/bfe857c9119752799c3eac55ca37a50312c51282.gif "applaudit")

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/12 "2016-02-21T20:53:46Z")

</div>

[quote=“ggoodluck47”]Salut,

Auriez vous TOUS oublié que nous avons un wiki pour ce genre de recettes ![:041](https://www.debian-fr.org/uploads/default/original/1X/bfe857c9119752799c3eac55ca37a50312c51282.gif "applaudit")[/quote]

SOS wiki admin not found! ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/13 "2016-02-21T20:53:49Z")

</div>

gedit ne fonctionne pas quand on est root. On doit lui mettre sudo pour qu’il démarre

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/14 "2016-02-21T20:53:52Z")

</div>

Salut,

> [@](#):
>
> gedit ne fonctionne pas quand on est root. On doit lui mettre sudo pour qu’il démarre

C’est à ça que sert gksu et kdesu 🙂

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/15 "2016-02-21T20:53:52Z")

</div>

Re,

[quote]  
SOS wiki admin not found! ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")[/quote]

Ce qui en clair, veut dire ?

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/16 "2016-02-21T20:53:54Z")

</div>

[quote=“ggoodluck47”][quote]  
SOS wiki admin not found! ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")[/quote]

Ce qui en clair, veut dire ?[/quote]  
Que lol n’est plus dans le coin depuis un moment déjà.  
Je dois le contacter au sujet du Wiki, mais j’ai manqué de temps ces derniers jours. Je vais essayer de faire ça dans la semaine.

---

<div class="post-metadata">

**Author:** ![haleth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/h/ecc23a/32.png) [@haleth](https://www.debian-fr.org/u/haleth)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/17 "2016-02-21T20:53:57Z")

</div>

Créer un ftp sécurisé, ça ressemble plutôt à cela, non ? Hihi

`
aptitude install openssh-sftp-server`

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/18 "2016-02-21T20:53:59Z")

</div>

```auto

je ne fait pas un serveur sftp (ssh) mais un serveur ftps (accessible avec un client ftp, comme filezilla), je l'ai dis plus haut, ce n'est pas pareil!
```

je ne fait pas un serveur sftp (ssh) mais un serveur ftps (accessible avec un client ftp, comme filezilla), je l’ai dis plus haut, ce n’est pas pareil!

---

<div class="post-metadata">

**Author:** ![haleth](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/h/ecc23a/32.png) [@haleth](https://www.debian-fr.org/u/haleth)\
**Post date:** [Février 21, 2016, 8:53 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/19 "2016-02-21T20:53:59Z")

</div>

[quote]  
ce n’est pas pareil![/quote]  
Ha ben c’est sur qu’au niveau sécurité, ce n’est pas pareil 🙂

L’un se base sur de la confiance envers un pair, l’autre se base généralement sur la confiance que tu as envers une miriade d’entreprises privées et d’agences gouvernementales.

Difficile de faire un choix … :troll:

---

<div class="post-metadata">

**Author:** ![matser](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/ba9def/32.png) [@matser](https://www.debian-fr.org/u/matser)\
**Post date:** [Février 21, 2016, 8:54 UTC](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453/20 "2016-02-21T20:54:01Z")

</div>

Ce n’est pas non plus du ftp, c’est du ftps ![:018](https://www.debian-fr.org/uploads/default/original/1X/35d75f143a06bf2f0d0242498020dfb195b53630.gif "non") . On a pas tous accès à mon serveur. Pour cela, il faut être inscrit dans le fichier /etc/vsftpd.userlist  
les utilisateurs qui apparaissent dans ce fichier ont chacun un nom et un mot de passe. En utilisant filezilla, ils n’arriveront à rien du tout si il tape l’adresse ip dans la boite hôte. Il devront plutôt ouvrir le gestionnaire de site, en ajouter un, donner l’ip, option “demander un mot de passe”, tls explicite, mode passif, encodage utf8 et ensuite cliquer sur “connexion” puis donner son mot de passe.

[Page suivante](https://www.debian-fr.org/t/comment-jai-fait-mon-serveur-ftp-securise/63453.md?page=2)
