Installer et utiliser un serveur proFTPd pureFTPd vsFTPd

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche

Glider.png

Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack

Le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur
Le FTP : Accueil du FTP - Le privatebin : Accueil du privatebin
Le Redmine : Accueil du Redmine

Sommaire

Installer et utiliser un serveur ProFTPd pureFTPd vsFTPd

Pour un serveur modulaire et paramétrable à souhaits, installer ProFTPd.
Pour un serveur avec peu d'utilisateurs, privilégier un serveur FTP simple et sécurisé, installer PureFTPd.
Pour un serveur FTP avec beaucoup d’utilisateurs, installer vsFTPd.

ProFTPd

# ProFTPd est un serveur FTP très connu.
# Il a pu évoluer ce qui en fait aujourd’hui un serveur complet avec une configuration facilitée et riche en plugins.
# Sa popularité permet d'obtenir de nombreuses informations mais le soumet à d'avantage de tentatives de piratage.
# Penser à bien conserver son serveur ProFTPd à jour.
Ok.png Site officiel : http://www.proftpd.org

Installer ProFTPd

Installer le serveur ProFTPd

# Installer ProFTPd depuis les dépôts de debian :
sudo apt install proftpd
# Installer ProFTPd depuis la source officielle par compilation :
http://www.proftpd.org/docs/howto/Compiling.html
http://www.fr.linuxfromscratch.org/view/blfs-stable/server/proftpd.html
https://www.system-linux.eu/index.php?post/2008/12/28/Proftpd

Détails de l'installation du serveur ProFTPd

root@ordinateur:/home/utilisateur# apt install proftpd
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Note : sélection de « proftpd-basic » au lieu de « proftpd »
The following additional packages will be installed:
libmemcached11 libmemcachedutil2
Paquets suggérés :
openbsd-inetd | inet-superserver proftpd-doc proftpd-mod-ldap
proftpd-mod-mysql proftpd-mod-odbc proftpd-mod-pgsql proftpd-mod-sqlite
proftpd-mod-geoip
Les NOUVEAUX paquets suivants seront installés :
libmemcached11 libmemcachedutil2 proftpd-basic
0 mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 2 593 ko dans les archives.
Après cette opération, 4 841 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de:1 http://cdn-fastly.deb.debian.org/debian stable/main amd64 libmemcached11 amd64 1.0.18-4.1 [93,7 kB]
Réception de:2 http://cdn-fastly.deb.debian.org/debian stable/main amd64 libmemcachedutil2 amd64 1.0.18-4.1 [22,3 kB]
Réception de:3 http://cdn-fastly.deb.debian.org/debian stable/main amd64 proftpd-basic amd64 1.3.5b-4 [2 477 kB]
2 593 ko réceptionnés en 5min 38s (7 668 o/s)                                  
Sélection du paquet libmemcached11:amd64 précédemment désélectionné.
(Lecture de la base de données... 109841 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libmemcached11_1.0.18-4.1_amd64.deb ...
Dépaquetage de libmemcached11:amd64 (1.0.18-4.1) ...
Sélection du paquet libmemcachedutil2:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../libmemcachedutil2_1.0.18-4.1_amd64.deb ...
Dépaquetage de libmemcachedutil2:amd64 (1.0.18-4.1) ...
Sélection du paquet proftpd-basic précédemment désélectionné.
Préparation du dépaquetage de .../proftpd-basic_1.3.5b-4_amd64.deb ...
Dépaquetage de proftpd-basic (1.3.5b-4) ...
Paramétrage de libmemcached11:amd64 (1.0.18-4.1) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u1) ...
Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
Paramétrage de libmemcachedutil2:amd64 (1.0.18-4.1) ...
Paramétrage de proftpd-basic (1.3.5b-4) ...
Attention ! Impossible d'accéder au répertoire personnel que vous avez indiqué (/run/proftpd) : No such file or directory.
Ajout de l'utilisateur système « proftpd » (UID 115) ...
Ajout du nouvel utilisateur « proftpd » (UID 115) avec pour groupe d'appartenance « nogroup » ...
Le répertoire personnel « /run/proftpd » n'a pas été créé.
Ajout de l'utilisateur système « ftp » (UID 116) ...
Ajout du nouvel utilisateur « ftp » (UID 116) avec pour groupe d'appartenance « nogroup » ...
Création du répertoire personnel « /srv/ftp »...
'/usr/share/proftpd/templates/welcome.msg' -> '/srv/ftp/welcome.msg.proftpd-new'
Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u1) ...
Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...

Connaître la version installée de ProFTPd

sudo proftpd -v
ProFTPD Version 1.3.6

Installer l'interface graphique de ProFTPd

# ProFTPd possède une interface graphique, Gproftpd, le nom du paquet est gadmin-proftpd.
Ok.png En savoir plus : https://doc.ubuntu-fr.org/gproftpd

Les paquets complémentaires suggérés pour ProFTPd

openbsd-inetd | inet-superserver proftpd-doc proftpd-mod-ldap
proftpd-mod-mysql proftpd-mod-odbc proftpd-mod-pgsql proftpd-mod-sqlite
proftpd-mod-geoip

Installer le gestionnaire phpftpwho écrit en PHP pour ProFTPd

# Permet d'afficher les utilisateurs connectés :
(2016) https://github.com/firefly2442/phpftpwho
Fork -> (2020) https://github.com/ZerooCool/phpftpwho

Installer le gestionnaire ProFTPd-Admin écrit en PHP pour ProFTPd

# ProFTPd-Admin n'est plus correctement maintenu à ce jour.
# Un autre dépôt existe peut être, plus récent et mieux maintenu.
(2016) https://github.com/ChristianBeer/ProFTPd-Admin/issues
Fork -> (2017) https://github.com/mkkeck/ProFTPd-Admin-Secure-Version

Configurer ProFTPd

Configuration de base

La configuration

# Ouvrir le fichier de configuration de ProFTPd :
sudo nano /etc/proftpd/proftpd.conf
# Nom du serveur FTP :
ServerName "FTP Visionduweb"

