Установка Pure-FTPd на Ubuntu 24.04

Pure-FTPd – это бесплатный FTP-сервер с открытым исходным кодом, доступный для Ubuntu и других дистрибутивов Linux. Разработан с акцентом на безопасность, производительность и простоту использования, Pure-FTPd предлагает такие надежные функции, как поддержка виртуальных пользователей, шифрованных соединений с использованием TLS/SSL и различных механизмов аутентификации. Он также предоставляет такие возможности, как ограничение пропускной способности, ограничение прав пользователей и включение анонимного доступа к FTP. Pure-FTPd часто выбирают за простоту настройки по сравнению с другими FTP-серверами, что делает его популярным выбором как для малых, так и для крупных развертываний на системах Ubuntu.

Протокол передачи файлов (FTP) – это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по сети, такой как Интернет. Разработанный в начале 1970-х годов, FTP позволяет пользователям загружать, скачивать и управлять файлами на удаленном сервере. Он работает по двум каналам: командный канал для управления соединением и канал данных для передачи файлов. FTP может работать в активном или пассивном режиме, который определяет, как сервер и клиент устанавливают соединение. Хотя FTP широко используется для передачи файлов, он считается небезопасным, поскольку данные, включая учетные данные, передаются открытым текстом; в этом руководстве я покажу вам, как настроить Pure-FTPd на использование FTPS (FTP через SSL/TLS), что делает FTP безопасным.

Это руководство шаг за шагом проведет вас через процесс установки и настройки Pure-FTPd на Ubuntu.

Необходимые условия для установки Pure-FTPd

Прежде чем приступить к установке, убедитесь, что у вас есть:

  • Настройка сервера Ubuntu
  • Доступ к учетной записи пользователя с sudo привилегиями

Пошаговая установка Pure-FTPd

Обновление системных пакетов

Сначала обновите список пакетов вашей системы:

sudo apt update

Установка Pure-FTPd

Далее установите Pure-FTPd с помощью следующей команды:

sudo apt install pure-ftpd

Настройка Pure-FTPd для повышенной безопасности

Настройка безопасной среды

Создайте специальную группу для пользователей FTP:

sudo groupadd ftpgroup

Создайте пользователя для Pure-FTPd:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Управление доступом пользователей

Чтобы добавить пользователя на FTP-сервер, выполните следующие действия:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]
sudo pure-pw mkdb

Заменить [username] на нужное имя пользователя.

Настройка TLS для безопасной передачи данных

Сгенерируйте самоподписанный сертификат:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Измените конфигурацию Pure-FTPd, чтобы активировать TLS:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS
sudo service pure-ftpd restart

Дополнительные параметры конфигурации

Вот список общих параметров, которые можно настроить для Pure-FTPd в /etc/pure-ftpd/conf/ каталог на Ubuntu. Имя файла конфигурации выделено жирным шрифтом.

  • AltLog: Указывает альтернативные методы протоколирования. Например, AltLog clf:/var/log/pureftpd.log будет регистрировать передачи в формате W3C.
  • AnonymousOnly: Если эта функция включена (путем создания файла с именем AnonymousOnly), она ограничивает сервер, разрешая только анонимные входы.
  • AntiWarez: Если этот файл существует, пользователям запрещено загружать файлы, которые уже существуют на сервере.
  • AutoRename: Автоматически переименовывает загруженные файлы, если существует файл с таким же именем.
  • Связать: Привязывает сервер к определенному IP-адресу и порту. Например, Bind 21 привязывает к порту 21 на всех доступных адресах.
  • BrokenClientsCompatibility: Обеспечивает совместимость с FTP-клиентами, которые не строго придерживаются стандартов FTP.
  • ChrootEveryone: Если включено, ограничивает всех пользователей их домашним каталогом.
  • CreateHomeDir: Автоматически создает домашние каталоги, если они не существуют, когда пользователь входит в систему.
  • CustomerProof: Повышает устойчивость к распространенным ошибкам в конфигурациях и командах клиента.
  • Daemonize: Если этот файл существует, Pure-FTPd будет работать как демон.
  • DisplayDotFiles: Служит для управления отображением точечных файлов (скрытых файлов).
  • DontResolve: Предотвращает разрешение DNS для ведения журнала и контроля пропускной способности, что может повысить производительность.
  • ExtAuth: Указывает внешнюю программу для аутентификации пользователя.
  • ForcePassiveIP: Заставляет сервер сообщать определенный IP-адрес клиентам пассивного режима.
  • FSCharset: Устанавливает набор символов файловой системы, полезный для имен файлов, отличных от ASCII.
  • IPv4Only или Только IPv6: Запрещает серверу прослушивать только адреса IPv4 или IPv6.
  • KeepAllFiles: Предотвращает удаление любых файлов на сервере.
  • LDAPConfigFile: Указывает путь к файлу конфигурации LDAP для аутентификации.
  • LimitRecursion: Ограничивает глубину рекурсии и количество файлов, отображаемых в списках каталогов.
  • MaxClientsNumber: Ограничивает максимальное количество одновременных клиентов.
  • MaxClientsPerIP: Ограничивает количество одновременных подключений с одного IP-адреса.
  • MaxDiskUsage: Ограничивает процент использования диска.
  • MaxIdleTime: Устанавливает максимальное время простоя в минутах перед отключением клиента.
  • MaxLoad: Отключает клиентов или отказывает в новых соединениях при превышении определенной нагрузки на систему.
  • MinUID: Устанавливает минимальный UID для входа в систему. Пользователи с меньшим UID не смогут войти в систему.
  • MySQLConfigFile: Указывает путь к файлу конфигурации MySQL для аутентификации на основе базы данных.
  • NoAnonymous: Отключает анонимные логины, если этот файл существует.
  • NoChmod: Отключает команду CHMOD на сервере.
  • NoRename: Запрещает пользователям переименовывать файлы.
  • PassivePortRange: Определяет диапазон портов для пассивных соединений (например, 30000 35000).
  • PerUserLimits: Устанавливает ограничения для каждого пользователя.
  • PureDB: Указывает путь к файлу базы данных пользователей PureDB.
  • Квота: Устанавливает ограничения на квоты пользователей.
  • SyslogFacility: Определяет средство syslog для ведения журнала.
  • TLSCipherSuite: Определяет разрешенные шифры TLS для зашифрованных соединений.
  • TrustedGID: Определяет список идентификаторов доверенных групп для входа в систему.
  • UMask: Устанавливает umask по умолчанию для создания файла.
  • UnixAuthentication: Включает аутентификацию по базе данных паролей UNIX.
  • UploadScript: Указывает сценарий, запускаемый после успешной загрузки.

