Дерево страниц

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

Ключ

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

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition и РУСБ.10015-01 37 (очередное обновление 17.7)
  • Astra Linux Special Edition РУСБ.10015-37 и 03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.1001510152-01 02 (очередное обновление 74.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 могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключаться анонимно. 

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


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


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

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


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

Для предоставления сервиса доступа по протоколу 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