Pure-FTPd — безопасный, бесплатный и легкий FTP-сервер для быстрой и надёжной передачи файлов. Он поддерживает различные дистрибутивы Linux и отлично подойдёт для виртуального сервера с Bitrix GT.
В статье рассмотрим установку и первичную настройку Pure-FTPd.
1. Зайдите на виртуальный сервер через протокол удалённого доступа SSH
# ssh root@IP_адрес_виртуальной машиныДля авторизации на виртуальном сервере через SSH вам понадобится IP-адрес сервера, имя пользователя и пароль. В Личном кабинете выберите нужный сервер и сверху на панели инструментов нажмите кнопку Инструкция — IP-адрес и имя пользователя указаны в блоке Доступ к серверу. Пароль задавался вами при открытии сервера. В случае если пароль был утерян, вы можете самостоятельно установить новый пароль к ВМ по кнопке Задать пароль.
Мы не храним пароль для доступа к серверу. Ответственность за его сохранность лежит на пользователе.
2. Используя встроенный пакетный менеджер yum, установите FTP-сервер
Debian / Ubuntu:
# apt install -y pure-ftpdRHEL / CentOS:
# yum install -y pure-ftpd
3. Настройте конфигурацию Pure-FTPd
Для корректной работы встроенных механизмов безопасности Pure-FTPd и его взаимодействия с FTP-клиентами, такими как FileZilla, нужно задать несколько ключевых параметров. Необходимые настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов: имя файла — это название параметра, а его содержимое — значение. Для изменения параметров нужно создать файл с его названием и значением внутри.
Ниже приведены команды для создания файлов с нужными параметрами.
Ограничим доступ пользователей (включим механизм изоляции chroot-jail) — каждый будет видеть только свою папку и не сможет зайти в системные каталоги сервера:
# echo yes > /etc/pure-ftpd/conf/ChrootEveryoneОтключим PAM-аутентификацию — по умолчанию она проверяет системных пользователей Linux. Вместо неё будем использовать PureDB, где создадим отдельных виртуальных пользователей только для FTP:
# echo no > /etc/pure-ftpd/conf/PAMAuthenticationУкажем границы пассивных портов для стабильной работы с FTP-клиентами в пассивном режиме:
# echo '30000 50000' > /etc/pure-ftpd/conf/PassivePortRangeУкажем минимальное значение UID для пользователя Pure-FTPd. Веб-сервер Bitrix GT работает от имени пользователя www-data с UID = 33, поэтому разрешаем вход всем пользователям с UID не ниже этого значения:
# echo 33 > /etc/pure-ftpd/conf/MinUIDДругие параметры конфигурации можно посмотреть в соответствующем разделе на официальном сайте проекта Pure-FTPd.
4. Откройте в брандмауэре диапазон используемых портов 20-21 и 30000-50000
Действия могут отличаться в зависимости от ОС и используемого брандмауэра.
Для nftables
В актуальных версиях Debian по умолчанию работает nftables. Чтобы открыть порты, отредактируйте конфигурационный файл через удобный вам текстовый редактор:
# vim /etc/nftables.confДобавим в блок chain input правила, разрешающие подключения на FTP-порты (20–21), и порты для пассивного режима (30000–50000).
tcp dport 20-21 accept
tcp dport 30000-50000 accept
Применить конфигурацию можно с помощью команды:
# nft -f /etc/nftables.confДля ufw
Если в качестве основного интерфейса брандмауэра используется ufw, то выполните эти разрешающие команды:
# ufw allow 20:21/tcp
# ufw allow 30000:50000/tcpДля firewalld
На CentOS по умолчанию используется брандмауэр firewalld. В этом случае команды для открытия портов будут такими:
# firewall-cmd --permanent --add-port=20-21/tcp
# firewall-cmd --permanent --add-port=30000-50000/tcp
# firewall-cmd --reload5. Включите авторизацию пользователей из PureDB
Одна из особенностей PureFTPd — механизм виртуальных пользователей FTP. Виртуальные пользователи хранятся отдельно от системных учётных записей. Это означает, что они не могут войти в систему напрямую, что значительно повышает безопасность.
Для виртуальных пользователей назначается своя директория, необходимые квоты на объём файлов и другие ограничения. При этом с реальным системным пользователем могут ассоциироваться несколько виртуальных пользователей PureFTPd.
Подключим авторизацию через PureDB. Для этого создадим символьную ссылку на конфигурационный файл:
# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60PureDBПо умолчанию используется авторизация Unix и PAM. Для использования PureDB мы указываем цифру 60 в названии создаваемой символической ссылки, чтобы проверка пользователя выполнялась приоритетно с проверки из PureDB:

6. Запустите FTP-сервер и добавьте его в автозагрузку
Теперь можно запустить службу Pure-FTPd, добавив её также и в автозагрузку:
# systemctl enable pure-ftpd
# systemctl start pure-ftpd
Проверьте, что служба начала работать:
# systemctl status pure-ftpd

Если по какой-то причине служба не запустилась, первым делом проверьте корректность выполнения команд из пункта 3.
7. Включите шифрование SSL/TLS
Работа ряда FTP-клиентов, например, FileZilla, требует защищённого TLS-соединения, поэтому выпустим сертификат для нашего FTP-сервера.
Для этого используем утилиту openssl — она уже установлена в системе:
# openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem -days 3650Запущенная команда задаст несколько информационных вопросов, можно пропустить ответ на них, нажав Enter:

Зададим права на файл полученного сертификата:
# chmod 600 /etc/ssl/private/pure-ftpd.pemТеперь выберем режим работы TLS. Если хотите разрешить и обычные, и зашифрованные подключения, выполните команду:
# echo 1 > /etc/pure-ftpd/conf/TLSЕсли только зашифрованные TLS подключения, то:
# echo 2 > /etc/pure-ftpd/conf/TLSПерезапустите службу Pure FTPd, чтобы изменения вступили в силу:
# systemctl restart pure-ftpd8. Создайте FTP-пользователя
Добавьте FTP-пользователя bitrix-gt c правами пользователя www-data и доступом к директории /var/www/html:
# pure-pw useradd bitrix-gt -u www-data -g www-data -d /var/www/htmlЭто стандартная директория для Bitrix GT, но в вашем проекте она может быть другой — уточните путь к корню сайта.
Если директория вам неизвестна, но сайт использует окружение для работы, найдите в директории /etc/nginx/bx/site_enabled виртуальный хост с именем вашего сайта:
# ls /etc/nginx/bx/site_enabledВыберите файл с именем вашего сайта и посмотрите, какая директория указана как корневая. Для этого выполните grep с выражением root на файл виртуального хоста:
# grep root /etc/nginx/bx/site_enabled/bitrix-gt.fvds.ru.confКоманда выведет значение корневой директории для сайта. Укажите директорию в команде для создания FTP-пользователя. Имя для пользователя можно выбрать любое (не только лишь bitrix-gt), а их количество ничем не ограничено.
После этого обновите базу PureDB:
# pure-pw mkdbНа этом настройка сервера FTP завершена. Теперь вы можете с помощью вашего FTP-клиента (например, FileZilla) попробовать подключиться к виртуальной машине Bitrix GT и поработать с файлами.
Если возникнут сложности — наша поддержка всегда готова ответить на ваши вопросы.