Настройка безопасного FTP-сервера с использованием SSL/TLS в Ubuntu
В этом руководстве мы опишем, как защитить FTP-сервер (VSFTPD означает «Very Secure FTP Daemon») с помощью SSL. /TLS в Ubuntu 16.04/16.10.
Если вы хотите настроить безопасный FTP-сервер для дистрибутивов на базе CentOS, вы можете прочитать — Защита FTP-сервера с помощью SSL/TLS в CentOS.
Выполнив различные шаги, описанные в этом руководстве, мы узнаем, что основы включения служб шифрования на FTP-сервере имеют решающее значение для безопасной передачи данных.
Требования
- Вам необходимо установить и настроить 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-сервере, используйте форму комментариев ниже, чтобы поделиться своими проблемами или мыслями относительно этого руководства/темы.