Этот список охватывает наиболее часто используемые параметры конфигурации, но не является исчерпывающим. Всегда обращайтесь к официальной документации Pure-FTPd или используйте

pure-ftpd-wrapper --help

для получения наиболее точной и полной информации.

Примеры

Здесь приведен список настроек Pure-FTPd в /etc/pure-ftpd/conf/ с примерами, иллюстрирующими типы принимаемых ими значений:

  • AltLog: AltLog clf:/var/log/pureftpd.log
    • Пример: clf:/var/log/pureftpd.log
  • AnonymousOnly: Включите, создав файл с именем AnonymousOnly.
  • AntiWarez: Включите, создав файл с именем AntiWarez.
  • Автопереименование: Включается путем создания файла с именем AutoRename.
  • Переплет: Bind 21
  • BrokenClientsCompatibility: Включите, создав файл с именем BrokenClientsCompatibility.
  • ChrootEveryone: Включите, создав файл с именем ChrootEveryone.
  • CreateHomeDir: Включается путем создания файла с именем CreateHomeDir.
  • CustomerProof: Создайте файл с именем CustomerProof.
  • Daemonize: Включите, создав файл с именем Daemonize.
  • DisplayDotFiles: Включите, создав файл с именем DisplayDotFiles.
  • DontResolve: Включите, создав файл с именем DontResolve.
  • ExtAuth: ExtAuth /path/to/authenticator
    • Пример: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1
  • FSCharset: FSCharset utf-8
  • IPv4Only или IPv6Only: Включите, создав файл с именем IPv4Only или IPv6Only.
  • KeepAllFiles: Включите, создав файл с именем KeepAllFiles.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf
    • Пример: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8
    • Пример: 10000 8 (10000 файлов, 8 уровней в глубину)
  • MaxClientsNumber: MaxClientsNumber 50
  • MaxClientsPerIP: MaxClientsPerIP 8
  • MaxDiskUsage: MaxDiskUsage 95
  • MaxIdleTime: MaxIdleTime 15
  • MaxLoad: MaxLoad 4.0
  • MinUID: MinUID 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf
    • Пример: /etc/pure-ftpd/mysql.conf
  • НетАнонимный: Включите, создав файл с именем NoAnonymous.
  • NoChmod: Включите, создав файл с именем NoChmod.
  • NoRename: Включить, создав файл с именем NoRename.
  • PassivePortRange: PassivePortRange 30000 35000
  • PerUserLimits: PerUserLimits 8
    • Пример: 8 (8 одновременных подключений на одного пользователя)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb
    • Пример: /etc/pure-ftpd/pureftpd.pdb
  • Квота: Quota 1000M
    • Пример: 1000M (1000 мегабайт)
  • SyslogFacility: SyslogFacility ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
    • Пример: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000
  • UMask: UMask 133:022
    • Пример: 133:022 (Файлы: 133, Каталоги: 022)
  • UnixAuthentication: Включите, создав файл с именем UnixAuthentication.
  • UploadScript: UploadScript /path/to/script
    • Пример: /usr/local/bin/uploadscript

Эти примеры должны прояснить, как настраивать различные опции в Pure-FTPd.

Мониторинг и обслуживание

Регулярно проверяйте журналы в /var/log/pure-ftpd/ на предмет необычных действий или ошибок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *