Использование 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: FTP, Linux, SSL, TLS, Ubuntu, Ubuntu 12.04, VPS, vsftpd
1 комментарий
Все бы хорошо, но тут возникает проблема “На данном этапе нужно будет принять TLS-сертификат.”
Filezilla пишет:
Статус: Не удалось установить соединение с “ECONNREFUSED – Соединение отклонено сервером”.
Ошибка: Невозможно подключиться к серверу
А в логах сервера я вижу:
Sat Nov 18 10:11:55 2017 [pid 2195] [pavel] DEBUG: Client “x.x.x.x”, “Connection terminated without SSL shutdown – buggy client?”
https://uploads.disquscdn.com/images/e5009366fe7ccfdb866873008b19efc5ed895b9863e430469a54221c790b2df2.jpg