[services] Ajout de vsftpd.md

ceph
_shirenn 2021-07-28 21:55:13 +02:00
parent 957625fd09
commit 1c5351ecf0
2 changed files with 117 additions and 1 deletions

View File

@ -49,6 +49,6 @@
├── gitea.md [shirenn]
├── jitsi.md
├── linx.md
├── vsftpd.md [shirenn]
├── vsftpd.md [DONE]
└── zerobin.md [shirenn]
```

116
services/vsftpd.md 100644
View File

@ -0,0 +1,116 @@
# VSFTPD
VSFTPD est une implémentation de serveur ftp connue pour être très sécurisée
(comme son nom, very secure FTP daemon, l'indique). Un serveur FTP est un
serveur d'échange de fichier un peu daté qui permet à des clients de récuperer
des fichiers d'un serveur, et de les y pousser. Aujourd'hui on lui préferait
l'utilisation de sftp qui utilise le protocole ssh comme support si le client a
besoin d'un accès en écriture au serveur ou simplement du protocole http/https
sinon. Cependant certaines technologies ainsi que des sysadmins vieillissant ne
savent pas faire autre chose que du ftp. C'est pour ça entre autre qu'on
continue de supporter le protocole à certains endroits dans l'infrastructure.
## Principe
Comme décrit plus tôt, le protocole FTP est un ancêtre de l'internet (la
première RFC qui le mentionne prédate l'utilisation de la stack TCP/IP). En
particulier il n'a initialement pas été prévu pour opérer à travers des parefeu
et des nats. C'est pourquoi aujourd'hui un serveur FTP peut fonctionner de deux
manières différentes :
### FTP actif
Quand un client initie une connection avec un serveur FTP, il fournit au serveur
un numéro de port sur lequel le serveur pourra tenter de se connecter pour
procéder à l'échange de données. Cependant au moment où le client redirige le
serveur sur un autre port, rien ne permet d'affirmer que celui sera contactable
par le serveur (en fait de nos jours, si les deux machines ne sont pas sur le
même réseau local, il est quasiment certain que le serveur n'arrivera pas à
contacter le client).
### FTP passif
Pour remedier à ça, le protocole ftp surporte maintenant un mode passif, où
c'est à la charge du serveur de rediriger l'utilisateur sur un port contactable
du serveur.
### Connexion au serveur
Pour se connecter à un serveur ftp un client peut le faire de manière anonyme
si le serveur lui permet. Mais il est possible de restreindre l'accès à une base
d'utilisateurs sécurisée par mot de passe. Cependant, le protocole ne prévoit
pas que le message soit chiffrée pendant le transfert.
### Support de TLS
Le support de TLS a été ajouté au protocole. Il est possible pour le client de
demander à l'initialisation de la connexion que celle-ci s'effectue de manière
chiffrée. Cela permet en particulier d'éviter de faire transiter des messages en
clair sur le réseau.
## Installation
On se contente de tirer le logiciels des dépots de logiciels de debian : `sudo
apt install vsftpd`.
## Configuration
Munissez vous de votre `man 5 vsftpd.conf` préférée et d'un bon remontant parce
que mes ailleux c'est pas clair.
### Configuration réseau
L'option `listen_ipv6=YES` permet de dire au daemon d'écouter **aussi** en ipv6.
Elle ne doit donc pas être utilisée avec l'option `listen=YES` qui ne ne
configurera qu'un socket ipv4.
Comme expliquer précedemment pour fonctionner de nos jours il est assez
fréquen qu'un serveur ftp doivent supporter le mode passif.
```
# Autorise le client à demander au serveur l'utilisation du mode passif
pasv_enable=YES
# Configure la range de ports du serveurs vers l'un desquels le serveur pourra
# rediriger le client
pasv_min_port=45000
pasv_max_port=48000
```
### Configuration SSL
Il est possible de fournir à vsftpd un certificat et une clé privée pour qu'un
client puisse demander l'établissement d'une connexion chiffrée.
```
# Active le chiffrement
ssl_enable=YES
# Rensigne l'emplacement des certificats
rsa_cert_file= /etc/letsencrypt/live/crans.org/cert.pem
rsa_private_key_file= /etc/letsencrypt/live/crans.org/privkey.pem
# Autorise les clients anonymes à bénéficier du chiffrement
allow_anon_ssl=YES
```
### Écriture des logs
On peut demander à vsftpd de logger les connexions, les téléchargements et les
téléversements au serveurs.
```
xferlog_enable=YES
```
### Configuration des utilisateurs
Ici la configuration des utilisateurs dépend principalement de ce que l'on
souhaite faire avec le serveur. Je couvrirais donc les deux cas d'utilisations
qu'on a au crans, le cas d'un mirroir de logiciel (donc accesible pour des
utilisateurs non privilégiés en lecture seule uniquement) et le cas d'un serveur
où une liste d'utilisateur peut venir déposer des fichiers.
Pour notre premier cas d'utilisation, la configuration est triviale :
```
# Autorise les utilisateurs anonymes à se connecter
anonymous_enable=YES
# Expose le dossier /pool/mirror/pub à ces utilisateurs en lecture seule
anon_root=/pool/mirror/root
```
Pour le second, c'est un peu plus déclicat :
```
# Autorise la connexion aux utilisateurs locaux (compte unix)
local_enable=YES
# Restreint les utilisateurs qui peuvent se connecter à ceux présent dans
# /etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=NO
# Autorise les utilisateurs à écrire sur le serveur
write_enable=YES
# Restreint l'accès en écriture au home des utilisateurs
chroot_local_user=YES
```