How to setup an ftp server with proftpd on ubuntu 18.04 lts

Configure Key Based Authentication

The ProFTPd can use SSH keys to authenticate users, but the keys must be converted to use the RFC4716 format. Luckily, the SSH suite has the ability to convert these files natively.

Begin by creating a directory to house these files:

Now, we need to convert the public keys that are currently used to log into the server. If you only have one user, you can use this command:

<pre>
sudo ssh-keygen -e -f ~<span class=“highlight”>username</span>/.ssh/authorizedkeys | sudo tee /etc/proftpd/authorizedkeys/<span class=“highlight”>username</span>
</pre>

If you have multiple users and you need to separate their log in credentials, you will have to use the actual public key instead of the authorized_keys file, like this:

<pre>
sudo ssh-keygen -e -f <span class=“highlight”>/path/to/idrsa.pub</span> | sudo tee /etc/proftpd/authorizedkeys/<span class=“highlight”>usernamewhoowns_key</span>
</pre>

You can add as many keys as you would like.

When you are finished, restart the ProFTPd server:

Настройка ProFTPD

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

В директиве ServerName укажите имя своего сервера.

Чтобы ограничить пользователей их домашними каталогами (чтобы они не могли перемещаться по файловой системе), внесите:

Чтобы добавить настойки для SQL и выключить проверку оболочки, добавьте в нижней части конфигурации:

Затем отредактируйте конфигурационный файл sql:

Он должен иметь такой вид (удалите всё, что содержится в файле на данный момент):

Примечание: Не забудьте заменить mysql_database, mysql_user и mysql_password своими корректными данными, которые были созданы ранее. Согласно данным, созданным в этом руководстве, строка имеет такой вид:

Чтобы включить модули MySQL в ProFTPD, отредактируйте:

Раскомментируйте (а в случае необходимости – добавьте) следующие строки:

Затем перезапустите ProFTPD:

Настройка системы

Подготовим нашу операционную систему для корректной работы сервера FTP. Для этого настроим синхронизацию времени и правила в Firewall.

1. Время

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

cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

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

apt-get install chrony

systemctl enable chrony

2. Брандмауэр

Если в нашем сервере используется фаервол (по умолчанию, он работает с разрешающими правилами), разрешаем порты:

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

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

а) Iptables

Если для управления netfilter мы используем утилиту Iptables, то вводим команду:

iptables -A INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT

Для сохранения правил можно использовать утилиту:

apt-get install iptables-persistent

netfilter-persistent save

б) UFW

В ufw команда будет следующей:

ufw allow 20,21,60000:65535/tcp

FTP Benutzer erstellen

Für den FTP Zugriff wird ein eigener Benutzer erstellt, ohne gültiger Login Shell und mit dem Homeverzeichnis :

$ sudo adduser ftpuser --shell /bin/false --home /var/www/upload
Adding user `ftpuser' ...
Adding new group `ftpuser' (1001) ...
Adding new user `ftpuser' (1001) with group `ftpuser' ...
Creating home directory `/var/www/upload' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
...

Anonymous Zugang

Um einen anonymen Lesezugriff zu erlauben wird folgende Datei erstellt:

$ sudo vi /etc/proftpd/conf.d/anon.conf
<Anonymous ~ftpuser>
        User    ftp
        Group   ftp
        # Users can also login with ftp
        UserAlias       anonymous       ftp
        # All files belong to ftp
        DirFakeUser on ftp
        DirFakeGroup on ftp
        RequireValidShell       off
        MaxClients      10
        <Directory *>
                <Limit WRITE>
                DenyAll
                </Limit>
        </Directory>
</Anonymous>

Damit der Benutzer auf den anonymen FTP-Bereich zugreifen darf, muss er der Gruppe hinzugefügt werden:

$ sudo adduser ftp ftpuser
Adding user `ftp' to group `ftpuser' ...
Adding user ftp to group ftpuser
Done.

Использование виртуальных пользователей

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

Хранение в файле

Создаем виртуального пользователя командой:

ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpvirt —uid=33 —gid=33 —home=/var/tmp —shell=/usr/sbin/nologin

