Настройка ftp-сервера с помощью proftpd ­ дневник ­ максим боголепов

Введение

Периодически возникает необходимость  давать доступ к файлам сайта для веб разработчиков или других пользователей. Так как используется VDS сервер с настроенным функционалом на базе Nginx, то все права на файлы при добавлении и изменении должны быть как у указанного сервиса. Вначале пытался настроить vsftpd но функционал позволяет настроить только права на редактируемые файлы чтобы они оставались такие как были но вот все новые были с правами пользователя. Поэтапно опишу все действия которые привели меня к желаемому результату.

Более подробно вы можете ознакомиться с документацией по настройке сервера FTP на сайте разработчика ProFTPd.

Создание пользователя

Кликните на таблицу ftpuser в левом столбце, а затем – на вкладку Insert.

Это позволяет вставить пользователя

Заполните поля userid (имя пользователя, которое будет использоваться для входа в FTP) и homedir (домашний каталог пользователя FTP; обратите внимание: нельзя указать несуществующий каталог, а затем создать его)

Пароль в поле passwd должен быть зашифрованным; чтобы создать такой пароль, можно использовать этот фрагмент (в оболочке сервера):

Примечание: Конечно, условный пароль password нужно заменить своим настоящим паролем.

В целом, остальные поля понятны без объяснений и, как правило, заполняются позже (например, login count, last logged in и т.п.).

Итак, необходимая база данных подготовлена, осталось только настроить ProFTPD для её использования.

Установка и базовая настройка

Устанавливаем EPEL репозиторий:

yum install epel-release

Устанавливаем ProFTPd:

yum install proftpd

Открываем необходимые порты на брандмауэре:

firewall-cmd —permanent —add-port=20-21/tcp

firewall-cmd —permanent —add-port=60000-65535/tcp 

firewall-cmd —reload

Добавим небольшие правки в начальный конфигурационный файл:

vi /etc/proftpd.conf

UseIPv6 off
IdentLookups off
PassivePorts 60000 65535

Разрешаем сервис и запускаем его:

systemctl enable proftpd

systemctl start proftpd

Можно пробовать подключаться под любой системной учетной записью. Если необходимо добавить отдельного пользователя, вводим команду:

useradd ftpuser -d /var/www -s /sbin/nologin

passwd ftpuser

* в данном примере мы создали пользователя ftpuser с домашней директорией /var/www.

Create Your User

Click on the «ftpuser» table in the left column and then on the «Insert» tab.

This allows you to insert a user. Populate the userid (which is the username a user will login to FTP) and homedir (the FTP user home — should be present on the system).

Password in the passwd field should be encrypted, to do so you can use this snippet (on your server shell) to generate the password string you can paste into the passwd field:

/bin/echo "{md5}"`/bin/echo -n "password" | openssl dgst -binary -md5 | openssl enc -base64`

Of course replace «password» with your/users desired password.

Here you can see some other field that are self explanatory and are usually used later (login count, last logged in…).

There, you have the correct database, now we just need to configure ProFTPD to use it.

Установка и базовая настройка vsFTPd

Обновляем систему:

yum update

Запускаем процесс установки:

yum install vsftpd

После открываем на редактирование следующий файл:

vi /etc/vsftpd/vsftpd.conf

И приводим его к следующему виду:

anonymous_enable=NO
chroot_local_user=YES

allow_writeable_chroot=YES
pasv_min_port=40900
pasv_max_port=40999

* первые две строчки мы редактируем: anonymous_enable разрешает подключение анонимных пользователей, поэтому мы отключаем такую возможность; chroot_local_user запрещает выход за пределы домашней директории пользователя. Третью, четвертую и пятую строки мы дописываем — allow_writeable_chroot разрешает подключения пользователю, у которого есть права на запись в корневую директорию; это диапазон динамических портов, которые будут использоваться vsFTPd

Данный диапазон важно указывать, если используется брандмауэр. Сам диапазон можно задать любой из незарегистрированных портов

Отключаем SELinux следующими командами:

setenforce 0

sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config