# Désactiver les traitements DNS de proftpd permet une connexion rapide au serveur.
# Tester les deux et voir la différence.
# UseReverseDNS off
IdentLookups off
# ProFTPD effectue un chroot dans le répertoire de l'utilisateur authentifiant immédiatement après la connexion.
# L'utilisateur ne peut pas "voir" les répertoires de niveau supérieur.
# Bloquer chaque utilisateur dans son propre répertoire /home 
# Permet d'éviter qu’il n'ait accès à tout le serveur.
DefaultRoot ~
# Seuls les utilisateurs qui sont membres du groupe users et non membre du groupe staff utiliseront la valeur par défaut pour le répertoire racine défini sur '~'.
# DefaultRoot ~ users,!staff
# Ne pas donner d'informations précises sur le serveur.
DeferWelcome off
# Les utilisateurs ont besoin d’un shell valide répertorié dans /etc/shells pour se connecter.
# Décommenter l'option RequireValidShell pour pouvoir ajouter des utilisateurs sans accès ssh.
RequireValidShell               off
# Si vous utilisez un pare-feu sur votre serveur, décommenter la ligne PassivePorts en définissant une intervalle de ports.
# Configurer le FTP et le pare-feu pour utiliser la plage de ports passifs entre 49152-65534 proposée par IANA.
# Dans cet exemple, les ports 49152 à 65534 sont utilisés pour les connexions FTP passives.
PassivePorts                  49152 65534
# Autoriser les ports dans votre pare-feu.
# Avec UFW :
ufw allow 49152:65534/tcp
# Avec Iptables :
-A OUTPUT -p tcp --sport 49152:65534 --dport 49152:65534 -m state --state ESTABLISHED -j LOG_ACCEPT
-A INPUT -p tcp --sport 49152:65534 --dport 49152:65534 -m state --state ESTABLISHED,RELATED,NEW -j LOG_ACCEPT

Configurer le message d'accueil

# Les messages seront affichés lors de la connexion entre FileZilla et le serveur
# si l'option "Édition" / "Paramètres" / "Débogage" / "Afficher le contenu brut du dossier" est coché.
Méthode 1 pour afficher un message lors de la connexion
# Éditer le fichier de configuration :
cd /etc/proftpd/
sudo nano proftpd.conf
# S'assurer du nom du fichier utilisé pour le message d'accueil :
DisplayLogin                    welcome.msg
# Le répertoire suivant comprend le fichier welcome.msg qui contient le message d'accueil type :
cd /usr/share/proftpd/templates
# Copier le fichier welcome.msg dans chaque répertoire de connexion FTP.
# Le message sera affiché lors de la connexion au serveur FTP.
sudo cp welcome.msg /var/www/ftp.visionduweb.fr/ftp/
sudo cp welcome.msg /var/www/ftp.visionduweb.fr/ftp/anonymous/
Méthode 2 pour afficher un message lors de la connexion
# Éditer le fichier de configuration :
cd /etc/proftpd/
sudo nano proftpd.conf
<Global>
# Franciser / personnaliser les messages.
AccessGrantMsg " -- Accès autorisé pour %u --"
AccessDenyMsg " !-!! ACCÈS REFUSÉ !!-! VOUS NE SEMBLEZ PAS ÊTRE AUTORISÉ !!"
</Global>
Problèmes identifiés
# Problème 1
Le problème restant, avec le fichier welcome.msg :
- Il peut actuellement être supprimé par un utilisateur ayant les droits en écriture. Vérifier si un droit [[1]] peut éviter ce problème.
- Il est visible de tous, alors que c'est un fichier qui aurait vocation à être caché, puisqu'il s'agit d'un fichier de configuration.
# Problème 2
L'accès avec l'utilisateur pouvant écrire dans le répertoire anonymous transforme les caractères accentués.

Tester la configuration de ProFTPd

# Tester la configuration de ProFTPd :
sudo proftpd --configtest

Recharger la configuration de ProFTPd

# Recharger la configuration du serveur ProFTPd pour appliquer les changements de configuration :
sudo /etc/init.d/proftpd reload
sudo service proftpd reload

Redémarrer le service ProFTPd

sudo /etc/init.d/proftpd restart
sudo service proftpd restart

Afficher les informations de ProFTPd

sudo proftpd -V

Exemples de configurations

# A reprendre pour comparer :
Ok-ko.png La configuration complète de proftpd.conf : http://www.octetmalin.net/linux/tutoriels/proftpd-fichier-proftpd.conf.php
# A reprendre pour comparer :
Ok-ko.png https://github.com/proftpd/proftpd/issues/687
# A reprendre pour comparer :
Ok-ko.png http://www.ccp14.ac.uk/ccp14admin/proftpd/index.html
Configuration actuellement utilisée
# LangEngine on
# LangDefault fr_FR
# UseEncoding on

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6				on
# If set on you can experience a longer connection delay in many cases.
IdentLookups			off
# Use this to jail all users in their homes :
DefaultRoot ~
# DefaultRoot /var/www/ftp.visionduweb.fr/ftp/anonymous anonymous
ServerName			"FTP Visionduweb"
# Users require a valid shell listed in /etc/shells to login.
RequireValidShell               off
# Use the IANA registered ephemeral port range :
PassivePorts 49152 65534

# Set to inetd only if you would run proftpd by inetd/xinetd.
ServerType			standalone

# Ne pas donner d'informations précises sur le serveur.
DeferWelcome			off

MultilineRFC2228		on
DefaultServer			on
ShowSymlinks			on

TimeoutNoTransfer		600
TimeoutStalled			600
TimeoutIdle			1200

DisplayLogin                    welcome.msg
DisplayChdir			.message true
ListOptions			"-l"

DenyFilter			\*.*/

# The standard FTP port.
Port				21

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress		1.2.3.4

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>

# To prevent DoS attacks, set the maximum number of child processes to 30.
# If you need to allow more than 30 concurrent connections at once,
# simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
MaxInstances			30

# Set the user and group that the server normally runs at.
User				proftpd
Group				nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask				022  022
# Normally, we want files to be overwriteable.
AllowOverwrite			on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd		off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder			mod_auth_pam.c* mod_auth_unix.c

# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
# UseSendFile			off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on

# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime.  If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
#SetEnv TZ :/etc/localtime

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>


# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

# This is used for FTPS connections
Include /etc/proftpd/tls.conf

# Cette option évite d’avoir une erreur:
# 425 Impossible d’établir la connexion de données : Opération non permise
# The latest ProFTPd server has a configuration setting that by default requires
# SSL/TLS sessions to be re-used, and this breaks *many* FTP clients, including
# Chilkat. The fix to be made on the server is to add the following line to the
# proftpd.conf and then restart it.
TLSOptions NoSessionReuseRequired

# Useful to keep VirtualHost/VirtualRoot directives separated
#Include /etc/proftpd/virtuals.conf

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User				ftp
#   Group				nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias			anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser	on ftp
#   DirFakeGroup on ftp
# 
#   RequireValidShell		off
# 
#   # Limit the maximum number of anonymous logins
#   MaxClients			10
# 
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin			welcome.msg
#   DisplayChdir		.message
# 
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
# 
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask				022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
# 
# </Anonymous>

