Что такое ftp-сервер, для чего нужен, особенности и как работает

Что такое FTP-сервер?

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

Для того чтоб подключиться к FTP необходимы следующие данные:

  • Имя сервера (хост)
  • Логин
  • Пароль
  • Порт FTP (стандартно 21)

FTP сервер не требующий авторизации называется анонимным FTP сервером ( (anonymous FTP) .

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

FTPS — протокол прикладного уровня, был создан в качестве расширения FTP протокола. Он предназначен для установления защищенного соединения при помощи TLS. С его помощью все команды и данные передающиеся по каналу связи шифруются.

Подключение по FTP может организовываться при помощи активного или пассивного режима. В первом случае соединение устанавливается после отправки команды PORT. Если пользователь использует Proxy или фаервол, такой режим работы может быть запрещен. Для решения данной проблемы используется пассивный режим соединения. В пассивном режиме клиент получает номер TCP-порта, к которому он может подключиться.

FTP сервер поддерживает передачу файлов в двух режимах:

  • Текстовый (ASCII). Используется для передачи текстовых данных, например HTML, php скриптов, perl скриптов, а также css и JS файлов.
  • Бинарный (BINARY). Изображения и бинарные файлы передаются в этом режиме.

Выбрать правильный режим передачи данных очень важно. Например Perl скрипты не будут работать на сервере, если их загрузить в бинарном режиме

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

ШАГ 4: Настройка vsftpd — скачать работающий конфиг vsftpd.conf

Сделаем копию оригинального файла настроек vsftpd.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Правим конфигурационный файл vsftpd.conf.

  • Отключаем анонимный вход: anonymous_enable = NO
  • Разрешаем использовать имена локальных пользователей для входа: local_enable = YES
  • Для авторизованных пользователей разрешаем команды, позволяющие изменять файловую систему: write_enable = YES
  • Установим значение umask для новых файлов, создаваемых по FTP: local_umask = 022
  • Использовать порт 20 для передачи данных вместо случайного: connect_from_port_20 = YES
  • Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога
  • Чтобы заставить vsftpd вести логи подключений добавьте параметр dual_log_enable=YES
xferlog_enable = YES
xferlog_std_format=YES

Вы может скачать работающий конфиг vsftpd.conf в окружении Ubuntu 20.04.1 LTS: vsftpd сервер успешно работает под нагрузкой как на ethernet интерфейсе, так и tun0 интерфейса .

vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=varrunvsftpdempty
pam_service_name=vsftpd
rsa_cert_file=etcsslcertsssl-cert-snakeoil.pem
rsa_private_key_file=etcsslprivatessl-cert-snakeoil.key
ssl_enable=NO
#utf8_filesystem=YES
userlist_enable=YES
userlist_file=etcvsftpd.userlist
userlist_deny=NO
allow_writeable_chroot=YES
dual_log_enable=YES

Что такое безопасный FTP: FTPS и FTPES, SFTP, SSH-FTP?

Вы наверное уже поняли, что обычный FTP не является безопасным, потому что данные не шифруются при передаче. Это можно исправить, например используя протокол SSH, который зашифрует пару логин:пароль и передаваемое содержимое. Сейчас расскажу подробнее обо всех безопасных FTP — FTPS, SFTP, SSH-FTP.

Откровенно говоря, FTP и не задумывался как безопасный при создании. Так его и сделали с многочисленными уязвимостями, список которых на 1999 год был примерно таким: захват портов и перехват пакетов, сниффинг и спуффинг, брутфорс и скрытые атаки.

FTP был разработан до TLS/SSL и просто физически не может шифровать свой трафик, поэтому любой человек, который способен перехватить пакет по сети, получит данные к именам пользователей, паролям, командам, а значит обретет доступ к приватному FTP-серверу

А доступ к FTP сайта это очень важно — можно много дел натворить

Решение этой проблемы — использование защищенных версий протокола ФТП. Например, неявный FTPS это TLS-защищенная версия FTP, а SFTP/SCP защищены Secure Shell. Расскажу подробнее о защищенных FTP.

Явный FTPS (FTPES, FTP over Explicit SSL/TLS) — расширенный FTP, создающий возможность «клиентам» требовать шифрование FTP-сессии при использовании команды «AUTH TLS». В ответ на нее, сервер может позволить создать такое соединение или отклонить запрос. Порт — 21. Есть еще неявный FTPS (требует SSL- или TLS-соединение), но он устарел.

SFTP (англ. «SSH File Transfer Protocol») — расширение протокола SSH. Он никак не связан с FTP, но точно также передает файлы и использует те же команды. SFTP использует Secure Shell (SSH) для передачи файлов, т.е. шифрует и файлы, и команды (не передает данные по сети в открытом виде). Порт — 22 или 2222. Функционально SFTP близок к FTP и очень похож на него, но клиенты стандартного ФТП не могут подсоединиться к SFTP-серверу, как и наоборот.

SFTP, используемый как подсистема второй версии реализации протокола SSH, имеет ряд преимуществ перед FTP:

  • Поддержка аутентификации «без пароля» с помощью SSH-ключей более безопасная, чем если хранить пароль на диске или вводить вручную;
  • Поддержка символических ссылок;
  • SFTP-соединение более быстрое и надежное, когда в FTP бывают тормоза и перебои;
  • SFTP-клиенты обладают возможностями прерывания и возобновления передачи файла, его удаления; загруженные файлы могут иметь метки времени, связанные с атрибутами файлов — а в FTP нет условйи для загрузок.

FTP через SSH (обратите внимание, SSH-FTP это не SFTP) — осуществляет обычную FTP-сессию, соединяясь через безопасный SSH-туннель. Такое тунеллирование затруднительно, т.к

FTP открывает несколько TCP-соединений. Это значит, что при установке несколькими SSH-клиентами туннеля для канала управления (по порту 21) защищенным будет только этот один канал, а передача данных пойдет по вновь созданным каналам данных (TCP-соединения), обходящим SSH и от этого являющимися небезопасными.

Еще раз повторю, не нужно путать FTP через SSH с FTPS, SFTP, SCP — последние более безопасные.

FTP серверы могут быть использованы


FTP серверы могут быть использованы

  • Для обмена личными данными между какой-либо группой людей (домашние серверы с фотографиями).
  • Для администрирования коммерческих ресурсов (заливка файловой системы сайта на хостинг).

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

  • Стабильность работы.
  • Отказоустойчивость.
  • Иметь канал для подключения с широкой пропускной способностью.

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

  • Высокоскоростной канал для соединения с FTP сервером.
  • Стабильность и надежность работы.
  • Объем дискового пространства Вы определяете, исходя из собственных потребностей.
  • Опытные специалисты в службе поддержки.
  • Оперативное устранение возникающих неполадок.
  • Логин – имя аккаунта или логин, используемый для входа в панель управления хостингом.
  • Адрес сервера – ftp.<Доменное имя ресурса>. Если домен еще не зарегистрирован, то в качестве адреса можно использовать IP адрес ресурса (его можно узнать в меню «аккаунт» панели управления).

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

Безопасная передача данных

Существуют следующие методы отсылки данных, защищенные от хакерских атак: FTPS, SFTP, а также передача FTP через SSH. С FTPS можно защитить сессию. FTP-server получает команду AUTH TLS, после чего отклоняет соединения, которые не зашифрованы.

У SFTP похожий список команд, как у FTP. Здесь используется протокол SSH, который шифрует весь трафик. Этим способом кодируются команды и данные. Соответственно, все пароли и другая информация, не предназначенная третьим лицам, не передается в открытом виде.

Другой способ передачи через протокол SSH тунеллирует сессию через SSH-соединение.

Solving problems with Firewall

In the active mode, the main problem occurs with the client. If the Firewall is configured to drop incoming connections not initiated internally, the server will not be able to establish a data connection. And since the FTP data port is dynamic, there are some difficulties with configuring the Firewall. It will be most correct to specify the range of used ports in the client and create an allowable Firewall rule for them.

In passive mode, the server may encounter such a problem. The solution is similar: we specify the passive FTP port range used in the server settings and create an allow rule for it.

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

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

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

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

Что такое FTP

Сетевой протокол — это набор правил, которые описывают, как именно информация должна передаваться между устройствами в интернете. К распространённым протоколам относятся: TCP/IP, HTTP, FTP, POP3 и SMTP и др. У каждого из них своя область использования:

Протокол FTP (File Transfer Protocol) используется для передачи данных с одного компьютера/сервера на другой в интернете.

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

Поэтому часто владельцы сайтов используют FTP. Для этого они подключаются к FTP-серверу. Это сервер, который специально настроен для обмена данными. Чтобы подключиться к FTP-серверу, нужно создать FTP-аккаунт и использовать FTP-клиент (программу Filezilla, Total Commander и др.). Мы рассматривали подключение по FTP в отдельной статье.

Установка и настройка

Обновляем списки портов в репозиториях:

apt-get update

Устанавливаем vsFTPd:

apt-get install vsftpd

Открываем конфигурационный файл:

vi /etc/vsftpd.conf

И снимаем комментарий со следующих строк:

write_enable=YES
chroot_local_user=YES

* write_enable — разрешить копировать файлы на сервер; chroot_local_user — использовать для пользователей изолированное окружение.

И дописываем следующее:

allow_writeable_chroot=YES
pasv_enable=YES
pasv_max_port=60000
pasv_min_port=65535

* где allow_writeable_chroot разрешаем использовать домашние каталоги с правом на запись; pasv_enable включает пассивный режим работы FTP-сервера; pasv_max_port и pasv_min_port определяют диапазон портов для пассивного режима.

Если используется брандмауэр, необходимо добавить правила и разрешить следующие порты:

  • 20 — основной порт FTP для передачи.
  • 21 — для активного режима. Используется для передачи команд.
  • 60000-65535 — диапазон динамических портов, который нами был определен в конфигурационном файле. Используется для пассивного режима.

Разрешаем и перезапускаем сервис:

systemctl enable vsftpd

systemctl restart vsftpd

Если в нашей системе используется брандмауэр, открываем порты:

iptables -I INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT

Для сохранения правил можно использовать утилиту:

apt-get install iptables-persistent

netfilter-persistent save

Схема протокола

Взаимодействие «клиент-сервер» при FTP-соединении можно наглядно представить следующим образом:

Безопасный FTP

FTP изначально не задумывался как защищенный, поскольку предназначался для связи между несколькими военными объектами и учреждениями. Но с развитием и распространением интернета опасность несанкционированного доступа возросла во много раз. Возникла необходимость защиты серверов от различного рода атак. В мае 1999 авторы RFC 2577 свели уязвимости в следующий список проблем:

  • Скрытые атаки (bounce attacks)
  • Спуф-атаки (spoof attacks)
  • Атаки методом грубой силы (brute force attacks)
  • Перехват пакетов, сниффинг (packet capture, sniffing)
  • Захват портов (port stealing)

Обычный FTP не обладает возможностью передачи данных в зашифрованном виде, вследствие чего имена пользователей, пароли, команды и другая информация могут при желании легко и просто быть перехвачены злоумышленниками. Обычное решение этой проблемы — использовать «безопасные», TLS-защищённые версии уязвимых протокола (FTPS) или же другой, более защищённый протокол, вроде SFTP/SCP, предоставляемого с большинством реализаций протокола Secure Shell.

ШАГ 5: Тестирование работы vsftpd

Из командной строки запускаем клиента FTP:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)

