FTP-сервер Debian: как установить и настроить свой собственный

Если вы хотите регулярно хранить и получать большие файлы с сервера, то вам нужна подходящая технология передачи данных. Среди возможных решений передача файлов по протоколу File Transfer Protocol (FTP) и сегодня остается одной из самых востребованных. Помимо передачи данных через TCP-порты 20 и 21, протокол передачи данных для IP-сетей, действующий на прикладном уровне, также предлагает возможность создания каталогов и их структурирования по мере необходимости. Поскольку для этого достаточно иметь доступ к FTP-серверу с помощью клиентского программного обеспечения, а сетевое соединение обоих компонентов через Интернет является достаточным, технология передачи данных часто используется для загрузки и выгрузки файлов на и с веб-пространств.

Как арендатор таких веб-ресурсов, вы обычно получаете специальные регистрационные данные, которые можно использовать для подключения к FTP-серверу хостинг-провайдера. Конечно, в качестве самостоятельного хостера вы также можете использовать технологию передачи файлов, установив и настроив свой собственный сервер. Это руководство объясняет, как вы можете настроить такой FTP-сервер с помощью Debian (включая шифрование TLS).

Установка FTP-сервера Debian

Прежде чем приступать к установке и настройке, вам сначала нужно найти и установить соответствующее серверное программное обеспечение. Для Linux существуют различные FTP-серверы, которые в основном имеют открытый исходный код и обычно находятся в управлении пакетами соответствующего дистрибутива. Одним из самых популярных приложений является ProFTPD под лицензией GPL, который хорошо расширяется благодаря своей модульной структуре. Основной конфигурационный файл функционирует на основе директив и групп директив, которые могут быть знакомы любому администратору, знающему веб-серверы Apache. По умолчанию, в Debian ProFTPD также находится в репозитории программного обеспечения. Установка производится обычным способом через терминал с помощью следующей команды:

sudo apt-get install proftpd

Для завершения установки необходимо решить, хотите ли вы использовать ProFTPD в режиме сервера (standalone) или как службу, управляемую inetd. В первом случае FTP-сервер самостоятельно обрабатывает входящие запросы. Во втором случае «суперсервер» inetd/xinetd принимает запросы и пересылает их на FTP-сервер (это имеет смысл только в том случае, если ожидается очень маленький FTP-трафик).

Руководство по работе с FTP-сервером Debian: самые важные шаги настройки

После установки вы можете приступить к настройке ProFTPD. Необходимый для этого конфигурационный файл proftpd.conf находится в каталоге /etc/proftpd/. Чтобы отредактировать его, просто откройте его любым редактором. С помощью стандартной программы Debian nano, например, это можно сделать с помощью следующей команды терминала:

sudo nano /etc/proftpd/proftpd.conf