# Include other custom configuration files
Include /etc/proftpd/conf.d/

<Global>
# Franciser les messages.
# Ne s'affiche pas !
AccessGrantMsg " -- Accès autorisé pour %u --"
AccessDenyMsg " !-!! ACCÈS REFUSÉ !!-! VOUS NE SEMBLEZ PAS ÊTRE AUTORISÉ !!"
</Global>


#######################
### Partage anonyme ###
<Anonymous /var/www/ftp.visionduweb.fr/ftp/anonymous>
User anonymous
Group partageproftpd
 
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
MaxClients 10
 
<Directory *>    
<Limit WRITE>
DenyAll
</Limit> 

# Autorise le stockage de fichiers et création de répertoires mais pas l'effacement.
# <Limit STOR MKD>
# AllowAll
# </Limit> 

# Désactiver les commandes de copie, pouvant engendrer un risque de sécurité.
# Déplacements de fichiers sensibles, déplacements de fichiers vers le répertoire tmp pour le saturer.
<Limit SITE_CPFR SITE_CPTO>
DenyAll
</Limit>

# Limiter toutes les commandes pour l'utilisateur anonyme, hormis la commande de login.
# Empêche la connexion anonyme sans mot de passe.
# <Limit ALL>
#   DenyAll
# </Limit>
</Directory>
</Anonymous>

Créer un groupe pour les utilisateurs du FTP

sudo addgroup partageproftpd
# Ou encore :
sudo addgroup groupeuserftpd

Créer un utilisateur pour FTP

Première méthode pour ajouter un utilisateur à ProFTPd

# Les données sont stockées dans le répertoire /var/www/ftp.visionduweb.fr/ftp/ ce qui est pratique pour une sauvegarde complète du dossier /ftp.visionduweb.fr/.
# Définir le dossier --home qui correspond au dossier du site web de l'utilisateur.
# Ajouter l'utilisateur au groupe www-data pour qu’il n’y ai pas de problème au niveau des permissions.
# Ajouter la directive --shell /bin/false qui interdit l'accès au shell pour le nouvel utilisateur créé.
# Précédemment nous avons définit que l'utilisation du serveur FTP ne nécessitait pas d'un accès valide au shell.
cd /var/www/ftp.visionduweb.fr
sudo mkdir ftp
sudo adduser --home /var/www/ftp.visionduweb.fr/ftp/ --shell /bin/false --ingroup partageproftpd ftpuserone
# Saisir un mot de passe et les informations demandées.
# Donner les droits de propriété à l'utilisateur ftpuserone dans le groupe partageproftpd :
sudo chown ftpuserone:partageproftpd ftp/
# L'utilisateur pourra ajouter ou supprimer des fichiers en se connectant via un client ftp.
# Il ne pourra pas accéder à d'autres fichiers que ceux présents dans sont dossier --home et il n'aura pas accès au serveur via ssh.

Seconde méthode pour ajouter un utilisateur à ProFTPd

# Créer un utilisateur iamuserftp qui pourra se connecter via FTP à son dossier utilisateur /home/iamuserftp
sudo adduser iamuserftp
# Attribuer l'utilisateur au groupe www-data
sudo usermod -G www-data iamuserftp
# Définir l'utilisateur comme propriétaire des fichiers et des dossiers du site :
sudo chown -Rf iamuserftp:www-data /var/www/
# Définir tous les dossiers en lecture / écriture / exécution pour le propriétaire, lecture / exécution pour le groupe :
sudo find /var/www -type d -exec chmod 750 {} \;
# Définir tous les fichiers avec lecture / écriture pour propriétaire, lecture pour le groupe :
sudo find /var/www -type f -exec chmod 640 {} \;

Troisième méthode pour ajouter un utilisateur à ProFTPd

# Créer un utilisateur système directement placé dans un groupe pour accéder au serveur FTP :
sudo addgroup nom_groupe
sudo adduser --ingroup nom_groupe iamuserftp
# Lors de la création de cet utilisateur, saisir quelques renseignements, le plus important étant le mot de passe.
# Le répertoire personnel de l'utilisateur sera créé par défaut dans le répertoire /home
# Noter que des données peuvent être stockées dans le répertoire /home/utilisateur/ftp/ pour éviter de donner une réponse lors d'un scann direct sur l'espace web /home/utilisateur/ftp/www.

Quatrième méthode pour ajouter un utilisateur à ProFTPd

# Définir le dossier home qui correspond au dossier du site web concerné, et, ajouter l'utilisateur au groupe www-data pour éviter des problèmes au niveau des permissions.
sudo adduser --home /var/www/votredomaine.tld/ --shell /bin/false --ingroup www-data votre-utilisateur
# L'utilisation du serveur FTP ne nécessitant pas un accès valide au shell du fait de la configuration globale de ProFTPD.
# La directive --shell /bin/false interdit l'accès au shell pour le nouvel utilisateur.
# Ajouter les permissions au groupe sur le répertoire du site :
sudo chmod -R g+rw /var/www/votredomaine.tld/
# L'utilisateur pourra ajouter ou supprimer des fichiers en se connectant via un client FTP.
# Il ne pourra pas accéder à d'autres fichiers que ceux présents dans son répertoire --home et il ne pourra pas se connecter au serveur en SSH.

Déclarer le faux shell /bin/false

# Ajouter la ligne /bin/false à la fin du fichier /etc/shells pour les utilisateurs au shell non autorisé.
# En temps normal, lors de la création d'un utilisateur, on lui associe un shell pour qu'il puisse manipuler le système.
# Concernant un serveur FTP on souhaite créer des utilisateurs uniquement capables de télécharger des fichiers mais pas de pouvoir se connecter au shell.
# Pour cela, on ajoute --shell /bin/false lors de la création de l'utilisateur : adduser --shell /bin/false ...
# Par défaut, sous Ubuntu notamment, le faux shell /bin/false n'est pas déclaré dans le fichier /etc/shells.
# La commande suivante ajoute la ligne /bin/false à la fin de ce fichier ce qui par la mème occasion déclare le faux shell /bin/false.
sudo bash
echo /bin/false >> /etc/shells

Accéder au contenu du FTP depuis un navigateur web

Créer le répertoire www de l'utilisateur et configurer mod_userdir sur le serveur Apache2