* первая команда отключит SELinux, вторая — отключит его автозапуск после перезагрузки.

Добавляем правила в брандмауэр для корректной работы FTP-сервера:

firewall-cmd —permanent —add-port=20-21/tcp

firewall-cmd —permanent —add-port=40900-40999/tcp

firewall-cmd —reload

Разрешаем автозапуск vsFTPd и запускаем его:

systemctl enable vsftpd

systemctl start vsftpd

По умолчанию, к vsFTPd нельзя подключиться с использованием учетной записи root. Поэтому нужно использовать другую пользовательскую запись или создать новую следующей командой:

useradd ftpuser -d /var/www -s /sbin/nologin

* ftpuser — имя учетной записи; /var/www — домашняя директория; /sbin/nologin запрещает локальный вход в систему.

Задаем пароль новому пользователю:

passwd ftpuser

Базовая настройка закончена — можно пробовать подключаться к FTP-серверу.

Connecting with a Client

There are plenty of FTP clients that we can use to connect with our server. The good ones implement SFTP capabilities as well. We will demonstrate how to connect through FileZilla, which is available on all major platforms.

Open FileZilla’s preferences. Find the “SFTP section in the left-hand menu.

Click on «Add keyfile”, and navigate to the location of your private key. Usually, this will be in . You will probably get a message saying that FileZilla will convert it to a supported format.

Press “Okay” to exit the preferences.

In the main interface, type followed by the domain name or IP address of your server in the “Host” field. Place your username in the “Username” field and fill in the port you chose for the “Port” field:

Click “Quickconnect” and FileZilla should connect automatically using your SSH keys.

Сервер закрывает соединение. Что делать?

Что же делать если вы увидели данную ошибку: ProFTPd Failed to retrieve directory listing — Connection closed by server

Решение довольно простое. Сначала переходим в хорошо знакомый нам файл конфигурации ProFTPD и раскомментируем следующие строки:

PassivePorts 49152 65534

Если же и это не помогло в решении данной проблемы, то в этом же файле убираем комментарий со строки:

Include /etc/proftpd/modules.conf

Ели данной строки вы не обнаружили, то просто добавляем ее в любое свободное место. Таким образом, проблема должна быть решена, а вы можете радоваться рабочей версией сервера. Также хочется отметить, что настройка ProFTPD для Ubuntu и некоторых других операционных систем одинакова, поэтому искать мануалы под вашу операционную систему бессмысленно.

Meldung: memcache support not enabled

In manchen Fällen kann bei einem Neustart des ProFTPD Servers die folgende Meldung erscheinen:

$ sudo service proftpd restart
 ok  Stopping ftp server: proftpd.
.... Starting ftp server: proftpddebian proftpd4856: mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL
session cache: Memcache support not enabled
. ok

Hier ist das Problem, dass das Debian Package nicht mit kompiliert ist.

Das Modul kann daher auskommentiert werden — eine Raute wird vor der Zeile eingefügt:

$ sudo vi /etc/proftpd/modules.conf
...
# LoadModule mod_tls_memcache.c
...

Ein anschließender Neustart erfolgt ohne der Memcache Meldung:

$ sudo service proftpd restart
 ok  Stopping ftp server: proftpd.
 ok  Starting ftp server: proftpd.

Установка и настройка

Обновляем списки портов в репозиториях:

apt-get update

Устанавливаем vsFTPd:

apt-get install vsftpd

Открываем конфигурационный файл:

vi /etc/vsftpd.conf

И снимаем комментарий со следующих строк:

write_enable=YES
chroot_local_user=YES

* write_enable — разрешить копировать файлы на сервер; chroot_local_user — использовать для пользователей изолированное окружение.

И дописываем следующее:

allow_writeable_chroot=YES
pasv_enable=YES
pasv_max_port=60000
pasv_min_port=65535

* где allow_writeable_chroot разрешаем использовать домашние каталоги с правом на запись; pasv_enable включает пассивный режим работы FTP-сервера; pasv_max_port и pasv_min_port определяют диапазон портов для пассивного режима.