Пробуем залогинеться по тестовым пользователем и другими пользователями, в том числе анонимным. При попытки ввода имени пользователя не указанного в файле vsftpd.userlist должна быть запрет (ответ с кодом 530 Permission denied. Login failed.).

Настройка завершена. Удачи!

FAQ 1: Как посмотреть логи изменений (удаления файлов) на FTP сервере vsftpd?

Чтобы посмотреть кто внёс изменение на сервере через FTP, а точнее удалил файлы используйте лог файл /var/log/xferlog. Укажите параметры логирования как в этом

FAQ 2: Как посмотреть ошибки логирования пользователей на FTP сервере vsftpd?

Частая проблема vsftpd заходит кто то с неправильным паролем — куда смотреть то — логов же нет даже обычный правильный заход не пишется. Вы просто не настроили .

Ошибки логирования у вас должны быть в файле /var/log/vsftpd.log И иметь такой вид:

Thu Nov  5 09:24:55 2020  CONNECT: Client "::ffff:10.26.95.175"
Thu Nov  5 09:24:55 2020   OK LOGIN: Client "::ffff:10.26.95.175"

Поддержка веб-браузера

Большинство распространенных веб-браузеров могут получать файлы, размещенные на FTP-серверах, хотя они могут не поддерживать расширения протокола, такие как FTPS . Когда предоставляется URL-адрес FTP, а не HTTP , доступное содержимое на удаленном сервере представляется таким же образом, как и для другого веб-содержимого. Полнофункциональный FTP-клиент может быть запущен в Firefox в виде расширения под названием FireFTP .

