Как поднять ftp сервер на astra linux

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

File Transfer Protocol, т. е. FTP – протокол передачи файлов и, как понятно из полного названия, предназначен для передачи файлов между удалёнными компьютерами через сеть. Несмотря на то, что сам протокол FTP является на сегодняшний день не самым совершенным из-за того, что передаваемые данные не шифруются, однако это не делает его устаревшим. Кроме того всё-таки к FTP возможно применять криптографическую защиту на основе протокола SSL, что и делает FTP достойным инструментом для передачи файлов.

Поскольку FTP работает по схеме клиент-серверного взаимодействия, то умелая и надёжная реализация протокола (да и вообще системы) в состоянии обеспечить ему надёжную защиту, высокую скорость и, как следствие — популярность, что и можно наблюдать на сегодняшний день, ведь большинство крупных проектов, таких как ftp.gnu.org, ftp.suse.com, ftp.redhat.com, ftp.gnome.org и т. д., используют для распространения программного обеспечения со своих серверов именно FTP. Надо заметить, что такой популярностью FTP обязан, в большей степени, одной из своих многочисленных реализаций — vsFTPd. Это FTP- сервер, поддерживающий работу с самыми современными технологиями по защите данных — SSL и IPv6, его реализация совмещает в себе высокую надёжность, стабильность, скорость работы и передачи данных, а также гибкую настройку работы сервера и широкий функционал. Разработчиком vsFTPd является Крис Эванс — профессиональный исследователь в сферах защиты данных и информационной безопасности. vsFTPd является FTP-сервером по-умолчанию практически во всех Linux-системах, поскольку, как уже упоминалось, помимо надёжности и высокой скорости работы, обладает большими функциональными возможностями, самыми значимыми из которых являются:

  1. Работа с виртуальными пользователями.
  2. Работа с виртуальными IP-адресами.
  3. Конфигурирование пользователей.
  4. Поддержка
  5. SSL-шифровние для защиты передаваемых данных.
  6. Контроль полосы пропускания.

В данной статье рассматривается установка и настройка FTP-сервера на примере vsFTPd, который, кстати, является свободно распространяемым программным обеспечением (ПО) с открытым исходным кодом. Официальная страница проекта: https://security.appspot.com/vsftpd.html.

Установка vsFTPd

Установить Vsftd в Debian-ориентированных дистрибутивах Linux позволяет команда:

Также полезно будет установить и простой FTP-клиент для тестирования соединения и передачи файлов:

Для дистрибутивов на основе RPM-пакетов, CentOS, RedHat:

Примечание: yum – это пакетный менеджер, тот же самый apt, но адаптированный для управления пакетами формата *.rpm.

После установки для vsFTPd будет доступна техническая документация, которая обычно находится в каталоге /usr/share/doc/vsftpd/examples – здесь приведены варианты различных конфигураций, в зависимости от характера и масштабов использования vsFTPd. Ознакомиться с документацией можно также с помощью команды:

Обычно после установки демон vsFTPd автоматически запускается, убедиться в этом можно с помощью следующих команд:

Запуск, перезапуск и остановка сервера:

Для включения демона vsftpd в автозагрузку используется команда:

Аналогично и с командой service.

Если vsFTPd используется в серверных дистрибутивах, в которых часто работает фаервол, например ufw, то ещё может понадобиться разрешить использование портов 20 и 21:

Настройка vsFTPd

Конфигурационным файлом для настройки vsFTPd является файл vsftpd.conf, который обычно находится в каталоге etc/. Ознакомиться с его одержимым можно командой cat:

READ  Как поднять wsus на windows server 2019

На всякий случай полезно перед редактированием оригинального файла настроек сделать его резервную копию:

$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup

