Is there any inexpensive (preferably free) software that will let me expose an old insecure FTP server as if it were a secure FTPS server? Given that the protocol is FTP, it's a little more tricky than HTTP because new FTP uses multiple ports and commands had to be added to switch from FTP to FTPS. This would seem to be something that would have broad interest, but after 3 hours on google, I've been unable to find any such software.

In my case, I can't just use an off-the-shelf FTPS server because the FTP server I'm using doesn't store the files locally--it's just a virtual FTP server that presents an FTP view of yet another backend service.

Note that by FTPS I mean FTP over SSL (RFC 4217), not SFTP (which is a completely different protocol).

  • Why not just use an FTPS server as your front end with either the FTP server or the service that it uses as the back end storage? Feb 7, 2017 at 5:10
  • @SteveBarnes that's what I'm looking for. All the ones I've seen store the files directly on disk--you can't give them a different protocol (other than raw disk) to use on the backend.
    – James
    Feb 7, 2017 at 13:12

3 Answers 3


You might try the mod_proxy module for ProFTPD; it supports forward and reverse FTP proxying, with FTPS support on frontend and/or backend.

Full disclosure: I'm the author of ProFTPD and mod_proxy.

Hope this helps!


You can use python filesystem to provide a back-end to your FTP server from Twisted and have that provide an outside world facing SFTP &/or FTPS service.

  • So I just need to write a file storage and retrieval system in Python that uses my current FTP server to implement the virtual storage?
    – James
    Feb 7, 2017 at 22:39
  • @James - not write, create an instance of, the python filesystem has FTP file system in it. You may have to do some tweaks to the interface to twisted - I am not sure how it expects its file system to look. Feb 8, 2017 at 7:12

This is no real answer to your question, more an advice.

I would move away from ftp to http.

The ftp protocol has one big advantage: There are several tools for automated uploading.

Since I could not find a generic http upload tool, I wrote one: https://pypi.python.org/pypi/tbzuploader/

This is the client. The server part needs to implemented by you. The API is dead simple. Http status 201 means "successful created" all other status codes are errors.

The tbzupload client moves local files to a "done" directory after successful upload.

  • I already have an upload system that uses HTTPS. The FTP server is simply a bridge to the HTTPS we already have. I recommend that all my customers use HTTPS. Unfortunately, they're the ones paying the bills, and fixing all of their respective workflows to use HTTPS instead of FTP isn't really an option.
    – James
    Nov 20, 2017 at 13:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.