Page tree


Данная статья применима к:

  • 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 могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключаться анонимно. 


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

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


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

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

sudo apt install vsftpd

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

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

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

Настройка

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

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

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

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

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

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

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

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

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

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

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

# Выбрана работа по 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

Выбор 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_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 для анонимных пользователей: только чтение

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

  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 ()"). При этом запись может быть разрешена в подкаталоги этого каталога.

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

Журнал событий  по умолчанию записывается в файл /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 для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. Сервер подключается к указанному клиентом номеру порта используя для передачи данных порта 20;
  • В пассивном режиме: после получения запроса на соединение сервер сообщает клиенту номер порта из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных;

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

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

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

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

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

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

Клиенты 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