Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 и  исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Введение

FTP (англ. File Transfer Protocol) — протокол передачи файлов по сети, являющийся одним из старейших прикладных протоколов. Протокол построен на архитектуре «клиент-сервер» и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером. Пользователи FTP могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключаться анонимно. 

Установка и запуск


Информация
Для организации загрузки по сети обратитесь к статье Установка Astra Linux по сети (UEFI или Legacy BIOS).установки ОС  по сети используется не только протокол FTP, но и протокол TFTP. Это разные протоколы. Подробнее см. Автоматическая установка Astra Linux Special Edition 1.7.


Предупреждение

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


Установка и запуск

Для предоставления доступа по протоколу Для предоставления сервиса FTP в дистрибутивы Astra Linux входит пакет vsftpd. По умолчанию этот пакет не устанавливается, у. Установить его пакет можно с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой командой:

Command
sudo apt install vsftpd

После установки сервис запускается автоматически, режим запуска описан ниже.

Дополнительно в дистрибутивы входит графический инструмент для администрирования сервера FTP fly-admin-ftp. Установить его можно с помощью графического менеджера пакетов или из командной строки командой 

Command
sudo apt install fly-admin-ftp 

После установки инструмент доступен через меню "Пуск" - "Панель управления" - "Сеть" - "FTP-сервер". 

Настройка

При установке сервиса автоматически создается конфигурационный файл /etc/vsftpd.conf, в который записываются значения наиболее важных параметров по умолчанию.

В конфигурационном файле используются три различных типа параметров:

  • Логические логические параметры - параметры, содержащие только логические значения: либо YES либо NO;
  • Числовые числовые параметры - параметры, содержащие значения в числах, т.н. время в секундах или номер порта для соединения;
  • Строковые параметры - содержат строку, т.н. строковые параметры — параметры, содержащие строку, например, путь к каталогу в файловой системе на диске, напримеркак: /run/vsftpd/;

Изначально в конфигурационном файле присутствуют не все параметры, это означает, что для отсутствующих параметров используется значение "по умолчанию".

Предупреждение
Пробелы между именем параметра, знаком равно и значением НЕ ДОПУСКАЮТСЯ.

Файл настройки, создаваемый при установке пакета, изменяет некоторые значения настроек "по умолчанию". Полный список параметров настройки и их значения "по умолчанию" можно посмотреть с помощью команды

Command
man vsftpd.conf

Символ решетки "#" - переводит автоматически следующую за ним всю строку , в комментарий, не используемый программой vsftpd.

Выбор IP-протокола

Для выбора IP-протокола предназначены два логически связанных параметра - listen и listen-ipv6. Их значения

Настройки, принятые по умолчанию

, разрешают работу по протоколам IPv4 и IPv6:

Сразу после установки пакета служба vsftpd получает следующие настройки (перечислены наиболее важные параметры, полный список с подробными пояснениями см. man vsftpd.conf):

  • Служба подключена ко всем сетевым интерфейсам IPv4 и IPv6 (параметры listen=NO и listen_ipv6=YES).
  • Подключение пользователей без аутентификации запрещено (параметр anonymous_enable=NO).
  • Подключение локальных и доменных пользователей (далее - пользователь) с аутентификацией, использующий стандартный пароль, разрешено (параметр local_enable=YES) . Для успешного подключения должен существовать домашний каталог пользователя.
  • Пользователям разрешено только чтение.
  • Рабочим каталогом пользователя после аутентификации становится его домашний каталог, однако пользователи не ограничены в смене каталогов, и, например, могут перейти в корневой каталог файловой системы, получая доступ на чтение ко всем файловым объектам. Так, например, при подключении с помощью файлового менеджера Midmight Commander рабочим каталогом сразу становится корневой каталог файловой системы. Возможности доступа при этом будут управляться действующими правилами дискреционного и мандатного управления доступом, однако наличие такого доступа может быть нежелательно с точки зрения безопасности.
  • Служба не настроена на работу с файловыми объектами, имена которых содержат кириллицу.

Пример настройки службы

Блок кода
listen=NO # работать только по протоколу IPv4. По умолчанию значение NO. Если установить значение YES, то параметр listen_ipv6 нужно установить в NO
listen_ipv6=YES # работать по протоколам и IPv4 и IPv6. По умолчанию значение YES. Если установить значение NO, то параметр listen нужно установить в YES, чтобы сохранилась возможность работать только по протоколу IPv4

Далее в примерах используется конфигурация выбора протокола, установленная  по умолчанию.

FTP для локальных пользователей и только для чтения

Сразу после установки

  • Сервис "слушает" протоколы IPv4 и IPv6;
  • Анонимный доступ запрещен;
  • Вход локальных пользователей разрешен, но запись им запрещена;
  • При входе пользователь попадает в корень файловой системы.

Настройка сервера сразу после установки:

Информация

# Выбрана работа по IPv4 и по IPv6
listen=NO
listen_ipv6=YES

# Анонимный доступ запрещёнзапрещен.
anonymous_enable=NO

# Вход локальных пользователей разрешен
local_enable=YES

# Для локальных пользователей запись при входе через FTP запрещена. Как разрешить запись - см. ниже.
#write_enable=YES

# Включена выдача пользователям сообщения при входе в каталог (сообщения ищутся в файле .message)
dirmessage_enable=YES

# Отображать время в локальной временной зоне. По умолчанию - в GMT
use_localtime=YES

# Включено журналирование операций записи/скачивания. 
xferlog_enable=YES

# Использовать 20-й порт для исходящих соединений (см. ниже)
connect_from_port_20=YES

# Имя специального пустого каталога, недоступного пользователю ftp для записи
# Используется как безопасный chroot() когда сервису vsftpd не нужен файловый доступ.
secure_chroot_dir=/run/vsftpd/empty

# Имя сервиса для авторизации через PAM
pam_service_name=vsftpd

# Размещение сертификатов для защищенных соединений
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

# Раскомментировать, чтобы указать на использование файловой системы UTF8
# utf8_filesystem=YES

FTP для локальных пользователей: разрешение на запись

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

Информация

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES

# Для локальных пользователей запись при входе через FTP разрешена
write_enable=YES

dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# Раскомментировать, чтобы указать на использование файловой системы UTF8
#utf8_filesystem=YES

# локальные пользователи при входе будут перенесены ("chroot()") в домашний каталог
chroot_local_user=yes

# При использовании совместно с включенным chroot_local_user означает список пользователей, которые не помещаются в chroot().
# По умолчанию список содержится в файле /etc/vsftpd.chroot_list, но можно указать любой другой путь к файлу используя chroot_list_file опцию.
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list

ПредупреждениеПользователи, которым разрешена запись, должны быть указаны в chroot_list_file (одно имя - одна строка)

Выбор IP-протокола

Для выбора IP-протокола предназначены два логически связанных параметра конфигурации - listen и listen-ipv6. Их значения, принятые по умолчанию, разрешают работу по протоколам IPv4 и IPv6:

Блок кода
listen=NO # работать только по протоколу IPv4. По умолчанию значение NO. Если установить значение YES, то параметр listen_ipv6 нужно установить в NO
listen_ipv6=YES # работать по протоколам и IPv4 и IPv6. По умолчанию значение YES. Если установить значение NO, то параметр listen нужно установить в YES, чтобы сохранилась возможность работать только по протоколу IPv4

Далее в примерах используется конфигурация выбора протокола, установленная  по умолчанию.

Якорь
CHROOT
CHROOT
Ограничение доступа пользователей к файловой системе

Для ограничения доступа пользователей к файловой системе используется параметр конфигурации chroot_local_user=YES. При значении параметра YES доступ пользователей к файловой системе по умолчанию будет ограничен назначаемым при входе рабочим каталогом (chroot-каталогом). По умолчанию это стандартный домашний каталог пользователя. При этом для повышения безопасности дополнительно требуется, чтобы пользователь не имел права записи в chroot-каталог (см. Ошибка "500 OOPS: vsftpd: refusing to run with writable root inside chroot ()"). Для устранения ошибки входа возможны следующие варианты действий:

  • запретить запись пользователю в chroot-каталог. Неприменимо для обычных пользователей, так как нарушит нормальную работу в пользовательских сессиях. Может быть применимо для служебных пользователей
  • разрешить запись в chroot-каталог, используя параметр allow_writeable_chroot=YES. Может быть нежелательным с точки зрения требований безопасности;

Можно создать и использовать отдельный каталог с требуемым запретом или разрешением записи, используя параметр local_root=<имя_каталога>. Значение параметра, указанное в файле /etc/vsftpd.conf будет применяться ко всем пользователям. Порядок индивидуальной настройки см. ниже.

Индивидуальная настройка параметров пользователей

Параметры, задаваемые в файле /etc/vsftpd.conf применяются ко всем пользователям и могут быть переопределены индивидуальными пользовательскими конфигурационными файлами. Для задания индивидуальных параметров:

  1. В файл /etc/vsftpd.conf добавить параметр user_config_dir=<каталог_индивидуальных_настроек>.
  2. Для каждого пользователя в каталоге индивидуальных настроек создать файл с именем, совпадающим с именем пользователя. В файле указать индивидуальные настройки для пользователя. Синтаксис указания индивидуальных параметров такой же, как в основном файле.

Разрешения на запись

Для того, чтобы разрешить запись пользователям используется параметр write_enable=YES.

Для управления правами анонимного доступа используются параметры anon_mkdir_write_enable, anon_other_write_enable, anon_upload_enable. Подробное описание см. man vsftpd.conf. Также см. 

FTP для анонимных пользователей: только чтение

