Какие порты открыть для ftp сервера
Перейти к содержимому

Какие порты открыть для ftp сервера

  • автор:

FTP порт — как «пробросить» и открыть доступ

Настройка FTP — несложный процесс, который имеет свои специфические особенности. Если вы сразу постараетесь во всем разобраться, то работа с сервером FTP со временем станет для вас одним наслаждением. Через такие сервера вы сможете скачивать музыку, фильмы, картинки и прочие файлы, а также содержать сайт с хостом, работающим через протокол передачи данных. Но для этого нужно хорошо понять, что к чему, а в особенности необходимо разобраться в том, что из себя представляет FTP порт, для чего он нужен и как его настроить. Именно об этом и пойдет речь в статье. Вы узнаете, какой порт стандартный, как изменить настройки по умолчанию для портов и разблокировать его в брандмауэре и роутере.

2011_08_02_174219_171

Что из себя представляет порт и зачем он нужен

Если разобраться, то все предельно просто. У операционной системы компьютера есть определенное ограниченное число портов. Они нужны для того, чтобы программы могли к ним подключаться через сеть. Это сделано для того, чтобы приложения не конфликтовали между собой во время попытки подсоединиться к сети. Порт — это лишь цифра транспортного протокола. Его можно сравнить с трассой. Если все программы запускать по одной и той же «трассе», то на ней быстро образуется пробка. Потому для каждого приложения должен быть выделен свой уникальный порт — то есть еще не занятое другими программами число.

Разработчики операционных систем уже давно используют такой метод распределения программ по пронумерованным протоколам и он хорошо себя зарекомендовал. Ведь существует более шести тысяч портов, чего с головой хватит для любого компьютера!

FTP — это протокол передачи данных. Он необходим для того, чтобы клиент и сервер могли быстро обмениваться различными файлами.

Такой протокол удобен для тех людей, которым неважен web-интерфейс хранилища, а которые ценят скорость загрузки и количество файлов, которые можно хранить на сервере. Нет лучшего способа обмена объемными данными, чем через протокол FTP. И работает этот протокол через канал TCP. А для того, чтобы подключиться к этому каналу, необходим определенный порт. То есть чтобы открыть сервер, клиент должен зайти на его порт, и уже через него проникнуть на хост. В этом и кроется вся суть портов для FTP.

Что такое активный и пассивный режим, и как они связаны с портами

Дело в том, что есть два варианта развития сценария взаимодействия клиента с сервером. Первый вариант — это когда программа назначает порт, по которому ей удобно пользоваться. То есть на сервере установлен определенный номер порта, и система с этим соглашается, освобождая его. А второй вариант — это когда операционная система сама подбирает для программы порт для выхода в сеть.

В FTP когда клиент пытается подключиться к серверу, активный режим проявляется в момент установки соединения для передачи данных. Если задан активный режим, то тогда клиент задает номер порта соединения, который должен открыть сервер. Получается, что клиент управляет ситуацией, а сервер подстраивается под него. А в пассивном режиме клиент выступает пассивно, то есть принимает от сервера сообщение с номером порта для соединения, и подключается по нему.

Но дело в том, что в протоколе FTP есть два типа соединения:

  1. Управляющее.
  2. Соединение для передачи данных.

Активность и пассивность клиента проявляется только во втором типе соединения. А первое необходимо для того, чтобы сервер и клиент могли общаться между собой. То есть чтобы сервер принимал команды от клиента, потому это соединение и называется управляющим. Такое соединение работает через стандартный порт, установленный по умолчанию.

Как настроить порты по умолчанию, чтобы FTP-сервер заработал

Многие, кто пытаются установить FTP-сервер в популярной операционной системе Windows, сталкиваются с проблемой закрытых портов. В результате, клиент не может открыть сервер, потому что тот недоступен для него — «трасса» перекрыта. Потому нужно уметь настраивать порты, и об этом далее пойдет речь в статье.

По умолчанию в FTP настроены 20 и 21 порты. Наибольшее значение имеет 21 порт, который необходим для того, чтобы вы могли открыть сервер и передавать ему команды — то есть он нужен для управляющего соединения. А вот 20 порт нужен в основном для активного режима. В любом случае вам необходимо освоить навык проброса портов, чтобы обойти стандартные блокировки системы и роутера.

Проблема в том, что далеко не все пользователи Windows решаются на затею создать у себя на компьютере FTP-сервер. Потому операционная система блокирует доступ инородных тел (удаленных компьютеров) на ПК через основные каналы транспортных протоколов. И, как правило, 21 и 20 порты также входят в список заблокированных для удаленных клиентов. А блокируют их со стороны компьютера — брандмауэр, и устройство-посредник для доступа к Интернету — роутер. Вам нужно научиться обходить эту двойную защиту, чтобы вы могли открывать не только 21 порт, но и другие, когда потребуется.

Настройка проброса портов 21 и 20 начинается с изменения конфигураций брандмауэра. Вам необходимо открыть «Панель управления» через «Пуск». Далее отыщите вкладку «Система и безопасность» и внутри нее найдите раздел «Брандмауэр Windows». Далее вам необходимо добраться к «Дополнительным параметрам брандмауэра» в левом боковом меню настроек. Брандмауэр работает посредством правил, потому вам нужно лишь создать новые стандарты для этой службы, чтобы она не мешала работе FTP-сервера. Для этого нажмите «Правила для входящих подключений» и кнопку «Создать правило». Ничего прописывать не придется — это не написание программы, так как в Windows все работает через интуитивно понятный интерфейс. Вам нужно будет указать тип правила «Для порта». Потом выбрать «Протокол TCP» и указать в форме «Определенные локальные порты» число 21. Далее разрешаете подключение через порт 21, определяете уровень доступа для клиентов, прописываете название правила и сохраняете введенные настройки.

Следующим шагом вам необходимо настроить правила для исходящих соединений. Ведь не только клиент будет загружать на сервере различные данные и отдавать команды, но и сервер неоднократно поделиться своими файлами и будет высылать данные удаленному компьютеру. Потому исходящие соединения вам также нужно одобрить. В целом, настройка правил для таких соединений ничем не отличается от выше описанной. Вам также нужно будет прописать порт 21 и везде активировать разрешение, которое по умолчанию заблокировано. Если вы используете активный режим, то можете в строке, куда нужно прописывать порт, указывать через запятую сразу две цифры: 21 и 20. Если понадобится на будущее, то можете в правиле прописать целый диапазон портов, для которых соединение будет разрешено — для этого пропишите цифры через дефис без пробелов.

Иногда настройки одного брандмауэра недостаточно. К стандартным службам подобного плана относится еще и фаерволл. Его настраивать еще проще, чем брандмауэр. Вам не придется добавлять новое правило, а нужно будет лишь отметить галочку возле FTP-сервер для входящих и исходящих соединение. Firewall сам определит порты, через которые работает ваш сервер, и даст добро на их открытие.

Куда сложнее обстоят дела с роутерами. Дело в том, что их сейчас большое множество. Потому открыть порты 21 и 20 через роутер каким-то универсальным способом не получится — у каждой марки и модели свои нюансы, в которых нужно разбираться. Если вы вообще никогда не влазили в настройки роутера, то лучше не спешите с этим. Почитайте на форумах, разберитесь в меню и функциях, и только затем пробуйте пробросить порт в роутере.

Зачастую блокировка порта связана с несколькими опциями, которые установлены в роутере. К примеру, это может быть не проставленная галочка возле опции UPnP. Данная опция необходима для того, чтобы программы автоматически пробрасывали порты через роутер и вас не тревожили. Как правило, если в роутере есть такая функция, то она активирована, но бывает всякое, и вполне может быть, что в вашем маршрутизаторе она отключена. Тогда вам осталось найти такой пункт настроек и поставить возле него одобрительную галочку для включения.

С другой стороны, порой порты нужно указывать в специальных пунктах настроек роутеров. Для этого вам нужно подключиться к роутеру через локальную сеть. Чтобы сделать это, посмотрите на нижней стороне маршрутизатора его IP-адрес, а затем введите его в адресную строку любого браузера. Перед вами откроется меню роутера, в котором нужно найти настройки подключения по локальной сети. В таких настройках, обычно, есть конфигурации семейств IP, которые могут подключаться к роутеру, а также порты, которые открыты для работы. Вам нужно указать диапазон портов, чтобы роутер их не блокировал. Не забудьте учесть диапазон, чтобы числа 20 и 21 вошли в него.

Обязательно ли использовать 21 порт

Люди, которые постоянно имеют дело с серверами и создают их, наслышаны о цифре 21. Для них она является знаковой, так как многие сервера и протоколы, не только FTP, используют 21 порт по умолчанию. И это плохо, если начать анализировать ситуацию. Ведь протокол передачи данных совсем не защищен от перехвата. В любой момент опытные хакеры могут напасть на ваш сервер и перехватить пароль и логин клиента. Затем они проникнут на сервер и украдут оттуда важные данные, либо спрячут в каталогах вредоносные программы и вирусы.

Чтобы хоть как-то повысить уровень безопасности использования протокола FTP, рекомендуется сменить в настройках стандартный порт, который нужен для подключения. Сделать это несложно, но у каждого сервера данная опция настраивается по-своему. Единственный нюанс заключается в том, что потом при подключении клиенту необходимо будет указывать новый номер порта вместо цифры 21. В этом и суть защиты — хакеры не будут знать порт, по которому нужно перехватывать данные, потому не сумеют их украсть.

What is FTP Port Number? [Default FTP Port]

Are you looking to understand the concept of FTP Port or Do you want to know the default FTP Port Number then this post will help you to understand it in brief.

List of content you will read in this article:

  • 1. What is FTP port? [Definition]
  • 2. Features of FTP
  • 3. What is an Anonymous FTP?
  • 4. What are FTP Clients?
  • 5. What is the active and passive mode?
  • 6. Changing FTP to use a different port number
  • 7. Solving problems with firewall
  • 8. Conclusion

FTP is the commonly used protocol for transferring data across the network. It supports transferring, uploading, and downloading used transfer files, such as text, pdf, media, etc. But it does not ensure security as it is ensured by SFTP protocol. Whenever you use the file transfer protocol (FTP), you must know what elements are involved and how they work for better understanding. One of the most critical elements is the FTP port. A correct port is important, as successful file transfer depends on the open port.

Ports establish the connection and initiate the transfer between the client and the server. Before everything, you must know what an FTP port is, why it is essential, its features, different FTP modes, configuring an FTP port, and other details.

What is FTP port? [Definition]

FTP stands for file transfer protocol, allowing users to exchange information between devices over the network. You require FTP software tools to establish the connection and initiate the transfer. Its transfers are done using a specific port only. Default FTP port connection use port number 21. Also, you can change this default setting and choose your choice of FTP port. But to make this change, you need administrator access.

When you start communicating using FTP, you will require two different ports.

  • When the user provides their credentials in the FTP client, it will establish an FTP connection and open the FTP control port of the FTP server (by default, this port is 21).
  • A second connection is made to the server by the client, which is a response of the FTP server toward the FTP client. This connection will occur via port 20. It is where the actual transfer of data occurs.

It is helpful for the devices to connect to remote devices. Ports are required so there is no conflict with other transfers within the network, eliminating the condition of network congestion. FTP protocol can handle bulk data transfer with great ease. This protocol works using the TCP channel. You will require a port number open to the server to connect to this channel. If you want to use the customized FTP port number, you can use only a limited number of ports for your operating system.

To understand how FTP port works and configure them, you must have a basic knowledge of FTP, its features, FTP clients, and servers. Let’s get started with it.

Features of FTP

FTP is an application layer protocol enabling quick data transfer. It comes with the following features.

Data representation

It supports data representations- ASCII (7-bit), EBCDIC (8-bit), and 8-binary data. By default, it uses ASCII files for file transfer. It encodes each character with 7-bit ASCII. The file is first transformed into the ASCII representation and then transformed by the receiver. For transferring the binary files, the default format is the image file. This file will be sent as a continuous byte of bits without encoding.

