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

Настройка безопасного FTP-сервера с использованием SSL/TLS в Ubuntu


В этом руководстве мы опишем, как защитить FTP-сервер (VSFTPD означает «Very Secure FTP Daemon») с помощью SSL. /TLS в Ubuntu 16.04/16.10.

Если вы хотите настроить безопасный FTP-сервер для дистрибутивов на базе CentOS, вы можете прочитать — Защита FTP-сервера с помощью SSL/TLS в CentOS.

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

Требования

  1. Вам необходимо установить и настроить FTP-сервер в Ubuntu.

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

Шаг 1. Создание сертификата SSL/TLS для FTP в Ubuntu

1. Мы начнем с создания подкаталога в: /etc/ssl/ для хранения сертификата SSL/TLS и файлов ключей, если это не так. не существует:

sudo mkdir /etc/ssl/private

2. Теперь давайте сгенерируем сертификат и ключ в одном файле, выполнив приведенную ниже команду.

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

Приведенная выше команда предложит вам ответить на приведенные ниже вопросы. Не забудьте ввести значения, применимые к вашему сценарию.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Шаг 2. Настройка VSFTPD для использования SSL/TLS в Ubuntu

3. Прежде чем выполнять какие-либо настройки VSFTPD, для тех, у кого включен брандмауэр UFW, необходимо открыть порты 990 и 40000. -50000, чтобы разрешить TLS-соединения и диапазон пассивных портов, устанавливаемый в файле конфигурации VSFTPD соответственно:

sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status

4. Теперь откройте файл конфигурации VSFTPD и определите в нем данные SSL:

sudo vi /etc/vsftpd/vsftpd.conf
OR
sudo nano /etc/vsftpd/vsftpd.conf

Затем добавьте или найдите параметр ssl_enable и установите для него значение YES, чтобы активировать использование SSL. Опять же, поскольку TLS более безопасен, чем SSL, мы ограничим VSFTPD вместо этого используйте TLS, включив опцию ssl_tlsv1:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Затем закомментируйте строки ниже, используя символ # следующим образом:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Затем добавьте строки ниже, чтобы определить расположение сертификата SSL и файла ключа:

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

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

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Кроме того, мы можем использовать приведенные ниже параметры, чтобы добавить дополнительные функции безопасности на FTP-сервер. С опцией require_ssl_reuse=YES все подключения к данным SSL должны демонстрировать повторное использование сеанса SSL; доказывая, что они знают тот же главный секрет, что и канал управления. Итак, нам следует отключить его.

require_ssl_reuse=NO

Кроме того, мы можем установить, какие SSL-шифры VSFTPD будет разрешать для зашифрованных SSL-соединений, с помощью опции ssl_ciphers. Это поможет сорвать любые усилия злоумышленников, пытающихся взломать конкретный шифр, в котором они, возможно, обнаружили уязвимости:

ssl_ciphers=HIGH

8. Затем давайте определим диапазон портов (минимальный и максимальный порт) для пассивных портов.

pasv_min_port=40000
pasv_max_port=50000

9. Чтобы включить отладку SSL, то есть диагностика соединения openSSL записывается в файл журнала VSFTPD, мы можем использовать параметр debug_ssl:

debug_ssl=YES

Наконец сохраните файл и закройте его. Затем перезапустите службу VSFTPD:

systemctl restart vsftpd

Шаг 3. Проверьте FTP с соединениями SSL/TLS в Ubuntu

10. После выполнения всех вышеуказанных настроек проверьте, использует ли VSFTPD теперь соединения SSL/TLS, попытавшись использовать FTP из командной строки, как показано ниже.

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

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

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

Шаг 4. Установите FileZilla на клиентах для безопасного подключения по FTP

FileZilla – мощный и широко используемый кроссплатформенный FTP-клиент, поддерживающий FTP через SSL/TLS и многое другое. Чтобы установить FileZilla на клиентском компьютере Linux, используйте следующую команду.

--------- On Debian/Ubuntu ---------
sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Fedora 22+ --------- 
sudo dnf install filezilla

12. После завершения установки откройте ее и перейдите в Файл=>Менеджер сайтов или (нажмите Ctrl+S), чтобы получить >Интерфейс менеджера сайта ниже.

13. Теперь определите имя хоста/сайта, добавьте IP-адрес, определите используемый протокол, шифрование и тип входа в систему, как показано на снимке экрана ниже (используйте значения, применимые к вашему сценарию):

Нажмите кнопку Новый сайт, чтобы настроить соединение нового сайта/хоста.

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Затем нажмите Подключиться в интерфейсе выше, чтобы ввести пароль, а затем проверьте сертификат, используемый для соединения SSL/TLS, и нажмите ОК еще раз, чтобы подключиться к FTP-серверу:

15. Теперь вы должны успешно войти на FTP-сервер через соединение TLS. Проверьте раздел состояния соединения для получения дополнительной информации в интерфейсе ниже.

16. Наконец, давайте перенесем файлы с локального компьютера на FTP-сервер в папке files. Взгляните на нижнюю часть интерфейса FileZilla, чтобы просмотреть отчеты о передаче файлов.

Вот и все! Всегда помните, что установка FTP-сервера без включения служб шифрования имеет определенные последствия для безопасности. Как мы объясняли в этом руководстве, вы можете настроить FTP-сервер на использование соединений SSL/TLS для реализации безопасности в Ubuntu 16.04/16.10.

Если у вас возникнут какие-либо проблемы при настройке SSL/TLS на FTP-сервере, используйте форму комментариев ниже, чтобы поделиться своими проблемами или мыслями относительно этого руководства/темы.