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

Как установить FTP-сервер vsftpd с SSL/TLS на CentOS 8


На этой странице

  1. Предпосылки
  2. Установить VSFTPD
  3. Создание пользователя для VSFTPD
  4. Настройка VSFTPD
  5. Настройка брандмауэра и SELInux
  6. Подключение к серверу VSFTPD
  7. Настройка VSFTPD с поддержкой TLS
  8. Проверьте соединение VSFTPD TLS
  9. Заключение

FTP — это широко используемый протокол, используемый для передачи файлов между сервером и клиентом. В настоящее время доступно множество FTP-серверов с открытым исходным кодом, включая FTPD, VSFTPD, PROFTPD и pureftpd. Среди них VSFTPD — безопасный, быстрый и наиболее широко используемый протокол во всем мире. Его также называют «Демон протокола передачи очень безопасных файлов». Он также поддерживает SSL, IPv6, явный и неявный FTPS.

В этом руководстве мы покажем вам, как установить VSFTPD на сервер CentOS 8 и защитить его с помощью SSL/TLS.

Предпосылки

  • Сервер под управлением CentOS 8.
  • На вашем сервере настроен пароль root.

Установить VSFTPD

По умолчанию VSFTPD доступен в репозитории CentOS 8 по умолчанию. Вы можете установить его, выполнив следующую команду:

dnf install vsftpd -y

После завершения установки запустите службу VSFTPD и включите ее запуск после перезагрузки системы с помощью следующей команды:

systemctl start vsftpd
systemctl enable vsftpd

На этом этапе ваш сервер VSFTPD установлен и работает. Теперь вы можете перейти к следующему шагу.

Создайте пользователя для VSFTPD

Далее вам нужно будет создать нового пользователя для VSFTPD. Таким образом, вы можете получить доступ к своему FTP-серверу, используя этого пользователя.

Выполните следующую команду, чтобы создать нового пользователя с именем vyom, как показано ниже:

adduser vyom

Далее устанавливаем пароль для пользователя с помощью следующей команды:

passwd vyom

Как только вы закончите, вы можете перейти к следующему шагу.

Настройка VSFTPD

Затем откройте файл конфигурации VSFTPD по умолчанию, расположенный в каталоге /etc/vsftpd, как показано ниже:

nano /etc/vsftpd/vsftpd.conf

Измените следующие строки:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO

Сохраните и закройте файл, когда закончите. Затем перезапустите службу VSFTPD и проверьте состояние службы с помощью следующей команды:

systemctl restart vsftpd
systemctl status vsftpd

Вы должны увидеть следующий вывод:

? vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago
  Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2699 (vsftpd)
    Tasks: 1 (limit: 6102)
   Memory: 1020.0K
   CGroup: /system.slice/vsftpd.service
           ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon.
Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon...
Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.

На этом этапе ваш сервер VSFTPD настроен. Теперь вы можете перейти ко всем VSFTPD через SELinux и брандмауэр.

Настройте брандмауэр и SELInux

По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно будет настроить SELinux для VSFTPD.

Вы можете настроить SELinux для разрешения FTP-доступа с помощью следующей команды:

setsebool -P allow_ftpd_full_access=1

Далее вам нужно будет разрешить службу FTP через firewalld. Вы можете разрешить это с помощью следующей команды:

firewall-cmd --zone=public --permanent --add-service=ftp

Затем перезагрузите службу firewalld, чтобы применить изменения конфигурации брандмауэра:

firewall-cmd --reload

На этом этапе ваш брандмауэр и SELinux настроены на разрешение входящего FTP-соединения с удаленной системы. Теперь вы можете приступить к тестированию FTP-соединения.

Подключиться к серверу VSFTPD

Теперь ваш сервер VSFTPD установлен и настроен. Теперь пришло время подключить FTP-сервер из клиентской системы.

Для этого перейдите в клиентскую систему и выполните следующую команду для подключения к FTP-серверу:

ftp 172.20.10.3

Вам будет предложено указать пользователя FTP и пароль, как показано ниже:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.3)
Name (172.20.10.3:root): vyom
331 Please specify the password.
Password:
230 Login successful.

После того, как соединение было успешно установлено, вы должны увидеть следующий вывод:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Теперь введите exit и нажмите кнопку Enter, чтобы выйти из сеансов FTP.

Настройка VSFTPD с поддержкой TLS

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

Во-первых, вам нужно будет установить пакет OpenSSL в вашей системе. Вы можете установить его с помощью следующей команды:

dnf install openssl -y

После установки создайте новый каталог для хранения SSL-сертификата:

mkdir /etc/ssl/private

Затем сгенерируйте самоподписанный сертификат с помощью следующей команды:

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

Предоставьте всю необходимую информацию, как показано ниже:

Generating a RSA private key
...+++++
...........+++++
writing new private key to '/etc/ssl/private/vsftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:GUJ
Locality Name (eg, city) [Default City]:JUN
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ftpserver
Email Address []:

После создания SSL-сертификата вам необходимо настроить VSFTPD для использования этого сертификата.

Откройте файл конфигурации VSFTPD по умолчанию, как показано ниже:

nano /etc/vsftpd/vsftpd.conf

Добавьте в конец файла следующие строки:

#Path of the SSL certificate
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
#Enable the SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#TSL is more secure than SSL so enable ssl_tlsv1_2.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#Enable SSL debugging to store all VSFTPD log.
debug_ssl=YES

Сохраните и закройте файл, когда закончите. Затем перезапустите службу VSFTPD, чтобы применить изменения:

systemctl restart vsftpd

На этом этапе ваш сервер VSFTPD настроен на использование SSL-сертификата. Теперь вы можете перейти к следующему шагу.

Проверка соединения VSFTPD TLS

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

ftp 172.20.10.3

Вы должны увидеть ошибку в следующем выводе:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.2)
Name (172.20.10.3:root): vyom
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp> 

Вы не можете подключиться к своему серверу VSFTP из клиента командной строки. Потому что он не поддерживает поддержку SSL/TLS.

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

Для этого перейдите в клиентскую систему и установите клиентский пакет FileZilla.

После установки FileZilla откройте программное обеспечение FileZilla, как показано ниже:

Затем откройте диспетчер сайтов, как показано ниже:

Нажмите кнопку «Новый сайт», чтобы добавить новое FTP-соединение, как показано ниже:

Укажите IP-адрес вашего FTP-сервера, выберите FTP-протокол, выберите «Использовать явный FTP через TLS», выберите «Запросить пароль», укажите имя пользователя вашего FTP-сервера и нажмите кнопку «Подключиться». Вам будет предложено ввести пароль пользователя FTP, как показано ниже:

Укажите свой пароль FTP и нажмите кнопку ОК. Вам будет предложено проверить сертификат, используемый для соединения SSL/TLS, как показано ниже:

Нажмите кнопку OK, чтобы проверить сертификат. После успешного установления соединения вы должны увидеть следующий экран:

Заключение

В приведенном выше руководстве мы установили сервер VSFTPD на CentOS 8. Мы также настроили сервер VSFTPD для использования сертификата SSL/TLS. Теперь ваш FTP-сервер защищен. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.