Serveur FTP/FTPS Linux
I. Installation de FTP (VSFTPD)
sudo apt install vsftpd
cd /etc
sudo cp vsftpd.conf vsftpd.conf.default
ls | grep vsft
-rw-r--r-- 1 root root 4593 Jan 22 05:58 vsftpd.conf
-rw-r--r-- 1 root root 4593 Jan 22 06:04 vsftpd.conf.default
nano vsftpd.conf
# pas d'accès anonyme
anonymous_enable=NO
# autorise les comptes locaux (dans /etc/passwd)
local_enable=YES
# autorise l'écriture dans les répertoires
write_enable=YES
# cloisonne les utilisateurs
chroot_local_user=YES
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large sites
ls_recurse_enable=YES
ftpd_banner=Bienvenue sur le serveur FTP du futur.
systemctl enable vsftpd.service
systemctl restart vsftpd
II. Création d'un utilisateur NoLogin
sudo useradd -d /var/www/users/utilisateur -s /usr/sbin/nologin utilisateur
sudo passwd utilisateur
su utilisateur
Password:
This account is currently not available.
- Ajouter la ligne suivante au fichier /etc/shells
sudo nano /etc/shells
/usr/sbin/nologin
- Créer les dossiers de l’utilisateur
sudo mkdir /var/www
sudo mkdir /var/www/users
sudo mkdir /var/www/users/utilisateur
sudo mkdir /var/www/users/utilisateur/FTP
- Donner les droits à l’utilisateur utilisateur sur son dossier de données uniquement
sudo chown utilisateur /var/www/users/utilisateur/FTP
- Vérifier
tree -u
.
└── [root ] utilisateur
├── [utilisateur ] FTP
III. Connexion au FTP
ftp xxx.xxx.xxx.xxx
ftp 192.2.32.150
Connecté à 192.2.32.150.
220 Bienvenue sur le FTP du futur.
200 Always in UTF8 mode.
Utilisateur (192.2.32.150:(none)) : utilisateur
331 Please specify the password.
Mot de passe :
230 Login successful.
IV. Chiffrer le serveur avec SSL/TLS
sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/private/vsftpd.cert.pem -keyout /etc/ssl/private/vsftpd.key.pem
sudo chown root:root /etc/ssl/private/vsftpd.cert.*
sudo chmod 600 /etc/ssl/private/vsftpd.cert.*
# Certificats
rsa_cert_file=/etc/ssl/private/vsftpd.cert.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key.pem
# Turn on SSL
ssl_enable=YES
# Allow anonymous users to use secured SSL connections
allow_anon_ssl=NO
# All non-anonymous logins are forced to use a secure SSL connection
force_local_data_ssl=NO
# All non-anonymous logins are forced to use a secure SSL connectionin in order to send the password.
force_local_logins_ssl=YES
# Permit TLS v1 protocol connections. TLS v1 connections are preferred
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Disable SSL session reuse (required by WinSCP)
require_ssl_reuse=NO
# Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH
sudo service vsftpd reload
Statut : Connexion à xxx.xxx.xxx.xxx:21…
Statut : Connexion établie, attente du message d’accueil…
Statut : Initialisation de TLS…
Statut : Connexion TLS établie.
Statut : Connecté
Statut : Récupération du contenu du dossier…
Statut : Contenu du dossier « / » affiché avec succès
V. Connexion depuis l’exterieur
- Ouvrir le fichier de configuration vsftpd.conf et y ajouter ces lignes
# Passive mode
pasv_enable=YES
pasv_promiscuous=NO
pasv_min_port=40000
pasv_max_port=40100
# pasv_address=xxx.xxx.xxx.xxx ou domaine.com avec pasv_addr_resolve=YES
port_promiscuous=NO
pasv_enable → Utilisez cette option pour activer le mode passif.
pasv_promiscuous → Si vous voulez désactiver le contrôle de sécurité PASV qui assure que la connexion de données provienne de la même adresse IP que le contrôle de connexion. Utilisez si vous savez ce que vous faites! Le seul usage légitime à cela est dans un environnement de tunnels sécurisés, ou peut-être pour faciliter l’utilisation de FXP. Défaut: NO
pasv_address → Utilisez cette option pour écraser l’adresse IP à laquelle vsftpd répondra à la commande PASV. Fournissez une adresse IP numérique.
[On peut toutefois lui donner un nom de domaine en lui ajoutant l’option de résolution DNS: pasv_addr_resolve=YES.]
Cette option est par défaut à NON: L’adresse est reprise de la précédente socket .
port_promiscuous → Utilisez cette option si vous voulez désactiver le PORT contrôle de sécurité qui garantit que les connexions de données sortantes peuvent uniquement se connecter au client. A modifier si vous savez ce que vous faites! Défaut: NO
pasv_min_port et pasv_max_port → Correspondent respectivement au port d’écoute mini et maxi du serveur ftp en mode passif (les valeurs saisies ici sont arbitraires, vous pouvez en saisir d’autres). Cette plage de port doit être ouverte sur votre pare-feu (udp et tcp) et redirigée vers votre serveur FTP.
- Il faut ensuite ouvrir les ports de la machine
sudo ufw allow proto tcp to any port 40000:40100
sudo ufw allow proto udp to any port 40000:40100
Quelques commandes utiles
put
get
mput *.xls
lcd /home/example
sudo tail -f /var/log/vsftpd.log