Если используется брандмауэр, необходимо добавить правила и разрешить следующие порты:

  • 20 — основной порт FTP для передачи.
  • 21 — для активного режима. Используется для передачи команд.
  • 60000-65535 — диапазон динамических портов, который нами был определен в конфигурационном файле. Используется для пассивного режима.

Разрешаем и перезапускаем сервис:

systemctl enable vsftpd

systemctl restart vsftpd

Настройка ProFTPD: создание сертификата

Для того чтобы создать надежное соединение, нам необходимо создать сертификат безопасности. Сделать это можно при помощи трех команд, которые необходимо прописывать по очереди.

openssl req -new -x509 -days 365 -nodes -out
/etc/ssl/certs/proftpd.cert.pem -keyout
/etc/ssl/certs/proftpd.key.pem

Создает сертификат на год.

После этого нам необходимо заполнить простую форму:

Тут все весьма понятно. Вписываем всю необходимую информацию и продолжаем.

После этого необходимо отредактировать файл tls.conf. Сделать это можно весьма просто, выполнив команду:

nano /etc/proftpd/tls.conf

Она откроет окно, в котором нам необходимо поменять следующие строки.

TLSEngine on
TLSLog /var/log/proftpd/proftpd_tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem
TLSVerifyClient on
TLSRequired off

В данной ситуации очень важным является то, чтобы вы следили за отсутствием повторов данных строк.

Следующим шагом необходимо включить TLS в файле конфигурации ProFTPD.

Для этого выполняем команду для редактирования текстовых файлов:

nano /etc/proftpd/proftpd.conf

После этого вам необходимо раскомментировать данную строчку:

Include /etc/proftpd/tls.conf

В случае если данная строка вовсе отсутствует, то просто добавляем ее. Готово, конфигурация TLS включена и на этом можно закончить настройку шифрования соединения. Давайте же перейдем к следующему шагу.

Необходимо в тот же самый файл конфигурации ProFTPD добавить строчки:

RootLogin off

Квоты

Таблицы:

  • — лимиты для пользователей
  • — размер файлов созданных пользователем

Инициализация

Настройка сервера:

/etc/proftpd/proftpd.conf
<IfModule mod_quotatab.c>
QuotaEngine on
QuotaOptions ScanOnLogin
QuotaDirectoryTally on
QuotaDisplayUnits Gb
QuotaShowQuotas on
QuotaLimitTable file:/etc/proftpd/quota.limittab
QuotaTallyTable file:/etc/proftpd/quota.tallytab
QuotaLog /var/log/proftpd/quota.log
</IfModule>

Параметр позволяет производить пересчёт размеров файлов в папке пользователя при его входе на сервер.

Создание таблиц (выполняется один раз):

proftpd-quota-prepare.sh
#!/bin/bash
ftpquota --create-table --type=limit --table-path=etcproftpdquota.limittab
ftpquota --create-table --type=tally --table-path=etcproftpdquota.tallytab

Использование

Создание лимита для пользователя в размере 5 Гб:

proftpd-quota-create.sh
#!/bin/bash
 
UserName=FTPuser
 
ftpquota --name=$UserName \
 --bytes-upload=5 --add-record --type=limit --quota-type=user \
 --units=Gb --verbose --table-path=etcproftpdquota.limittab

Изменение лимита для пользователя на 50 Гб:

proftpd-quota-change.sh
#!/bin/bash
 
UserName=FTPuser
ftpquota --name=$UserName --bytes-upload=50 --update-record --type=limit --quota-type=user \
          --units=Gb --verbose --table-path=etcproftpdquota.limittab

Удаление лимита для пользователя :

proftpd-quota-delete.sh
#!/bin/bash
 
UserName=FTPuser
 
ftpquota --delete-record --type=limit --name=$UserName --quota-type=user \
         --table-path=etcproftpdquota.limittab
 
ftpquota --delete-record --name=$UserName  --verbose --quota-type=user \
     --type=tally --table-path=etcproftpdquota.tallytab
Добавить комментарий

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

Adblock
detector