Google Chrome полностью удалил поддержку FTP в Chrome 88. По состоянию на 2019 год Mozilla обсуждала предложения, включая удаление поддержки только старых реализаций FTP, которые больше не используются, для упрощения их кода. В апреле 2021 года Mozilla выпустила Firefox 88.0, в котором по умолчанию отключена поддержка FTP. В июле 2021 года Firefox 90 полностью отказался от поддержки FTP.

Синтаксис

Синтаксис URL-адреса FTP описан в RFC   и имеет форму: (части в квадратных скобках необязательны).

Например, URL-адрес ftp://public.ftp-servers.example.com/mydirectory/myfile.txt представляет файл myfile.txt из каталога mydirectory на сервере public.ftp-servers.example.com в качестве ресурса FTP. . URL-адрес ftp: // user001: secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt добавляет спецификацию имени пользователя и пароля, которые должны использоваться для доступа к этому ресурсу.

Более подробную информацию об указании имени пользователя и пароля можно найти в документации браузеров (например, Firefox и Internet Explorer ). По умолчанию большинство веб-браузеров используют пассивный режим (PASV), который легче преодолевает межсетевые экраны конечных пользователей.

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

Key differences between FTP and SFTP

  • FTP does not provide any secure channel for transferring files between hosts, while SFTP provides a secure channel for transferring files between hosts on a network.
  • FTP is short for File Transfer Protocol, while SFTP is short for Secure File Transfer Protocol.
  • FTP is a service provided by TCP/IP. However, SFTP is part of the SSH protocol, which represents information for remote login.
  • FTP establishes a connection using a control connection on TCP port 21. On the other hand, SFTP transfers the file over a secure connection established via SSH between the client and the server.
  • FTP transfers the password and data in text format, while SFTP encrypts the data before sending it to another host.

