Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)

  • Status Nouveau
  • Percent Complete
    0%
  • Task Type Anomalie
  • Category Services locaux
  • Assigned To No-one
  • Operating System Tous
  • Severity High
  • Priority Very Low
  • Reported Version 4.7.8
  • Due in Version Undecided
  • Due Date Undecided
  • Votes 2
  • Private

FS#38608 - FTPES Non Fonctionnel

Bonjour,

J’ai configuré le FTPES sur Freebox OS, mais je n’arrive à connecter aucun client dessus.
Le FTP standard fonctionne bien en local toutefois.
Je teste principalement sous iOS (16.6) avec les clients ci-dessous:
- Infuse 7
- Owlfiles
- FTP Client Lite
Tous prennent en charge le FTP explicite sur TLS mais aucun ne semble réussir à se connecter par ce biais, mais fonctionnent en FTP simple.
Ai-je louper quelque chose?
A dispo pour tout complément d’informations

Bonjour

Pour moi, depuis résolution de :

https://dev.freebox.fr/bugs/task/22430

Le FTPES est fonctionnel.

Test à l'instant :

$ pass='MyStrongPasswordDefinedInFreeboxOS'
$ curl -svvv --cacert ./14rv-rootCA-RSA4096.pem --tlsv1.3 --ftp-ssl-control ftp://freebox:$pass@82.xx.xx.xx7:21 