# Une fois connecté, créer un répertoire www qui contiendra une page d’accueil index.html.
# Il faut dans un premier temps activer le module userdir dans Apache.
sudo a2enmod userdir
# Redémarrer Apache2.
sudo systemctl restart apache2
# Éditer la configuration :
sudo nano /etc/apache2/mods-enabled/userdir.conf

<IfModule mod_userdir.c>
 UserDir www
 UserDir disabled root
  <Directory /home/USER/www ou /var/www/ftp.visionduweb.fr/ftp/www>
   AllowOverride FileInfo AuthConfig Limit
   Options Indexes SymLinksIfOwnerMatch IncludesNoExec
  </Directory>
</IfModule>
# Redémarrer Apache2.
sudo service apache2 restart
# Je ne sais pas si c'est nécessaire mais PHP FPM étant activé je redémarre aussi PHP FPM :
sudo service php7.2-fpm restart
La page d'accueil depuis l'adresse http://ip_serveur/~nom_utilisateur/ devrait s'afficher.

Configurer Apache2 pour faire pointer visionduweb.user.fr vers le dossier FTP

# Dans le répertoire /etc/apache2/sites-available créer le fichier visionduweb.user.fr.conf.
# Créer le fichier de configuration pour le VirtualHost :
sudo touch visionduweb.user.fr.conf
sudo chown root:root visionduweb.user.fr.conf
sudo chmod 644 visionduweb.user.fr.conf
# Activer le site et redémarrer Apache2 pour appliquer la nouvelle configuration :
sudo a2ensite visionduweb.user.fr.conf
sudo apache2ctl restart
# Ajouter les instructions présentées ci-dessous :
sudo nano /etc/apache2/sites-enabled/visionduweb.user.fr.conf
<VirtualHost *:80>
 ServerName www.visionduweb.user.fr
 ServerAlias visionduweb.user.fr
 ServerAdmin mail@visionduweb.com
 DocumentRoot /home/ftpuserone/www ou /var/www/html/ftp/www

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

 <Directory /home/USER/www ou /var/www/html/ftp/www>
 Options -Indexes
 </Directory>
 # php_admin_value open_basedir "/tmp:/var/lib/php:/home/nom_utilisateur/www"
</VirtualHost>
# Ne pas oublier le paramètre open_basedir de PHP qui empêche les scripts PHP de lire les fichiers du serveur en cloisonnant les scripts PHP dans le répertoire www.
# Redémarrer Apache :
sudo service apache2 restart
Cette configuration de VirtualHost est ajoutée au serveur : VirtualHost des domaines enregistrés sur le serveur.

Ajouter des hôtes virtuels

ProFTPd mise en oeuvre d'hôtes virtuels : http://www.octetmalin.net/linux/tutoriels/proftpd-mise-en-oeuvre-hote-virtuel.php
ProFTPd fichier de configuration virtuals.conf : http://www.octetmalin.net/linux/tutoriels/proftpd-fichier-virtuals.conf.php

Accès FTP anonyme

# Créer le compte FTP pour un utilisateur nommé anonymous :
sudo adduser --home /var/www/ftp.visionduweb.fr/ftp/anonymous --shell /bin/false --ingroup partageproftpd anonymous
# Mot de passe : anonymous
# Ajouter les lignes dans le fichier de configuration de ProFTPD :
sudo nano /etc/proftpd/proftpd.conf
### Partage anonyme ###
<Anonymous /var/www/ftp.visionduweb.fr/ftp/anonymous>
User anonymous
Group partageproftpd

UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
MaxClients 10

<Directory *>
 <Limit WRITE>
  DenyAll
 </Limit>

# Autorise le stockage de fichiers et création de répertoires mais pas l'effacement.
# <Limit STOR MKD>
# AllowAll
# </Limit>

# Désactiver les commandes de copie, pouvant engendrer un risque de sécurité.
# Déplacements de fichiers sensibles, déplacements de fichiers vers le répertoire tmp pour le saturer.
<Limit SITE_CPFR SITE_CPTO>
DenyAll
</Limit>

# Limiter toutes les commandes pour l'utilisateur anonyme, hormis la commande de login.
# Empêche la connexion anonyme sans mot de passe.
#  <Limit ALL>
#   DenyAll
# </Limit>

</Directory>
</Anonymous>
# La connexion avec l'utilisateur anonymous et le mot de passe anonymous en mode normale fonctionne en lecture seule.
# La connexion anonyme fonctionne en lecture seule.

Gestion des droits sur les répertoires

Le premier utilisateur arrive bien à écrire dans son répertoire une fois les droits changés pour ftpuserone:partageproftpd
### Le premier utilisateur n'arrive pas à écrire dans le répertoire anonymous qui appartient à anonymous:partageproftpd
# Ajouter les permissions du groupe et la lecture / écriture sur un dossier :
chmod -R g+rw /var/www/ftp.visionduweb.fr/ftp/anonymous
# Le premier utilisateur peut maintenant écrire dans le dossier anonymous.
# Le premier utilisateur ne peut pas supprimer le dossier anonymous car des fichiers masqués sont présents dans le répertoire.
# Par contre le premier utilisateur peut supprimer son propre répertoire www.
# Je voudrais ne pas lui permettre la suppression de ce dossier.
# sudo mkdir www
# sudo chown ftpuserone:partageproftpd www/
Créer un utilisateur ftprw pour ajouter des données dans ce répertoire :
sudo adduser --home /var/www/ftp.visionduweb.fr/ftp/anonymous --shell /bin/false --ingroup partageproftpd ftprw
Mot de passe "ftprw".

Limiter les commandes autorisées

# Désactiver les commandes de copie, pouvant engendrer un risque de sécurité.
# Déplacements de fichiers sensibles, déplacements de fichiers vers le répertoire tmp pour le saturer.
<Limit SITE_CPFR SITE_CPTO>
DenyAll
</Limit>
# Tous les groupes sont refusés hormis le groupe utilisateur :
<Limit ALL>
DenyGroup !ftpusers
</Limit>

Sécuriser le serveur ProFTPd

Utiliser FTPS avec ProFTPd

# FTPS signifie "FTP via SSL/TLS".

Créer la clé privée et publique

