Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Введение
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 # Анонимный доступ запрещёнзапрещен. # Вход локальных пользователей разрешен # Включена выдача пользователям сообщения при входе в каталог (сообщения ищутся в файле .message) # Раскомментировать, чтобы указать на использование файловой системы UTF8 |
FTP для локальных пользователей: разрешение на запись
Для краткости, повторяющиеся комментарии удалены, показаны изменения по отношению к предыдущему файлу:
Информация |
---|
listen=NO # Для локальных пользователей запись при входе через FTP разрешена dirmessage_enable=YES # локальные пользователи при входе будут перенесены ("chroot()") в домашний каталог # При использовании совместно с включенным |
Выбор 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 | |
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
применяются ко всем пользователям и могут быть переопределены индивидуальными пользовательскими конфигурационными файлами. Для задания индивидуальных параметров:
- В файл
/etc/vsftpd.conf
добавить параметрuser_config_dir=<каталог_индивидуальных_настроек>
. - Для каждого пользователя в каталоге индивидуальных настроек создать файл с именем, совпадающим с именем пользователя. В файле указать индивидуальные настройки для пользователя. Синтаксис указания индивидуальных параметров такой же, как в основном файле.
Разрешения на запись
Для того, чтобы разрешить запись пользователям используется параметр 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
По умолчанию подключения без аутентификации (анонимные подключения) запрещены. Анонимные подключения нежелательны с точки зрения безопасности, однако необходимы для организации сетевых репозиториев. Для разрешения анонимных подключений:
- Изменить значение параметра
anonymous_enable=NO
наanonymous_enable=YES
. - По умолчанию рабочим каталогом для анонимных пользователей является домашний каталог пользователя 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_filesystem=YES
Журнал событий
Журнал событий по умолчанию записывается в файл /var/log/vsftpd.log
. Имя файла журнала событий может быть изменено в файле настроек /etc/vsftp.conf
:
Информация |
---|
# You may override where the log file goes if you like. The default is shown |
Сервис Служба не ведет запись журнала, если файл журнала не существует. Чтобы запись журнала началась, нужно создать этот файл, и перезапустить службу:
Информация |
---|
touch /var/log/vsftpd.log |
Дополнения
Сообщения пользователю при входе в каталог
Включаются опцией 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-сервера. В пассивном режиме, клиент всегда инициирует соединение.
Якорь | ||||
---|---|---|---|---|
|
Из соображений обеспечения максимальной безопасности vsftpd не позволяет пользователям осуществлять запись в свои домашние каталоги.
Появление ошибки 500 обозначает, что:
Информация |
---|
|
В случае анонимного пользователя домашним каталогом считается каталог, заданный параметром 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