FTP Site Over SSL In IIS

Adrian Jenkins
5 min readMay 11, 2022

--

In this article, we will create an FTP Site with Basic Authentication over SSL in IIS.

Refresher:

FTP: The File Transfer Protocol (FTP) is a standard network protocol used to transfer computer files between a client and server on a computer network. FTP is built on a client-server model architecture and uses separate control and data connections between the client and the server.

Authentication: Is the process of proving that you are who you say you are.

Authorization: Is the act of granting an authenticated party permission to do something. It specifies what data you’re allowed to access and what you can do with that data.

Explicit FTPS: FTP sites and clients use port 21 for the control channel, and the server and client will negotiate secondary ports for data channel connections. In a typical FTP request, an FTP client will connect to an FTP site over the control channel, and then the client can negotiate SSL/TLS with the server for either the control channel or the data channel.

Implicit FTPS: FTP sites and clients use port 21 for the control channel, and the server and client will negotiate secondary ports for data channel connections. In a typical FTP request, an FTP client will connect to an FTP site over the control channel, and then the client can negotiate SSL/TLS with the server for either the control channel or the data channel.

Our first goal is to create an FTP Site with Anonymous Authentication.

First you will need to install FTP Server, and the Extensibility if you do require it.

Go to your IIS Manager

Right click in “Sites” and “Add FTP Site…”

Give it a name and set the Physical path:

Add the IP and select “No SSL” for now.

This is what I have at that path:

It is not a good idea to use hostname in FTP protocol. If not used correctly, it can cause a lot of issues.

As for Authentication let us use “Anonymous” and for Authorization “Anonymous users”.

We will change this later on, but we need to make sure that the ftp site is working.

Open Command Prompt and enter as:

User: anonymous

Password: anonymous

Our basic FTP Site is working fine.

Now let us remove Anonymous Authentication and enable Basic authentication.

Before doing this, I will create “FTP_Users” group and add my account to that group. This is optional.

Go to FTP Authentication module and disabled Anonymous while enabling Basic.

Go to FTP Authorization Rules, remove the rule that allows anonymous users.

Add a new rule to allow “FTP_Users”

Test

It is now working with Basic Authentication.

Our next task is to enable FTPS functionality

Go to FTP SSL Settings

Select your certificate and the Policy. I will allow both SSL and non SSL connections. If you only want to allow SSL connections select the second option and if you want to customize it go with third option.

For testing purposes for SSL we need some software like WinSCP or FileZilla.

I will test both of them.

WinSCP

However this will give us an error:

This is because FTPS has two “modes”. We have explicit FTPS (ftpes://) and implicit FTPS (ftps://).

When we actually configured FTP Site and SSL settings, as we just did with no additional configuration, we are good to go with “ftpes://” but not with “ftps://”

Testing for Explicit FTPS (ftpes://)

Testing for Implicit FTPS (ftps://)

Create an ftp binding on port 990

FileZilla

“ftps://10.0.0.5” => Implicit FTPS

“ftpes://10.0.0.5” => Explicit FTPS

And with this, we configured our FTP Site with Basic Authentication over SSL. Our site is working with implicit and explicit SSL.

Conclusions:

  • The File Transfer Protocol (FTP) is a standard network protocol used to transfer computer files between a client and server on a computer network.
  • Authentication is the process of proving that you are who you say you are.
  • Authorization is the act of granting an authenticated party permission to do something.
  • FTPS has two forms: explicit FTPS (ftpes://) and implicit FTPS (ftps://).
  • Implicit FTPS requires TCP Port 990.

Resources

--

--