В различных строках вы найдёте наиболее важные параметры настройки и функции FTP-сервера Debian. Каждый компонент имеет свою собственную строку и требует строго определённых значений: Например, если функция должна быть использована, то возможно либо значение «on» (функция включена), либо значение «off» (функция отключена). Кроме того, перед строкой можно поставить символ хэштега (#), чтобы «закомментировать» строку. В этом случае сервер ProFTPD полностью игнорирует строку, поскольку эта нотация также представляет собой возможность отключения функций. Основная цель хэштега — сделать комментарии к различным настройкам, чтобы улучшить читаемость proftpd.conf.

Совет

Вместо файла proftpd.conf вы также можете использовать свой собственный файл конфигурации и хранить его в каталоге /etc/proftpd/conf.d/. Этот каталог остается незатронутым при обновлении программного обеспечения FTP — вы можете легко снизить риск потери настроек одним простым шагом. Спецификации сервера, сохраненные в папке conf.d, могут быть легко интегрированы в основной файл с помощью директивы include (автоматически при стандартной конфигурации).

Основные настройки: имя сервера, каталог FTP и co.

Прежде чем углубляться в детали при настройке FTP-сервера Debian, сначала необходимо настроить базовую конфигурацию. Сюда входят такие элементарные настройки, как указание имён хостов сервера или каталогов, которые вы хотите предоставить для загрузки и скачивания файлов. Кроме того, у вас есть различные возможности настройки, относящиеся к потенциальным пользователям FTP, как показано в следующем примере конфигурации:

# Specification of host name and welcome message
ServerName  "hostname/ipaddress"
DisplayLogin  "Your login to the Debian FTP server was successful!"

# General login guidelines
<Global>
  # Only allow access with shells defined in /etc/shells
  RequireValidShell  on
  # Deny root login
  RootLogin  off
  # Specification of FTP directories which the user can access
  DefaultRoot  Directory
</Global>

# Define authorized user/user groups for the FTP login
<Limit LOGIN>
  # Login only possible for users of the example group ftpuser
  # Instead of a long listing, the permitted group is simply negated (!)
  DenyGroup  !ftpuser
</Limit>

В этой базовой конфигурации пользователям предоставляется доступ к определенному каталогу. Это имеет смысл, например, если они участвуют в обслуживании веб-сайта и поэтому нуждаются в широких правах доступа. Если функция FTP-сервера Linux заключается в предоставлении пользователям только одного места сохранения их файлов, вам следует настроить ProFTPD на ограничение доступа к домашнему каталогу:

# Only allow users access to their home directory
DefaultRoot ~

Создание FTP-пользователя

Если вы создаете нового пользователя ProFTPD, вы всегда должны определять /bin/false в качестве оболочки входа. Таким образом, вы убедитесь, что пользователь имеет доступ только к FTP-серверу, а не ко всей системе. С помощью следующей команды терминала сначала введите /bin/false в файл разрешенных оболочек:

sudo echo "/bin/false" >> /etc/shells

Теперь вы можете создать своего первого пользователя:

sudo adduser user1 --shell /bin/false --home /home/user1

В этом примере вы создаете учетную запись пользователя с именем «user1» и создаете его домашний каталог на этом же этапе. Наконец, вы назначаете пароль для новой учётной записи пользователя и подтверждаете профиль. Чтобы этот вновь созданный пользователь мог теперь действительно подключаться к FTP-серверу Debian и загружать файлы в (и позже скачивать их из) свой эксклюзивный каталог, укажите домашний каталог в proftpd.conf:

<Directory /home /user1>
  Umask 022 
  AllowOverwrite off
  <Limit LOGIN>
    AllowUser user1
    DenyAll
  </Limit>
  <Limit ALL>
    AllowUser user1
    DenyAll
  </Limit>
</Directory>

Этот пример кода ограничивает каталог различными способами, чтобы сделать его частным местом хранения файлов пользователя user1: С помощью команды umask (022) владелец каталога получает все права первым. Другие пользователи могут только читать файлы, а затем могут выполнять их, только если владелец предоставит необходимые полномочия. Отключенная директива AllowOverwrite предотвращает загрузку файлов, которые могут перезаписать ранее сохраненные данные. Наконец, с помощью команд FTP login (Limit LOGIN) и Run FTP (Limit ALL) блокируются все пользователи, кроме user1.

Совет

Вместо запрета всех команд FTP можно также запретить отдельные операции. Таким образом можно создать, например, каталог, в который пользователи могут загружать только файлы. Подробный обзор различных возможных настроек можно найти в интерактивном руководстве.

Разрешить анонимный доступ

Если вы хотите настроить свой FTP-сервер Debian так, чтобы он служил платформой для публичных загрузок, то обычно вы также хотите разрешить пользователям анонимный доступ к существующим файлам. Для этого вы сначала определяете необходимые права доступа с помощью chmod для последующего каталога загрузок, в данном примере названного /home/ftpdownload:

sudo chmod 755 -R /home/ftpdownload

Владелец каталога также имеет полные права (7 = Read, Write, and Run), в то время как пользователи группы и все остальные пользователи могут только читать и выполнять (5). После определения прав анонимный доступ настраивается в файле proftpd.conf:

<Anonymous ~ftp>
User  ftp
Group  ftpgroup

# Possible login profile for clients
UserAlias  anonymous  ftp

# Conceal user and group properties and set maximum number of clients
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell  off
MaxClients  10

<Directory *>
  <Limit WRITE>
    DenyAll
  </Limit>
</Directory>
</Anonymous>

Чтобы иметь возможность входить на FTP-сервер Debian с профилем ftp, вы должны добавить его в группу ftpuser:

sudo adduser ftp ftpgroup

Настройка шифрования SSL/TLS

Протокол FTP передаёт информацию для входа, а также отправленные данные в открытом виде. Если вы хотите создать частный сервер ProFTPD, доступный не всем, рекомендуется зашифровать вход в систему. Наиболее распространенным решением является шифрование через SSL/TLS, которое можно настроить с минимальными усилиями с помощью бесплатного программного обеспечения OpenSSL. Набор инструментов криптографии по умолчанию включен в управление пакетами Debian и поставляется предустановленным. Также можно запустить установку привычными средствами:

apt-get install openssl

Шаг 1: Генерируем сертификат и ключ

Как только OpenSSL открыт, используйте его для создания сертификата. Поскольку его нужно где-то хранить, сначала создайте соответствующую папку в каталоге ProFTPD:

mkdir /etc/proftpd/ssl

Теперь создайте сертификат (proftpd.cert.pem) и ключ (proftpd.key.pem) со сроком действия один год для вашего Linux FTP-сервера, указав это место следующей командой:

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Ввод собственной информации также необходим для правильной регистрации сертификата:

  • Название страны (2-буквенный код): например, «US» для США или «CA» для Канады.
  • Название штата или провинции (полное название): например, «Колорадо» или «Манитоба».
  • Название населенного пункта (например, город): например, «Лос-Анджелес».
  • Название организации (например, компании): Название компании или ваше имя
  • Название организационного подразделения (например, компании): Название отдела (если применимо), т.е. «IT».
  • Общее имя (например, ВАШЕ имя): Спецификация защищаемого домена, например «ftp.example.com».
  • Адрес электронной почты: Адрес контактной электронной почты

Шаг 2: Включите SSL/TLS в ProFTPD

После того, как вы создали свой собственный сертификат вместе с закрытым ключом, необходимо включить технологию шифрования для сервера ProFTPD. Программное обеспечение FTP-сервера Debian предоставляет для этого модуль mod_tls, который установлен по умолчанию, но отключен. Для активации снова необходимо внести изменения в файл proftpd.conf. Откройте конфигурационный файл и найдите следующую запись:

<IfModule mod_tls.c>
  TLSEngine  off
</IfModule>

Присвойте значение «on» директиве TLSEngine и расширьте секцию следующим образом:

<IfModule mod_tls.c>
  TLSEngine      on
  TLSLog        /var/log/proftpd/tls.log
  TLSProtocol      TLSv1 TLSv1.1 TLSv1.2
  TLSRSACertificateFile    /etc/proftpd/ssl/proftpd.cert.pem
  TLSRSACertificateKeyFile  /etc/proftpd/ssl/proftpd.key.pem
  TLSVerifyClient      off
  TLSRequired      on
</IfModule>

Таким образом, вы только активировали SSL/TLS шифрование для вашего FTP-сервера Debian, но и выполнили самые важные настройки в том же шаге. Теперь определяется файл журнала для записей FTP-соединения (TLSLog), а также путь к сертификату (TLSRSACertificateFile) и ключу (TLSRSACertificateKeyFile). Также указаны возможные версии протокола (TLSProtocol). Последние две строки гарантируют, что модуль не проверяет сертификаты, представленные клиентом (TLSVerifyClient), и что для установки соединения имеются основные требования к шифрованию (TLSRequired). После перезапуска сервера ProFTPD новые настройки вступят в силу:

sudo /etc/init.d/proftpd restart

Шаг 3: Регистрация на сервере ProFTPD через SSL/TLS

Если вы активировали SSL/TLS для ProFTPD (как рекомендуется в этом руководстве по FTP-серверу Debian), пользователям потребуется FTP-клиент, поддерживающий зашифрованное соединение. Одним из наиболее известных агентов является FileZilla, который доступен не только для Debian и других дистрибутивов Linux, но и для macOS и Windows. Программа с открытым исходным кодом представляет собой оптимальное решение для вас и других пользователей для доступа к различным платформам на FTP-сервере.

В менеджере серверов FileZilla при выборе типа сервера укажите сохраненный вариант FTPS («FTP через явный TSL/SSL») вместо FTP. При первом установлении соединения с сервером также необходимо принять сертификат.

Конфигурация ProFTPD — советы и рекомендации

Представленные здесь предустановленные параметры конфигурации — это лишь небольшой выбор возможностей. Многогранное программное обеспечение FTP позволяет реализовать еще более специфические и сложные сценарии при настройке собственного сервера. Официальный сайт ProFTPD предлагает много полезной информации на эту тему. Свободно доступная онлайн-документация содержит, помимо прочего, примеры настроек, подробные инструкции, а также часто задаваемые вопросы и пояснения по отдельным директивам. Там же есть информация о различных стандартных и дополнительных модулях.

Простая настройка FTP-сервера Debian: конфигурация через графический интерфейс пользователя

В этом руководстве мы показали, как настроить FTP-сервер через командную строку с ручным изменением конфигурационного файла с помощью ProFTPD. Однако, как и во многих программах Linux/Unix, существуют различные графические интерфейсы пользователя для программного обеспечения FTP-сервера, которые позволяют настраивать сервер без использования терминала. Среди прочих, к ним относится коллекция графических интерфейсов Gadmintools, пользовательский интерфейс, который легко устанавливается через менеджер пакетов. Интерфейс под названием gadmin-proftpd поможет вам запустить FTP-сервер Debian, создать профили пользователей или внести изменения в файл proftpd.conf. Последняя функция не требует открытия конфигурационного файла — новые или изменённые записи добавляются автоматически.

Примечание

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

Возможные ошибки конфигурации сервера

В некоторых случаях перезапуск сервера ProFTPD может привести к появлению следующего сообщения об ошибке:

„mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: Memcache support not enabled“

В этом случае проблема заключается в том, что модуль кэша mod_tls_memcache был автоматически включен как компонент SSL/TLS при компиляции ProFTPD. Если вы уже установили SSL/TLS шифрование, то теоретически (и при желании) модуль будет кэшировать зашифрованные FTP сессии. Однако, поскольку кэширование сессий не требуется по умолчанию, у вас нет необходимых настроек для работы модуля, что приводит к появлению сообщения об ошибке в ProFTPD. Решение этой проблемы простое: Закомментируйте модуль, а также процесс загрузки модуля в конфигурационном файле:

# LoadModule mod_tls_memcache.c

В дополнение к проблеме с модулем кэширования, неправильная настройка соединения является одной из других сложностей, которые могут возникнуть после настройки FTP-сервера Debian. Чтобы разобраться с этой проблемой, вы можете попробовать различные варианты анализа:

1. Проверьте, запущен ли сервер ProFTPD:

sudo service proftpd status

2. Проверьте, слушает ли сервер ProFTPD порт 21 для регистрации входящих FTP-запросов:

sudo netstat -tlp|grep proftpd

3. Проверьте сообщения об ошибках в журнале ProFTPD:

sudo tail -20 /var/log/proftpd/proftpd.log

4. Проверьте сообщения об ошибках в журнале TLS:

sudo tail -20 /var/log/proftpd/tls.log

5. Тесты соединения на порту 21 с помощью telnet:

sudo telnet 192.0.2.10 21

6. Тесты соединения на порту 21 с помощью TLS:

sudo openssl s_client -connect 192.0.2.10:21 -stattls ftp

Оцените статью
cdelat.ru
Добавить комментарий