*   Trying 82.xx.xx.xx7:21...
* Connected to 82.xx.xx.xx7 (82.xx.xx.xx7) port 21 (#0)
< 220 Welcome to Freebox FTP Server.
> AUTH SSL
< 504 Unknown AUTH type.
> AUTH TLS
< 234 Proceed with negotiation.
* successfully set certificate verify locations:
*  CAfile: ./14rv-rootCA-RSA4096.pem
*  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [210 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [6 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [3906 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [520 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
*  subject: C=FR; ST=PARIS; O=14RV; OU=14RV-NET; CN=*.fbx.lan; emailAddress=nba@fbx.lan
*  start date: Dec 19 08:20:33 2022 GMT
*  expire date: Dec 18 08:20:33 2024 GMT
*  subjectAltName: host "82.xx.xx.xx7" matched cert's IP address!
*  issuer: C=FR; ST=PARIS; O=14RV; OU=14RV-NET; CN=14rv.lan; emailAddress=nba@14rv.lan
*  SSL certificate verify ok.
} [5 bytes data]
> USER freebox
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [217 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [217 bytes data]
* old SSL session ID is stale, removing
{ [5 bytes data]
< 331 User name okay, need password.
} [5 bytes data]
> PASS Whoh3jru
{ [5 bytes data]
< 230 User logged in, proceed.
} [5 bytes data]
> PBSZ 0
{ [5 bytes data]
< 200 Command Okay.
} [5 bytes data]
> PROT C
{ [5 bytes data]
< 200 Command Okay.
} [5 bytes data]
> PWD
{ [5 bytes data]
< 257 "/"
* Entry path is '/'
* Request has same path as previous transfer
} [5 bytes data]
> EPSV
* Connect data stream passively
* ftp_perform ends with SECONDARY: 0
{ [5 bytes data]
< 229 Entering extended passive mode (|||60000|)
*   Trying 82.xx.xx.xx7:60000...
* Connecting to 82.xx.xx.xx7 (82.xx.xx.xx7) port 60000
* Connected to 82.xx.xx.xx7 (82.xx.xx.xx7) port 21 (#0)
} [5 bytes data]
> TYPE A
{ [5 bytes data]
< 200 Command Okay.
} [5 bytes data]
> LIST
{ [5 bytes data]
< 150 File Status OK.
* Maxdownload = -1
{ [184 bytes data]
* Remembering we are in dir ""
{ [5 bytes data]
< 226 Closing data connection.
* Connection #0 to host 82.xx.xx.xx7 left intact
drwxr-xr-x   4  freebox  freebox       80 Jul 21 16:55 ..
drwxr-xr-x  22  freebox  freebox     4096 Aug 28 11:43 FBX24T
drwx------  12  freebox  freebox     4096 Feb 27  2019 1000G

Sur votre mac, ouvrez un terminal et lancez la même commande que moi :

$ pass='MyStrongFTPESPasswordDefinedInFreeboxOS'
$ curl -svvv --cacert ./14rv-rootCA-RSA4096.pem --tlsv1.3 --ftp-ssl-control ftp://freebox:$pass@82.xx.xx.xx7:21 

Si vous n'avez pas votre propre PKI ou vos propres certificats ou un certificat signé publiquement par une CA publique, remplacez dans la commande :

--cacert ./14rv-rootCA-RSA4096.pem

par

--insecure

Sinon (=si vous utilisez vos propres certificats), mettez le chemin et le nom du certificat RootCA qui a signé le certificat de votre freebox

Et bien sure, mettez à jour la commande en fonction de votre nom de domaine, IP, mot de passe, etc…

En fin de retour de la commande, vous devez voir les répertoires de montage des disques de votre Freebox (le point de montage de base freebox c est : "Disque dur")

Chez moi (je n'utilise pas le montage standard "Disque dur" de Free) ça donne ça:

drwxr-xr-x   4  freebox  freebox       80 Jul 21 16:55 ..
drwxr-xr-x  22  freebox  freebox     4096 Aug 28 11:43 FBX24T
drwx------  12  freebox  freebox     4096 Feb 27  2019 1000G

Si vous avez un doute ou ne comprenez pas les infos de debug renvoyés dans le terminal par curl, postez l'output de la commande ici, on vous l'expliquera.

Si le test demandé ici est OK (= vous voyez les disques de la freebox), alors pas de bug et tout fonctionne bien côté Freebox.

Si le test est KO, postez l'output de votre terminal (en anonymisant les données comme je l'ai fait ci dessus), et je vous donnerai d'autres tests à faire avec gnutls-cli ou openssl s_client pour continuer le debug

Bien cordialement
nbanba

Bonjour,

Merci pour cette explication très complète.
Toutefois, je suis sous iOS et un simple utilisateur de clients tiers.
Je ne fais que constater que tous les clients que j'ai pu tester et supportant cette techno ne semblent pas interagir avec le freebox serveur.
Je peux tester sur mon machine sous windows. Les commandes sont-elles les mêmes sous powershell?

Bonjour

Je crois que le programme CURL utilisé dans l'exemple existe aussi pour windows.

Si c'est bien le cas, tant que vous avez le programme CURL installé dans le path (et que vous pouvez le lancer depuis la ligne de commande powershell), oui les commandes sont les mêmes.

cordialement
nbanba

Je fais des tests en –insecure

le premier test j'ai obtenu direct un "Failed Reading" dans la console.
J'ai redemarré la box et là effectivement j'ai pu me connecter et voir les 2 disques que ce soit en wifi ou hors réseau local.

Du coup j'ai tenté les clients iOS:
- Infuse plante tout le temps… - OwlFiles, j'ai 2 comportements:
* en wifi: je vois les 2 disques à la connexion, mais dés que j'essaie de naviguer dans l'arborescence, j'ai aléatoirement mais très rapidement le message "Echec de connexion avec l'erreur: server did not report OK, got 426"
* en réseau cellulaire (hors réseau local): j'ai le message d'erreur "Echec de connexion avec l'erreur: Failed to do PORT"

Bonjour

Je n'ai pas de machines Windows (trop nul) ni de machines Apple (trop cher).
Sur mon système open source en version stable, je lance FileZilla et je met l'IP + login + password , je clic sur connect et du premier coup ça fonctionne !

Je n'ai même pas eu à mettre le port ni à préciser la methode (AUTH TLS avant LOGIN).

Il me semble qu'il doit être assez facile de faire fonctionner FileZilla sur votre ordinateur Apple, on doit pouvoir le trouver compilé pour les systèmes Apple ici

https://https://dl2.cdn.filezilla-project.org/client/FileZilla_3.65.0_macosx-x86.app.tar.bz2?h=3Ct_gVnkpDbCGg64JnIsDw&x=1693389428

Et si ça ne fonctionne pas, il est toujours possible (et facile) de build filezilla from source sur votre ordi Apple avec XCODE :

Le code est ici:

svn co https://svn.filezilla-project.org/svn/FileZilla3/trunk filezilla

la doc pour build Filezilla pour machine Apple avec XCODE est ici :

https://https://wiki.filezilla-project.org/Compiling_FileZilla_3_under_macOS

NB 1: FileZilla est une référence sur le "marché des clients FTP"

NB 2: Pour moi, il n'y a pas de BUG concernant le FTPES.

Cordialement
nbanba

Je ne suis pas développeur iOS et ne dispose pas de XCode pour compiler un pseudo client (j’imagine que si le portage avait été si simple le client serait disponible dans l’AppStore).
Le fait d’avoir dû redémarrer ma box pour que cela fonctionne depuis une console Windows montre à minima qu’il y a quelque chose instable côté serveur.
Le fait qu’aucun client iOS ne fonctionne tout court, montre qu’il y a quelque chose à creuser et ne permet pas d’être aussi catégorique sur le fait qu’aucun Bug n’existe.

Cordialement

Bonjour

Ne travaillant ni pour Free ni pour le groupe Illiad et n'aillant aucun intérêt direct ou indirect dans cette holding telecom française, et en temps que simple utilisateur de leurs services j'essaye juste de vous aider …

Je ne partage pas vos remarques, FileZilla est une références sur le marché des clients FTP, presque "LA" références…, bien que le marché des clients FTP soit vieillissant

Sur une installation standard de macos, il n'est pas nécessaire de compiler FileZilla.

FileZilla est disponible sous macOS déjà compilé ici:

https://dl4.cdn.filezilla-project.org/client/FileZilla_3.65.0_macosx-x86.app.tar.bz2?h=67Wy4DMRdoBgg7lAQTfklQ&x=1693953688

Vous décompressez l archive et vous lancez le programme d'installation présent dans l'archive

Dans mon précédent poste si je vous ai indiqué les liens vers les procédures pour build FileZilla from source, c'est pour que vous puissiez l'installer en toute circonstances et pour que vous ayez la main sur toutes les options de FileZilla et notamment celles qui ne sont activables que lorsque l'on compile soi-même et qui peuvent être nécessaires dans des environnement non standards pour lesquels les options de compilation par défaut ne sont pas suffisante.

C'est également pour tracer un tableau plus complet des possibilités pour les autres utilisateurs de ce forum qui rencontreraient des soucis similaires ou se rapprochant du votre.

D'autre part, je ne sais pas si vous avez recherché sur le store, mais FileZilla semble exister déjà packagé, ici par exemple :

https://apps.apple.com/tn/app/filezilla-pro-ftp-and-cloud/id1298486723?l=fr&mt=12

Quelle est votre version d'iOS ?
Quelle est votre device ?
Quelle est sa configuration hardware ?

Dernier point: FileZilla est un client open source qui respecte assez proprement les RFC, donc si la connexion fonctionne avec FileZilla, il y a de très très fortes chances que côté serveurs FTP, les RFC soient correctement respectées et qu'il n'y ait pas de bugs.

Par contre, il faut également considérer en septembre 2023 que le protocole FTP et ses dérivés: FTPS, FTPES.. sont outdated et de moins en moins utilisés aujourd'hui (particulièrement FTPES qui est presque 1 protocole de niche) et on utilise plutôt SSH (SFTP) ou même S3 en https.

En conséquences, les éditeurs de logiciels et les développeurs ne maintiennent plus leurs softs ou de très loin …!
Il n'est donc pas surprenant que les 3 clients testés ne fonctionnent pas en FTPES ou ne fonctionnent avec ce protocole que sur des serveurs particuliers ou ayant une configuration particulière, ou encore plantent en cours d'utilisation.

D'ailleurs je suis plus à l'aise avec l'idée que ces 3 clients sont buggy plutôt que le serveur FTPES de la freebox

Pour conclure :
- ça fonctionne bas niveau avec CURL
- ça fonctionne avec FileZilla (IHM = GUI + Référence sur le marché du FTPxx)

Donc pour moi il n'y a pas de bugs côté freebox.

PS:
je reste très surpris que vous n'ayez pas réussi à installer FileZilla sur iOS depuis le store, soit vous avez une version spéciale ou maison d iOS : precisez la si c est le cas, soit vous êtes passer à côté dans le store.

Cordialement
nbanba

Je ne remets pas en question la pertinence de FileZilla sur les plateformes sur lesquelles il peut être présent. Il est effectivement sur mac appstore mais pas sous l'iOS appstore qui sont distincts (les apps iOS peuvent tourner sous macos potentiellement mais la réciproque est fausse).
Je suis sous iOS 16.6 sur iPhone 13, donc tout est très récent.
Concernant l'implémentation du FTPES par les clients que je cite, elle est relativement récente, car en l'occurence Infuse l'a mise en place en décembre 2022.
Le souci est que la freebox ne propose aucun autre moyen d'accès à distance des fichiers autre que le FTPES (passer par VPN puis FTP standard ne fonctionne pas pour mon cas).

J'entends bien que votre cas d'usage fonctionne, mais les cas sont variés et devraient tous fonctionner.

Il faudrait pour moi que quelqu'un chez free tente une connexion depuis un client iOS et debug la partie serveur afin de comprendre le blocage rencontré.

Bonjour

Pour les IPhones, je crois qu'ils y a en effet 1 limitation avec FileZilla qui est sous licence GNU GPL .
Je crois en effet me souvenir que les codes GPL ne sont pas autorisés à être publiés sur l iOS store (à vérifier)

Donc même si on le build, il y a de fortes chances qu'on ne puisse pas le poster sur le store

Désolé pour le mauvais conseil.

Par contre, il semble exister d'autres clients supportant le FTPS explicite ou implicite, dans votre cas ça vaudrait probablement la peine de tester :

FTP manager
Client FTP PRO
File browser
document by readdle (peut être)

Sinon pour votre iPhone 13 il y a toujours le bon vieux CURL qui fonctionne :

iCurlHTTP

Perso, j'évite au maximum les GUI (je trouve qu on comprends mieux ce que l on fait en CLI) et n utilise presque que l'excellent programme CURL, même pour les requêtes ldap…

Après si vous avez 1 freebox delta, je peux vous dire comment donner accès aux stockage de la box depuis internet (ou le lan) en SSH (SCP / SFTP)

Cordialement
nbanba

Bonsoir

J’ai testé les différents softs:
FTP Manager
En wifi: on voit la racine puis plantage dès qu’on essaie de naviguer « server did not report ok, got 426 »
En réseau cellulaire: erreur « Failed to do PORT ». Si je passe en passive mode j’ai le même message d’erreur qu’en wifi. En passant en TLS 1.2 au lieu de 1.3 je n’ai plus de souci et cela semble bien fonctionner !

FTP Client Lite:
En wifi : fonctionne!
En réseau cellulaire : erreur « server doesn’t seem to support active mode. Please try passive mode instead “. J’ai switche en passive et c’est passé !

FileBrowserGo
En wifi: erreur « Connect rejected »
En réseau cellulaire : erreur « Connect timed out »

Documents by readdle : ne gère pas le FTP

Je vais suggérer aux développeurs infuse d’ajouter ces paramètres de connexions voir si cela solutionne les soucis que je rencontre.
Merci pour votre aide

Bonjour

Super si ça vous a aidé !

Le souci semble être au niveau de l'implémentation TLS 1.3 , mais pour le coup je dirais plutôt côté client iOS que côté serveurs freebox :
la commande curl que je vous ai fourni force le TLS 1.3 et le debug posté précédemment montre que le handshake est ok puis la session également
Je n'ai pas re testé FileZilla, mais à l'occasion je regarderai le comportement du TLS 1.3 et 1.2
(Si il y a quelque chose d'intéressant je posterai ici)

Cordialement
nbanba

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing