Как настроить 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.