Как установить FTP-сервер на Linux Mint

FTP, или протокол передачи файлов, является наиболее широко используемым сетевым протоколом для передачи файлов и данных между двумя системами по сети. FTP по умолчанию не шифрует трафик, что небезопасно и может привести к атаке на сервер. VSFTPD (Very Secure FTP Daemon) — безопасный, надежный и быстрый FTP-сервер.

VSFTPD распространяется под лицензией GNU GPL и является FTP-сервером по умолчанию для большинства систем Linux. В этой статье показано, как установить и настроить FTP-сервер в операционной системе Linux Mint.

Как работает FTP-сервер?

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

  1. Активный режим: в активном режиме клиент создает порт и ожидает подключения сервера. Это позволяет ему передавать данные. Сервер подключается к клиенту для передачи данных через порт 20. Активный режим не включен по умолчанию в большинстве FTP-клиентов, поскольку большинство брандмауэров, таких как наш FTP-сервер, запрещают соединения, установленные извне. Чтобы использовать эту функцию, вы должны настроить брандмауэр.
  2. Пассивный режим: когда клиент запрашивает файл, сервер открывает случайный порт и указывает клиенту подключиться к нему. В этом случае клиент инициирует соединение, устраняя проблемы с брандмауэром. Большинство FTP-клиентов по умолчанию работают в пассивном режиме.

Установка FTP-сервера в Linux Mint

Сначала подключитесь к виртуальной машине Linux по SSH, используя пользователя с привилегиями sudo, а затем выполните следующие действия:

Шаг 1: Установите FTP-сервер

Существует множество доступных FTP-серверов, таких как ProFTPD и vsftpd. Мы будем использовать vsftpd.

Функции FTP-сервера vsftpd

vsftpd предлагает множество функций, которые делают его отличным FTP-сервером. Это:

  • Поддерживает конфигурацию виртуального IP
  • Поддерживает совместимость SSL/TLS
  • Облегчает IPv6
  • Благодаря возможности chroot система может ограничивать пользователей их домашним каталогом. Это будет установлено далее в статье.
  • Это может ограничить пропускную способность.
  • Поддерживает виртуальных пользователей

Мы начнем с установки VSFTPD в нашей системе. Для этого запустите Терминал в ОС Mint, нажав Ctrl+Alt+T на клавиатуре. Затем в терминале введите следующую команду, чтобы обновить индекс системного репозитория:

sudo apt update

Теперь введите команду ниже, чтобы установить vsftpd:

sudo apt install vsftpd

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

sudo systemctl status vsftpd

В категории Active вы можете видеть, что vfstpd активен (работает). Команда systemctl используется для управления и проверки служб Linux. Эту команду также можно использовать для включения и отключения служб Linux. Если vsftpd не запущен, введите в терминал следующую строку кода:

sudo systemctl enable --now vsftpd

Примечание. Параметр –now гарантирует, что команда enable оказывает немедленное воздействие на нашу службу, а не после перезагрузки.

Шаг 2. Настройте брандмауэр

FTP использует порт 20 для активного режима, порт 21 для команд и несколько портов для пассивного режима. Мы должны разрешить эти порты через наш брандмауэр. Вы можете пропустить этот шаг, если вы не используете брандмауэр. Большинство систем Linux используют ufw для управления брандмауэрами. Тем не менее, некоторые поставщики облачных услуг, такие как Microsoft Azure, имеют брандмауэры за пределами виртуальной машины, которые необходимо настроить через их портал. Откройте диапазон портов для пассивных FTP-соединений и портов 20 и 21 для TCP-соединений. Диапазон пассивных портов зависит от ожидаемого количества одновременных пользовательских клиентов.

Кроме того, один клиент может передавать несколько или большие файлы, используя несколько портов. Мы увидим, как указать наш FTP-сервер для использования этих портов позже в этом руководстве. Порты с 1 по 1024 зарезервированы, поэтому наш пассивный диапазон портов FTP должен быть больше 1024. Я открою порты между 5000 и 10000. Кроме того, мы откроем порт 990 для TLS, который будет настроен позже. Давайте сделаем это для ufw. Введите следующие строки кода на вашем терминале:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 5000:10000/tcp

Шаг 3. Настройте пользователей

Два наиболее типичных варианта использования FTP-серверов:

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

В первом сценарии вам потребуется создать дополнительного пользователя и предоставить своим клиентам имя пользователя и пароль для доступа к файлам. В остальном второй пример идентичен первому.

Общедоступному пользователю должно быть разрешено просматривать и загружать файлы только из определенного каталога, но администратор должен иметь возможность загружать файлы в любую папку на компьютере. Для этого вы должны иметь базовое представление о разрешениях пользователей. Пользователь root может записывать файлы в любую папку на сервере. Другие пользователи имеют доступ ко всем папкам в своем домашнем каталоге, которым является /home/username, но не могут писать в большинство других каталогов.

Предположим, вы хотите загружать файлы в каталоги, отличные от домашнего каталога вашего администратора, например, /var/www. В этом случае вы должны изменить владельца каталога на своего пользователя-администратора с помощью команды chown или изменить права на изменение каталога с помощью команды chmod.

