Устанавливаем ProFTPd с поддержкой SSL

Linux > Устанавливаем ProFTPd с поддержкой SSL
24.02.2015 13:38:59



Статья:

Протокол FTP

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

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

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

FTP-сервер поддерживает 2 режима передачи данных: ascii и binary, что определяется переданными ему командами.

Команды FTP

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

Команда1

Описание

help

получить список команд поддерживаемых ftp-сервером

ls или dir

список файлов или директорий

pwd

показать текущую директорию

cd

перейти к указанной директории

mkdir

создать директорию

rmdir

удалить директорию, если она не пустая

[m]get

получить файл[ы] с сервера

[m]put

отправить файл[ы] на сервер

TYPE {binary | ascii}

указать режим передачи данных

quit или exit

завершить работу с сервером

1. Устанавливаем ProFTPd и OpenSSL

Все команды выполняются от имени суперпользователя root, поэтому вам небходимо использовать sudo либо повысить свои привелегии командой: sudo bash

Создаем нового пользователя test c паролем test: adduser test passwd test

Для установки ProFTPd и OpenSSL запустите

apt-get install proftpd openssl

Вам будет задан вопрос:

Запуск proftpd: <— Самостоятельно

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

nano /etc/proftpd/proftpd.conf

DefaultRoot ~

IdentLookups off

Serverldent on "FTP Server ready." 

2. Создаем 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 Создаем каталог /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) [Some-State]: 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) []: 192.168.1.1

 Email Address []: root@localhost

4. Включаем 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

nano /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

/etc/init.d/proftpd restart

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

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