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

Вступление

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

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

При необходимости использовать именно FTP (вместо более безопасного SFTP, который для передачи файлов использует протокол SSH) его можно несколько обезопасить при помощи SSL.

Данное руководство демонстрирует, как настроить vsftpd для использования SSL-сертификатов на сервере Ubuntu 12.04.

Установка vsftpd

Сервер vsftpd можно получить из репозиториев Ubuntu по умолчанию. Чтобы установить его, наберите:

sudo apt-get install vsftpd

Теперь vsftpd установлен, можно приступить к его настройке.

Настройка основных функций

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

sudo nano /etc/vsftpd.conf

Отключите возможность входа в систему анонимно: найдите параметр anonymous_enable и измените его значение на “NO”:

anonymous_enable=NO

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

local_enable=YES

Чтобы разрешить пользователям вносить изменения в файловую систему, раскомментируйте параметр:

write_enable=YES

Кроме того, необходимо раскомментировать опцию chroot_local_user, чтобы ограничить пользователей их домашними каталогами:

chroot_local_user=YES

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

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

Поскольку vsftpd защищает все jail-ы chroot, chroot не должен принадлежать пользователю и не должен иметь право на изменение. Поэтому удобнее всего создать отдельного пользователя для работы с FTP.

Для этого наберите:

sudo adduser ftpuser

Установите пароль; на остальные извещения можно нажать ENTER. Теперь нужно передать root -привилегии домашнему каталогу пользователя ftpuser.

sudo chown root:root /home/ftpuser

Внутри этого домашнего каталога создайте отдельный каталог, в который можно выгрузить файлы. Затем передайте этот каталог пользователю FTP:

sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files

Теперь можно установить (незащищенное) соединение как ftpuser и выгрузить файлы в каталог files.

Настройка SSL для работы с vsftpd

Теперь нужно создать сертификаты SSL, чтобы использовать их с vsftpd. Это делается так:

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

Это создаст сертификат, действительный на протяжении года. Он будет размещен в каталоге /etc/ssl/private/, который нужно добавить в конфигурационный файл.

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

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

sudo nano /etc/vsftpd.conf

В нижней части файла найдите строку, соответствующую только что созданному сертификату SSL:

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

Под этой строкой нужно внести дополнительную информацию об SSL.

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

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

Затем нужно внести следующие строки, которые ограничат доступ клиентов к TLS.

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

Затем нужно настроить сервер на использование TLS (преемник SSL):

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Чтобы расширить конфигурационный файл, необходимо внести дополнительные опции:

require_ssl_reuse=NO
ssl_ciphers=HIGH

Сохранив изменения, закройте файл.

Затем перезапустите сервер, чтоб активировать внесенные изменения:

sudo service vsftpd restart

Подключение к серверу через FileZilla

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

Слева на конфигурационной панели найдите и нажмите кнопку, которая открывает “Site Manager”.

Затем нажмите на кнопку “New Site” в правом нижнем углу появившегося окна.

Введите IP-адрес. В поле “Encryption” разверните меню и выберите “Require explicit FTP over TLS”.

В поле “Logon Type” выберите “Ask for password”. В поле “User” укажите ранее созданного пользователя ftp.

Затем нажмите “Connect” в нижней части интерфейса, после чего введите пароль пользователя ftp.

На данном этапе нужно будет принять TLS-сертификат.

Готово! Теперь соединение с сервером с помощью механизма шифрования TLS/SSL установлено.

Итоги

Инструкции данного руководства помогут повысить защиту FTP; тем не менее, FTP по-прежнему имеет некоторые уязвимости при установлении соединения. Если это возможно, некоторые операции лучше выполнять по SFTP. В любом случае, при работе с FTP настоятельно рекомендуется использовать TLS/SSL.

Tags: , , , , , , ,

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

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