Создайте общедоступную учетную запись пользователя, чтобы начать. Для этого выполните следующую строку кода:

sudo adduser fosslinux

Введите свой пароль, очистите остальные поля и нажмите Y, чтобы сохранить изменения.

Теперь мы отключим разрешение ssh для этого пользователя в целях безопасности. Введите следующую команду:

sudo nano /etc/ssh/sshd_config

Добавьте в этот файл строку ниже:

DenyUsers fosslinux

Введите Ctrl+x, затем y, а затем Enter. Перезапустите службу SSH, чтобы эти изменения вступили в силу.

sudo systemctl restart ssh

Шаг 4. Создайте папку FTP и настройте ее разрешения.

Мы создадим каталог FTP. Введите следующую команду:

sudo mkdir /ftp

Теперь мы изменим владельца этого каталога на нашу учетную запись администратора. Ключ в

sudo chown fosslinux /ftp

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

Шаг 5: Настройте и защитите vsftpd

Откройте файл конфигурации для vsftpd. Для этого выполните следующую команду:

sudo nano /etc/vsftpd.conf

Убедитесь, что следующие строки не закомментированы

anonymous_enable=NO
local_enable=YES
write_enable=YES

Кроме того, мы открыли порты с 5000 по 10000 для пассивного режима на шаге 2. Поэтому теперь мы должны сообщить vsftpd, какие порты использовать для пассивных FTP-соединений. Добавьте приведенные ниже строки в файл vsftpd.conf.

pasv_min_port=5000
pasv_max_port=10000

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

local_root=/ftp

Примечание. Помните, что в этом файле конфигурации не должно быть пробелов ни перед, ни после знака =.

Как заблокировать пользователя в домашнем каталоге

В целях безопасности мы ограничим пользователя fosslinux каталогом по умолчанию, так как пользователь обычно может просматривать весь сервер Linux по умолчанию. Для этого vsftpd использует chroot. Раскомментируйте следующие строки, чтобы продолжить.

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Кроме того, добавьте следующую строку в файл конфигурации, так как она отсутствует по умолчанию.

allow_writeable_chroot=YES

Первая строка включает функцию chroot для локальных пользователей, включая наших администраторов и пользователей fosslinux. Вторая и третья строки позволяют нам выбрать пользователей для chroot.

Как установить разрешение на файл

local_umask=0002

Эта строка изменит разрешение на изменение каждого вновь созданного файла и папки на 664 (-rw-rw-r-) и 775 соответственно (rwxrwxr-x). Это означает, что пользователь fosslinux может только читать и загружать файлы из каждого подкаталога нашего FTP-каталога, но не может ничего загружать, поскольку он не является владельцем каталога.

Введите Ctrl+x, затем y, а затем Enter. В настоящее время мы должны создать этот файл списка, выполнив следующую строку кода:

sudo touch /etc/vsftpd.chroot_list
sudo nano /etc/vsftpd.chroot_list

Независимо от пользователей, которых вы выбираете в этом файле; они не будут chroot’ированы. Поэтому поместите свое административное имя пользователя в этот файл, так как мы не любим его блокировать.

Введите Ctrl+x, затем y, а затем Enter. Мы должны перезапустить наш сервер vsftpd, чтобы эти изменения вступили в силу немедленно. Вы можете перезапустить сервер, выполнив эту строку кода:

sudo systemctl restart --now vsftpd

Как защитить vsftpd с помощью TLS/SSL

Рекомендуется шифровать FTP-трафик, если он будет передаваться через Интернет. FTPS будет использоваться для шифрования нашего трафика (протокол передачи файлов через SSL). Во-первых, давайте создадим самоподписанный сертификат. Введите следующие команды в терминале:

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

Введите необходимую информацию, и сертификат будет сгенерирован. Вы также можете нажать Enter, чтобы установить значения по умолчанию. В это время откройте файл конфигурации vsftpd. Выполните эту строку кода:

sudo nano /etc/vsftpd.conf

Перейдите в конец файла и удалите строки, показанные ниже.

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 
ssl_enable=NO

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

rsa_cert_file=/etc/ssl/private/vsftpd.pem 
rsa_private_key_file=/etc/ssl/private/vsftpd.pem 
ssl_enable=YES 
allow_anon_ssl=NO 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 
ssl_tlsv1=YES 
ssl_sslv2=NO 
ssl_sslv3=NO 
require_ssl_reuse=NO 
ssl_ciphers=HIGH

Наконец, перезапустите службу vsftpd с помощью команды

sudo systemctl restart --now vsftpd

Как подключиться к нашему FTP-серверу

Для этого вам потребуется FTP-клиент. Опять же, есть множество доступных вариантов. Я бы посоветовал использовать Filezilla. Скачайте, установите, затем запустите. Введите IP-адрес вашего сервера в разделе «Хост» вместе с вашим именем пользователя и паролем, а затем нажмите кнопку «Быстрое подключение».

Вы увидите каталоги вашего ПК слева и каталоги вашего FTP-сервера справа. Вы можете загружать и загружать файлы между FTP-сервером и вашим устройством, перетаскивая их (клиент).

 

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x