* где: 

  • /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; 
  • ftpvirt — имя пользователя (логин); 
  • uid и gid — идентификаторы пользователя и группы системной учетной записи (например, www-data); 
  • /var/tmp — домашний каталог пользователя; 
  • /usr/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.

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

vi /etc/proftpd/proftpd.conf

Снимаем комментарий или редактируем опцию (если не сделали это раньше):

DefaultRoot                     ~

* данная опция говорит о том, что корневой директорией для пользователя будет домашняя директория. Это нужно, чтобы FTP-пользователи не могли выйти за пределы дозволенного и видеть на сервере сайты друг друга.

Создаем дополнительный конфигурационный файл для proftpd:

vi /etc/proftpd/conf.d/virtual_file.conf

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

Перезапускаем сервис FTP-сервера:

systemctl restart proftpd

Хранение в MariaDB (MySQL)

Настройку разделим на два этапа:

  1. Установку и настройку СУБД.
  2. конфигурирование FTP-сервера.

В качестве СУБД будем использовать MariaDB / MySQL.

СУБД

Устанавливаем на Ubuntu СУБД и модуль mysql для ProFTPd:

apt-get install mariadb-server proftpd-mod-mysql

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

systemctl enable mariadb

Задаем пароль для пользователя root в mysql:

mysqladmin -u root password

Подключаемся к базе данных:

mysql -uroot -p

Создаем базу данных для хранения пользователей:

> CREATE DATABASE proftpd DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* в данном примере мы создали базу данных proftpd.

Создаем таблицу в созданной базе:

