Передача файлов по протоколу FTP (File Transfer Protocol), вероятно, по-прежнему является одним из самых популярных способов загрузки файлов на сервер. ProFTPD - это популярный и универсальный FTP-сервер, который доступен как программное обеспечение с открытым исходным кодом и поддерживает TLS (SSL) для безопасных соединений.
По умолчанию FTP является небезопасным протоколом, поскольку пароли и данные передаются в открытом виде. При использовании TLS, как мы делаем это в данном руководстве, все соединения могут быть зашифрованы, что делает FTP более безопасным.
Установите Proftpd и OpenSSL
Proftpd и OpenSSL доступны в репозитории Ubuntu, поэтому мы можем установить их с помощью команды apt:
1 | sudo apt-get install -y proftpd openssl |
ProFTPD установится, как показано ниже. Процесс установки не будет запрашивать никаких данных.
Теперь мы проверим, что proFTPD был установлен и запущен. Выполните эту команду:
1 | sudo proftpd --version |
чтобы проверить версию установленного ProFTPD. Далее мы проверим статус службы, запросив его с помощью команды systemctl:
1 | sudo systemctl status proftpd |
Настройка ProFTPD
После установки ProFTPD вам нужно будет настроить конфигурацию, чтобы сделать его полностью функциональным и безопасным сервером. Файл конфигурации ProFTPD находится в каталоге /etc/proftpd/ - отредактируйте файл proftpd.conf.
1 | sudo nano /etc/proftpd/proftpd.conf |
В строке Servername замените значение на имя вашего хоста или домена :
1 | ServerName "My FTP-Server" |
Раскоментируйте строку DefaultRoot, чтобы включить возможность использования jail для всех пользователей:
1 | DefaultRoot ~ |
и перезапустите ProFTPD через команду systemctl следующим образом.
1 | sudo systemctl restart proftpd |
Добавить пользователя FTP
Существует два типа пользователей FTP: анонимные пользователи FTP и "обычные" пользователи FTP:
Анонимный FTP: FTP-сервер предоставляет доступ любому пользователю без необходимости иметь учетную запись пользователя и пароль. Его не следует использовать на общедоступном сервере, но он может быть подходящим вариантом для домашнего сервера или локальной сети компании.
Пользователь FTP: Только те, у кого есть учетная запись пользователя и пароль, могут получить доступ к FTP-серверу.
Прежде чем создавать пользователя для FTP-сервера, добавьте /bin/false в файл /etc/shells.
1 | sudo echo "/bin/false" >> /etc/shells |
А теперь создайте пользователя с определенным домашним каталогом, отключите доступ к оболочке, а затем предоставьте его FTP-серверу.
1 2 | sudo useradd -m -s /bin/false test sudo passwd tom |
Приведенная выше команда создаст нового пользователя под именем test с домашним каталогом /home/test/ и без доступа к оболочке /bin/false.
Теперь настройте ProFTPD на разрешение доступа пользователя tom к FTP-серверу.
1 | sudo nano /etc/proftpd/conf.d/test.conf |
Добавьте этот файл конфигурации, чтобы разрешить пользователю tom входить в систему и загружать/выгружать файлы на/из сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <Directory /home/test> Umask 022 022 AllowOverwrite off <Limit LOGIN> AllowUser test DenyALL </Limit> <Limit ALL> Order Allow,Deny AllowUser test Deny ALL </Limit> <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD> AllowUser test Deny ALL </Limit> </Directory> |
Сохраните файл и выйдите из nano. Затем перезапустите ProFTPD.
1 | sudo systemctl restart proftpd |
Вы можете использовать FTP уже на этом этапе, но мы сделаем его более безопасным, используя TLS на следующем шаге.
Настройка TLS с помощью proftpd
Чтобы использовать TLS, необходимо создать SSL сертификат. Создайте SSL сертификат с помощью команды OpenSSL :
1 | sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365 |
Приведенная выше команда создаст файл сертификата proftpd.crt в каталоге /etc/ssl/certs/ и файл ключа сертификата proftpd.key в каталоге /etc/ssl/private/.
Затем измените разрешение файла сертификата на 600:
1 2 | sudo chmod 600 /etc/ssl/certs/proftpd.crt sudo chmod 600 /etc/ssl/private/proftpd.key |
Теперь вернитесь в каталог /etc/proftpd и настройте ProFTPD на использование SSL-сертификата, который вы сгенерировали.
1 | nano /etc/proftpd/proftpd.conf |
Раскоментируйте строку TLS:
1 | Include /etc/proftpd/tls.conf |
Сохраните файл tls.conf и выйдите.
Далее отредактируйте файл конфигурации TLS, чтобы включить безопасную аутентификацию :
1 | nano /etc/proftpd/tls.conf |
Раскомментируйте все эти строки:
1 2 3 4 5 6 7 8 9 10 11 12 | TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRSACertificateFile /etc/ssl/certs/proftpd.crt TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired TLSVerifyClient off TLSRequired on |
Сохраните и выйдите. Последним шагом будет перезапуск сервера ProFTPD:
1 | sudo systemctl restart proftpd |
Тестирование ProFTPD
Чтобы проверить конфигурацию, попробуйте подключиться к вашему FTP-серверу с помощью программы FileZilla (здесь я использую FileZilla) и введите IP сервера, имя пользователя, пароль и порт:
- IP сервера : 192.168.0.100
- имя пользователя : test
- Пароль ******
- Порт : 21
Затем нажмите кнопку Quickconnect.
Нажмите 'OK', чтобы подтвердить наш самоподписанный SSL-сертификат.
Вы увидите, что вы вошли на FTP-сервер с сертификатом TLS/SSL.