# Administration réseau sous Linux/ProFTPD

* Configuration réseau
* NFS
* Samba
* Apache
* ProFTPD
* DHCP
* Netfilter
* TCP Wrapper
* Tcpdump
* SSH
* Routage
* TP VDN
* TP Configuration réseau
* TP NFS
* TP Samba
* TP Apache
* TP FTP
* TP TCP Wrapper
* TP Tcpdump
* TP SSH
* TP DHCP
* TP Global
* TP Netfilter
* TP Licence - Configuration réseau
* TP Licence - Deux sites web derrière un firewall
* TP Licence - Serveur intranet
* Configuration réseau
* NFS
* Samba
* Apache
* ProFTPD
* DHCP
* Netfilter
* TCP Wrapper
* Tcpdump
* SSH
* Routage
* TP VDN
* TP Configuration réseau
* TP NFS
* TP Samba
* TP Apache
* TP FTP
* TP TCP Wrapper
* TP Tcpdump
* TP SSH
* TP DHCP
* TP Global
* TP Netfilter
* TP Licence - Configuration réseau
* TP Licence - Deux sites web derrière un firewall
* TP Licence - Serveur intranet
[ Modifier le sommaire ]
FTP est un protocole d'échange de fichiers. Un serveur FTP met à disposition certains répertoires du disque, et gère une authentification par mot de passe. On se connecte à ce serveur avec un client FTP.
Ce document présente la configuration d'un serveur ProFTPd sous Debian. Sa gestion des droits d'accès et sa configuration sont faits pour ressembler à celles d'Apache.

## Installation et lancement

Sous Debian, ProFTPD est disponible dans un package et peut s'installer avec la commande
Il est aussi possible de le configurer pour ses propres besoins à partir des sources. Ceci permet de spécifier les modules à utiliser.
Il se lance automatiquement à l'installation et au démarrage du système.
Le script qui permet de le lancer, l'arrêter ou le relancer est /etc/init.d/proftpd.

## Fichier de configuration

Le principal fichier de configuration est /etc/proftpd/proftpd.conf.
Cette configuration n'affecte que le service qui écoute au port mentionné (21 par défaut). Pour affecter d'autres ports (ex : 22 pour SFTP), il est impossible de l'ajouter sur la ligne "Port 21" : voir plus bas.
L'ensemble des directives sont décrites ProFTPD. Les commandes principales sont les suivantes :
Pour que le serveur prenne en compte le nouveau fichier de configuration, il faut recharger le démon avec: /etc/init.d/proftpd restart
Exemple de fichier proftpd.conf:
Dans ce fichier on peut rajouter les lignes suivantes :

### Accès FTP anonyme

Pour faire un serveur FTP anonyme, il suffit de rajouter les lignes suivantes dans /etc/proftpd/proftpd.conf :

## Création d'un utilisateur FTP

Pour créer un utilisateur qui aura uniquement le droit de faire du FTP, on crée l'utilisateur en indiquant comme shell '/bin/false'.
Dans le cas d'un webmaster, l'idéal est de le faire directement atterrir dans le répertoire où est situé le site web qu'il administre. Pour faire ceci, on indique le répertoire contenant le site web comme étant le répertoire de travail de l'utilisateur.

## Cacher un dossier / fichier

Pour rendre un dossier invisible un fichier / dossier(ex Maildir), il faut ajouter au proftpd.conf :

## Clients FTP

Pour tester le serveur FTP, il convient à présent d'utiliser un logiciel client FTP, si possible depuis une autre machine pour tenir compte du pare-feu.
Il existe de très nombreux clients FTP. Certains sont en mode graphique comme FileZilla, d'autres en mode texte comme la commande shell ftp.

### Commande ftp

Le client le plus simple et le plus répandu est la commande ftp. Elle existe également sous Windows en ligne de commande.
Les commandes disponibles sont décrites dans la page de man. Les principales sont : help, open, ls, get, put...

### Navigateurs

Les navigateurs internet permettent également de se connecter à un serveur FTP, généralement en lecture seule.
* Pour une connexion anonyme, on pourra utiliser ftp://serveur/ ou ftp://serveur/chemin.
* Pour se connecter avec un mot de passe, on utilisera ftp://utilisateur:mot_de_passe@serveur/.