Анонимные пользователи после входа попадают в каталог /srv/ftp. Этот каталог может быть изменен параметром anon_root:

Информация

listen=NO
listen_ipv6=YES

# Анонимный доступ разрешен
anonymous_enable=YES

local_enable=YES
#write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

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

  1. Изменить значение параметра anonymous_enable=NO на anonymous_enable=YES.
  2. По умолчанию рабочим каталогом для анонимных пользователей является домашний каталог пользователя ftp (определяется в файле /etc/passwd и по умолчанию это каталог /srv/ftp). При необходимости использовать другой каталог можно указать его в параметре anon_root=<имя_каталога>. При смене каталога анонимных пользователей каталог /srv/ftp следует сохранить (или изменить домашний каталог пользователя ftp), так как при его отсутствии домашнего каталога вход работать не будет (в случае анонимного пользователя - ошибка "500 OOPS: cannot change directory:/srv/ftp"). В каталог анонимных пользователей рекомендуется запретить запись пользователю ftp, иначе вход анонимным пользователям будет запрещен (см. Ошибка "500 OOPS: vsftpd: refusing to run with writable root inside chroot ()"). При этом запись может быть разрешена в подкаталоги этого каталога.
# Раскомментировать, чтобы указать на использование файловой системы UTF8
# utf8_filesystem=YES

Журнал событий

Журнал событий  по умолчанию записывается в файл /var/log/vsftpd.log. Имя файла журнала событий может быть изменено в файле настроек /etc/vsftp.conf:

Информация

# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log

Сервис Служба не ведет запись журнала, если файл журнала не существует. Чтобы запись журнала началась, нужно создать этот файл, и перезапустить службу:

Информация

touch /var/log/vsftpd.log
service vsftpd restart

Дополнения

Сообщения пользователю при входе в каталог

Включаются опцией dirmessage_enable=YES.

Имя файла, в котором ищутся сообщения, по умолчанию .message, может быть изменено параметром message_file

20-й порт и работа в пассивном режиме

При работе по протоколу FTP между клиентом и сервером устанавливается два соединения:

  • управляющее (по нему идут команды)
  • и соединение передачи данных (по нему передаются файлы).
  • соединение – соединение, по которому передаются команды. Управляющее соединение одинаково для
Активного
  • активного и
Пассивного режима
  • пассивного режимов.
  • Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и
говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль»
  • передает запрос на подключение, содержащий имя и пароль.;
  • соединение передачи данных, по которому передаются файлы.

Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

  • В активном режиме, когда клиент говорит «Привет!», он так же : при запросе соединения клиент также сообщает серверу номер порта ( из динамического диапазона 1024-65535 ) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных.
    FTP-сервер Сервер подключается к заданному указанному клиентом номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных .порта 20;
  • В пассивном режиме, после того как клиент сказал «Привет!», : после получения запроса на соединение сервер сообщает клиенту номер TCP- порта ( из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.;

Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных.
В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.

Якорь
OOPS500
OOPS500
Ошибка "500 OOPS: vsftpd: refusing to run with writable root inside chroot ()"

Из соображений обеспечения максимальной безопасности vsftpd не позволяет пользователям осуществлять запись в свои домашние каталоги.
Появление ошибки 500 обозначает, что:

Информация
  • на сервере включено разрешение на запись (write_enable=YES)
,
  • ;
  • сервер обнаружил вход
совершенно нормального
  • локального пользователя
,
  • ;
совершенно нормально
  • имеющего право  записи в свой собственный домашний каталог,
  • и, на основании наличия такого права, сервер отказывается
впустить пользователя
  • разрешить подключение пользователя.

В случае анонимного пользователя домашним каталогом считается каталог, заданный параметром anon_root.

Для настройки разрешений на запись см. раздел "FTP для локальных пользователей: разрешение на запись". Ограничение доступа пользователей к файловой системе.

Клиенты FTP в составе Astra Linux

Подробная информация по всем клиентам доступна в из встроенный справках (опции --help или -h) и в справочной системе man.

Пакет ftp

Стандартный и самый простой интерактивный клиент ftp. Входит в состав всех основных репозиториев Astra Linux.

Клиент: /usr/bin/netkit-ftp, доступен как /usr/bin/ftp.

Пакет inetutils-ftp

Альтернативный интерактивный клиент ftp. Входит в состав расширенных репозиториев Astra Linux x.7.

Клиент: /usr/bin/inetutils-ftp, доступен как /usr/bin/ftp.

Пакет ncftp

Альтернативный улучшенный интерактивный клиент ftp. Входит в состав расширенных репозиториев Astra Linux x.7.

Клиент: /usr/bin/ncftp3, доступен как /usr/bin/ncftp.

Пакет lftp

Инструмент командной строки, позволяющий выполнять команды FTP в пакетном режиме.  Входит в состав всех основных репозиториев Astra Linux.

Клиент: /usr/bin/lftp