FTP

от автора

в

FTP — протокол передачи файлов

FTP является стандартом Internet для передачи файлов. Необходимо различать передачу файлов, именно то, что предоставляет FTP, и доступ к файлам, что предоставляется такими приложениями как NFS (Network File System, глава 29). Передача файлов заключается в копировании целого файла из одной системы в другую. Чтобы использовать FTP, необходимо иметь учетную запись (бюджет) на сервере, или можно воспользоваться так называемым анонимным FTP (anonymous FTP).

RFC 959 [Postel and Reynolds 1985] является официальной спецификацией FTP. Этот RFC описывает историю и развитиие передачи файлов в течение времени.

Протокол FTP
FTP отличается от других приложений тем, что он использует два TCP соединения для передачи файла.

1.Управляющее соединение устанавливается как обычное соединение клиент-сервер. Сервер осуществляет пассивное открытие на заранее известный порт FTP (21) и ожидает запроса на соединение от клиента. Клиент осуществляет активное открытие на TCP порт 21, чтобы установить управляющее соединение. Управляющее соединение существует все время, пока клиент общается с сервером. Это соединение используется для передачи команд от клиента к серверу и для передачи откликов от сервера.

2.Соединение данных открывается каждый раз, когда осуществляется передача файла между клиентом и сервером. (Оно также открывается и в другие моменты, как мы увидим позже.) Тип сервиса IP для соединения данных должен быть «максимальная пропускная способность», так как это соединение используется для передачи файлов.

Из рисунка видно, что интерактивный пользователь обычно не видит команды и отклики, которые передаются по управляющему соединению. Эти детали оставлены двум интерпретаторам протокола. Квадратик, помеченный как «пользовательский интерфейс», это именно то, что видит интерактивный пользователь (полноэкранный интерфейс, основанный на меню, командные строки и так далее). Интерфейс конвертирует ввод пользователя в FTP

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

Команды FTP

Команды и отклики передаются по управляющему соединению между клиентом и сервером в формате NVT ASCII. В конце каждой строки команды или отклика присутствует пара CR, LF.
Команды состоят из 3 или 4 байт, а именно из заглавных ASCII символов, некоторые с необязательными аргументами.

help — получить список команд поддерживаемых ftp-сервером
ls или dir — список файлов или директорий
pwd — показать текущую директорию
cd — перейти к указанной директории
mkdir — создать директорию
rmdir — удалить директорию, если она не пустая
[m]get — получить файл[ы] с сервера
[m]put — отправить файл[ы] на сервер
TYPE {binary | ascii} — указать режим передачи данных
quit или exit — завершить работу с сервером

Установка FTP сервера (ProFTPd и OpenSSL)

sudo apt install proftpd
sudo apt install openssl

Из соображений безопасности вам необходимо добавить эти строки в /etc/proftpd/proftpd.conf

DefaultRoot ~         делает корнем домашнюю директорию
IdentLookups off
ServerIdent on "FTP Server ready."  

Создаем SSL сертификат для TLS

TLS (англ. Transport Layer Security) — криптографический протокол, обеспечивающий защищённую передачу данных между узлами в сети Интернет. TLS-протокол основан на Netscape SSL-протоколе версии 3.0. Различие между SSL 3.0 и TLS 1.0 незначительные, поэтому далее в тексте термин «SSL» будет относиться к ним обоим.

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

Часто происходит лишь аутентификация сервера, в то время как клиент остается неаутентифицированным.

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

SSL включает в себя три основных фазы:

  • Диалог между сторонами, целью которого является выбор алгоритма шифрования
  • •Обмен ключами на основе криптосистем с открытым ключом или аутентификация на основе сертификатов.
  • •Передача данных, шифруемых при помощи симметричных алгоритмов шифрования

Для использования TLS нам необходимо создать SSL сертификат в каталоге /etc/proftpd/ssl/

создаем каталог где будем хранить сертификаты

mkdir /etc/proftpd/ssl

Генерируем SSL сертификат

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Вводим вашу регистрационную информацию
Country Name (2 letter code) [AU]: RU
State or Province Name (full name) [SomeState]: Moscow
Locality Name (eg, city) []: Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]: CLASS
Organizational Unit Name (eg, section) []: IT
Common Name (eg, YOUR name) []: rantivi.ru
Email Address []: root@localhost

Включаем TLS в ProFTPd

Для того, чтобы включить TLS для ProFTPd необходимо открыть файл конфигурации /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf

И раскомментировать строку

#

This is used for FTPS connections

#

Include /etc/proftpd/tls.conf

Теперь откройте /etc/proftpd/tls.conf

И отредактируйте его таким образом

TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on

Если у вас TLSRequired on, тогда только пользователи с включенным TLS получат доступ к вашему FTP серверу (могут возникнуть проблемы у пользователей использующих старые FTP клиенты не поддерживающие TLS). Для того чтобы все пользователи могли соединиться с FTP закомментируйте строку TLSRequired on, либо измените значение на Off

Перезапускаем ваш ProFTPd

sudo systemctl restart proftpd

Теперь вы можете попробовать подключиться с использованием ftp-ssl клиента, или любого другого (если у вас TLSRequired off)

ftp-ssl user@host

В случае возникновения проблем с TLS смотрите логи /var/log/proftpd/tls.log

Комментарии

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

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

Аватар пользователя yuliaadmin

Об авторе


Поиск по сайту


Полезные ссылки

Ссылки, которые я считаю полезными и хочу поделиться.