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

Как настроить vsftpd для использования SSL/TLS на Ubuntu VPS


Статус: устарело

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

Смотрите вместо этого:

Введение

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

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

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

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

Установить vsftpd

Сервер vsftpd доступен в стандартных репозиториях Ubuntu. Вы можете установить его, набрав:

sudo apt-get install vsftpd

Теперь у нас есть vsftpd на нашем сервере, но мы все еще должны его настроить.

Настройка базовой функциональности vsftpd

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

sudo nano /etc/vsftpd.conf

Отключите возможность входа пользователей анонимно, найдя параметр anonymous_enable и изменив его на «НЕТ»:

<пред>

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

local_enable=YES

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

write_enable=YES

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

chroot_local_user=YES

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

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

Из-за того, как vsftpd защищает свои 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.

Снова откройте файл конфигурации 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

После этого мы добавим следующие строки для принудительного использования SSL. Это ограничит количество клиентов, которые не могут работать с 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 из-за его кроссплатформенной поддержки.

На панели конфигурации вы должны увидеть кнопку в крайнем левом углу, чтобы открыть «Диспетчер сайтов». Нажмите здесь:

Нажмите «Новый сайт» в правом нижнем углу появившегося интерфейса окна:

Назовите новую конфигурацию. Заполните IP-адрес. В раскрывающемся меню «Шифрование» выберите «Требовать явный FTP через TLS».

Для \Тип входа выберите \Запросить пароль. Введите созданного вами ftp-пользователя в поле «Пользователь»:

Нажмите \Подключиться в нижней части интерфейса. Вас попросят ввести пароль пользователя:

Затем вам будет предложено принять сертификат TLS:

Теперь вы должны быть подключены к вашему серверу с шифрованием TLS/SSL.

Заключение

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

Джастин Эллингвуд