FTP-сервер vsFTPd предусматривает два основных варианта работы: с анонимными и авторизованными пользователями. Первый вариант считается «более безопасным», но только потому, что для обеспечения надёжной защиты практически ничего настраивать и не нужно. Но при грамотной организации авторизованного доступа, предполагающего работу с FTP локальных пользователей системы, можно обеспечить безопасность ничуть не хуже, чем при использовании анонимного доступа.

Настройка в режиме анонимного доступа

Работа vsFTPd в данном режиме заключается в том, что действия с файлами на удалённом сервере производятся одним определённым по умолчанию пользователем, например, пользователем с именем «ftp» или «anonymous», при этом в качестве пароля используется e-mail.

Чтобы включить анонимный доступ по FTP нужно в фале vsftpd.conf определить значение «YES» для соответствующей директивы:

Теперь для управления файлами будет использоваться определённый каталог (обычно это /srv/ftp) и определённый пользователь — обычно ftp.

Можно определить и другое расположение файлов для анонимного доступа по FTP, т. е. изменить домашнюю директорию пользователя ftp:

Если нужно, чтобы анонимные пользователи могли ещё и загружать файлы на удалённый сервер, то это позволит сделать директива:

Теперь можно скопировать необходимые для анонимного доступа файлы в домашнюю папку пользователя ftp и перезапустить демон vsftpd:

$ systemctl restart vsftpd

Обычно этого набора настроек достаточно для организации анонимного FTP-доступа. Для проверки соединения можно выполнить команду ftp address_host:

что в случае успешного выполнения даст примерно такой вывод:

Настройка в режиме авторизованного доступа

Для авторизованного доступа проще всего включить использование локальных учётных записей на сервере. Для этого нужно указать следующую директиву в файле конфигурации vsftpd.conf:

Для задания разрешения локальным авторизованным пользователям загружать файлы на сервер указывается директива:

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

Теперь нужно перезапустить vsftpd для активации сделанных изменений:

Ограничение пользователей в своих домашних каталогах

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

Первая включает использование списка пользователей, вторая определяет файл, в котором в каждой строке перечислены пользователи с доступом только к своим домашним каталогам. Если при этом ещё указать директиву:

которая «запирает» в chroot() локальных пользователей и выше своих домашних каталогов они подняться не смогут, то в этом случае пользователи в файле vsftpd.chroot_list ограничиваться своими домашними каталогами не будут, в отличии от тех, кто в этот список не внесён.

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

Лучшим способом исправить эту ошибку является указание некоего общего корневого каталога, куда при подключении будут попадать все пользователи, имея доступ лишь к своим домашним поддиректориям, например:

Можно также для устранения этой ошибки отключить проверку на запись в домашний каталог:

Но всё же это стоит делать лишь тогда, когда есть чёткое понимание, зачем это нужно для конкретной ситуации.

Защита данных с помощью SSL

Чтобы иметь возможность шифровать передаваемые данные, следует настроить vsFTPd в режиме FTPS. Это та же самая передача данных по FTP, но организованная поверх SSL – протокола. Шифрующего и проверяющего данные с помощью сертификатов и ключей.

READ  Как поменять курсоры мыши для windows 10

Для включения режима FTPS нужно задействовать следующую директиву:

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

Эти сертификат и ключ необходимо заменить. Для использования FTPS необходимо использовать сертификат и ключ. Cгенерированные (или полученные) для конкретного сервера или компьютера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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

Если вам нужна служба для организации загрузки по сети то, помимо данной статьи, обратитесь к статье Установка Astra Linux Special Edition 1.5 по сети

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

В файле с настройками присутствуют не все параметры, это означает, что для отсутствующих параметров используется значение по умолчанию, обозначаемое как «Default:» в «man vsftpd.conf».

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

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

man vsftpd.conf

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

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

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

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

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

READ  Драйвера на плату расширения usb 4

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

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

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

# Для локальных пользователей запись при входе через 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 (одно имя — одна строка)

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

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

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

# Раскомментировать, чтобы указать на использование файловой системы 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 для передачи данных.
  • В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.

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

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

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

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

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

Источник