# О протоколе FTP

### Что таоке FTP&#x20;

FTP (File Transfer Protocol — протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по сети TCP/IP.  Если говорить проще — это способ перемещения файлов между двумя компьютерами через интернет. \
\
Из-за отстутствия шифрования от этого протокола всё чаще откзываются компании, но кто-то до сих пор его использует.&#x20;

### Как работет FTP

Зайдем с метафоры. Представим, что FTP — почтовый ящик, куда мы можем положить письмо (файл), и другой человек может его оттуда взять.

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

В момент, когда мы хотим передать файлы, нам нужно войти в систему, ввести имя пользователя и пароль. Это способ убедиться, что мы имеем право забирать или оставлять файлы в почтовом ящике. \
\
FTP-протокол использует два вида общения:&#x20;

1. Командный канал (Control Channel) → отправляет команды с клиента на сервер и получает ответы. Этот канал остаётся открытым на протяжении всей FTP-сессии.&#x20;
2. Канал данных (Data Channel) → фактическая передача файлов между клиентом и сервером. Канал открывается и закрывается для каждой отдельной передачи данных.&#x20;

### Как проходит FTP-сессия&#x20;

FTP-сессия — это установленное соединение между клиентским компьютером и сервером. Оно начинается с момента подключения клиента к серверу и продолжается до тех пор, пока оно не будет прервано или закончено. \
\
FTP-сессия полезна для поддержания порядка при передаче файлов, так как она позволяет серверу контролировать, кто и когда подключается, и обеспечивает целостность передачи данных.\
\
Есть 5 основных этапов сессии:&#x20;

| Этап                    | Описание этапа                                                                                                                                                                                                                |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Установление соединения | Клиент использует специальную программу (FTP-клиента) для подключения к серверу FTP. Ему нужно знать адрес сервера (например, имя домена или IP-адрес сервера FTP), а также иметь имя пользователя и пароль (если требуется). |
| Аутентификация          | Клиент предоставляет своё имя пользователя и пароль серверу. Если у сервера есть анонимный доступ, логин и пароль могут быть не нужны — клиент может войти анонимно.                                                          |
| Обмен командами         | Эти команды могут включать запросы на получение списка файлов в папке, перемещение между папками, загрузку файлов на сервер или скачивание файлов с сервера.                                                                  |
| Передача данных         | Если клиент хочет загрузить или скачать файлы, открывается отдельное соединение для данных. Файлы передаются через это соединение.                                                                                            |
| Завершение сессии       | После того как все необходимые файлы загружены или скачаны, клиент может закончить сессию, отключившись от сервера. Обычно это делается путём отправки команды на отключение, и сервер подтверждает окончание сессии.         |

### Режимы работы FTP

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

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

### Чем плох FTP-протокол?

1. Нет шифрования. И содержимое передаваемых файлов, и учетные данные пользователя передаются в незашифрованном виде. Это делает протокол уязвимым для сниффинга, брутфорса и атак типа [MITM](https://notes.kraken-security.ru/kraken/krupicy-znanii/ob-atake-mitm).
2. Нет проверки целостности. Из-за этого файлы могут быть повреждены или изменены в процессе передачи. И ты даже этого не обнаружишь.&#x20;
3. Проблемы с брандмауэрами и NAT. Для установления соединения FTP использует несколько портов, и в режиме активного FTP клиент должен открывать порты для соединения, что может вызывать проблемы при работе через брандмауэры и NAT.
4. Нет управления версиями. FTP не имеет встроенных средств для управления версиями файлов или для отслеживания их изменений.
5. Сложность. Настройка FTP-серверов может быть сложной, особенно с учётом необходимости настройки брандмауэров и NAT.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.kraken-security.ru/kraken/krupicy-znanii/obshie-stati/o-protokole-ftp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
