
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/
на предмет необычных действий или ошибок.