В предыдущей статье детально описывались установка и настройка FTP-сервера в RHEL 8 Linux. В данной же статье мы расскажем, как защитить FTP-сервер при помощи криптографических протоколов SSL/TSL, чтобы включить службы шифрования данных для безопасной передачи файлов между системами.
Надеемся, что ваш FTP-сервер уже установлен и исправно функционирует. Если же нет, то предлагаем воспользоваться следующим руководством:
Шаг 1. Генерация SSL/TLS сертификата и закрытого ключа
- Создайте следующий каталог, в котором будут храниться файлы ключа и SSL/TLS сертификат:
# mkdir -p /etc/ssl/vsftpd
- Затем, генерируем самозаверенный SSL/TLS сертификат и закрытый ключ, используя следующую команду:
# openssl req -x509 -nodes -keyout /etc/ssl/vsftpd/vsftpd.pem -out /etc/ssl/vsftpd/vsftpd.pem -days 365 -newkey rsa:2048
Ниже приведено описание каждого флага, используемого в вышеописанной команде:
- req — команда для управления запросом подписи сертификата X.509 (CSR);
- x509 — управление данными сертификата X.509;
- days — количество дней, в течение которых действителен сертификат;
- newkey — процессор ключей сертификата;
- rsa:2048 — процессор ключей RSA сгенерирует 2048-битный закрытый ключ;
- keyout — устанавливает файл, хранящий ключи;
- out — устанавливает файл, хранящий сертификаты, кстати, сертификат и ключ хранятся в одном файле: /etc/ssl/vsftpd/vsftpd.pem.
Приведенная выше команда предложит вам ответить на вопросы ниже, не забывайте использовать нужные вам значения.
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 protected]
Шаг 2. Настройка VSFTPD для использования SSL/TLS
- Откройте файл конфигурации VSFTPD:
# vi /etc/vsftpd/vsftpd.conf
Добавьте следующие параметры конфигурации, чтобы включить SSL, затем, в конце файла, выберите желаемую версию SSL и TLS.
ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO
- Следующим шагом добавим параметры rsa_cert_file и rsa_privatte_key_file, чтобы указать расположение сертификата SSL и файла ключа соответственно.
rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/ssl/vsftpd/vsftpd.pem
- Теперь добавим следующие параметры, позволяющие отключить анонимные подключения от использования SSL и принудительно устанавливать все неанонимные подключения через SSL.
allow_anon_ssl=NO # disable anonymous users from using SSL
force_local_data_ssl=YES # force all non-anonymous logins to use a secure SSL connection for data transfer
force_local_logins_ssl=YES # force all non-anonymous logins to send the password over SSL
- Теперь отключим повторное использование соединений с данными SSL, а также установим шифры SSL как HIGH, чтобы разрешить зашифрованные соединения SSL. Для этого добавьте следующие параметры:
require_ssl_reuse=NO
ssl_ciphers=HIGH
- Укажем диапазон пассивных портов (минимальный и максимальный порт), используемых vsftpd для защищённых соединений, используя параметры pasv_min_port и pasv_max_port соответственно. К тому же, вы можете дополнительно включить отладку SSL для устранения неполадок, используя параметр debug_ssl.
pasv_min_port=40000
pasv_max_port=50000
debug_ssl=YES
- Напоследок, сохраните файл и перезапустите службу vsftpd, чтобы вышеуказанные изменения вступили в силу.
# systemctl restart vsftpd
- Ещё одна критически важная задача, которую необходимо выполнить, прежде чем вы сможете безопасно получить доступ к FTP-серверу — это открыть порты 990 и 40000-50000 в фаерволе, что позволит службам vsftpd устанавливать TSL-соединение и откроет диапазон пассивных портов, заданных в файле конфигурации VSFTPD, соответственно, следующим образом:
# firewall-cmd --zone=public --permanent –add-port=990/tcp
# firewall-cmd --zone=public --permanent –add-port=40000-50000/tcp
# firewall-cmd --reload
Шаг 3. Установка FileZilla для безопасного подключения к FTP-серверу
Для безопасного подключения к FTP-серверу необходим FTP-клиент, который поддерживает SSL/TLS подключения. Идеально подойдёт FileZilla — широко используемый кроссплатформенный клиент FTP, SFTP и FTPS с открытым исходным кодом, который по умолчанию поддерживает соединения SSL/TLS.
Установите FileZilla в Linux, используя ваш менеджер пакетов по-умолчанию, следующим образом:
$ sudo apt-get install filezilla #Debian/Ubuntu
# yum install epel-release filezilla #On CentOS/RHEL
# dnf install filezilla #Fedora 22+
$ sudo zypper install filezilla #openSUSE
- Откройте клиент FileZilla. Для быстрого подключения к удалённому FTP-серверу, из основного интерфейса, — укажите IP-адрес хоста, имя пользователя и его пароль. После чего нажмите QuickConnect.
- Теперь приложение попросит вашего разрешения на установление безопасного подключения, используя неизвестный самозаверенный сертификат. Нажмите ОК, чтобы продолжить.
Если сервер настроен правильно, то подключение будет успешно установлено, как показано на скриншоте ниже:
- Проверьте состояние безопасного соединения FTP, путём загрузки файлов со своего компьютера на сервер, как показано на скриншоте ниже:
Спасибо за внимание! Надеемся, что данная статья помогла вам.
Удачи!
Оригинальная статья: Setup Secure FTP File Transfer Using SSL/TLS in RHEL 8