## SFTP

Généralement c'est le service SSH qui écoute le port 22. Par exemple sur Ubuntu, OpenSSH configure un SFTP avec la même clé publique que SSH, dans :
Il utilise ainsi la commande :
Pour tester s'il fonctionne depuis le serveur, il existe la commande :
Toutefois, ProFTPD peut également fournir ce service.

## FTPS

Pour activer le protocole FTPS :
Pour plus d'information sur les certificats .pem, voir Apache/HTTPS.

## Problèmes connus
### Logs

Proftpd stocke ses logs dans les fichiers suivants :
En voici un extrait :

### FileZilla ne voit pas la clé privée

Il faut la renommer en .ppk.

### 530 Authentification incorrecte

Si les logs renvoient SECURITY VIOLATION: root login attempted (en FTP avec un compte qui peut marcher en SFTP par ailleurs), c'est qu'il faut modifier /etc/proftpd/proftpd.conf avec RootLogin on.
Sinon, s'ils donnent Invalid shell il faut en définir un valide dans /etc/passwd.
Enfin, si un copié-collé du login et du mot de passe ne fonctionne pas, contacter l'administrateur du serveur pour recréer le compte.

### Aucune permission

Généralement ce phénomène s'accompagne du message "425 Can't open data connection for transfer". Il peut être résolu en cochant le mode passif dans le troisième onglet du site.

### clé de l'hôte inconnue ou key fingerprint is xxx. Are you sure you want to continue connecting (yes/no)?

En SFTP, il s'agit d'un avertissement sur la clé de cryptage qui peut survenir avec ProFTPD ou OpenSSH. Il peut planter certains scripts ou logiciels de transfert comme Webdrive, qui s'arrêtent sans l'afficher. Mais avec FileZilla il suffit de l'accepter une fois pour ne plus le revoir.

### EAI_NODATA - Aucune adresse associée à ce nom de nœud

Problème de DNS, ou bien /etc/hosts.

### ECONNREFUSED - Connexion refusée par le serveur

Si telnet fonctionne, c'est sûrement le certificat SSL qui a expiré ou le pare-feu.
Sinon, si telnet ne fonctionne pas sans aucune règle iptables, mais passe sur le port 22, c'est peut-être la directive Port 21 de /etc/proftpd/proftpd.conf à refaire. Ou sinon, dans le client FileZilla, préciser le chiffrement pour ce site en "Connexion FTP simple (non sécurisé)".

### Handshake failed (40)

Se produit depuis 2016 sur FileZilla quand une connexion FTP (par TLS ou pas) tombe sur un certificat invalide. Mais avec CoreFTP cela fonctionne.

### Impossible d'établir une connexion au serveur

Voir ci-dessous : #Serveur introuvable.

### Refused user root for service proftpd

Cela peut se produire après l'installation ou une mise à jour. Si un tail /var/log/proftpd/proftpd.log renvoie USER root (Login failed): User in /etc/ftpusers, commenter l'utilisateur dans ce fichier de blacklist.

### Serveur introuvable

Il s’agit probablement d’une panne de DNS, il faut alors remplacer l'URL par l'IP.
Sinon, il s’agit peut-être d’une règle de pare-feu. Pour le vérifier, taper la commande telnet IP 21. Si c'est bloqué ou affiche "délai d’attente dépassé", ou "connexion refusée" il faut ouvrir le flux FTP du pare-feu client.
Sinon, il faut donc vérifier que le client FTP n’est pas configuré en SFTP (port 22 au lieu de 21) ou vice-versa.
Si un message d’erreur survient après une connexion "PASV" : il faut désactiver le mode passif. Par exemple dans Filezilla : Édition, Paramètres, FTP, décocher la case.
Sinon, il faut regarder les logs du serveur (ex : iptables).

## Références

* ↑ http://doc.ubuntu-fr.org/proftpd
* ↑ http://www.proftpd.org/docs/howto/ConfigFile.html
* ↑ http://www.proftpd.org/docs/
* ↑ https://www.digitalocean.com/community/tutorials/how-to-configure-proftpd-to-use-sftp-instead-of-ftp