Загрузка файлов на FTP сервер

Еще один важный вопрос, которым вы можете задаться при работе с FTP сервером, это загрузка файлов ftplib. С Python вы можете и это! Существует два метода, пользуясь которыми вы можете загружать файлы:

  • storlines – для загрузки текстовых файлов (TXT, HTML, RST)
  • storbinary – для загрузки бинарных файлов (PDF, XLS, etc)

Давайте посмотрим на примере, как мы будем это делать:

Python

import ftplib

def ftp_upload(ftp_obj, path, ftype=’TXT’):
«»»
Функция для загрузки файлов на FTP-сервер
@param ftp_obj: Объект протокола передачи файлов
@param path: Путь к файлу для загрузки
«»»
if ftype == ‘TXT’:
with open(path) as fobj:
ftp.storlines(‘STOR ‘ + path, fobj)
else:
with open(path, ‘rb’) as fobj:
ftp.storbinary(‘STOR ‘ + path, fobj, 1024)

if __name__ == ‘__main__’:
ftp = ftplib.FTP(‘host’, ‘username’, ‘password’)
ftp.login()

path = ‘/path/to/something.txt’
ftp_upload(ftp, path)

pdf_path = ‘/path/to/something.pdf’
ftp_upload(ftp, pdf_path, ftype=’PDF’)

ftp.quit()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

importftplib

defftp_upload(ftp_obj,path,ftype=’TXT’)

«»»

    Функция для загрузки файлов на FTP-сервер
    @param ftp_obj: Объект протокола передачи файлов
    @param path: Путь к файлу для загрузки
    «»»

ifftype==’TXT’

withopen(path)asfobj

ftp.storlines(‘STOR ‘+path,fobj)

else

withopen(path,’rb’)asfobj

ftp.storbinary(‘STOR ‘+path,fobj,1024)

if__name__==’__main__’

ftp=ftplib.FTP(‘host’,’username’,’password’)

ftp.login()

path=’/path/to/something.txt’

ftp_upload(ftp,path)

pdf_path=’/path/to/something.pdf’

ftp_upload(ftp,pdf_path,ftype=’PDF’)

ftp.quit()

В данном примере мы создали функцию для загрузки файлов. Мы берем объект ftp, путь к файлу, который мы хотим залить и тип файла. Далее, мы быстро проверяем тип файла, чтобы определить, используем мы storlines или же storbinary для процесса загрузки. Наконец, в нашем условном операторе внизу мы подключаем FTP сервер, логинимся и загружаем текстовый файл или файл PDF. Простое дополнение к этому – некоторая логика перехода на конкретный каталог после входа в саму систему, поскольку мы явно не хотим просто заливать файлы в корневую папку.

FTPS

FTPS (FTP + SSL) – расширение стандартного протокола передачи файлов, добавляющее в его базовый функционал создание шифрованных сессий с помощью протокола SSL (Secure Sockets Layer — уровень защищенных сокетов). На сегодняшний день защита обеспечивается его более продвинутым аналогом TLS (Transport Layer Security — защита транспортного уровня).

SSL

Протокол SSL предложен корпорацией Netscape Communications в 1996 году с целью обеспечения безопасности и секретности интернет-соединений. Протокол поддерживает аутентификацию (установление подлинности) клиента и сервера, не зависит от приложений и прозрачен для протоколов HTTP, FTP и Telnet.

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

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

SSL поддерживает разнообразные криптографические алгоритмы. В ходе установления связи используется криптосистема открытого ключа RSA. После обмена ключами используется много разных шифров: RC2, RC4, IDEA, DES и TripleDES. Также используется MD5 — алгоритм создания дайджеста сообщений. Синтаксис сертификатов открытого ключа описан в X.509.

Одним из немаловажных преимуществ SSL, является его полная программно-платформенная независимость. Протокол разработан на принципах переносимости, и идеология его построения, не зависит, от тех приложений, в составе которых он используется

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

SSL-подключение

Предоставляемый SSL безопасный канал обладает тремя основными свойствами:

  • Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
  • Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская — аутентифицируется опционально.
  • Канал надежен. Транспортировка сообщений включает в себя проверку целостности (с привлечением MAC).

Особенности FTPS

Существуют две реализации FTPS, использующие различные методы предоставления безопасности:

  • Неявный метод предполагает использование стандартного протокола SSL с установлением сессии перед отправкой данных, что, в свою очередь, нарушает совместимость с обычным FTP клиентами и серверами. Для обратной совместимости с клиентами, которые не поддерживают FTPS, для контрольного соединения используется TCP-порт 990, а для передачи данных — 989. Это позволяет сохранить стандартный порт 21 для протокола FTP. Данный метод признан устаревшим.
  • Явный – намного более удобен, так как использует команды стандартного FTP, но при ответе шифрует данные, что позволяет использовать одно и тоже управляющее соединение как для FTP, так и для FTPS. Клиент должен явно запросить защищенную передачу данных у сервера, а после утвердить способ шифрования. Если клиент не запросит защищенную передачу, FTPS сервер вправе как сохранить, так и закрыть незащищенное соединение. Механизм согласования идентификации и защиты данных был добавлен под RFC 2228 который включает в себя новую FTP команду AUTH. Хотя этот стандарт не определяет явно механизмы защиты, он определяет, что защищенное соединение должен инициировать клиент с помощью описанного выше алгоритма. Если защищенные соединения не поддерживаются сервером, должен быть возвращен код ошибки 504. FTPS клиенты могут получить информацию о поддерживаемых сервером протоколах защиты при помощи команды FEAT, тем не менее сервер не обязан разглашать то, какие уровни безопасности он поддерживает. Наиболее распространены FTPS команды AUTH TLS и AUTH SSL, обеспечивающие защиту TLS и SSL соответственно.

Для чего еще используют FTP

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

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

Пример сеанса FTP

Мы подключились к серверу на порт 21, создали управляющее соединение, сервер нам выдал ответ. 