# Créer les clés dans le dossier /etc/ssl/private :
sudo bash
cd /etc/ssl/private
openssl req -x509 -nodes -newkey rsa:2048 -keyout proftpdServerkey.pem -out proftpdCertificate.pem -days 365
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: Alsace
Locality Name (eg, city) []: Colmar
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Visionduweb
Organizational Unit Name (eg, section) []: Visionduweb
Common Name (e.g. server FQDN or YOUR name) []: Bernard Bass
...  
Email Address []: mail@visionduweb.com
# Protéger la clé :
chmod 444 proftpdServerkey.pem proftpdCertificate.pem
# Vérifier mais un 440 serait plus conseillé.
# La clé privée :
proftpdServerkey.pem
# La clé publique :
proftpdCertificate.pem
# Cette méthode de création de clé permet de ne pas rencontrer ce message d'erreur :
mod_tls/2.7: error loading TLSRSACertificateFile '/etc/ssl/certs/proftpd.crt':
(1) error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
# Si la clé a expirée suite à une année écoulée, relancer la commande pour générer une nouvelle clé.

Configurer le fichier tls.conf pour activer le TLS

sudo nano /etc/proftpd/tls.conf
## Décommenter les deux lignes suivantes permet de charger les certificats.
TLSRSACertificateFile                   /etc/ssl/private/proftpdCertificate.pem
TLSRSACertificateKeyFile                /etc/ssl/private/proftpdServerkey.pem
# Cette configuration est fonctionnelle sous Debian Stretch 9 et Debian Buster 10  :
<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             TLSv1.2
TLSRSACertificateFile                   /etc/ssl/private/proftpdCertificate.pem
TLSRSACertificateKeyFile                /etc/ssl/private/proftpdServerkey.pem
TLSVerifyClient off
# Obligation pour le client d'utiliser SSL.
# off permet la connexion non sécurisée. on oblige l'utilisation de TLS.
TLSRequired                             on
</IfModule>

Ouvrir le fichier de configuration de ProFTPd

sudo nano /etc/proftpd/proftpd.conf
# Décommenter la ligne suivante pour charger le fichier de configuration de TLS.
Include /etc/proftpd/tls.conf

Relancer le serveur FTP pour prendre en compte la nouvelle configuration

sudo service proftpd restart

Tester la connexion au serveur FTP en TLS avec FileZilla

Tester la connexion FTP.
Chiffrement Connexion FTP explicite sur TLS si disponible.
Une demande de certificat est affichée par FileZilla qui demande de faire confiance au certificat.
Appuyer sur OK.
FileZilla devrait se connecter correctement au serveur FTP, en TLS.

Le serveur ne supporte pas les caractères non-ASCII

Pour ne plus afficher le message d'erreur : Le serveur ne supporte pas les caractères non-ASCII.
Depuis le client FileZilla, Gestionnaire de sites, Onglet jeu de caractères, Forcer l'UTF-8 si le serveur le supporte.

Utiliser SFTP avec ProFTPd

Ne fonctionne pas : Connexion SFTP avec FileZilla

# Le "module SFTP" de Proftpd écoute sur le port 22 (Le port de SSH normal) pour desservir le sous-protocole SFTP.
# Cela nécessite qu'il n'y ait pas de serveur SSH en fonctionnement, car sinon il y a un conflit de port d'écoute.
# De plus, mon serveur utilisant le port Knocking, le port 22 n'est pas utilisable directement.
# J'obtiens le message d'erreur suivant quand je tente de me connecter avec FileZilla et SFTP :
Erreur :	Disconnected: No supported authentication methods available (server sent: publickey)
Erreur :	Impossible d'établir une connexion au serveur

# Votre serveur ne prend en charge que l'authentification par clé publique et vous n'avez spécifié aucune clé privée à utiliser pour l'authentification.
# Il faudrait ajouter sa clé directement sur la machine hôte, en local dans le dossier /.ssh/id_rsa - Dans authorized_keys ?
## Cette tentative semble m'avoir mis dehors du serveur.
## Le serveur ne redémarre pas et je dois passer en mode Rescue.
## Au redémarrage, tous mes services sont éteints et je n'arrive pas à redémarrer MariaDB.
## Rajouter à la fin du fichier /etc/ssh/sshd_config les lignes suivantes 
Subsystem sftp internal-sftp
      Match group ftp
      ChrootDirectory /home/USER/www
      AllowTCPForwarding yes
Source : https://kgrall.wordpress.com/2017/12/06/serveur-ssh-ftp-securise-sftp/
: https://blog.victor-hery.com/2019/03/installer-sftp-proftpd.html
Installation Serveur FTP – ProFTPD + SSL : http://web.archive.org/web/20190510101924/https://www.barrekevin.com/2018/05/23/installation-serveur-ftp-proftpd-ssl/
Comment se connecter à un serveur SFTP avec FileZilla : https://help.one.com/hc/fr/articles/115005585709-Comment-se-connecter-%E0-un-serveur-SFTP-avec-FileZilla-
Source complémentaire : http://www.proftpd.org/docs/contrib/mod_sftp.html
PROFTPD - SFTP CONFIGURATION : https://gist.github.com/tuxfight3r/b62dc3351732615f9e86
Une fois cette étape configurée, reporter la manipulation sur la page de SSH SFTP

Interdire la connexion à des utilisateurs depuis le fichier ftpusers

Le contenu du fichier ftpusers se trouve dans le répertoire /etc/.
Il contient la liste de tous les utilisateurs qui n'ont pas le droit ce connecter via le démon du serveur FTP.
Pour ajouter un utilisateur il suffit d'éditer le fichier avec un éditeur de texte et de rajouter le nom de l'utilisateur.
Un seul nom de compte utilisateur par ligne. Les noms commençants par # seront ignorées.
sudo nano /etc/ftpusers

Voir qui est connecté à votre serveur

# Fonctionne correctement depuis debian 10 :
ftpwho

Consulter les statistiques de ProFTPd

# Consulter les statistiques de ProFTPd :
sudo ftpstats
# Ajoute l'heure de la modification :
sudo ftpstats -h
# Documentation :
sudo man ftpstats

Gestion des modules de ProFTPd

# Localiser les modules de ProFTPd sur le serveur :
cd /usr/lib/proftpd
ls
mod_auth_otp.so     mod_facl.so             mod_quotatab.so      mod_sftp_pam.so    mod_tls_memcache.so  mod_wrap2_sql.so
mod_ban.so          mod_ifsession.so        mod_quotatab_sql.so  mod_sftp.so        mod_tls_redis.so     mod_wrap.so
mod_copy.so         mod_ifversion.so        mod_radius.so        mod_sftp_sql.so    mod_tls.so
mod_ctrls_admin.so  mod_load.so             mod_ratio.so         mod_shaper.so      mod_unique_id.so
mod_deflate.so      mod_memcache.so         mod_readme.so        mod_site_misc.so   mod_wrap2_file.so
mod_dynmasq.so      mod_quotatab_file.so    mod_redis.so         mod_sql_passwd.so  mod_wrap2_redis.so
mod_exec.so         mod_quotatab_radius.so  mod_rewrite.so       mod_sql.so         mod_wrap2.so
# Paramétrer le fichier de configuration des modules :
sudo nano /etc/proftpd/modules.conf