File organization and Data structures

You can transfer both structured and unstructured files using FTP.

An unstructured file is a string of bytes and is enl-marked by EOF (End of file). The data structure that corresponds to such a file is called file structure. A structured file contains a list of records delimited by EDR (End of Record). The data structure of such a file is called record structure. Another structured file contains pages having a page number and a page header. You can access these pages randomly or sequentially. The data structure is page structure.

Transmission modes

FTP uses three different transmission modes to transfer the files.

Stream mode

By default, FTP uses stream mode as data is transmitted as a stream of bytes. TCP breaks down the data into segments. It will not require EOF to specify the closing of the data. But, if the files are divided into records, it uses EOR (1-byte) and EOF (1-byte) characters.

Block mode

It delivers the data into blocks from FTP to TCP, with each block having a 3-byte header. The first byte is called the block descriptor, while the other two bytes define the block size in bytes.

Compressed mode

If the files are big, you can transfer them after compressing them. The run-length encoding uses the compression method. In the case of a text file, blank spaces are removed while compressing, and the null characters are compressed in the case of binary files.

Error control

As FTP uses TCP to transfer the files, there is no additional error recovery mechanism requirement.

Access control

FTP ensures access control by placing a proper login mechanism via username and password.

FTP operation

FTP works on client-server architecture and uses two TCP connections to complete the transfer. One connection is used for exchanging the control signals, and the other is for the actual data transfer.

Control Connection

It transfers the control signals between both devices. The control process on both ends uses this connection. This connection uses the FTP port number 21. This connection will remain connected throughout the FTP session. You can only transfer a single line of command at a time—both the control processes of the client and server use transfer the NVT syntax. The control processes use the Protocol interpreter that translates the local code into NVT syntax and vice versa.

Data Connection

It specifies the actual data transfer. The connection between the client and server’s data transfer process (DTP) is made. It uses the FTP port 20. Unlike the control connection, the data connection opens and closes after each transmission. The data transfer is done based on the control of the sent commands. While transferring the file, you need to specify the type of file you are sending.

While file transfer, one of the below-mentioned things can happen.

  • Copying files from the server to the client is known as retrieving the file. For this, the RETR command is used.
  • Copying the file from the client to the server is known as storing the file. It uses the STOR command.
  • Sending a list of file names from server to client. It uses the LLST command.

What is an Anonymous FTP?

To establish a connection via the FTP client, you must provide an authorized username and password to the remote server. Some sites have files that everyone can access, enabling anonymous FTP. The user does not have to provide the credentials to access such files. Else, the user can log in with an anonymous username and guest as a password.

What are FTP Servers?

FTP servers are just similar to web servers. The FTP servers handle the distribution of files. Whenever the user clicks on a link to download something from the internet, the links redirect to FTP instead of HTTP. Some files are open to everyone on the FTP servers, while some are available for specific users with authorized access. It is divided into anonymous and non-anonymous servers to separate these files and users.

  • Anonymous Server: In most cases, the FTP sites allow anonymous FTP, and you do not have to provide a password to access the files. You must provide an anonymous username and enter your e-mail address as a password.
  • Non-anonymous server: For a non-anonymous server, then you have to log in using the correct password.

What are FTP Clients?

It uses TCP for handling all communications and sharing data. FTP works on the client/server model, where one device is the client and the other acts as the server. All the demon’s process FTP runs on the server, which everyone can access, enabling the server to handle all transactions. You must use FTP client software on your system and establish a connection to the server device. To connect to the FTP server, you must provide a username and password for the FTP client software. This will open a command link between both devices, allowing you to send commands, messages, and other data.

Then you will be able to carry out any task on the server as per your privileges, as every user does not have access to perform administrative tasks.

What is the active and passive mode?

You can develop the client and server interaction in two ways. It depends on how you establish the connection for transferring the data. Two modes are- active and passive FTP operation modes.

In the case of the active mode, the server initiates the connection itself to the client, while in the case of the passive mode, the client initiates the connection. The FTP protocol uses two types of connections: control and data transfer.

You can see the active and passive modes of the client in the case of the data transfer connection. But, a control connection is also essential for communication, as the server receives the command via a control connection.

The significant difference between the active and passive modes is who initiates the connection, and non-anonymous servers separate these files and users. In the case of the active mode, the client establishes the control connection to the server while the server makes the connection for transferring the data. But, in the case of the passive mode, the client initiates both data and control connection. Also, the ports to which the data is transmitted are different.

How to establish FTP Active Mode

It starts with establishing a control connection. For this, a temporary port will be created on the client ranging from 1024 to 65535 for both control and data connection. The client will send the request to the server to start the connection. Inactive mode, the following steps will take place.

Step 1: First, the client will send the request to the server with port 21.

Step 2: The server will respond to the newly created temporary client port.

Step 3: After that, the client confirms the incoming connection.

Step 4: The client will send the FTP PORT command specifying the details, such as which mode (active in this case), IP address, and port number.

Step 5: The server will confirm the incoming command.

Step 6: The client will tell the server to perform the specific task.

Step 7: Then, the server creates a data connection using port number 20.

Step 8: The client will respond to the request from the server.

Step 9: After confirming the connection, the server will allow the data from the client.

How to establish FTP Passive Mode

This process is entirely different from the active mode operation. Below are the steps that are followed using passive mode.

Step 1: The client sends a request to the server using port number 21 from its temporary port ranging between 1024 – 65535.

Step 2: The server will send a response to a temporary client port.

Step 3: The client then confirms the incoming connection.

Step 4: The client sends a PASV command specifying the usage of the passive FTP mode.

Step 5: The server confirms it and sends its IP address and port number to start a data connection.

Step 6: The client uses the data transfer port to send a request to establish a connection to the port issued by the server.

Step 7: The server then confirms the incoming connection.

Step 8: The client creates a connection.

Step 9: The client tells the server when to transfer the data.

Changing FTP to use a different port number

You can follow the steps below to change the FTP to another port number other than the default one.