Ответ FTP сервера, также как и ответы серверов многих прикладных протоколов состоят из двух частей, первая 220 статус, а вторая поясняющее сообщение Welcome to the FTP Server. Статус ответа 220, коды которой начинаются с 2, говорят об успешном выполнении команды, поясняющее сообщение содержит приветствие “Добро пожаловать на FTP сервер”. 

Сначала необходимо пройти аутентификацию. Для этого используется команда USER anonymous и мы хотим подключиться, как анонимный пользователь. 

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

Устанавливаем бинарный режим передачи файлов с помощью команды TYPE 1. Сервер отвечает, что тип передачи данных успешно установлен в 1. 200 Type set to 1

Мы хотим загрузить сервера в файл, показан путь /pud/tex/latex/llncs2e.zip, но перед тем как загрузить, мы хотим узнать его размер, для этого выдаем команду SIZE /pud/tex/latex/llncs2e.zip. Сервер в ответ выдает размер файла в байтах 213 230229

Переходим в пассивный режим с помощью команды PASV

В ответ сервер говорит, что он перешел в пассивный режим 227 Entering Passive Mod (213, 71, 6, 142, 35, 141) и передает нам 6 чисел, которые нужно использовать для установки соединения для передачи данных. Первые 4 числа это IP-адрес, вторые два числа используются, чтобы узнать порт на который нужно установить соединение. Первое число 35 нужно умножить на 256 и прибавить второе число 141, так мы узнаем порт. 

Для того, чтобы загрузить нужный нам файл используем команду RETR /pud/tex/latex/llncs2e.zip. После того, как мы выдали эту команду сервер ждет, что мы установим соединение с IP-адресом и портом, которые он нам указал. 

После того, как соединение для передачи данных установлено, сервер сообщает нам об этом в управляющем соединении. 150 Opening BINARY mode data connection for /pud/tex/latex/llncs2e.zip (230229 bytes). Также сервер говорит, что передача данных ведется в бинарном режиме. 

После того, как передача файла закончена, сервер сообщает нам об этом 226 Transfer complete. Клиент выдает команду QUIT чтобы разорвать соединение. Сервер сообщает нам некоторую статистику, сколько было передано байт и файлов. 221 You have transferred 239229 bytes in 1 file. И говорит до свидания 221 Goodbye. На этом сеанс работы по протоколу FTP завершен. 

Коды ответов FTP

Ниже приводится сводка кодов ответов FTP, которые могут быть возвращены сервером FTP . Эти коды стандартизированы IETF в RFC   . Код ответа представляет собой трехзначное значение. Первая цифра используется для обозначения одного из трех возможных результатов — успеха, неудачи или для обозначения ошибки или неполного ответа:

  • 2yz — успешный ответ
  • 4yz или 5yz — ответ об ошибке
  • 1yz или 3yz — ошибка или неполный ответ

Вторая цифра определяет вид ошибки:

  • x0z — Синтаксис. Эти ответы относятся к синтаксическим ошибкам.
  • x1z — Информация. Отвечает на запросы информации.
  • x2z — Подключения. Ответы, относящиеся к управляющим и информационным соединениям.
  • x3z — Аутентификация и учет. Ответы на процесс входа в систему и процедуры учета.
  • x4z — Не определено.
  • x5z — Файловая система. Эти ответы передают коды состояния из файловой системы сервера.

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

FTP Vulnerability Counteraction

Vulnerabilities of the protocol occurs mainly due to its features and the lack of ways to protect the transmitted information. To increase security, you must use third-party tools, as well as carefully consider the interaction of network nodes via the FTP protocol. The problem of transferring all information in an open form is solved either by using encryption tools, where possible, or by protecting communication channels from unauthorized access. For example, Commander One, the app is a popular alternative to Cyberduck FTP client with the support for FTP/SFTP connections and cloud storages.

To protect passwords from busting, you must configure the FTP server so that connections are closed after a number of password attempts. It is also necessary to provide a pause before responding to each incorrect password, which will significantly slow down their enumeration.

To prevent file theft during passive mode, filtering by IP address is required. While using this filtering, it becomes impossible to exchange between two servers initiated by the client, since the server, which is switched to active mode, will have an address different from the client’s address, and packets from it will be filtered. From the point of view of modern security, the correct solution is to use one of the encrypted FTP implementations (FTPS, SFTP) or use FTP through VPN.

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

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

Adblock
detector