> CREATE TABLE `proftpd`.`users` (
`userid` VARCHAR( 32 ) NOT NULL ,
`passwd` CHAR( 41 ) NOT NULL ,
`uid` INT NOT NULL ,
`gid` INT NOT NULL ,
`homedir` VARCHAR( 255 ) NOT NULL ,
`shell` VARCHAR( 255 ) NOT NULL DEFAULT ‘/usr/sbin/nologin’,
UNIQUE (`userid`)           
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

* данной командой мы создаем таблицу users в базе данных proftpd.

Создаем пользователя mariadb для доступа к таблицам базы proftpd:

> GRANT SELECT ON proftpd.* TO proftpd_user@localhost IDENTIFIED BY ‘proftpd_password’;

* мы создали пользователя proftpd_user с паролем proftpd_password, которому дали право подключаться только с локального сервера.

Добавляем FTP-пользователя в таблицу:

> INSERT INTO `proftpd`.`users` VALUES (‘sqluser’, ENCRYPT(‘sqlpassword’), ’33’, ’33’, ‘/var/tmp’, ‘/usr/sbin/nologin’);

* в данном примере мы создаем пользователя sqluser с паролем sqlpassword.

… и отключаемся от базы:

> \q

Настройка FTP-сервера

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

vi /etc/proftpd/proftpd.conf

Снимаем комментарий для подключения файла sql.conf:

Include /etc/proftpd/sql.conf

Открываем на редактирование файл sql.conf:

vi /etc/proftpd/sql.conf

Приводим его к виду:

<IfModule mod_sql.c>

SQLBackend      mysql

SQLEngine on
SQLAuthenticate users

SQLAuthTypes Crypt

SQLConnectInfo proftpd@localhost proftpd_user proftpd_password

SQLUserInfo users userid passwd uid gid homedir shell

SqlLogFile /var/log/proftpd/sql.log

</IfModule>

* где нужно обратить внимание на следующие параметры:

  • SQLAuthenticate — указываем, что модуль должен выполнять аутентификацию по пользователю.
  • SQLAuthTypes — способ хранения пароля в базе. Можно перечислить несколько вариантов. Для наибольшей безопасности мы разрешили хранить пароли только в зашифрованном виде.
  • SQLConnectInfo — параметры для подключения к базе. Здесь мы задаем имя и сервер базы данных, а также данные пользователя для подключения.
  • SQLUserInfo — информация о таблице, где хранится пользователь. Мы указываем на название таблицы и перечисляем название полей, в которых хранятся нужные сведения.

Создаем дополнительный конфигурационный файл для proftpd:

vi /etc/proftpd/conf.d/virtual_mysql.conf

RequireValidShell               off
AuthOrder                       mod_sql.c

Открываем файл modules.conf:

vi /etc/proftpd/modules.conf

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

LoadModule mod_sql.c

LoadModule mod_sql_mysql.c

Перезапускаем сервис FTP-сервера:

systemctl restart proftpd

Можно пробовать подключаться к базе под пользователем sqluser с паролем sqlpassword. 

Настройка FirewallD

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

Проверим наличие firewalld:

systemctl status firewalld
= вывод команды =
Unit firewalld.service could not be found.

Установим FirewallD вез вопросов командой:

yum -y install firewalld

Добавим в автозагрузку и запустим:

systemctl enable firewalld
systemctl start firewalld

Проверим статус короткой командой:

firewall-cmd --state
= вывод команды =
running

Всё хорошо. Можно приступать к настройке доступа к серверу FTP.

Открытие портов для работы по ftp

Добавим порты в FirewallD:

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --permanent --zone=public --add-port=49000-55000/tcp

Перезагрузим правила FirewallD:

firewall-cmd --reload
= вывод команды =
success

Проверим:

firewall-cmd --permanent --list-all
 public
 target: default
 icmp-block-inversion: no
 interfaces:
 sources:
 services: dhcpv6-client ftp ssh
 ports: 49000-55000/tcp
 protocols:
 masquerade: no
 forward-ports:
 sourceports:
 icmp-blocks:
 rich rules:

Выбор FTP-сервера

На базе Linux/UNIX разработано очень много различных FTP-серверов, а именно: proftpd, pure-ftpd, wu-ftpd, vsftpd. Какой из них выбрать?

Если вам нужно максимум настроек и максимальная гибкость, тогда нужно выбрать proftpd. Это настоящий монстр (в хорошем смысле этого слова) по сравнению с остальными. 

Vsftpd (Very Secure FTP Daemon) позиционируется как простой, но очень защищенный FTP. Обслуживает официальные репозитарии ftp.debian.org, ftp.redhat.com, ftp.openbsd.org, ftp.freebsd.org и других дистрибутивов. Если настройка FTP сервера Ubuntu выполнена правильно, и есть надежда на лучшую защищенность, он вроде бы работает чуть быстрее — вот что можно сказать о vsftpd. Серьезное ограничение vsftpd — он не позволяет в системе одновременную регистрацию обычных и анонимных клиентов. 

Если у вас совсем простой проект и вам нужен сервер, который практически не нужно настраивать, тогда ваш выбор — pure-ftpd. Сервер простенький, но на production-серверах его использовать не рекомендуется. 

Самый древний вариант — wu-ftpd. Старый и «дырявый». По причине его почтенного возраста и не очень совершенной безопасности не рекомендуется к использованию. Оптимальным вариантом на сегодняшний день является сервер proftpd. Настройка FTP сервера Ubuntu такого типа требует знаний, но это наиболее гибко настраиваемое и при этом защищенное решение. 

ProFTPd через TLS

Редактируем конфигурационный файл (приводим к следующему виду):

vi /etc/proftpd.conf 

#<IfDefine TLS>
  TLSEngine                     on
  TLSRequired                   on
  TLSRSACertificateFile         /etc/pki/tls/certs/proftpd.pem
  TLSRSACertificateKeyFile      /etc/pki/tls/certs/proftpd.pem
  TLSCipherSuite                ALL:!ADH:!DES
  TLSOptions                    NoCertRequest
  TLSVerifyClient               off
  TLSRenegotiate               ctrl 3600 data 512000 required off timeout 300
  TLSLog                        /var/log/proftpd/tls.log
#  <IfModule mod_tls_shmcache.c>
#    TLSSessionCache            shm:/file=/var/run/proftpd/sesscache
#  </IfModule>
#</IfDefine>

Генерируем сертификат:

openssl req -x509 -days 1461 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»

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

systemctl restart proftpd

Configure TLS with proftpd

To use TLS, you must create an SSL certificate. Generate SSL certificate with the openssl command :

openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt  -nodes -days 365

The above command will generate a certificate file proftpd.crt in the /etc/ssl/certs/ directory, and certificate key file proftpd.key in the /etc/ssl/private/ directory.

Next, change certificate file permission to 600:

chmod 600 /etc/ssl/certs/proftpd.crtchmod 600 /etc/ssl/private/proftpd.key

Now, come back to the /etc/proftpd directory and configure ProFTPD to use the SSL certificate that you generated.

cd /etc/proftpd/vim proftpd.conf

Uncomment the TLS line:

Include /etc/proftpd/tls.conf

Save tls.conf file and exit.

Next, edit the TLS configuration file to enable secure authentication :

vim tls.conf

Uncomment all these lines:

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

TLSVerifyClient                         off

TLSRequired                             on

Save and exit. The last step is to restart the ProFTPD server:

systemctl restart proftpd

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

Войдите в предварительно установленный phpMyAdmin. В панели управления выберите вкладку Privileges и кликните Add user.

После этого нужно выбрать имя пользователя (в данном руководстве это ftpd) и создать пароль.

Примечание: Эти данные очень важны – они понадобятся в дальнейшем.

В разделе Database for user выберите «Create database with same name and grant all privileges»:

Это создаст пользователя и одноимённую БД для ProFTPD, а затем передаст пользователю все права на неё. Теперь нужно заполнить БД таблицами. Слева можно увидеть новую базу данных (её имя совпадает с именем пользователя, потому в данном случае она называется ftpd); кликните по ней.

Затем откройте вкладку SQL, внесите следующий код и нажмите Go:

Это создаст необходимую БД.

Анонимные пользователи

По умолчанию секция Anonymous, разрешающая вход анонимных пользователей, выглядит так (все комментарии переведены на русский язык):

<Anonymous ~ftp>

      # Limit LOGIN

      #<Limit LOGIN>

      #     Order Allow,Deny

      #     Allow from .examples.net,113.141.114.1

      #     Deny from All

      #</Limit>

      # Ограничиваем WRITE везде, запрещаем запись полностью

      <Limit WRITE>

            DenyAll

      </Limit>

      # LoginPasswordPrompt — будем ли отображать приветствие или нет

      LoginPasswordPrompt off

      # DirFakeMode — прячем настоящие разрешения файлов/каталогов

      DirFakeMode 0640

      # DirFakeUser — прячем настоящих владельцев файлов/каталогов

      DirFakeUser On

      # DirFakeGroup — скрываем настоящую группу файла/каталога

      DirFakeGroup On

      # Для анонимного входа можно использовать как имя anonymous, так и ftp

      UserAlias         anonymous ftp

      # Максимальное число одновременных анонимных пользователей

      MaxClients        10

      # Максимальный размер получаемого файла

      #MaxRetrieveFileSize    512 Mb

      # Ограничиваем скорость передачи данных до 255 Кайт/с

      #TransferRate APPE,RETR,STOR,STOU  255

            # Файл ‘welcome.msg’ будет отображаться при входе, а файл ‘.message’ при

      # каждом новом изменении каталога

      DisplayLogin            welcome.msg

      DisplayChdir            .message

      # Далее следует закомментированная секция Directory, позволяющая указать

      # параметры каталога. В данном случае ограничивается доступ к каталогу

      # pub. Получить доступ к нему могут только сети .examples.net и с IP

# 113.141.114.1

      #<Directory pub>

      #  <Limit ALL>

      #     Order Allow,Deny

      #     Allow from .examples.net,113.141.114.1

      #     Deny from All

      #  </Limit>

      #</Directory>

      # Следующая секция содержит параметры каталога uploads, который обычно

# используется для загрузки файлов анонимными пользователями на сервер.

# Если вам нужна такая возможность, раскомментируйте эту секцию

# Мы запретили чтение этого каталога, но разрешили загрузку в

# него файлов

      #<Directory uploads/*>

      #  <Limit READ>

            DenyAll

      #  </Limit>

      #  <Limit STOR>

            AllowAll

      #  </Limit>

      #</Directory>

</Anonymous>

При желании вы можете расскомментировать необходимые вам строки. Поскольку последняя директива Directory закомментирована, то анонимные пользователи не смогут загружать в каталог uploads файлы. Если нужно разрешить это действие, директиву Directory нужно раскомментировать: 

 <Directory uploads/*>         <Limit READ> 
	            DenyAll 
	        </Limit> 
	        <Limit STOR> 
	            AllowAll 
	        </Limit> 
	      </Directory>

Доступ на запись разрешен всем (AllowAll), но мы рекомендуем открыть его только пользователям нашей виртуальной сети — так безопаснее: 

 <Directory uploads/*> 
	        <Limit READ> 
	            DenyAll 
	        </Limit> 
	        <Limit STOR> 
	            DenyAll 
	            Allow from 10.0.0. 
	        </Limit> 
	      </Directory>

Также в секции Limit LOGIN можно задать ограничение, позволяющее регистрироваться анонимным пользователям только с вашей виртуальной сети, как было показано ранее. 

Как все будет готово, запустим сервер: 

 # service proftpd start 

После запуска просмотрим его состояние (рис. 3): 

 # service proftpd status 

Рис. 3. FTP-сервер запущен 

На этом все. Если у вас что-то не получилось, обращайтесь в техническую поддержку Xelent.

Популярные услуги

Linux хостинг
Готовый Linux хостинг — универсальное решение для виртуальных проектов любого масштаба. Данная платформа используется в основном для разработки статических и динамических сайтов на основе популярных CMS (Drupal, Joomla и т. д.). Вы сами вправе выбирать, какой дистрибутив системы будет предустановлен на веб-сервере. С помощью панели управления клиенты могут в любой момент изменить конфигурацию оборудования.

Аренда FTP сервера
Разработчики приложений часто сталкиваются с ситуаций, когда нужно создать backup файлов, но места для его хранения нет. Аренда FTP сервера в Xelent поможет решить эту проблему.

Ubuntu сервер

Облако на сервере Ubuntu поможет решить проблемы с масштабируемостью проектов. Под высокой нагрузкой сайту или web-приложению будет выделяться больше ресурсов. 

Konfiguration

Im Folgenden wird die Konfiguration des ProFTPD Servers beschrieben. Das Verzeichnis enthält grundsätzlich die Konfigurationsdateien von ProFTPD.

Eigene Konfigurationsdateien werden aber am besten im Verzeichnis abgelegt. Bei Paket-Aktualisierungen bleiben die Dateien in diesem Verzeichnis unberührt. Per include Direktive werden alle Dateien im Verzeichnis in der proftpd.conf eingebunden.

In diesem Beispiel wird die Datei für die Anpassungen des ProFTPD Servers verwendet, damit die Konfiguration wirksam wird:

$ sudo vi /etc/proftpd/conf.d/custom.conf
# Ftp user doesn't need a valid shell
<Global>
    RequireValidShell off
</Global>
# If desired turn off IPv6
UseIPv6 off
# Default directory is ftpusers home
DefaultRoot ~ ftpuser
# Limit login to the ftpuser group
<Limit LOGIN>
    DenyGroup !ftpuser
</Limit>

Anschließend wird die Datei gespeichert und der ProFTPD Server neu gestartet:

$ sudo systemctl restart proftpd.service

SSL/TLS-verschlüsselte FTP-Verbindung mit mod_tls

Das TLS Modul ermöglicht eine verschlüsselte Verbindung über SSL/TLS zum ProFTPD Server.

Achtung: Ohne Verschlüsselung überträgt das FTP-Protokoll sowohl Login- als auch normale Daten im Klartext! Der Einsatz von SSL/TLS wird für Produktivumgebungen daher dringend empfohlen.

Standardmäßig unterstützt ProFTPD das TLS-Modul:

$ sudo proftpd -vv | grep tls
  mod_tls_memcache/0.1
  mod_tls/2.6

Es ist in bereits enthalten und automatisch aktiv.

Zertifikat erstellen

Das folgende Beispiel verwendet als Zertifikat das selbst-signierte Snakeoil Zertifikat des Packages (siehe Ubuntu default snakeoil SSL-Zertifikat erneuern):

$ sudo apt install ssl-cert
$ sudo make-ssl-cert generate-default-snakeoil --force-overwrite
$ sudo ls -la /etc/ssl/certs/ssl-cert-snakeoil.pem
-rw-r--r-- 1 root root 1021 Sep 29 12:16 /etc/ssl/certs/ssl-cert-snakeoil.pem
$ sudo ls -la /etc/ssl/private/ssl-cert-snakeoil.key
-rw-r----- 1 root ssl-cert 1704 Sep 29 12:16 /etc/ssl/private/ssl-cert-snakeoil.key

TLS konfigurieren

Das in den Paketquellen von Debian Stretch vorhandene ProFTPD Paket in der Version 1.3.5b-4 unterstützt auch TLSv1.2.

Im Verzeichnis wird wiederum eine eigene Konfigurationsdatei für SSL/TLS erstellt:

$ sudo vi /etc/proftpd/conf.d/tls.conf
<IfModule mod_tls.c>
        TLSEngine on
        TLSLog /var/log/proftpd/tls.log
        TLSProtocol TLSv1.2
        TLSRSACertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        TLSRSACertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        TLSVerifyClient off
        TLSRequired on
</IfModule>

Anschließend wird ProFTPD neu gestartet.

ProFTPD: настройка пользователей

Вам будет интересно:MiniDLNA — настройка сервера, советы по установке, концигурации

1. Сначала необходимо перейти в следующую директорию: /etc/proftpd/proftpd.conf

В данном файле конфигурации мы должны написать следующее значение:

AuthUserFile /etc/proftpd/ftpd.passwd

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

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

DefaultRoot /www/testit.org

Для того чтобы создать пользователя, нам необходимо ввести данную команду:

ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=first_num —shell=/bin/bash —home=/var/first_user/www/data/ —uid=106 —gid=65534

Тут все весьма просто.

—name=user_num_one — логин пользователя при входе на сервер.

—home=/var/user_some_one/www/data/ — когда пользователь авторизуется, то он попадет в данную директорию по умолчанию.

После нажатия Enter, вам необходимо будет ввести пароль для созданного пользователя.

3. Дальше нам необходимо добавить файл ftpaccess. Сделать это можно простой командой:

touch /var/first_user/www/data/.ftpaccess

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

Configure the database

Go to your phpMyAdmin installation and log in.

Select the «Privileges» tab and click «Add user».

Now you will need to select the desired username, I suggest «ftpd» (without the quotes) and generate the password for the user. Store that information, we will need it later.

In the «Database for user» section, select «Create database with same name and grant all privileges».

This will create a user and a database that ProFTPD can use. Now we need to populate the database with some tables. On the left, you should now see a new database (that has the same name as the user, in our case «ftpd») — click on it.

Now click the SQL tab, paste the following and click «Go»:

CREATE TABLE IF NOT EXISTS `ftpgroup` (
  `groupname` varchar(16) COLLATE utf8_general_ci NOT NULL,
  `gid` smallint(6) NOT NULL DEFAULT '5500',
  `members` varchar(16) COLLATE utf8_general_ci NOT NULL,
  KEY `groupname` (`groupname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf-8 COLLATE=utf8_general_ci COMMENT='ProFTP group table';

CREATE TABLE IF NOT EXISTS `ftpuser` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userid` varchar(32) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `passwd` varchar(32) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `uid` smallint(6) NOT NULL DEFAULT '5500',
  `gid` smallint(6) NOT NULL DEFAULT '5500',
  `homedir` varchar(255) COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `shell` varchar(16) COLLATE utf8_general_ci NOT NULL DEFAULT '/sbin/nologin',
  `count` int(11) NOT NULL DEFAULT '0',
  `accessed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf-8 COLLATE=utf8_general_ci COMMENT='ProFTP user table';

This will create the tables we need.

Add an FTP User

There are two types of FTP users available, the anonymous FTP user and ‘normal’ FTP users:

1. Anonymous FTP:  FTP server provides access to anyone without having to have a user account and password. This should not be used on a publicly available server, but might be an option for a home server or a company LAN.2. FTP User: Only those who have a user account and password can access the FTP server.

Before you create a user for the FTP server, please add /bin/false to your /etc/shells file.

echo “/bin/false” >> /etc/shells

And now, create a user with a specific home directory, disable shell access, and then grant it to the FTP Server.

useradd -m -s /bin/false zenkopasswd zenko

The above command will create a new user called zenko with home directory /home/zenko/ and without shell access /bin/false.

Now, configure ProFTPD to allow access for the user zenko to the FTP server.

cd /etc/proftpd/conf.d/vim zenko.conf

Add this configuration file to allow user zenko to login and upload/download file to/from the server :

<Directory /home/zenko>
Umask 022 022
AllowOverwrite off
     <Limit LOGIN>
        AllowUser zenko
        DenyALL
     </Limit>
     <Limit ALL>
        Order Allow,Deny
        AllowUser zenko
        Deny ALL
    </Limit>
    <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    AllowUser zenko
    Deny ALL
    </Limit>
</Directory>

Save the file and exit vim. Then restart ProFTPD.

systemctl restart proftpd

You can use FTP at this stage already, but we will make it safer by using TLS in the next step.

ProFTPD

ProFTPD (Professional FTP Daemon)

ProFTPD (Professional FTP Daemon) — FTP-сервер для Linux и UNIX-подобных операционных систем.

ProFTPD использует лишь один конфигурационный файл , который располагается по умолчанию в:

  • Linux —
  • CentOS 7—
  • FreeBSD —

Сервер может быть настроен для работы нескольких виртуальных хостов, также поддерживает chroot. Может быть запущен в виде отдельного сервера (демона) или в составе суперсервера inetd. Также поддерживает IPv6.

Расширения: поддерживает модули, добавляющие SSL/TLS-шифрование, аутентификацию через LDAP, работу с SQL, туннелирование соединений через SSH.

Работает со следующими операционными системами: AIX, BSD/OS, Cygwin, FreeBSD, Debian, HP-UX, IRIX, zSeries, Linux (включая Linux для IBM S/390), Mac OS X, NetBSD, OpenBSD, Solaris, Maemo. Встроенная поддержка Microsoft Windows отсутствует. Также имеется графический фронтенд для ProFTPD под названием gProFTPd.

«Установка ProFTPD (ftp-сервер) на Debian 9»

Информация о материале
Родительская категория: ProFTPD
Категория: proftpd.conf

Рейтинг: 5 / 5

После того, как FTP-сервер ProFTPd успешно установлен, хорошо бы озадачиться вопросами безопасности. В этой статье рассмотрим то, как настроить ограничение для ftp пользователей, чтобы они имели доступ только в свой домашний каталог и не могли шастать по всему серверу. Это делается с помощью одной строки в файле конфигурации  вашего ftp-сервера ProFTPD.

proftpd.conf — конфиг ProFTPD в ISPmanager Lite 5 (Debian 8)

Информация о материале
Родительская категория: ProFTPD
Категория: proftpd.conf

Рейтинг: 5 / 5

Для того, чтобы не потерять настроек ftp-сервера ProFTPD при переезде на новый сервер без ISP-manager’а, сохраню настройки основного конфигурационного файла  на всякий случай (вдруг пригодятся, если после переезда что-то пойдёт не так, а старый сервер будет уже удалён вместе со всем его содержимым). Сделать это просто и быстро, с минимальными затратами времени и сил (в отличие от возможных затрат времени и сил в поисках решений при возникновении каких-либо сбоев в работе нового сервера с ftp-доступом пользователей к их файлам).

proftpd.conf — конфиг ProFTPD по умолчанию в Debian 9

Информация о материале
Родительская категория: ProFTPD
Категория: proftpd.conf

Рейтинг: 5 / 5

В предыдущей статье был рассмотрен процесс установки пакета ftp-сервера ProFTPD на сервер с операционной системой Debian 9. До того, как заняться настройками установленного ftp-сервера, имеет смысл взглянуть на его конфиг, который хранится в файле . Ну, и если не досконально его изучить вдоль и поперёк и запомнить, то хотя бы сохранить его. Сохранять исходные (да и промежуточные) состояния системы и её конфигурационных файлов — полезная практика, так как, если что-то пойдёт не так, то можно быстро откатиться до предыдущей стабильно работающей версии настроек системы.

Информация о материале
Родительская категория: Серверы
Категория: ProFTPD

Рейтинг: 5 / 5

Нужно ли поднять полноценный ftp-сервер на Debian или планируется использовать сервер только для http/https протокола для работы сайтов, для доступа к файлам всё равно удобнее и привычнее использовать ftp соединение. А для этого нужно поднять ftp-сервер. Посмотрев, какие сервера для этой цели есть для Debian 9 (и других *nix подобных операционных систем), я остановил свой выбор на ProFTPD (Professional FTP Daemon). В этой статье рассмотрим пошаговую установку данного ftp-сервера на удалённый сервер.

Principales características de proFTPd

El servidor proFTPd es compatible con todos los sistemas operativos basados en Linux y Unix, por tanto, también es compatible con los populares sistemas operativos basados en FreeBSD que son ampliamente utilizados a gran escala para servidores. Este servidor FTP dispone de una grandísima cantidad de opciones de configuración, como, por ejemplo, crear usuarios virtuales que solamente se utilizan en el servidor FTP y que no forman parte del sistema operativo. También podremos definir rutas virtuales para cada uno de estos usuarios que hemos creado anteriormente, limitar el ancho de banda de los diferentes usuarios a nivel de aplicación, e incluso podremos también definir una MasqueradeAddress para que no tengamos ningún problema si utilizamos FTP PASV, el cual es lo más recomendable para no tener problemas en entornos de NAT. Otras opciones son la posibilidad de crear reglas avanzadas para que desde una determinada red tengamos una serie de «permisos», y desde otra red tengamos otros, ya que podremos subdividir el servidor FTP por clases.

Una opción muy importante hoy en día está en el cifrado, tanto a la hora de autenticar a los clientes que se conecten al servidor FTP, como a la hora de transmitir toda la información de manera local y remota. Este software proFTPd incorpora la posibilidad de levantar un servidor FTPES, por tanto, utilizará el protocolo TLS 1.2 o TLS 1.3 para que toda la información desde el origen (cliente FTP) hasta el destino (el propio servidor FTP) esté cifrada y autenticada. Para poder configurar el proFTPd con FTPES, será necesario crear unos certificados digitales, en este tutorial también os enseñaremos a crearlos y utilizarlos, para que todas vuestras comunicaciones con el servidor FTPES sean seguras.

Una vez que ya conocemos las principales características de proFTPd, vamos a ver cómo instalar este servidor en cualquier distribución de Linux o Unix.

Configure SFTP Access with ProFTPd

Now, we need to configure the service to use SFTP.

The default file looks in the subdirectory for additional configuration. We will create a file there to enable the use of SFTP:

ProFTPd can take configuration with the same formatting as Apache. If you are familiar with Apache, this should look familiar. If you are not familiar, it’s easy to figure out.

Copy and paste the following into the file:

Deconstructing the SFTP Configuration

Let’s break the file down into its component pieces so that we can understand it better.

The entire section is wrapped in tags to make sure that the configuration options are only applied if the SFTP module is available (which it is).

  • SFTPEngine on: Enables the SFTP ability for the server

  • Port 2222: Specifies the port where the SFTP connections will be accepted. Since SSH already is looking for connections on port 22, we want a different port.

  • SFTPLog: Configures the location of the log file that will be created.

  • SFTPHostKey: These two lines point to the SSH host keys. This is how the server identifies itself to clients. For the most part, the lines we used should be correct.

  • SFTPAuthMethods: This line configures the server to only accept connections with SSH keys.

  • SFTPAuthorizedUserKeys: This parameter names the location of the SFTP keys that can be used to authenticate someone. The portion will substitute the authenticating user’s name.

  • SFTPCompression delayed: This sets the compression mechanism that will be utilized during file transfers.

Заключение

В данной статье мы подробно и доступным языком рассказали об установке и настройке программы под названием ProFTPD, описали не только как настроить данную программу для запуска, но и как добавить и редактировать привилегии доступа для пользователей. Также было рассказано о том, как создать ssl-сертификат безопасности, что поможет шифровать трафик и не допустить того, чтобы злоумышленники смогли завладеть файлами, которыми вы не хотите делиться. Помимо всего этого, мы узнали о причине разрыва соединения и путях решения данной проблемы, решить ее, как оказалось, не так уж и сложно, достаточно просто убрать комментарии в некоторых строках и пользоваться рабочим серверов. На этом данная статья подходит к концу, очень надеемся на то, что она была вам полезна и помогла узнать ответы на все интересующие вас вопросы.

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

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