ProFTPD это бесплатный FTP-сервер, который используется либо как отдельное приложение, либо как модуль для других программ. Сервер ProFTPD разработан с учетом недостатков Wu-ftpd, с акцентом на высокую производительность, безопасность и гибкое конфигурирование. ProFTPD работает на многих платформах, включая SCO, OpenBSD, AIX, Linux, Mac OS X, NetBSD, Solaris. По факту многие известные компании, такие как Slackware, SourceForge, Duno, Linksys доверяют свой высокий трафик серверу ProFTPD.
В дополнение к поддержке стандарта RFC 959, определяющего протокол FTP, сервера proFTPD также обладают многими продвинутыми функциями, включая конфигурационные файлы в стиле Apache, маскировка файлов и директорий, возобновление прерванных загрузок, псевдонимы файлов и директорий.
В сравнении с другими решениями, которые больше фокусируются, например, на простоте, скорости или безопасности, основное назначение дизайна ProFTPD - реализовать очень мощный FTP-сервер с широким диапазоном опций конфигурации. Некоторые серверы FTP, наподобие Spiceworks и SolarWinds, работают как часть полнофункциональных сетевых инструментов управления. Для некоторых серверов FTP, таких как ProFTPd, требуется включить опцию NoSessionReuseRequired, если вы используете режим Transport Layer Security (TLS), преемник Secure Socket Layer (SSL).
Основные функциональные особенности ProFTPD:
• Любой администратор, кто использует web-сервер Apache, сразу разберется в директивах главного конфигурационного файла и директивах групп. • Предоставляется конфигурация ".ftpaccess" для директории. • Поддерживается вывод в лог и utmp/wtmp. • Функция простого конфигурирования нескольких виртуальных серверов FTP и анонимных сервисов FTP. • Требуются системные функции хоста Unix для запуска ProFTPD в stand alone mode. • Даже для учетных записей, срок действия которых истек, поддерживается shadow password suite. • Поддерживается модульность и IPv6.
Преимущества сервера ProFTPD:
• Сервер ProFTPD не поддерживает команду SITE EXEC, представляющую кошмар для безопасности в современном Интернет-окружении. • В зависимости от загрузки системы пользователи запускают ProFTPD либо как отдельный сервер, или из inetd/xinetd. • ProFTPD позволяет скрывать директории и файлы, используя права владения по пользователям/группам и разрешения доступа стиля Unix. • Настройка ProFTPD простая, и в сети можно найти примеры файлов конфигурации. • Разработчики и администраторы получают полный доступ к исходному коду для аудита. • Для уменьшения риска атак, позволяющих использовать "root" возможности, ProFTPD работает в автономном режиме (stand alone mode), как программируемый не привилегированный пользователь. • Дизайн создан с акцентом на простое расширение с использованием модулей. • Совместим с различными платформами, включая SCO, OpenBSD, AIX, Linux, Mac OS X, NetBSD, Solaris, и т. д. • Пользователи могут легко проверить, сколько полосы канала занимают их сессии FTP с использованием ProFTPD. • Очень широкие возможности по конфигурированию, предоставляется управление доступа на основе TCPwrappers.
Далее описывается пошаговый процесс установки. Подразумевается, что на сервере используется Debian, и для установки есть доступ пользователя root либо пользователя с привилегиями sudo.
[Шаг 1: начало]
Залогиньтесь на сервер и обновите все системные пакеты до последней версии следующими командами.
# apt update -y # apt upgrade -y
После обновления всех пакетов можно приступить к установке сервера ProFTPD.
[Шаг 2: установка сервера ProFTPD]
Сервер PoFTPD доступен в репозитории Debian по умолчанию. Для установки запустите следующую команду, установка займет несколько секунд:
# apt install proftpd -y
После завершения установки вы можете запустить службу ProFTPD следующей командой:
# systemctl start proftpd
Проверим статус активности службы ProFTPD следующей командой:
# systemctl status proftpd ● proftpd.service - ProFTPD FTP Server Loaded: loaded (/lib/systemd/system/proftpd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-10-29 04:20:01 MSK; 3min 20s ago Main PID: 15746 (proftpd) Tasks: 1 (limit: 1140) Memory: 1.7M CPU: 71ms CGroup: /system.slice/proftpd.service └─15746 proftpd: (accepting connections)
Oct 29 04:20:00 5-63-155-210.cloudvps.regruhosting.ru systemd[1]: Starting ProFTPD FTP Server... Oct 29 04:20:00 5-63-155-210.cloudvps.regruhosting.ru proftpd[15744]: Checking syntax of configuration file Oct 29 04:20:00 5-63-155-210.cloudvps.regruhosting.ru systemd[1]: proftpd.service: Can't open PID file /run/proftpd.pid (yet> Oct 29 04:20:01 5-63-155-210.cloudvps.regruhosting.ru systemd[1]: Started ProFTPD FTP Server.
Обратите внимание, что стиль вывода состояния сервера очень похож на вывод состояния сервера веб-сервера nginx [3].
По умолчанию сервер ProFTPD устанавливается для прослушивания порта 21. Это можно проверить следующей командой.
Теперь нужно создать пользователя FTP для проверки работы сервера ProFTPD. Для создания пользователя с именем ftpuser запустите следующую команду.
# adduser ftpuser
После создания пользователя FTP залогиньтесь под ftpuser следующей командой.
# su - ftpuser
Далее создайте несколько директорий (folder1, folder2) и файлов (testing1 testing2) следующими командами.
$ mkdir folder1 folder2 touch testing1 testing2
После этого выйдите из сессии пользователя ftpuser командой exit:
$ exit
После этого вы уже можете подключиться извне под пользователем ftpuser и получить полный доступ к содержимому его домашней директории (/home/ftpuser). Также у ftpuser есть возможность просматривать структуру каталогов сервера, где работает ProFTPD, но без права доступа к содержимому файлов, и конечно без права доступа на запись.
[Шаг 4: конфигурирование сервера ProFTPD]
/etc/proftpd/proftpd.conf это обычно единственный конфигурационный файл, который использует ProFTPD. Каждая директива в этом файле чаще всего находится в одной строке, где указано имя и значение. Каждая директива устанавливает один настраиваемый параметр, такой как место размещения (location), или приветственное сообщение при входе (welcome message), или имя скрытого файла. Дополнительно здесь присутствуют специальные директивы контейнера (container) для объединения других директив, охватывающих множество строк, но относящихся только к одному виртуальному серверу или директории.
Далее нам предстоит отредактировать файл конфигурации по умолчанию ProFTPD и поменять его настройки.
# nano /etc/proftpd/proftpd.conf
Поменяйте следующие настройки:
ServerName Debian11 UseIPV6 on Port 21 SystemLog /var/log/proftpd/proftpd.log DefaultRoot ~
Такое может произойти, если у пользователя по какой-то причине отсутствует домашняя директория (подкаталог в папке /home, носящий имя пользователя).
Для устранения ошибки создайте каталог для пользователя, сделайте его владельцем этого каталога. Пример команд для пользователя andrey:
# mkdir /home/andrey # chown andrey /home/andrey
[Шаг 5: как подключиться к ProFTPD из командной строки?]
На операционных системах Linux есть утилита ftp, которая позволяет из командной строки работать с FTP-сервером. Подразумевается, что вы подключились удаленно к машине Linux, открыли интерфейс командной строки. Тогда для подключения к серверу ProFTPD введите следующую команду (здесь aaa.bbb.ccc.ddd это IP-адрес сервера ProFTPD или доменное имя, соответствующее его IP-адресу):
$ ftp aaa.bbb.ccc.ddd
Команда запросит имя пользователя FTP и пароль.
Connected to ftp-server-ip. 220 ProFTPD Server (debian11) [::ffff:ftp-server-ip] Name (ftp-server-ip:vyom): ftpuser 331 Password required for ftpuser Password:
После успешного логина вы получите шелл FTP, как показано ниже.
230 User ftpuser logged in Remote system type is UNIX. Using binary mode to transfer files. ftp>
Теперь вы можете проверить ваши файлы и директории, которые вы создали на шаге 3, для этого выполните следующие команды.
ftp> ls drwxr-xr-x 2 ftpuser ftpuser 4096 Dec 29 13:08 folder1 drwxr-xr-x 2 ftpuser ftpuser 4096 Dec 29 13:08 folder2 -rw-r--r-- 1 ftpuser ftpuser 0 Dec 29 13:08 testing1 -rw-r--r-- 1 ftpuser ftpuser 0 Dec 29 13:08 testing2
На Windows существуют также удобные программы для доступа через FTP, например FileZilla или TotalCommander.
[Шаг 6: конфигурирование ProFTPD для поддержки SSL/TLS]
Будет хорошей идеей защитить FTP-трафик сервера ProFTPD шифрованием протокола SSL/TLS. Для этого сначала установим инструментарий SSL.
Generating a RSA private key ............................+++++ ................................................................+++++ writing new private key to 'https://имядомена/etc/ssl/private/proftpd.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:NJ Locality Name (eg, city) []:server Organization Name (eg, company) [Internet Widgits Pty Ltd]:EDU Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:server Email Address []:admin@example.com
Затем установите правильные разрешения на сгенерированных файлах сертификата:
После этого отредактируйте файл конфигурации ProFTPD, и определите путь файла конфигурации TLS:
# nano /etc/proftpd/proftpd.conf
Добавьте в файл следующую строку:
Include /etc/proftpd/tls.conf
Сохраните и закройте файл /etc/proftpd/proftpd.conf, и затем отредактируйте файл конфигурации TLS:
# nano /etc/proftpd/tls.conf
В этом файле определите сертификаты TLS и другую конфигурацию, как показано ниже:
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRequired on TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired TLSVerifyClient off
Сохраните и закройте файл, после чего перезапустите службу ProFTPD для внесенных изменений:
# systemctl restart proftpd
После завершения всех этих действий вы можете попробовать подключиться к ProFTPD через GUI-интерфейс программы FileZilla.
[Шаг 7: доступ к ProFTPD с помощью FTP-клиента FileZilla]
Существует несколько клиентов FTP с графическим (GUI) интерфейсом пользователя. Здесь мы подключимся к серверу ProFTPD с помощью программы FileZilla.
A) Сначала установите FileZilla на машине, удаленной по отношению к ProFTPD. Это может быть операционная система Linux или Windows, у которой есть сетевой доступ к серверу ProFTPD по известному IP или доменному имени.
B) Далее кликните на "create new connection". Вы увидите диалог настройки соединения FTP.
C) Укажите FTP IP, username, password, и кликните на кнопку "connect". После успешного подключения вы должны увидеть файлы и директории, которые были созданы на шаге 3.
[Ссылки]
1. How to Install ProFTPD on Debian 11 Server (Step by Step) site:cloudinfrastructureservices.co.uk. 2. TFTP vs FTP – What’s the Difference? (Pros and Cons) site:cloudinfrastructureservices.co.uk. 3. Установка веб-сервера Nginx на Debian 11. 4. ProFTPD create user : How to add a new user? site:bobcares.com.