mod_ctrls

# Ce module implémente le côté serveur d'un socket de domaine Unix, utilisé pour la communication avec un démon proftpd en cours d'exécution.
# Il est possible que ce soit la cause d'au moins une, peut être deux, erreurs, que j'ai eu a rencontrer.
# Dans ma liste, le mod_ctrls n'est pas présent.
# Le module mod_ctrls est contenu dans les fichiers mod_ctrls.c et mod_ctrls.h pour ProFTPD 1.2 et n'est pas compilé par défaut.
# Le module mod_ctrls n'est pas présent pour ma version actuelle de ProFTPD 1.3.6 installée sur Debian Buster 10.
# La directive par défaut :
ControlsSocket var/run/proftpd.sock
ControlsSocket /var/run/proftpd/proftpd.sock
# Vérifier le bon chemin à donner pour le socket !
# Le module mod_ctrls est distribué avec la source officielle de ProFTPD.
# Télécharger la version de ProFTPd correspondante depuis le site officiel : http://www.proftpd.org
sudo wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz
# Il faut compiler tout le programme depuis les sources et inclure les modules souhaités !
sudo tar xzvf proftpd-1.3.6.tar.gz
sudo rm proftpd-1.3.6.tar.gz
cd ~/proftpd-1.3.6/
# Pour activer l'utilisation des contrôles, utiliser l'option de configuration --enable-ctrls :
sudo ./configure --enable-ctrls
# Utiliser checkinstall plutôt que make pour créer un .deb permettant la désinstallation simplifiée :
sudo checkinstall
sudo dpkg -i $PACKAGE_NAME_YOU_ENTERED 
sudo dpkg -r $PACKAGE_NAME_YOU_ENTERED

# make
# make install
# Dans le module mod_ctrls il y a l'option controlsocket.
http://www.proftpd.org/docs/modules/mod_ctrls.html
# Comment ajouter ce module avec une installation existante de proftpd-basic sous debian ?

mod_core - Les directives du module

Source : http://www.proftpd.org/docs/modules/mod_core.html

mod_copy - Désactiver le module

# Paramétrer le fichier de configuration des modules pour désactiver mod_copy :
sudo nano /etc/proftpd/modules.conf
# Limite un risque de sécurité, notamment pour l'utilisateur anonyme.
# Permet de ne pas déplacer des fichiers sensibles.
# Permet de ne pas saturer un dossier tmp.
# LoadModule mod_copy.c

Quelques erreurs rencontrées et résolues

ProFTPd ne démarre pas

# Consulter le mode verbose :
sudo proftpd -td10
# Affiche :
fatal: unknown configuration directive 'Default' on line 39 of '/etc/proftpd/proftpd.conf'
Ici, la directive Default Root n'est pas reconnue. Le mot clé à utiliser est DefaultRoot tout attaché.

Memcache support not enabled

Si en redémarrant le demon, vous avez un message d’erreur du style :
mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: Memcache support not enabled
# Éditer le fichier /etc/proftpd/modules.conf et commenter la ligne:
LoadModule mod_tls_memcache.c

ProFTPd ne redémarre pas

/etc/init.d/proftpd restart
[....] Restarting proftpd (via systemctl): proftpd.serviceFailed to restart proftpd.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
See system logs and 'systemctl status proftpd.service' for details.
Résolu :
Avec sudo, ça fonctionne mieux.
sudo /etc/init.d/proftpd restart
[ ok ] Restarting proftpd (via systemctl): proftpd.service.

Error in protocol version (70)

Depuis Filezilla :
Erreur :	Réception d'une alerte TLS à partir du serveur : Error in protocol version (70)
Erreur :	Impossible d'établir une connexion au serveur
Depuis le fichier /var/log/proftpd/tls.log
mod_tls/2.7[12334]: error initializing OpenSSL context for this session
mod_tls/2.7[12334]: TLS/TLS-C requested, starting TLS handshake
mod_tls/2.7[12334]: unable to accept TLS connection: protocol error:
 (1) error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol
mod_tls/2.7[12334]: TLS/TLS-C negotiation failed on control channel
Depuis le fichier /var/log/proftpd/proftpd.log
mod_tls/2.7: error loading TLSRSACertificateFile '/etc/ssl/certs/proftpd.crt':
(1) error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
...
fatal: TLSRSACertificateFile: '/etc/ssl/certs/proftpd.crt' does not exist or does not contain a certificate on line 27 of '/etc/proftpd/tls.conf' 
Résolu :
Enlever la ligne TLS depuis le fichier de configuration.
Sinon, il faut configurer correctement TLS pour ProFTPd.

Quelques erreurs rencontrées et non résolues

Unable to bind to local socket: Address already in use

# Erreur connue sur la version de proftpd 1.3.6-6 :
Depuis syslog :
mod_ctrls/0.9.5: error: unable to bind to local socket: Address already in use
Ou encore avec :
sudo proftpd --configtest
Checking syntax of configuration file
mod_ctrls/0.9.5: error: unable to bind to local socket: Address already in use
processing configuration directory '/etc/proftpd/conf.d/'
Syntax check complete.
Cela signifie généralement qu'un autre processus, soit inetd, xinetd ou un autre serveur ftp autonome, utilise déjà le port ftp.

Impossible de lire depuis le socket : ECONNRESET

