Sftp что это такое
SFTP (SSH File Transfer Protocol): Что Это Такое и Как Его Использовать
FTP — это стандартный метод передачи файлов или других данных между компьютерами, однако с каждым днём он становится всё более устаревшим, учитывая современные стандарты безопасности. К счастью, именно здесь на помощь приходит SFTP, который пользователи VPS-хостинга найдут особенно полезным.
В этом руководстве мы покажем, как использовать SFTP для безопасной передачи файлов, поговорим о некоторых других полезных командах и подробнее остановимся на том, как это работает.
Как подключиться к серверу по SFTP?
SFTP — это подсистема SSH. Следовательно, этот протокол поддерживает все методы аутентификации SSH. Хотя настроить и использовать аутентификацию по паролю намного проще, вход в систему с помощью ключей SSH по SFTP без пароля намного безопаснее.
Подробную информацию о том, как настроить ключи SSH можно найти в этом руководстве. Когда вы будете готовы, выполните следующие действия, чтобы подключиться по SFTP:
После подключения вы увидите командную оболочку SFTP.
Как передавать файлы по SFTP?
Здесь мы покажем вам, как передавать удалённые файлы в локальную систему и наоборот с помощью SFTP.
Обратите внимание! Вы также можете передавать файлы с помощью SFTP-клиентов, таких как WinSCP или FileZilla. Если вас интересует последний, ознакомьтесь с нашим руководством на эту тему.
Передача удалённых файлов с сервера в локальную систему
Для начала давайте проверим, какие локальный и удалённый рабочие каталоги мы используем. Для этого воспользуемся следующими командами SFTP:
Теперь давайте посмотрим, как передать файл с удалённого сервера на локальный компьютер с помощью команды get. Вот основной синтаксис команды get:
Например, чтобы скопировать файл /etc/xinetd.conf с удалённого сервера на локальный компьютер, вы должны использовать команду:
По завершению загрузки вы найдёте файл xinetd.conf в каталоге /user/home на вашей локальной машине.
Чтобы загрузить по SFTP несколько файлов, используйте команду mget. Для загрузки в текущий рабочий каталог все файлы из каталога /etc с расширением .conf, воспользуйтесь следующей командой:
После загрузки вы найдёте все файлы *.conf в каталоге /user/home на вашем компьютере.
Передача файлов с локального компьютера на удалённый сервер
Чтобы скопировать файл с локального компьютера на удалённый сервер, мы снова воспользуемся командой get. В этом случае синтаксис команды get будет следующим:
Чтобы переместить файл example.txt с локальной машины на удалённую, введите следующую команду:
Теперь мы найдём файл в корневом каталоге удалённого сервера. Вы также можете попробовать передать несколько файлов с помощью команды mput. Работает почти так же, как mget:
Эта команда переместит все файлы с расширением .txt в папке /home/user-name с локального компьютера на удалённый в каталог /root.
Обратите внимание! Для загрузки и выгрузки файлов по SFTP вам нужно будет ввести команду put или get и нажать клавишу TAB.
Команды для навигации по SFTP
Некоторые команды можно использовать для более эффективной навигации по удалённым и локальным серверам с помощью SFTP. Они похожи на те, которые вы бы использовали в командной строке Linux.
Например, команда pwd всегда поможет узнать, в каком рабочем каталоге вы находитесь.
Вы также можете вывести список файлов и каталогов, которые вы используете для удалённого каталога:
Аналогично для локального рабочего каталога:
Вывод будет выглядеть примерно так:
Чтобы переключиться из одного удалённого рабочего каталога на другой локальный рабочий каталог, введите следующие команды:
Наконец, используйте ! и команды exit, чтобы вернуться в локальную оболочку и выйти из SFTP.
Основы обслуживания файлов с использованием SFTP
SFTP также позволяет управлять каталогами и файлами с помощью определённых команд.
Чтобы проверить дисковое пространство удалённого сервера в гигабайтах, используйте функцию df следующим образом:
Используйте команду mkdir, чтобы создать новый каталог на удалённом или локальном сервере:
Вы можете удалить его с удалённого сервера с помощью команды rmdir:
Переименовать удалённый файл тоже довольно просто:
Если вы хотите удалить удалённый файл, используйте команду rm:
В то время как команда chown используется для замены владельца файла:
Значением userid может быть либо имя пользователя, либо числовой идентификатор пользователя. Например:
chgrp используется для изменения владельца группы файла:
Наконец, вам нужно будет использовать интерактивную команду chmod, чтобы изменить права доступа к файлу:
В этом примере трёхзначное значение обозначает пользователя, группу и других пользователей файла.
Что касается разрешений на чтение (r), запись (w) и выполнение (x), их значения равны 4, 2, 1 соответственно. 0 также может использоваться, чтобы не предоставлять никаких разрешений.
Чтобы назначить разрешения, просто вычислите общие значения для каждого класса пользователей. Вот подробный пример:
Список полезных команд SFTP
Если вам нужна шпаргалка, вот список всех доступных команд SFTP. Вы можете найти этот список самостоятельно, просто введя команду вызова справки help или ? — обе предложат один и тот же результат.
Что такое SFTP?
SFTP, или SSH File Transfer Protocol — более безопасный способ передачи файлов. Используя протокол SSH, он поддерживает шифрование и другие методы безопасности для лучшей защиты передачи файлов. Это единственный безопасный протокол, который защищает от атак на любом этапе процесса передачи данных.
Во время передачи файлов все данные разделяются на пакеты и отправляются через единое безопасное соединение.
SFTP шифрует конфиденциальную информацию при передаче между клиентом и сервером и делает её нечитаемой. Другими словами, исходное содержимое (открытый текст) заменяется бессвязной строкой символов (зашифрованным текстом).
Только получатель с требуемым ключом дешифрования сможет увидеть исходный контент. Это предотвращает любой несанкционированный доступ к данным во время передачи файлов.
Обычный протокол передачи файлов (FTP) имеет два разных канала для обмена данными — командный канал и канал даных. SFTP имеет только один зашифрованный канал, по которому данные передаются зашифрованными, отформатированными пакетами.
Заключение
В этом руководсве мы охватили основы использования SFTP для безопасной передачи файлов. Мы надеемся, что эта статья была вам полезной. Однако, если вам нужна дополнительная информация только о FTP, вы можете найти больше руководств здесь.
Также, если у вас возникли вопросы, не стесняйтесь оставлять их в комментариях ниже.
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Sftp что это такое
SFTP расшифровывается как SSH File Transfer Protocol — SSH-протокол для передачи файлов.
Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения.
Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2, но это не обязательно.
В сравнении с другим протоколом, тоже предназначенным для копирования файлов поверх SSH — протоколом SCP, который позволяет только копировать файлы, SFTP даёт возможность выполнять намного больше операций с ними: например, докачивать файл после разрыва соединения или удалять файл на сервере и многие другие операции. По этой причине существуют графические и псевдографические клиенты для SFTP, но нет таких, кто использовал бы только SCP в чистом виде.
Последнее утверждение может вызвать сомнения, ведь известно, что существуют WinSCP, модуль расширения для FAR и другие подобные менеджеры, содержащие SCP в названии, что может навести на мысль, что все их возможности реализуются через протокол SCP.
SFTP призван быть более платформонезависимым чем SCP. В частности, как раскрывать файловые шаблоны, описывается в самом стандарте — и это не зависит от сервера. В то время как в SCP как будут раскрыты файловые шаблоны было полностью на совести сервера, точнее командного интерпретатора пользователя. SCP-серверы более распространены для Unix, а SFTP как для Unix, так и для Windows.
Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP — это новый протокол, разработанный с нуля. Ещё его иногда путают с Simple File Transfer Protocol. SFTP расшифровывается как SSH File Transfer Protocol и ничего общего с Simple File Transfer Protocol не имеет.
Сам по себе протокол SFTP не обеспечивает безопасность работы; это делает нижележащий протокол. Как правило, SFTP используется в сочетании с протоколом SSH2 (он даже был разработан той же рабочей группой). Можно использовать SFTP и с другими протоколами, например SSH1, но это сопряжено с дополнительными трудностями.
При загрузке (upload) файлов наряду с данными на сервер могут копироваться и метаданные файла, в частности временные метки (timestamps), что при желании даёт возможность сохранить в загруженном на сервер файле время модификации неизменным.
В настоящий момент протокол SFTP не принят в качестве официального стандарта Интернет.Наиболее новая спецификация есть в черновике (draft), который описывает версию 6 протокола. Самой распространённой версией является 3-я, которая реализована в SSH-сервере OpenSSH. В большинстве Windows-клиентов реализована версия 4. SFTP, начиная с версии 4, становится более платформонезависимым и работает одинаково на Unix и Windows.
[править] Сервер SFTP
SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:
Как правило, это строка уже указана в конфигурационном файле sshd по умолчанию, так что SFTP работает сразу и не требует никаких дополнительных действий для включения.
[править] Клиент SFTP
SFTP-клиент sftp встроен в пакет OpenSSH.
Форма вызова команды:
В первой форме sftp подключается к удалённому серверу SFTP хост и переходит в интерактивный режим работы.
Во втором случае sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1 (или файл2, если это имя указано).
Третья форма, также как и первая, переводит sftp в интерактивный режим; с той только разницей, что работа на удалённом сервере начинается с определённого каталога.
В четвёртой форме после подключения к серверу выполняется batchfile, содержащий команды sftp. В качестве имени файла может быть указан символ —, в этом случае batchfile читается со стандартного потока ввода.
Подробнее о синтаксисе sftp можно прочитать в sftp(1).
Программа sftp использует в качестве транспорта ssh, и аутентификация на удалённом сервер выполняется средствами ssh. Если есть необходимость вместо ssh использовать другую программу, это можно сделать указав её имя в опции -S sftp.
В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp-клиент Filezilla.
[править] Дополнительные вопросы
[править] chroot для SFTP в FreeBSD
Прикладываем его, пересобираем и устанавливаем пропатченый sftp-server:
Последняя операция, chmod, очень важна, sftp-server должен быть suid root, иначе ничего работать не будет.
У пользователя в домашнем каталоге вообще не должно быть никаких бинарников и конфигурационных файлов, всё работает и без них. Единственное что нужно сделать чтобы работал только sftp и ничего больше. Реализуется это простеньким скриптом на perl:
который ставится в качестве shell для нужного пользователя. Также нужно, чтобы у данного пользователя работал chroot, у него в поле home в passwd написать не ‘/home/user’, а ‘/home/user/./’, что будет означать в принципе то же самое, что и ‘/home/user’, но даст указание sftp-server, когда нужно выполнить chroot(2).
[править] Как установить umask для SFTP-сервера?
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
SFTP (SSH File Transfer Protocol)
Уровень (по модели OSI): | Прикладной |
---|---|
Семейство: | стек протоколов TCP/IP |
Порт/ID: | 67, 68/UDP |
Назначение протокола: | Получение сетевой конфигурации |
Спецификация: | RFC 2131 |
Основные реализации (серверы): | dhcpd, ISC DHCP Server, Infoblox |
Вступил в силу с: | 1990 |
SFTP(англ. SSH File Transfer Protocol, also Secure File Transfer Protocol ) — SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Протокол разработан группой Internet Engineering Task Force(IETF) как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня.
Протокол предполагает, что он работает поверх установленного безопасного канала, что сервер уже аутентифицировал клиента и что идентификатор клиента доступен протоколу. Сервер SFTP обычно использует порт 22.
Содержание
Возможности SFTP
По сравнению с протоколом SCP, который позволяет только передачу файлов, протокол SFTP допускает ряд других операции на удаленных файлах. Дополнительные возможности SFTP клиента включают возобновление, прерывание передачи и удаление файла.
SFTP более независимым от платформы, чем SCP. В то время как SCP наиболее часто реализуется на платформах Unix, серверы SFTP обычно доступны на большинстве платформ.
SSH File Transfer Protocol не является протоколом FTP работающим поверх SSH — это другой, новый протокол. Также SFTP иногда путают с Simple File Transfer Protocol из-за совпадающего сокращения «SFTP».
Сам протокол не обеспечивает аутентификацию и безопасность. Ожидается, что базовый протокол должен выполнить это. SFTP чаще всего используется в качестве подсистемы реализаций версии 2 протокола SSH, разработанных той же рабочей группой.
Загруженные файлы могут быть связаны с их основными атрибутами, такими как метки времени. Это является преимуществом перед протоколом FTP, у которого нет условия для загрузок, чтобы включать исходный атрибут даты/метки времени без справки.
История и развитие
Версия 3
Версия 4
Версия 5
Draft 05 в IETF Internet Draft определяет версии 5 протокола.
Версия 6
SFTP Клиент
SFTP-клиент встроен в пакет OpenSSH.
Форма вызова команды:
В первой форме sftp подключается к удалённому серверу SFTP хост и переходит в интерактивный режим работы.
Во втором случае sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1 (или файл2, если это имя указано).
Третья форма, также как и первая, переводит sftp в интерактивный режим; с той только разницей, что работа на удалённом сервере начинается с определённого каталога.
В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp-клиент Filezilla.
SFTP Сервер
SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:
Как правило, это строка уже указана в конфигурационном файле sshd по умолчанию, так что SFTP работает сразу и не требует никаких дополнительных действий для включения.
Использование SFTP для безопасной передачи файлов с удаленного сервера
Published on February 4, 2015
Введение
FTP, или протокол передачи файлов, был популярным методом незашифрованной передачи файлов между двумя удаленными системами.
SFTP, протокол передачи файлов по SSH, или безопасный протокол передачи файлов, — это отдельный протокол, поддерживающий SSH, который работает схожим образом, но использует защищенное подключение. Его преимуществом является возможность использования защищенного подключения для передачи файлов и просмотра файловой системы как на локальной, так и на удаленной системе.
Практически во всех случаях использование SFTP будет более предпочтительным по сравнению с FTP из-за имеющихся у первого функций безопасности и возможности использования подключения SSH. FTP — это небезопасный протокол, который следует использовать в ограниченных случаях или в сетях, которым вы доверяете.
Хотя SFTP интегрирован во многие графические инструменты, в этом руководстве мы покажем, как использовать его с помощью интерактивного интерфейса командной строки.
Подключение через SFTP
По умолчанию SFTP использует протокол SSH для аутентификации и установки защищенного подключения. По этой причине протокол использует те же методы аутентификации, что и SSH.
Хотя использовать пароли удобно и они настроены по умолчанию, мы рекомендуем вам создать ключи SSH и передать ваш публичный ключ любой системе, доступ к которой вам нужен. Это более безопасно и поможет сэкономить время в долгосрочной перспективе.
Ознакомьтесь с этим руководством по настройке ключей SSH для доступа к вашему серверу, если вы еще не сделали этого.
Если вы смогли подключиться к компьютеру через SSH, это означает, что вы выполнили все необходимые требования для использования SFTP при управлении файлами. Протестируйте доступ SSH с помощью следующей команды:
Если все работает, можно вернуться назад с помощью следующей команды:
Теперь мы можем создать сеанс SFTP с помощью следующей команды:
Вы установите подключение к удаленной системе, а ваше приглашение для ввода будет заменено на приглашение SFTP.
Если вы используете пользовательский порт SSH (а не используемый по умолчанию порт 22), то можете открыть сеанс SFTP следующим образом:
В результате выполнения этой команды будет установлено подключение к удаленной системе через указанный вами порт.
Использование справки SFTP
Самой полезной командой, с которой нужно познакомиться в первую очередь, является команда вызова справки. Она предоставляет доступ к основной справочной информации SFTP. Вы можете воспользоваться одной из следующих команд:
После этого в терминале будет выведен список доступных команд:
Мы познакомимся с некоторыми из команд, который вы видите выше, в следующих разделах.
Навигация с помощью SFTP
Мы можем перемещаться по иерархии файлов удаленной системы с помощью ряда команд, которые работают так же, как аналогичные команды оболочки.
Давайте сориентируемся и узнаем, в каком каталоге удаленной системы мы сейчас находимся. Как в стандартном сеансе оболочки, мы можем ввести следующую команду, чтобы получить текущий каталог:
Мы можем просмотреть содержимое текущего каталога удаленной системы с помощью другой хорошо знакомой команды:
Обратите внимание, что команды в интерфейсе SFTP не являются стандартными командами оболочки и не поддерживают весь их функционал, но они позволяют использовать некоторые из наиболее важных флагов:
Чтобы перейти в другой каталог, воспользуйтесь следующей командой:
Все описанные ранее команды имеют локальные эквиваленты. Мы можем вывести локальный рабочий каталог:
Мы можем вывести содержимое текущего каталога на локальном компьютере:
Также мы можем изменить каталог, с которым хотим работать на локальном компьютере:
Передача файлов с помощью SFTP
Навигация по удаленной и локальной файловой системе дает ограниченную пользу без возможности передачи файлов между двумя файловыми системами.
Передача удаленных файлов в локальную систему
При необходимости загрузки файлов с удаленного хоста мы можем воспользоваться следующей командой для выполнения этой задачи:
Как видите, по умолчанию команда get загружает удаленный файл и сохраняет файл с тем же именем в локальной файловой системе.
Мы можем скопировать удаленный файл с другим именем, указав после команды нужное имя:
Команда get также имеет несколько флагов. Например, мы можем скопировать каталог и все его содержимое с помощью рекурсивной опции:
Передача локальных файлов в удаленную систему
Передача файлов в удаленную систему осуществляется таким же удобным образом с помощью команды с именем «put»:
Любая другая локальная команда будет работать согласно ожиданиям. Чтобы вернуться в сеанс SFTP, введите:
Вы должны увидеть, что приглашение SFTP вернулось.
Простые манипуляции с файлами с помощью SFTP
SFTP позволяет выполнять набор базовых действий по обслуживанию файлов, которые могут быть полезны при работе с иерархиями файлов.
Например, вы можете изменить владельца файла в удаленной системе с помощью следующей команды:
Обойти это ограничение можно следующим образом:
UID находится в третьей колонке файла и отделяется двоеточием.
Аналогичным образом, мы можем изменить владельца группы для файла с помощью следующей команды:
Опять же не существует удобного способа получения списка групп удаленной системы. Мы можем обойти это ограничение с помощью следующей команды:
В третьем столбце содержится идентификатор группы, связанной с именем в первом столбце. Именно этот идентификатор мы и ищем.
К счастью, команда chmod работает в удаленной файловой системе стандартным образом:
Команда для управления локальными разрешениями для файлов отсутствует, но вы можете настроить локальную пользовательскую маску, чтобы любые файлы, скопированные в локальную систему, имели соответствующие разрешения.
Это можно сделать с помощью команды lumask :
SFTP позволяет создавать каталоги как для локальных, так и для удаленных систем с помощью команд lmkdir и mkdir соответственно. Эти команды работают ожидаемым образом.
Остальные команды для файлов предназначены только для удаленной файловой системы:
Эти команды воспроизводят базовое поведение команд, используемых в оболочке. Если вам потребуется выполнить эти действия в локальной файловой системе, помните о том, что вы можете перейти в оболочку, воспользовавшись этой командой:
После завершения работы с сеансом SFTP используйте exit или bye для закрытия подключения.
Заключение
Хотя SFTP — это простой инструмент, он очень полезен для администрирования серверов и передачи файлов между ними.
Например, вы можете использовать SFTP для предоставления конкретным пользователям возможности для передачи файлов без доступа SSH. Для получения дополнительной информации по этому вопросу ознакомьтесь с нашим руководством по использованию SFTP без доступа к оболочке.
Если вы используете FTP или SCP для передачи данных, SFTP будет отличным способом повышения безопасности обеих решений. Хотя данный протокол не подходит для всех ситуаций, он обладает достаточно гибкостью и заслуживает активного использования.
Протоколы SFTP и FTPS
Буквально неделю назад я писал реферат по обозначенной в заголовке теме и столкнулся с тем, что, скажем так, познавательной информации в сети не так уж много. В основном сухие факты и инструкции по настройке. Поэтому я решил несколько подкорректировать текст и выложить его в качестве статьи.
FTP (File Transfer Protocol) – протокол передачи файлов по сети. Является одним из базовых протоколов Ethernet. Появился в 1971 году и изначально работал в сетях DARPA. На данный момент, как и HTTP, файловая передача основывается на модели, состоящей из совокупности протоколов TCP/IP (Transmission Control Protocol/Internet Protocol). Определён в RFC 959.
Протокол определяет следующее:
Взаимодействие между клиентом и сервером
Рассмотрим происходящие при работе FTP процессы подробнее. Соединение инициализируется интерпретатором протокола пользователя. Управление обменом осуществляется по каналу управления в стандарте TELNET. Команды FTP генерируются интерпретатором протокола пользователя и передаются на сервер. Ответы сервера отправляются пользователю также по каналу управления. В общем случае пользователь имеет возможность установить контакт с интерпретатором протокола сервера и отличными от интерпретатора пользователя средствами.
Основная особенность FTP в том, что он использует двойное подключение. Одно из них используется для передачи команд серверу и происходит по умолчанию через TCP-порт 21, который может быть изменён. Управляющее соединение существует все время, пока клиент общается с сервером. Канал управления должен быть открыт при передаче данных между машинами. В случае его закрытия передача данных прекращается. Через второе происходит непосредственная передача данных. Оно открывается каждый раз, когда осуществляется передача файла между клиентом и сервером. В случае, если одновременно передаётся несколько файлов, для каждого из них открывается свой канал передачи.
FTP может работать в активном или пассивном режиме, от выбора которого зависит способ установки соединения. В активном режиме клиент создаёт управляющее TCP-соединение с сервером и отправляет серверу свой IP-адрес и произвольный номер клиентского порта, после чего ждёт, пока сервер запустит TCP-соединение с этим адресом и номером порта. В случае, если клиент находится за брандмауэром и не может принять входящее TCP-соединение, может быть использован пассивный режим. В этом режиме клиент использует поток управления, чтобы послать серверу команду PASV, и затем получает от сервера его IP-адрес и номер порта, которые затем используются клиентом для открытия потока данных со своего произвольного порта.
Возможна ситуация, когда данные могут передаваться на третью машину. В этом случае пользователь организует канал управления с двумя серверами и организует прямой канал данных между ними. Команды управления идут через пользователя, а данные напрямую между серверами.
При передаче данных по сети могут быть использованы четыре представления данных:
Передача данных может осуществляться в любом из трёх режимов:
FTP server – это сервер, который предусматривает возможность использования протокола передачи файлов. Он обладает определенными особенностями, отличающими его от обычных веб-серверов:
FTP client – это программа, позволяющая подключиться к удаленному серверу по FTP и также выполнять на нем необходимые действия с элементами файловой системы. Клиентом вполне может быть браузер, в адресную строку которого следует ввести адрес, представляющий собой путь до определенного каталога или файла на удаленном сервере, в соответствии с общей блок-схемой URL:
Однако же, использование веб-обозревателя в таком разрезе позволит лишь просмотреть или скачать интересующие файлы. Для того, чтобы в полной мере задействовать все плюсы FTP, в качестве клиента следует применить специализированное программное обеспечение.
FTP-аутентификация использует схему имя пользователя/пароль для предоставления доступа. Имя пользователя посылается серверу командой USER, а пароль – командой PASS. Если предоставленная клиентом информация принята сервером, то сервер отправит клиенту приглашение и начинается сессия. Пользователи могут, если сервер поддерживает эту особенность, войти в систему без предоставления учётных данных, но сервер может предоставить только ограниченный доступ для таких сессий.
Хост, обеспечивающий FTP-сервис, может предоставить анонимный доступ к FTP. Пользователи обычно входят в систему как «anonymous» (может быть регистрозависимым на некоторых FTP-серверах) в качестве имени пользователя. Хотя обычно пользователей просят прислать адрес их электронной почты вместо пароля, никакой проверки фактически не производится. Многие FTP-хосты, предоставляющие обновления программного обеспечения, поддерживают анонимный доступ.
Схема протокола
Взаимодействие «клиент-сервер» при FTP-соединении можно наглядно представить следующим образом:
Безопасный FTP
FTP изначально не задумывался как защищенный, поскольку предназначался для связи между несколькими военными объектами и учреждениями. Но с развитием и распространением интернета опасность несанкционированного доступа возросла во много раз. Возникла необходимость защиты серверов от различного рода атак. В мае 1999 авторы RFC 2577 свели уязвимости в следующий список проблем:
Обычный FTP не обладает возможностью передачи данных в зашифрованном виде, вследствие чего имена пользователей, пароли, команды и другая информация могут при желании легко и просто быть перехвачены злоумышленниками. Обычное решение этой проблемы — использовать «безопасные», TLS-защищённые версии уязвимых протокола (FTPS) или же другой, более защищённый протокол, вроде SFTP/SCP, предоставляемого с большинством реализаций протокола Secure Shell.
FTPS (FTP + SSL) – расширение стандартного протокола передачи файлов, добавляющее в его базовый функционал создание шифрованных сессий с помощью протокола SSL (Secure Sockets Layer — уровень защищенных сокетов). На сегодняшний день защита обеспечивается его более продвинутым аналогом TLS (Transport Layer Security — защита транспортного уровня).
Протокол SSL предложен корпорацией Netscape Communications в 1996 году с целью обеспечения безопасности и секретности интернет-соединений. Протокол поддерживает аутентификацию (установление подлинности) клиента и сервера, не зависит от приложений и прозрачен для протоколов HTTP, FTP и Telnet.
Протокол SSL Handshake состоит из двух этапов: установление подлинности сервера и необязательное установление подлинности клиента. На первом этапе сервер в ответ на запрос клиента посылает свой сертификат и параметры шифрования. Затем клиент генерирует мастер-ключ, зашифровывает его открытым ключом сервера и отсылает серверу. Сервер расшифровывает мастер-ключ своим частным ключом и подтверждает свою подлинность клиенту, возвращая ему сообщение, заверенное мастером-ключом клиента.
Последующие данные шифруются и заверяются ключами, полученными на основе этого мастера-ключа. На втором этапе, который не является обязательным, сервер посылает запрос клиенту, а клиент подтверждает серверу свою подлинность, возвращая запрос с собственной цифровой подписью и сертификат открытого ключа.
SSL поддерживает разнообразные криптографические алгоритмы. В ходе установления связи используется криптосистема открытого ключа RSA. После обмена ключами используется много разных шифров: RC2, RC4, IDEA, DES и TripleDES. Также используется MD5 — алгоритм создания дайджеста сообщений. Синтаксис сертификатов открытого ключа описан в X.509.
Одним из немаловажных преимуществ SSL, является его полная программно-платформенная независимость. Протокол разработан на принципах переносимости, и идеология его построения, не зависит, от тех приложений, в составе которых он используется. Помимо этого, важно и то, что поверх протокола SSL, могут прозрачно накладываться и другие протоколы; либо для еще большего увеличения степени защиты целевых информационных потоков, либо, для адаптации криптографических способностей SSL под какую-нибудь другую, вполне определенную задачу.
SSL-подключение
Предоставляемый SSL безопасный канал обладает тремя основными свойствами:
Особенности FTPS
Существуют две реализации FTPS, использующие различные методы предоставления безопасности:
SFTP (Secure File Transfer Protocol) – протокол прикладного уровня передачи файлов, работающий поверх безопасного канала. Не следует путать с (Simple File Transfer Protocol), имеющим такую же аббревиатуру. Если FTPS является просто расширением FTP, то SFTP это отдельный и никак не связанный с ним протокол, который в качестве основы использует SSH (Secure Shell – безопасная оболочка).
Secure Shell
Разработкой протокола занималась одна из групп IETF под названием Secsh. Рабочая документация к новому протоколу SFTP не стала официальным стандартом, однако начала активно применяться для разработки приложений. В дальнейшем было выпущено шесть версий протокола. Однако, постепенное наращивание в нём функциональности привело к тому, что 14 августа 2006 года было принято решение о прекращении работы над развитием протокола в связи с выполнением основной задачи проекта (разработка SSH) и отсутствием достаточного экспертного уровня для перехода к разработке полноценного протокола удалённой файловой системы.
SSH – это сетевой протокол, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол. Таким образом, можно не только удалённо работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удалённого запуска клиентов X WindowSystem.
Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Тату Улёненом из Технологического университета Хельсинки (Финляндия). SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, несовместимая с SSH-1. Протокол приобрел ещё большую популярность, и к 2000 году у него было около двух миллионов пользователей. В настоящее время под термином «SSH» обычно подразумевается именно SSH-2, т.к. первая версия протокола ввиду существенных недостатков сейчас практически не применяется. В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта.
Распространены две реализации SSH: частная коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80 % компьютеров сети Интернет использовало именно OpenSSH. Частная реализация разрабатывается организацией SSH Communications Security, которая является стопроцентным подразделением корпорации Tectia, она бесплатна для некоммерческого использования. Эти реализации содержат практически одинаковый набор команд.
Протокол SSH-2, в отличие от протокола telnet, устойчив к атакам прослушивания трафика («снифинг»), но неустойчив к атакам «человек посередине». Протокол SSH-2 также устойчив к атакам путем присоединения посредине (англ. sessionhijacking), так как невозможно включиться в уже установленную сессию или перехватить её.
Для предотвращения атак «человек посередине» при подключении к хосту, ключ которого ещё не известен клиенту, клиентское ПО показывает пользователю «слепок ключа» (англ. keyfingerprint). Рекомендуется тщательно проверять показываемый клиентским ПО «слепок ключа» со слепком ключа сервера, желательно полученным по надёжным каналам связи или лично.
Поддержка SSH реализована во всех UNIX-подобных системах, и на большинстве из них в числе стандартных утилит присутствуют клиент и сервер ssh. Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил после широкого развития анализаторов трафика и способов нарушения работы локальных сетей, как альтернативное небезопасному протоколу Telnet решение для управления важными узлами.
Связь с использованием SSH
Для работы по SSH нужен SSH-сервер и SSH-клиент. Сервер прослушивает соединения от клиентских машин и при установлении связи производит аутентификацию, после чего начинает обслуживание клиента. Клиент используется для входа на удалённую машину и выполнения команд.
Сравнение с FTPS
Главное, что отличает SFTP от стандартного FTP и FTPS, это то, что SFTP шифрует абсолютно все команды, имена пользователей, пароли и другую конфиденциальную информацию.
Оба протокола FTPS и SFTP используют сочетание асимметричных алгоритмов (RSA, DSA), симметричных алгоритмов (DES/3DES, AES, Twhofish т.д.), а также алгоритм обмена ключами. Для аутентификации FTPS (или, если быть более точным, SSL / TLS по протоколу FTP) использует сертификаты X.509, в то время как SFTP (SSH протокол) использует SSH ключи.
Сертификаты X.509 включает в себя открытый ключ и некоторую информацию о сертификате владельца. Эта информация позволяет, с другой стороны, проверить целостность самого сертификата, подлинность и владельца свидетельства. Сертификатов X.509 имеет соответствующий закрытый ключ, который обычно хранится отдельно от сертификата по соображениям безопасности.
SSH ключ содержит только открытый ключ (соответствующий закрытый ключ хранится отдельно). В нем не содержится никакой информации о владельце ключа. Некоторые SSH реализации используют сертификаты X.509 для аутентификации, но на самом деле они не проверяют всю цепочку сертификатов — только открытый ключ используется (что делает такую проверку подлинности неполной).
Заключение
Протокол FTP, несомненно, до сих пор играет важную роль в вопросе хранения и распространения информации в сети несмотря на свой почтенный возраст. Это удобный, многофункциональный и стандартизированный протокол. На его базе построено множество файловых архивов, без которых техническая работа была бы не столь эффективна. Кроме того, он лёгок в настройке, а программы-серверы и клиенты существуют практически для всех актуальных и не очень платформ.
В свою очередь его защищённые версии решают проблему конфиденциальности хранимых и передаваемых данных в современном мире. Оба новых протокола имеют свои плюсы и минусы и выполняют немного разные роли. В тех областях, где необходим именно файловый архив предпочтительнее использовать FTPS, особенно если раньше там уже использовался классический FTP. SFTP менее распространён в силу своей несовместимости со старым протоколом, но более защищён и имеет больший функционал, так как является частью системы удалённого управления.