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

Как защитить FTP-сервер с помощью SSL/TLS для безопасной передачи файлов в CentOS 7


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

В этом руководстве мы объясним, как вручную включить службы шифрования данных на FTP-сервере в CentOS/RHEL 7 и Fedora; мы пройдем различные этапы защиты служб VSFTPD (Very Secure FTP Daemon) с помощью сертификатов SSL/TLS.

Предпосылки:

  1. У вас должен быть установлен и настроен FTP-сервер в CentOS 7.

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

Шаг 1. Генерация сертификата SSL/TLS и закрытого ключа

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

mkdir /etc/ssl/private

2. Затем выполните приведенную ниже команду, чтобы создать сертификат и ключ для vsftpd в одном файле. Ниже приводится объяснение каждого используемого флага.

  1. req — команда для управления запросом на подпись сертификата X.509 (CSR).
  2. x509 – означает управление данными сертификата X.509.
  3. дней – определяет количество дней, в течение которых действителен сертификат.
  4. newkey – указывает процессор ключа сертификата.
  5. rsa:2048 – процессор ключей RSA генерирует 2048-битный закрытый ключ.
  6. keyout — задает файл хранения ключей.
  7. out — задает файл хранения сертификата. Обратите внимание, что сертификат и ключ хранятся в одном файле: /etc/ssl/private/vsftpd.pem.
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

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

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

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

vi /etc/vsftpd/vsftpd.conf

Найдите параметр ssl_enable и установите для него значение YES, чтобы активировать использование SSL. Кроме того, поскольку TSL более безопасен, чем SSL, мы ограничим VSFTPD использованием TLS. вместо этого используйте параметр ssl_tlsv1_2:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Затем добавьте строки ниже, чтобы определить расположение сертификата 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

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

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>

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

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

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

11. FileZilla — это современный, популярный и, что немаловажно, кроссплатформенный FTP-клиент, который по умолчанию поддерживает соединения SSL/TLS.

Чтобы установить FileZilla в Linux, выполните следующую команду:

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

--------- On Debian/Ubuntu ---------
sudo apt-get 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, и нажмите OK один раз. еще для подключения к FTP-серверу:

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

15. И последнее, но не менее важное: попробуйте перенести файлы с локального компьютера на FTP-сервер в папке files. Посмотрите на нижнюю часть интерфейса FileZilla, чтобы просмотреть отчеты о передаче файлов.

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