# Erreur connue sur la version de proftpd 1.3.6-6 :
# Cette erreur est rencontrée lorsque je tente de me connecter depuis la connexion internet de mon téléphone portable.
# Erreur rencontrée depuis FileZilla :
Statut :	Connexion à 139.99.173.195:21...
Statut :	Connexion établie, attente du message d'accueil...
Réponse :	220 ProFTPD Server (Debian) [::ffff:139.99.173.195]
Commande :	AUTH TLS
Réponse :	502 AUTH TLS exécuté avec succès
Commande :	AUTH SSL
Erreur :	Impossible de lire depuis le socket : ECONNRESET - Connexion réinitialisée par un pair
Erreur :	Impossible d'établir une connexion au serveur
# Erreur rencontrée depuis les logs :
2020-02-26 16:18:10,383 mod_tls/2.7[6537]: TLS/TLS-C requested, starting TLS handshake
2020-02-26 16:18:10,753 mod_tls/2.7[6537]: unable to accept TLS connection: system call error: [104] Connexion ré-initialisée par le correspondant
2020-02-26 16:18:10,753 mod_tls/2.7[6537]: TLS/TLS-C negotiation failed on control channel
# Cette erreur m'a relancé sur l'erreur précédente :
sudo proftpd --configtest
Checking syntax of configuration file
proftpd[16691]: mod_ctrls/0.9.5: error: unable to bind to local socket: Address already in use
# Le dossier suivant est censé contenir le fichier proftpd.sock d'après la configuration de ProFTPd depuis le fichier de conf :
/var/run/proftpd/
# Il est vide actuellement lorsque je le consulte.
# Un fichier proftpd.sock est déjà existant dans le répertoire /run/
# Un fichier proftpd.sock est déjà existant dans le répertoire /run/proftpd/
# Je tente d'afficher la liste des modules de ProFTPd :
sudo ftpdctl lsmod
ftpdctl: error contacting server using '/run/proftpd.sock': Connection refused
# Je tente de tracer la commande pour avoir plus de renseignements.
sudo apt install strace
strace -e open,unlink,bind,close /usr/sbin/proftpd --configtest
# Retour de la commande :
close(1022)                             = -1 EBADF (Mauvais descripteur de fichier)
close(1023)                             = -1 EBADF (Mauvais descripteur de fichier)
close(-1)                               = -1 EBADF (Mauvais descripteur de fichier)
Checking syntax of configuration file
close(-1)                               = -1 EBADF (Mauvais descripteur de fichier)
close(3)                                = 0
...
close(4)                                = 0
bind(4, {sa_family=AF_UNIX, sun_path="/run/test.sock"}, 110) = -1 EACCES (Permission non accordée)
close(4)                                = 0
unlink("/run/test.sock")                = -1 ENOENT (Aucun fichier ou dossier de ce type)
bind(4, {sa_family=AF_UNIX, sun_path="/run/proftpd.sock"}, 110) = -1 EADDRINUSE (Adresse déjà utilisée)
close(4)                                = 0
2020-02-26 22:51:48,094 vps178370 proftpd[22647]: mod_ctrls/0.9.5: error: unable to bind to local socket: Address already in use
close(4)                                = 0
close(6)                                = 0
...
close(5)                                = 0
2020-02-26 22:51:48,231 vps178370 proftpd[22647]: mod_ctrls/0.9.5: unable to open ControlsLog '/var/log/proftpd/controls.log': Permission non accordée
2020-02-26 22:51:48,231 vps178370 proftpd[22647]: fatal: ControlsLog: unable to open '/var/log/proftpd/controls.log': Aucun fichier ou dossier de ce type on line 126 of '/etc/proftpd/proftpd.conf'
+++ exited with 1 +++
Issue ouverte sur Github : https://github.com/proftpd/proftpd/issues/914

Tentative de résolution

# Changer les droits d'accès sur les fichiers de logs et le / les sockets, en utilisant l'utilisateur et le groupe mentionné dans la configuration de ProFTPd :
cd /var/log/
sudo chown -R proftpd:nogroup proftpd/
# Même chose pour le dossier proftpd dans /var/run
cd /var/run/
sudo chown -R proftpd:nogroup proftpd/
# Le fichier socket n'existe pas dans ce dossier.
# Redémarrer :
sudo service proftpd restart
# Plutôt que d'utiliser le groupe nogroup, utiliser ou créer un groupe ftp serait plus adapté.
Source : https://www.vivaolinux.com.br/topico/ProFTPd/AJuda-pra-inciante


# Inclure les modules DSO ?
Include /etc/proftpd/modules.conf


# Créer soit même le socket manquant avec socat ???
socat proftpd.socket ???
Source : https://manpages.debian.org/stretch/socat/socat.1.en.html


