Ftp

From SME Server
Revision as of 05:19, 24 January 2023 by Unnilennium (talk | contribs) (→‎TODO)
Jump to navigation Jump to search
Warning.png Work in Progress:
This page is a Work in Progress. The contents off this page may be in flux, please have a look at this page history the to see list of changes.


SME Server offers a ftp server, which is Proftpd. If enabled it allows you to access to the Pirmary ibay files folder with anonymous access, and to any content your user is allowed to, if authenticated, inside /home/e-smith/files.

Prior to SME 10 ftp was using cleat text communication (FTP), allowing one to listen to your password and files exchanged on the network. Now TLS is enforced by default (FTPs), and it is suggested to keep it enabled.

While you might be used to the traditional port 21 for file transfer protocol (FTP), this page is here to help you having a steady access to your ftp server, by understanding it, and enabling the extra needed ports.

Your server is using

Do not confuse sFTP, which is part of ssh protocol and uses port 22, with FTPs which is the regular ftp protocol over port 21 using a layer of SSL/TLS encryption.

FTP connection modes : active versus passive

SME by default offers both active and passive mode when you are on LAN. However, as soon as you try to access from a remote location you will hist some difficulties depending on the situation.

By default for passive connection Proftpd will use ports from 1024 and up, which means that you must forward all ports 1024-65535 from the NAT to the FTP server! And you have to allow many (possibly) dangerous ports in your fire-walling rules! Not a good situation.

the modes

active

From the server-side firewall's standpoint, to support active mode FTP the following communication channels need to be opened (http://slacksite.com/other/ftp.html):

  • FTP server's port 21 from anywhere (Client initiates connection)
  • FTP server's port 21 to ports > 1024 (Server responds to client's control port)
  • FTP server's port 20 to ports > 1024 (Server initiates data connection to client's data port)
  • FTP server's port 20 from ports > 1024 (Client sends ACKs to server's data port)
passive

From the server-side firewall's standpoint, to support passive mode FTP the following communication channels need to be opened (http://slacksite.com/other/ftp.html):

  • FTP server's port 21 from anywhere (Client initiates connection)
  • FTP server's port 21 to ports > 1024 (Server responds to client's control port)
  • FTP server's ports > 1024 from anywhere (Client initiates data connection to random port specified by server)
  • FTP server's ports > 1024 to remote ports > 1024 (Server sends ACKs (and data) to client's data port)

examples

SME is server-gateway connected to Internet - Client is remote behind a NAT

Active mode will not work because the NAT will mostly hide the client port.

Passive mode will need to use the PassivePorts directive in your proftpd.conf to control what ports proftpd will use for its passive data transfers, and you will need to open those port in your SME firewall.

SME is server-gateway behind a firewall / NAT to Internet - Client is remote behind a NAT

Active mode will not work because the NAT will mostly hide the client port.

Passive mode will need to use the PassivePorts directive in your proftpd.conf to control what ports proftpd will use for its passive data transfers, and you will need to open those port in your SME firewall and in your firewall between you SME and Internet. You will also need a template custom to add MasqueradeAddress (http://www.proftpd.org/docs/modules/mod_core.html#MasqueradeAddress).

SME is server-gateway connected to Internet - Client is remote directly connected to the Internet

Active mode will not work because the NAT will mostly hide the client port.

Passive mode will need to use the PassivePorts directive in your proftpd.conf to control what ports proftpd will use for its passive data transfers, and you will need to open those port in your SME firewall.

SSL mode: Explicit SSL versus Implicit SSL

SME 10 and above uses explicit SSL mode for FTPs over port 21 only and does not need port 990. The client must explicitly request for SSL/TLS to be able to go on.

FTPS (FTP over TLS) is served up in two incompatible modes. If using explicit FTPS, the client connects to the normal FTP port and explicitly switches into secure (TLS) mode with "AUTH TLS", whereas implicit FTPS is an older style service that assumes TLS mode right from the start of the connection (and normally listens on TCP port 990, rather than 21). In a FileZilla client this means prefixing the host with "FTPES://" to connect an "explicit" FTPS server, or "FTPS://" for the legacy "implicit" server (for which you will likely also need to set the port to 990).

FTP configuration options in SME

configuration db
key Property default
ftp ChrootDir
TLSEnable on
TLSRequired on
TLSVerifyClient off
LoginAccess private
DisableAnonymous no
account db for ibay type
Property default
PublicAccess none
DisableAnonymous no

TODO

Sources