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