### I faced the same issue when I closed the server program with client program still running.
### This put the socket into TIME_WAIT state.
### Here's an elaborate discussion of the problem : How to forcibly close a socket in TIME_WAIT ?
Source : http://serverfault.com/questions/329845/how-to-forcibly-close-a-socket-in-time-wait
+
Try using netstat to see which ports are open and then use an available port.
+
Also check if you are binding to the right ip address (I am assuming it would be localhost)
# Le groupe ( et le fichier .sock ) pourraient ne pas avoir les bons droits. ( Le fichier .sock n'existe tout de même pas et n'est pas recréé. )
cd /var/run
sudo chmod -R ug+rw proftpd/
https://forums.unraid.net/topic/24356-proftpd-plugin-for-unraid-v670/page/15/
https://talk.plesk.com/threads/latest-update-broke-ftp.355093/
https://sysadmins.ru/topic497783.html
https://web.nettworks.org/repo/browse/~raw,r=67890/eisfair/trunk/netservices/proftpd/bin_doc/usr/share/doc/proftpd/changes.txt
https://www.google.com/search?q=proftpd+mod_ctrls+error:+unable+to+bind+to+local+socket:+Address+already+in+use&ei=QARXXqT6HKmGjLsPhp-0-AU&start=40&sa=N&filter=0&ved=2ahUKEwikmoOltPDnAhUpA2MBHYYPDV84HhDy0wN6BAgLED0&biw=1920&bih=930
Vérifier le nombre de services sur le port 21
sudo netstat -ntpl | grep 21
tcp6       0      0 :::21       :::*        LISTEN
sudo netstat -tulpn
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      11324/mysqld
tcp        0      0 127.0.0.1:46671         0.0.0.0:*               LISTEN      6535/Passenger AppP
tcp        0      0 127.0.0.1:42129         0.0.0.0:*               LISTEN      9247/Passenger AppP
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      436/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1111/exim4
tcp        0      0 127.0.0.1:39645         0.0.0.0:*               LISTEN      14590/Passenger App
tcp        0      0 127.0.0.1:37599         0.0.0.0:*               LISTEN      28745/Passenger App
tcp6       0      0 :::80                   :::*                    LISTEN      6359/apache2
tcp6       0      0 :::21                   :::*                    LISTEN      28501/proftpd: (acc
tcp6       0      0 :::22                   :::*                    LISTEN      436/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1111/exim4
tcp6       0      0 :::443                  :::*                    LISTEN      6359/apache2
udp        0      0 0.0.0.0:68              0.0.0.0:*                           367/dhclient
Installer une version plus récente de ProFTPD
# Ce problème de socket est un bogue connu de la version 1.3.6.
# Installer la version 1.3.6b ou supérieure pour résoudre ce problème.
wget -c -O ~/proftpd-basic_1.3.6-4+deb10u5_amd64.deb http://ftp.fr.debian.org/debian/pool/main/p/proftpd-dfsg/proftpd-basic_1.3.6-4+deb10u5_amd64.deb
sudo dpkg -i proftpd-basic_1.3.6-4+deb10u5_amd64.deb
# L'installation via le paquet .deb ne sera pas possible, du fait d'un problème de dépendances :
Le paquet libcrypt1 n'est pas installé.
sudo apt install libcrypt1
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Aucune version du paquet libcrypt1 n'est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
ou qu'il n'est disponible que sur une autre source

E: Le paquet « libcrypt1 » n'a pas de version susceptible d'être installée

Politique de sécurité pour minimiser les attaques contre proFTPd

Changer le port par défaut du serveur FTP.
Configurer les jails de Fail2ban.

Des options complémentaires sont proposées avec des plugins

A suivre.

PureFTPd

PureFTPd se veut être sécurisé avant tout.
Il est simple à configurer et même si il est moins connu, on trouve pas mal de ressources le concernant depuis un moteur de recherche.
Le tutoriel Debian : https:// coagul. org/drupal/publication/installation-et-configuration-serveur-ftp-pure-ftpd-sous-debian
Le tutoriel Debian : https://diypiandco.com/2015/05/18/installer-un-serveur-ftp-sur-debian/
Le tutoriel Fedora : https://doc.fedora-fr.org/wiki/PureFTPD_:_Installation_et_configuration
Le tutoriel Ubuntu : https://doc.ubuntu-fr.org/pure-ftp

vsFTPd

vsftpd signifie : Very Security FTP Daemon.
Il est utilisé par de gros sites tel que ftp.debian.org.
Comme son nom l’indique, c’est un serveur très sécurisé mais également très léger.
404.png Fixme.png VsFTPd installation et configuration : https://jeanphi.net/blog/2014/08/vsftpd-installation-et-configuration
https://wiki.debian.org/fr/vsftpd

vsftpd - Se protéger des attaques Brute Force avec TCP Wrapper

www.dsfc.net/infrastructure/securite/vsftpd-se-proteger-des-attaques-en-force-brute-avec-tcp-wrapper/

Installer un client FTP

Installer un client FTP.

Utiliser un serveur FTP en ligne de commande

Comment utiliser le FTP en ligne de commande : https://quick-tutoriel.com/comment-utiliser-le-ftp-en-ligne-de-commande/

Bibliographie

Ok.png Code alertes SSL/TLS sur le protocole : https://blogs.msdn.microsoft.com/kaushal/2012/10/05/ssltls-alert-protocol-the-alert-codes/

ProFTPd

Ok.png Installer un serveur FTP pour plusieurs utilisateurs avec proftpd : https://jesuisadmin.fr/installer-serveur-ftp-plusieurs-utilisateurs-proftpd/
Ok.png Faille de sécurité dans ProFTPd : https://www.infobidouille.com/faille-de-securite-dans-proftpd/#comment-4585
Ok-ko.png Comment installer un serveur ftp sécurisé sous debian squeeze : https://memo-linux.com/comment-installer-un-serveur-ftp-securise-sous-debian-squeeze/
Ok-ko.png Installer et configurer un serveur ProFTPd pour Calculate Linux ou CentOS : https://www.linuxtricks.fr/wiki/ftp-installer-et-configurer-un-serveur-proftpd
Ok-ko.png How To Configure ProFTPd To Use SFTP Instead of FTP : https://www.digitalocean.com/community/tutorials/how-to-configure-proftpd-to-use-sftp-instead-of-ftp
Ok-ko.png How to install ProFTPd with TLS support on Ubuntu 16.04 : https://www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/
Ok-ko.png https://www.ionos.fr/digitalguide/serveur/configuration/configurer-un-serveur-ftp-sous-debian-avec-proftpd/
Ok-ko.png https://www.informatiweb-pro.net/admin-systeme/linux/6--debian-ubuntu-installer-un-serveur-ftp.html
Ok-ko.png https://websiteforstudents.com/configure-proftpd-use-ssltls-certificates-ubuntu-17-04-17-10/
Ok-ko.png ProFTPD: Logins and Authentication : http://www.proftpd.org/docs/howto/Authentication.html
Ok-ko.png Exemple de configuration ProFTPd : http://www.proftpd.org/docs/example-conf.html
Ok-ko.png https://fr.wikibooks.org/wiki/Administration_r%C3%A9seau_sous_Linux/ProFTPD
Ok-ko.png https://www.alsacreations.com/tuto/lire/617-Serveur-FTP-Proftpd.html
Ok-ko.png https://linoxide.com/debian/install-setup-proftpd-debian-9-stretch/
Ok-ko.png Serveur FTP : PROFTPD : https://doc.ubuntu-fr.org/proftpd
Ok-ko.png Documentation ProFTPd : http://www.proftpd.org/docs/
Ok-ko.png http://www.proftpd.org/docs/howto/Limit.html
Ok-ko.png http://www.linuxpedia.fr/doku.php/proftpd
Ko.png https://wiki.csnu.org/index.php/Installation_de_configuration_de_ProFTPd#G.C3.A9n.C3.A9ration_du_certificat_ssl
Ko.png https://www.noobunbox.net/serveur/auto-hebergement/configurer-et-securiser-un-serveur-ftp
Ko.png Créer un certificat SSL : http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/index.html
Ko.png https://dev.pierre-galvez.fr/installer-un-serveur-ftp-proftpd-securise-sur-debian/
Ko.png https://www.barrekevin.com/2018/05/23/installation-serveur-ftp-proftpd-ssl/
Ko.png https://lea-linux.org/documentations/Reseau-partfic-proftpd
Ko.png http://www.proftpd.org/docs/howto/TLS.html
Ko.png https://en.wikipedia.org/wiki/ProFTPD

Veille

Ok-ko.png Source : https://www.google.fr/search?client=opera&q=monter+un+ftp+dans+le+fstab&sourceid=opera&ie=UTF-8&oe=UTF-8
Ok-ko.png Monter du FTP dans le système de fichier : https://www.freenux.fr/monter-du-ftp-dans-le-systeme-de-fichier/
Ok-ko.png Source : http://chrtophe.developpez.com/tutoriels/acces-serveur-distant/

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Vision du Web.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de VisionDuWeb vous permet de poser une question.
Utiliser la recherche interne du site pour chercher dans tout le contenu.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows en lisant la page dédié à la sécurité.
Améliorer le contenu des pages avec vos propositions depuis l'onglet discussion.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.