As per the below example, you can replace the standard FTP port 21 with 10022.

  • Make the port number change for FTP in /etc/services file, as shown below.

ftp 10022/tcp # File Transfer [Control]
ftp 10022/udp # File Transfer [Control]

  • Create a backup of the SRCsubsvr ODM file using the below command.

# cd /etc/objrepos
# cp SRCsubsvr SRCsubsvr.backup

  • Changing the ODM class SRCsubsvr
    • Export ODMDIR:
    • Extract the FTP entry from the SRCsubsvr ODM class:

    # odmget -q sub_type=»ftp» SRCsubsvr > /tmp/ftp.odm.out

    • now, delete the current FTP entry from the SRCsubsvr ODM class:

    # odmdelete -q sub_type=»ftp» -o SRCsubsvr

    0518-307 odmdelete: 1 objects deleted.

    • Now, alter the sub_code field for the FTP stanza in /tmp/FTP.odm.out
    • Here is the initial entry in ftp.odm.out:

    sub_type = «ftp»
    subsysname = «inetd»
    sub_code = 21

    Change sub_code to the new port (for example, port 10022):

    SRCsubsvr:sub_type = «ftp»
    subsysname = «inetd»
    sub_code = 10022

    • Now, save the file changes.
    • Add the new FTP entry to the SRCsubsvr ODM class:
    • Verify whether the entry is present and the new port number is shown:

    # odmget -q sub_type=»ftp» SRCsubsvr

    • Refresh inetd to restart ftpd

    # refresh -s inetd

    • Now, you need to verify that the new FTP port is in the listen-to state:

    # netstat -an | grep 10022

    • If the port is not in the listen-to state, you must restart inetd:

    # stopsrc -s inetd
    # startsrc -s inetd

    • Test the FTP connection to ports 21 and 10022

    Solving problems with firewall

    You might get the below-mentioned error after changing the default port number for FTP to use. You can make the required changes to the firewall settings to make the process run smoothly.

    Due to the dynamic nature of the FTP data port, you might face difficulties while configuring the firewall. In the case of the active mode, the actual problems occur at the client’s end. If the firewall’s settings are to drop the connection that is not internally initiated, the server cannot establish the data connection. So, it is essential that you correctly specify the client ports and create an allowable rule for the firewall to work correctly.

    But in the case of the passive mode, the problem lies on the server side. Also, you can specify the range in the passive FTP port range within the server settings and create a rule for it. You can follow the below steps to get this done.

    Open the IIS Manager, click the Server name under Start Page, double-click FTP Firewall Support, and provide the range 1025-65535 to the Data Channel Port Range, as shown below.

    Go to the FTP site -> select FTP Firewall Support, and provide your external IP address.

    Make sure to make a Network Address Translation (NAT) of these port ranges while configuring the firewall.

    Conclusion

    FTP ports are essential to establish a connection between the client and the server. Ensure that your FTP listens to the correct port, or else you might find it challenging to connect to the server. FTP establishes two connections, one for transferring the command and the other for transferring the actual data. The data connection uses the FTP port 20. FTP default port number is 21 to specify the control connection. You can change the standard FTP port to ensure the security or avoid network congestion on ports 20 and 21.

    FTP is a necessary protocol that smoothly transfers any data across the network. We have mentioned some commands to help you change the default port 21. You can make the firewall mentioned above settings to avoid the refused connection error if you face any issues.

    We recommend you buy Linux VPS for a better experience and knowledge to change the defult FTP port.

    What firewall ports do I need to open when using FTPS?

    I need to access an FTPS server (vsftpd) on a vendor’s site. The vendor has a firewall in front of the ftps server. I have a firewall in front of my FTPS client.

    I understand that ports 990, 991 and maybe 989 need to be opened up for control traffic.

    I have some questions:

    1. When looking at it from the vendor’s firewall perspective, should these ports be opened up for both inbound and outbound traffic?
    2. What about ports for the DATA channel?
    3. Do I have to open all ports above 1000?
    4. Should I do it for both inbound and outbound traffic ?

    Tim's user avatar

    7 Answers 7

    My understanding of FTP over SSL (ftps) is that it doesn’t work well with firewalls and NAT. In an ordinary FTP session, the information about data connections is read, and for NAT modified, by the firewall in order for the firewall to dynamically open the needed ports. If that information is secured by SSL, the firewall can’t read it or change it.

    Using SFTP, or scp, makes the network administrator’s job a lot easier — everything happens on the server’s port 22, and the transaction follows the normal client/server model.

    One thing not mentioned is whether or not your firewall is performing NAT and whether or not it is static NAT or dynamic NAT. If your client machine has a static address or is being statically NATed, you may not need to make any firewall changes, assuming you allow all outbound traffic and the server operates only in Passive mode (PASV).

    To know exactly what ports you will need to open, you will need to either:

    a) talk to the vendor to get specifics about how their system has been configured.

    b) Use a protocol analyzer, such as tcpdump or wireshark, to look at the traffic, both from outside your firewall and inside your firewall

    You need to find out which port is the Control Connection. You list 3, which seems odd to me. Assuming the server only works in PASV (passive) mode, you need to figure out how the server is configured to allocated DATA ports. Have they locked down the DATA channel to a single inbound port? Have they locked down the DATA channel to a small range or ports?

    With these answers, you can start configuring your firewall.

    I believe the ports around 990 were for implicit SSL, which was an old non-standard way of doing FTP/SSL. The «right» way these days is explicit SSL, which means you still connect on port 21 and then negotiate SSL before sending your goodies. To support connections through a firewall, you need to use PASV mode and hard set the data ports to be used.

    I believe you need at least one port per data connection you want to support. If it’s just you, you’re probably fine only opening a few extra ports. Specifically for me, I use 21000-21010.

    In vsftpd.conf, I have these two lines (along with all the other stuff to support SSL):

    On my firewall, I have a public static IP with one-to-one/static NAT to the internal IP and only tcp ports 21, 21000-21010 open.

    I know this is an extremely old thread, however..

    Please note that SFTP is completely different from FTPS. ( SSH vs SSL )

    FTPS worsk in 2 way. Explicit and Implicit. Explicit is less secure because after the initial handshake skips encryption during data transfers [if data encryption is maintained is configurable on server side with PROT P], while the Implicit keeps the encryption of the data after handshake too. The default Explicit FTPS port is 21. The default Implicit port is 990 ( after handshake it will switch automatically to 989 for data transmission, if not configured differently). While port 21 is generally accepted as EXPLICIT FTPS and 990 as IMPLICIT FTPS, in reality whichever port you will configure, except 990/989, will lead to EXPLICIT FTPS while ONLY 990/989 will be accepted as IMPLICIT FTPS.

    So, to answer your question: — depending on the FTPS Server configuration, you’ll need to open port 21 or 990/989. However, just to be sure, you should contact the FTPS Server admin and ask for directions. Also, keep in mind that for passive mode, as with every other FTP software, you’ll have to open additional ports (TCP/UDP) usually something from the range 64000-65000.

    Basically ftps is almost useless, because you must make embarrassing requests to firewall admins. The advice to restrict ports to 10 is good. Much more, it gets pathetic.

    sftp is a lot better in theory. But you need a viable sftp server, e.g. one that restricts clients to their own home directory.

    Depending on the application, consider HTTPS. A file upload is really simple, and a download obviously is as well. If you’re scripting the FTP anyway, it’s probably going to be easier altogether to script an HTTPS file upload.

    Automated FTP is a sign of a design problem. I noticed this when dealing with a total of about a dozen vendors that ‘required’ a place I worked to do automated FTP (for VERY important things), and when making dozens of customers do it with that same shop (a design failure for about 20 distinct uses I witnessed). It was easy to convince most app guys to use HTTPS (usually at the mention, they said «wait, there’s no reason we’re not just having them get it with HTTPS from the web server we’re already serving them data on?»), except a few that gave responses like «well, we already have these scripts that seem to work, and no one on our team is really good with scripting so we cant really make any changes» (a team of 5-10 programmers, pretending to not understand that they can write it in a language of their choice, because they don’t know how to write a trivial program from scratch.).

    Настройка сети

    Настройка FTP является довольно сложной задачей. Т.к. существуют тысячи разных файрволов и моделей роутеров, практически невозможно привести полное пошаговое руководство для каждого пользователя. Пользователь должен понимать основы протокола FTP для того, чтобы настроить FileZilla и роутеры/файрволы через которые происходит подключение. В этой статье приведена краткая история развития протокола FTP и принципы работы некоторых его аспектов. Внимательное прочтение этой статьи предотвратит многие проблемы, которые могут возникнуть при настройке FTP-подключения.

    Содержание

    Общие сведения

    В этом разделе будет кратко рассмотрена история и технические сведения, касающиеся протокола FTP. Для получения подробной информации смотрите спецификации.

    Исторические сведения

    На фоне быстро развивающейся сети Интернет протокол FTP выглядит не просто старым, а действительно архаичным. Ранние черновые спецификации протокола датируются 1971-ым годом, составление текущей спецификации начато в 1985-ом. На протяжении последних двух десятилетий протокол не менялся в своей основе.

    В те времена сетью Интернет пользовались в основном университеты и исследовательские центры. Сообщество пользователей было небольшим, большинство из них знали друг друга и все работали сообща. Интернет был дружелюбной сетью, а проблемы безопасности как таковой не стояло.

    Те времена прошли и многое изменилось. Технологический прогресс шел быстрее, чем кто-либо мог себе представить, одновременно выросло новое поколение пользователей. Интернет теперь — повсеместное явление, благодаря которому миллионы людей общаются друг с другом множеством разных способов. Главное ощутимое изменение: Интернет стал враждебным. Доступность и открытость сети привлекла злонамеренных пользователей, активно эксплуатирующих ошибки и неопытность других.

    Побочным эффектом такого развития событий стали, следующие явления:

      -роутеры. Большинство сети использует протокол IPv4, имеющий ограниченное адресное пространство (IPv6 разработан решить эту проблему). Благодаря NAT-роутерам системы с большим количеством устройств могут пользоваться одним и тем же IP-адресом.
    • Персональные файрволы для защиты пользователей от недоработок операционных систем и приложений.

    В большинстве случаев эти явления конфликтуют с работой протокола. Ситуацию ухудшают недоработки в самих роутерах и файрволах.

    Тем не менее, при правильной настройке FTP предлагает надежный и опробованный способ передачи файлов.

    Технические сведения

    Основные отличие FTP от остальных протоколов — использование вторичных подключений для передачи файлов. При подключении к FTP-серверу создается т.н. контрольное подключение, через которое передаются команды протокола и ответы на эти команды. Для того, чтобы передать файл или листинг директории, клиент должен отослать команды через контрольное подключение, после чего будет создано подключение для передачи данных.

    Существует два способа создания этого подключения: активный и пассивный режимы.

    В пассивном режиме, который является рекомендуемым, клиент отсылает серверу команду PASV, на которую сервер отвечает адресом. После этого клиент отсылает команду для передачи файла или листинга директории и создает вторичное подключение по адресу, который был получен от сервера.

    В активном режиме клиент открывает сокет на локальном устройстве и отсылает серверу адрес сокета с помощью команды PORT. После отсылки команды передачи файла или листинга сервер создает подключение по заданному адресу, который был указан клиентом.

    В обоих случаях файл/листинг будут переданы через подключение для передачи данных.

    Создание исходящих подключений требует задания меньшего количества параметров для роутеров/файрволов, чем создание входящих подключений. В пассивном режиме, подключение является исходящим от клиента и входящим для сервера. В активном режиме клиент и сервер меняются ролями — входящее подключение для клиента и исходящее для сервера.

    Примите во внимание, что разница состоит только в порядке подключения, после создания подключения для передачи данных, данные могут как загружаться, так и выгружаться.

    Типичная сетевая конфигурация может выглядеть так:

    Таким образом, в пассивном режиме роутер и файрвол на стороне сервера должны быть настроены для приема и перебрасывания входящих подключений. В свою очередь, на стороне сервера должны быть разрешены только исходящие подключения, а в большинстве случаев исходящие подключения разрешены.

    Аналогично в активном режиме роутер и файрвол на клиентской стороне должны быть настроены для приёма и перебрасывания входящих подключений. Очевидно, на стороне сервера должны быть разрешены только исходящие подключения.

    Т.к. сервер обычно обслуживает много клиентов, намного легче настроить роутер и файрвол на стороне сервера один раз для пассивного режима, чем настраивать клиентский роутер/файрвол для каждого клиента в активном режиме. Именно поэтому пассивный режим является рекомендуемым.

    NAT-роутеры

    У большинства пользователей широкополосного подключения NAT-роутер расположен между их компьютером и сетью. Это может быть самостоятельное устройство (возможно беспроводной роутер), или же встроенный роутер в DSL- или кабельном модеме. В среде NAT все устройства за роутером составляют локальную сеть (LAN), каждое из устройств в сети имеют локальный IP-адрес (четыре небольших числа разделённых точками). NAT-роутер в свою очередь имеет свой локальный IP-адрес, а также внешний IP-адрес для идентификации в глобальной сети. Локальные адреса действительны только внутри LAN, для удаленного устройства они не имеют смысла. Пример:

    Предположим, что сервер находится за NAT-роутером. Смоделируем ситуацию, в которой клиент подключается в пассивном режиме, но серверу не предоставлен внешний IP-адрес роутера. В этом случае сервер отсылает свой локальный адрес клиенту, после чего могут произойти две вещи:

    • Если клиент не расположен внутри NAT, подключение будет разорвано, т.к. адрес сервера не является действительным.
    • Если клиент расположен внутри NAT, адрес сервера может совпадать с адресом устройства в сети самого клиента.

    Очевидно, в обоих случаях пассивный режим не сработает.

    Таким образом, если сервер находится за NAT-роутером, ему должен быть предоставлен IP-адрес роутера для работы пассивного режима. В обоих случаях сервер отсылает внешний адрес роутера клиенту. Клиент создает подключение с роутером, который в свою очередь передает подключение на сервер.

    Файрволы

    Предназначением персонального файрвола является защита пользователя от уязвимости в безопасности операционной системы или используемых приложений. Зловредные приложения, к примеру, черви, часто используют эти уязвимости для заражения вашей системы через сеть. Файрволы помогают избежать таких случаев.

    В особенности при использовании FTP пользователи файрвола могут получать такие сообщения:

    Почти во всех случаев такое сообщение — ложная тревога. Любое приложение может выбрать любой порт для сообщения через интернет. Может случиться так, что FileZilla выберет порт, случайно являющийся портом по умолчанию для трояна или другой зловредной программы. Дистрибутив FileZilla скачанный с официального сайта не содержит вирусов.

    Умные роутеры, файрволы, и саботаж данных

    Некоторые роутеры или файрволы достаточно умны. Они анализируют подключения и при обнаружении FTP-подключения бесшумно подменяют данные передающиеся между клиентом и сервером. Такое поведение является саботажем данных и может доставить неприятности, если пользователь не разрешил такое поведение явным образом.

    Приведем пример. Предположим, что клиент находится за NAT-роутером и пытается подключиться к серверу. Предположим также, что клиент не осведомлен в том, что он находится за NAT и использует активный режим. Клиент отсылает команду PORT со своим локальным, немаршрутизируемым IP-адресом, серверу:

    Эта команда указывает серверу на подключение по адресу 10.0.0.1 на порту 12*256+34 = 3106

    После этого NAT-роутер бесшумно подменяет команду, включая внешний IP-адрес, а также создает временный порт для переброски FTP-сессии, возможно даже на другом порту:

    Эта команда указывает серверу на подключение по адресу 123.123.123.123 на порту 24*256+55 = 6199

    Благодаря такому поведению NAT-роутер позволяет неправильно настроенному клиенту использовать активный режим.

    Почему такое поведение не является приемлемым? Если эта возможность используется по умолчанию, без согласия пользователя, из этого следует множество проблем. FTP-подключение в своей основе будет работать, но сразу после исчерпания тривиальных случаев использования передача будет разорвана, не оставляя особых средств диагностики проблемы.

    • NAT-роутер слепо предполагает, что некоторые подключения принадлежат FTP основываясь на таких данных, как целевые порты или ответы сервера:
      • Нет никакой гарантии относительно используемого протокола, несмотря на автоматическое определение (такие случаи называют ложной тревогой). Хоть это и маловероятно, вполне допустимо, что в будущих версиях протокола FTP синтаксис команды PORT может измениться. NAT-роутер, модифицируя команду PORT, изменяет без ведома пользователя параметры, которые он не поддерживает, из-за чего соединение будет разорвано.
      • Определение протокола роутером может не распознать FTP. Предположим, что роутер следит только за целевым портом, а если этот порт 21-ый, он будет распознан как FTP. Подключения в активном режиме от неправильно настроенного клиента к серверу на 21-ом порту будут работать, но подключения к другим серверам на нестандартных портах — нет.

      Как мы видим, возможности специфические для протоколов, включенные на NAT-роутере по умолчанию могут вызвать множество проблем. Хороший NAT-роутер всегда и полностью работает с протоколом без информации о самом протоколе. Исключением может быть случай, когда пользователь явно применил эту возможность и осознает все возможные последствия.

      В этом подразделе мы рассматривали сочетание NAT-роутера на стороне клиента в активном режиме, те же рассуждения применяются и в случае сервера за NAT и ответами на команду PASV.

      Настройка клиента FileZilla

      Если вы пользуетесь FileZilla 3, мы рекомендуем запустить мастер настройки сети. С помощью мастера вы пройдете все нужные шаги, а после их завершения у вас будет возможность протестировать вашу конфигурацию.

      Очевидно, что для подключения к любому серверу ваш файрвол должен разрешить такие действия для FileZilla. Большинство обычных FTP-серверов используют 21-ый порт, SFTP-серверы — 22-ой, а FTP через SSL/TLS (неявный режим) по умолчанию — 990-ый. Номера портов не являются жестко заданными, поэтому лучше всего разрешить исходящие подключения на любой порт.

      Т.к. в интернете достаточно неправильно настроенных серверов, или серверов, которые не поддерживают оба режима передачи, вам рекомендуются оба режима передачи на своей стороне.

      Пассивный режим

      Клиент не может указывать серверу выбор порта для передачи данных в пассивном режиме, поэтому для использования пассивного режима вам нужно разрешить исходящие подключения по любому порту на своем компьютере.

      Активный режим

      В активном режиме клиент открывает сокет и ожидает от сервера подключения для передачи.

      По умолчанию клиент FileZilla запрашивает у операционной системы IP-адрес и свободный номер порта. Такая конфигурация сработает только в случае прямого соединения с интернетом без NAT-роутеров, также ваш файрвол должен разрешать создание подключений на всех портах выше 1024-го.

      Если у вас присутствует NAT-роутер, вам нужно указать FileZilla внешний IP-адрес, в противном случае соединения в активном режиме не сработают для серверов вне вашей локальной сети:

      • Статический IP-адрес можно указать в диалоге настройки FileZilla.
      • Если ваш IP-адрес динамический, у вас есть возможность разрешить FileZilla получать внешний IP-адрес на специальном сайте автоматически каждый раз при запуске. Никакая информация не будет передана от вас на этот сайт, кроме версии используемого клиента FileZilla.

      Если вы не уверены в своем выборе, используйте второй вариант.

      Если вы не хотите разрешать входящие соединения на всех портах, или ваш компьютер расположен за NAT-роутером, укажите FileZilla использовать определенный диапазон портов для соединений в активном режиме. Этот диапазон также нужно будет открыть для вашего файрвола. При наличии NAT-роутера вам нужно перебросить эти порты на локальный компьютер, на котором установлен FileZilla. Вы можете перебросить диапазон портов, или же каждый порт по отдельности, это зависит от модели вашего роутера.

      Доступные порты находятся в диапазоне от 1 до 65535, порты ниже 1024-го зарезервированы для остальных протоколов. Для активного режима FTP лучшим выбором является номер порта равный или выше 50000. В связи с устройством протокола TCP (протокол, который находится ниже уровня FTP и используется для передачи данных), порт не может быть использован повторно сразу после каждого подключения. Таким образом, диапазон портов не должен быть слишком узким, в противном случае вы не сможете передать много файлов малого размера. В большинстве случаев достаточно диапазона в 50 портов.

      Скриншот диалога настроек FileZilla 3, показывающий вкладку настройки активного режима

      Настройка и тестирование сервера FileZilla

      Настройка сервера по большей части повторяет настройку клиента, главным отличием является то, что в случае сервера активный и пассивный режимы меняются ролями.

      Важно отметить, что проверка работы сервера в большинстве случаев происходит ошибочным образом, особенно часто эту ошибку допускают владельцы NAT-роутеров. Находясь внутри локальной сети, вы сможете протестировать сервер, только используя локальный IP-адрес. Использование внешнего адреса внутри локальной сети в большинстве случаев не сработает по одной из приведенных причин:

      • Роутер заблокирует доступ к своему внешнему адресу изнутри локальной сети как возможную атаку
      • Роутер перебросит соединение вашему провайдеру, который заблокирует его как возможную атаку.

      Даже если вам удалось подключиться, у вас нет никакой гарантии того, что пользователю из внешней сети удастся это сделать и, кроме того, загружать файлы на ваш сервер. Единственное надежное средство проверки работы сервера — подключение извне вашей локальной сети.

      Активный режим

      Убедитесь, что серверу FileZilla разрешено создавать исходящие подключения по любому порту, т.к. в этом режиме клиент определяет порт для соединения.

      На локальной стороне подключения сервер FileZilla пытается использовать порт со значением на единицу ниже, чем у порта для контрольного соединения (к примеру, порт 20, если сервер принимает соединения на порту 21). Тем не менее, это не всегда возможно, поэтому не следует всегда полагаться на эту особенность.

      Пассивный режим

      Настройка сервера в этом случае практически повторяет настройку клиента в активном режиме.

      В пассивном режиме сервер открывает сокет и ожидает соединения от клиента.

      По умолчанию сервер FileZilla запрашивает у операционной системы IP-адрес компьютера и свободный порт. Эта конфигурация является рабочей только, если компьютер напрямую подключен к интернету без NAT-роутеров и установленным для файрвола разрешением на входящие подключения по всем портам выше 1024-го.

      При наличии NAT-роутера вам нужно сообщить серверу FileZilla ваш внешний IP-адрес, в противном случае соединения в пассивном режиме будут работать только внутри локальной сети:

      • Статический IP-адрес можно указать в диалоге настройки сервера FileZilla.
      • Если ваш IP-адрес динамический, у вас есть возможность разрешить серверу FileZilla получать внешний IP-адрес на специальном сайте автоматически при каждом запуске. Никакая информация не будет передана от вас на этот сайт, кроме версии используемого сервера FileZilla.

      Если вы не уверены в своем выборе, используйте второй вариант.

      Если вы не хотите разрешать входящие соединения на всех портах, или ваш компьютер расположен за NAT-роутером, укажите серверу FileZilla использовать определенный диапазон портов для соединений в активном режиме. Этот диапазон также нужно будет открыть для вашего файрвола. При наличии NAT-роутера вам нужно перебросить эти порты на локальный компьютер, на котором установлен сервер FileZilla. Вы можете перебросить диапазон портов, или же каждый порт по отдельности, это зависит от модели вашего роутера.

      Доступные порты находятся в диапазоне от 1 до 65535, порты ниже 1024-го зарезервированы для остальных протоколов. Для активного режима FTP лучшим выбором является номер порта равный или выше 50000. В связи с устройством протокола TCP (протокол, который находится ниже уровня FTP и используется для передачи данных), порт не может быть использован повторно сразу после каждого подключения. Таким образом, диапазон портов не должен быть слишком узким, в противном случае вы не сможете передать много файлов малого размера. В большинстве случаев достаточно диапазона в 50 портов.

      Скриншот диалога настроек FileZilla Server, показывающий вкладку настройки пассивного режима

      Решение проблем

      К сожалению, множество персональных файрволов и пользовательских роутеров имеют свои недоработки или, в некоторых случаях, даже способны саботировать работу FTP (например SMC Barricade v1.2).

      В первую очередь, пользуйтесь последними стабильными версиями программного обеспечения, в том числе файрвола и прошивки роутера.

      Если это не помогает, у вас есть возможность попробовать удалить ваш файрвол для анализа ситуации. Простое отключение файрвола не всегда помогает, т.к. некоторые файрволы нельзя полностью отключить.

      Если это возможно, попробуйте подключиться к интернету напрямую без роутера.

      Если вы пытаетесь настроить сервер и он работает нормально внутри вашей локальной сети, но не доступен вне её, попробуйте сменить порт для подключения. Некоторые провайдеры не разрешают своим клиентам размещать сервера и блокируют порты ниже 1024-го.

      Причиной другой возможной проблемы может быть использование 21-го порта по умолчанию для вашего FTP-сервера. На стороне вашего провайдера может присутствовать файрвол, который может неожиданно изменять порт для команды PASV. Попробуйте использовать порт отличный от порта по умолчанию для вашего FTP-сервера.

      Если время от времени вы наблюдаете сообщение «невозможно открыть подключение для передачи данных», т.е. FTP-клиент способен без проблем подключиться к FTP-серверу достаточное число раз, пока вы не получите данное сообщение, возможным препятствием может быть антивирус на клиентском ПК, настроенный на блокировку исходящих подключений по определенному диапазону портов. При работе сервера в пассивном режиме исходящие порты клиента определяются случайным образом, а при выборе портов попадающих в заблокированный диапазон, вы будете получать сообщение об ошибке. Для того, точной диагностики, вам следует просмотреть логи антивируса на машине клиента, который получает данную ошибку. В общем, любое ПО, способное блокировать диапазон исходящих портов, может быть причиной проблем подобного рода.

      Таймауты при передаче больших файлов

      Если передача небольших файлов происходит без проблем, но загрузка больших файлов обрывается по таймауту, причиной этого является неправильно настроенный роутер и/или файрвол находящийся между клиентом и сервером.

      Как было сказано выше, в FTP используются два TCP-подключения: контрольное подключение для отсылки команд и получения ответов на команды, и также подключение для передачи данных. По принципу работы FTP контрольное соединение не используется во время передачи файлов.

      В спецификации TCP не указывается лимит времени для сохранения неиспользуемого подключения. Предполагается, что подключение сохраняется на неопределенное время пока не будет закрыто явным образом. Тем не менее, большинство роутеров и файрволов автоматически закрывают свободные подключения по истечению некоторого времени. Более того, в большинстве случаев разрыв соединения происходит без уведомления об этом его участников. В случае продолжительной передачи данных через FTP это значит, что контрольное соединение может быть разорвано, но, ни клиент, ни сервер не будут об этом уведомлены. Таким образом, после того, как все данные были переданы, сервер все еще ожидает, что контрольное подключение можно использовать и отсылает через него подтверждение передачи клиенту. Аналогично, клиент готов использовать контрольное соединение и ожидает ответа от сервера. Но, т.к. контрольное соединение было разорвано, это ответ никогда не будет доставлен, что приводит к таймауту.

      Для решения этой проблемы спецификация TCP предусматривает способ отправки пакетов для поддержки неиспользуемого подключения, сообщающих участников о том, что соединение требуется сохранить для дальнейшего использования. Тем не менее, в спецификации TCP явно указывается, что такие пакеты можно передавать не чаще, чем один раз каждые два часа. Для этого, предусматривая задержки в сети, срок жизни неиспользуемого подключения устанавливается спецификацией в 2 часа и 4 минуты.

      Препятствием этому служит то, что многие роутеры и файрволы разрывают соединения, которые не использовались меньше чем 2 и 4 минуты. Такое поведение нарушает спецификацию протокола TCP, в RFC 5382 это указано достаточно ясно. Другими словами, роутеры и файрволы, разрывающие соединение раньше нужного момента, нельзя признать рабочими, т.к. они не могут использоваться при длительной передаче данных через FTP. К сожалению, производители роутеров потребительского класса и поставщики файрволов не заботятся о соблюдении спецификаций.

      Для решения этой проблемы вам нужно удалить такие файрволы и заменить неправильно работающий роутер на качественный.

      Настройка сервера FileZilla под Windows Firewall

      Если вы испытываете проблемы при настройке сервера FileZilla при работающем Windows Firewall (в особенности, если клиент, подключающийся к такому серверу получает сообщение об ошибке «Невозможно получить листинг директории»), вам нужно добавить сервер FileZilla в список исключений Windows Firewall. Для этого вам нужно сделать следующие шаги:

      • Откройте Windows Firewall из Панели Управления
      • Если вы пользуетесь Vista, нажмите «Изменить настройки»
      • Выберите вкладку «Исключения»
      • Нажмите «Добавить программу..»
      • НЕ выбирайте «интерфейс сервера FileZilla» из списка, вам нужно нажать на «Просмотр. «
      • Найдите установочную директорию сервера FileZilla (обычно это «C:\Program Files\FileZilla Server\»)
      • Выберите «FileZilla server.exe» и нажмите открыть (повторим еще раз, НЕ ВЫБИРАЙТЕ «FileZilla Server Interface.exe»)
      • Выберите «FileZilla server.exe» из списка и нажмите «Ok»
      • Удостоверьтесь в том, что «FileZilla server.exe» находится в списке исключений и отметьте соответствующий пункт
      • Нажмите «Ok» для закрытия окна

      Это обеспечивает работу пассивного режима. Если после этого вы все равно испытываете проблемы при подключении (внутри или извне сети), проверьте настройки вашего роутера или попробуйте добавить номер порта в настройках Windows Firewall во вкладке «Исключения».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *