[services] Ajout de vsftpd.md
parent
957625fd09
commit
1c5351ecf0
|
@ -49,6 +49,6 @@
|
||||||
├── gitea.md [shirenn]
|
├── gitea.md [shirenn]
|
||||||
├── jitsi.md
|
├── jitsi.md
|
||||||
├── linx.md
|
├── linx.md
|
||||||
├── vsftpd.md [shirenn]
|
├── vsftpd.md [DONE]
|
||||||
└── zerobin.md [shirenn]
|
└── zerobin.md [shirenn]
|
||||||
```
|
```
|
||||||
|
|
|
@ -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
|
||||||
|
```
|
Loading…
Reference in New Issue