Использование SSL/TLS на vsftpd (CentOS)

Предупреждение: протокол FTP небезопасен! Вместо него рекомендуется использовать SFTP.

FTP (или File Transfer Protocol, протокол передачи файлов) – это способ обмена файлами между локальным и удаленным сервером. Этот протокол достаточно популярен, но способен подвергнуть систему серьёзному риску из-за отсутствия шифрования: FTP передает данные в виде простого текста.

Как уже отмечалось, SFTP – отличная альтернатива. Этот протокол осуществляет  обмен файлами по протоколу SSH.

Примечание: при необходимости использовать именно FTP соединение можно защитить при помощи сертификатов SSL/TLS.

В этом руководстве показано, как использовать сертификаты SSL и TLS на vsftpd на виртуальном выделенном сервере CentOS 6.4.

Установка vsftpd

Сервер vsftpd можно загрузить из стандартных репозиториев CentOS. Для установки vsftpd наберите:

sudo yum install vsftpd

Сервер vsftpd установлен на VPS. Приступайте к его настройке.

Базовая настройка vsftpd

Главный конфигурационный файл vsftpd по имени vsftpd.conf в CentOS хранится в каталоге /etc/vsftpd/. Откройте его в текстовом редакторе с привилегиями root:

sudo nano /etc/vsftpd/vsftpd.conf

В этом файле нужно изменить некоторые основные параметры, чтобы повысить уровень безопасности, а также установить параметры соединения.

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

anonymous_enable=NO

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

Для этого убедитесь, что установлен следующий параметр:

local_enable=YES

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

write_enable=YES

Теперь нужно ограничить пользователей их домашними каталогами. Для этого существует параметр:

chroot_local_user=YES

Для базовой (не SSL) конфигурации FTP этого достаточно. Добавление функций SSL будет описано позже.

Сохраните и закройте файл.

Создание пользователя FTP

Итак, теперь локальные пользователи имеют доступ к серверу и не могут перемещаться выше домашних каталогов (благодаря окружению chroot).

Создайте нового пользователя при помощи команды:

sudo adduser ftpuser

Создайте пароль для нового пользователя, набрав:

sudo passwd ftpuser

CentOS 6.4 использует более старую версию vsftpd, потому его настройка немного проще некоторых новых релизов.

Настройка vsftpd для поддержки SSL

Первое, что нужно сделать – создать сертификат SSL. На самом деле, в руководстве используется TLS – протокол, который является преемником SSL и более безопасен.

В каталоге SSL создайте подкаталог для хранения файлов:

sudo mkdir /etc/ssl/private

Используйте следующую команду, чтобы создать сертификат и ключ в одном файле:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Будет предложен список вопросов. Заполните поля соответствующей информацией. Особое внимание следует уделить строке Common Name; внесите в нее IP-адрес или домен сервера. На самом деле, остальные поля можно не заполнять.

Внесение SSL в конфигурации vsftpd

Теперь необходимо отредактировать конфигурации vsftpd, настроив защищенное соединение.

Откройте конфигурационный файл vsftpd как пользователь root:

sudo nano /etc/vsftpd/vsftpd.conf

Перейдите в конец файла и внесите информацию о SSL/TLS.

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

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Далее нужно включить поддержку этих файлов и отключить анонимных пользователей. Также необходимо настроить принудительное использование SSL для соединений всех НЕ-анонимных пользователей при отправке пароля или передаче данных. Это значительно усилит безопасность.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Затем нужно ограничить тип подключения до более безопасного TLS. Для этого явно разрешите TLS и запретите использование SSL:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

В завершение добавьте следующие параметры:

require_ssl_reuse=NO
ssl_ciphers=HIGH

Сохраните и закройте файл.

Перезапустите vsftpd, чтобы активировать новые настройки:

sudo /etc/init.d/vsftpd restart

Чтобы настроить автоматический запуск vsftpd при загрузке сервера, используйте:

sudo chkconfig vsftpd on

Подключение к vsftpd при помощи FileZilla

Соединения SSL и TLS поддерживаются большинством современных FTP-клиентов. В данном разделе показано, как настроить FileZilla для использования безопасных соединений (благодаря их кроссплатформенности).

Примечание: предполагается, что клиент уже установлен.

Откройте FileZilla. Кликните на Site Manager.

Появится новый интерфейс, в нем нажмите кнопку New Site в левом нижнем углу. Укажите имя подключения к серверу, чтобы позже иметь возможность легко определить его.

В поле Host введите IP-адрес, в выпадающем меню Protocol выберите «FTP – File Transfer Protocol». В выпадающем меню Encryption выберите «Require explicit FTP over TLS».

В меню Login Type выберите Ask for password. В поле User укажите ранее созданного пользователя FTP.

Далее нажмите Connect в нижней части панели. Будет предложено указать пароль FTP-пользователя.

Следующий шаг – это первый признак того, что при подключении к серверу используется TLS. Появится предупреждение «The server’s certificate is unknown. Please carefully examine the certificate to make sure the server can be trusted»: на данном этапе необходимо подтвердить сертификат.

На экране должна появиться внесенная при создании сертификата информация, позволяющая подтвердить соединение.

Чтобы установить подключение, примите сертификат.

Итоги

Это руководство предоставляет более безопасный вариант настройки. Тем не менее, в нем также может обнаружиться пара проблем безопасности. Потому использовать FTP на установках с доступом к интернету не рекомендуется, в таких случаях лучше обратиться к SFTP.

Tags: , , , , , , ,

1 комментарий

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