Настройка ProFTPd для хостинга

В данной статье я попытаюсь просто и доступно описать установку и настройку ProFTPd, для предоставления ftp доступа к сайту для конкретного пользователя к определенному виртуальному хосту.

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

Сервер Apache2 работает от имени www-data, у которого UserId=33, GroupId=33, соответственно наш пользователь должен обладать такими же правами.

Устанавливаем сервер  proftpd

sudo apt-get install proftpd

Открываем конфиг ProFTPd, по-умолчанию он располагается /etc/proftpd/proftpd.conf.

sudo gedit /etc/proftpd/proftpd.conf

Удаляем в нем все и вставляем весь текст показанный ниже:

# выключаем использование IP v6 за ненадобностью
 ServerType standalone
 UseIPv6 off

# DeferWelcome off
 DefaultServer on

# права, с которыми будут создаваться файлы и папки
 Umask 022

#ServerName "0.0.0.0" # Любое имя для ftp-сервера
 ServerIdent on "My FTP Server"
 ServerAdmin nik_user@mail.ru

# использование протокола ident (RFC 1413) для идентификации подслединившегося клиента;
 # рекомендуется отключить, все равно этот протокол никто больше не использует;
 # область действия - основной сервер, Global, VirtualHost
 IdentLookups off

RootLogin off # запрещаем подключать от пользователя root

# определять имя хоста клиента по IP адресу (желательно отключать для ускорения доступа)
 UseReverseDNS off

# Порт сервера
 Port 21 # из соображений безопасности можете поставить любой незанятый

PassivePorts 49152 65534
 #MasqueradeAddress None
 TimesGMT off

# Против DDOS атаки, полезно для безопасности
 # максимальное число одновременно запускаемых процессов в режиме standalone
 MaxInstances 8

MaxLoginAttempts 3

MaxClientsPerHost 8
 MaxClientsPerUser 8
 MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
 AccessGrantMsg "Welcome to Server"

TimeoutLogin 20
 TimeoutNoTransfer 1200
 TimeoutIdle 1200
 DisplayLogin welcome.msg
 DisplayChdir .message

#Запрещаем заливать на сайт файлы начинающиеся с точки, полезно для безопасности
 DenyFilter \*.*/

# директория, на которую устанавливается сервер
 # (сейчас указана домашняя директория подключенного пользователя)
 DefaultRoot ~

# Пользователь и группа, от которого работает сервер
 User nobody
 Group nogroup

AuthUserFile /etc/proftpd/ftpd.passwd
 DirFakeUser off nobody
 DirFakeGroup off nobody
 DefaultTransferMode binary
 AllowForeignAddress off
 AllowRetrieveRestart on
 AllowStoreRestart on
 # Автоматическое удаление недогруженного файла.
 DeleteAbortedStores off

TransferRate RETR 220
 TransferRate STOR 250
 TransferRate STOU 250
 TransferRate APPE 250
 SystemLog /var/log/secure
 RequireValidShell off
 <IfModule mod_tls.c>
 TLSEngine off
 TLSRequired off
 TLSVerifyClient off
 TLSProtocol SSLv23
 TLSLog /var/log/proftpd_tls.log

TLSRenegotiate required off
 </IfModule>
 <IfModule mod_ratio.c>

# Количество попыток ввода пароль перед отсоединением
 MaxLoginAttempts 30

# Ограничить допустимый размер загружаемых файлов
 #MaxStoreFileSize 2 Gb

# Ограничить допустимый размер скачиваемых файлов
 #MaxRetrieveFileSize 2 Gb

# Логи
 TransferLog /var/log/proftpd/xferlog
 SystemLog /var/log/proftpd/proftpd.log

Ratios off
 SaveRatios off
 RatioFile "/restricted/proftpd_ratios"
 RatioTempFile "/restricted/proftpd_ratios_temp"
 CwdRatioMsg "Please upload first!"
 FileRatioErrMsg "FileRatio limit exceeded, upload something first..."
 ByteRatioErrMsg "ByteRatio limit exceeded, upload something first..."
 LeechRatioMsg "Your ratio is unlimited."
 </IfModule>

#VALID LOGINS Добавляем пользователей, которым разрешен доступ к серверу
 <Limit LOGIN>
 AllowUser ubuntu
 AllowUser name_user
 DenyALL
 </Limit>

<Anonymous /var/www/ubuntu-desktop.ru>
 User ubuntu
 Group group1
 AnonRequirePassword on
 MaxClients 10 "The server is full, hosting %m users"
 DisplayLogin welcome.msg
 <Limit LOGIN>
 Allow from all
 Deny from all
 </Limit>

# Разрешить перезапись файлов
 AllowOverwrite off

# разрешить перезаписывать существующие файлы,
 # область действия - server config, VirtualHost, Anonymous, Directory, Global, .ftpaccess
 AllowOverwrite on
 <Limit LIST NLST STOR STOU APPE RETR RNFR RNTO DELE MKD XMKD SITE_MKDIR RMD XRMD SITE_RMDIR SITE SITE_CHMOD SITE_CHGRP MTDM PWD XPWD SIZE STAT CWD XCWD CDUP XCUP >
 AllowAll
 </Limit>
 <Limit NOTHING >
 DenyAll
 </Limit>
 </Anonymous> 

<Limit LOGIN>Все настройки файла можно оставить как есть, нас интересуют настройки пользователя которому разрешен доступ к серверу:

AllowUser ubuntu
AllowUser name_user
DenyALL
</Limit>

и

<Anonymous /var/www/ubuntu-desktop.ru>
User ubuntu
Group group1
AnonRequirePassword on
MaxClients 10 "The server is full, hosting %m users"
DisplayLogin welcome.msg
<Limit LOGIN>
Allow from all
Deny from all
</Limit>

Как видно, я создал пользователя «ubuntu», задал ему пароль (см.ниже), указал сайт (ubuntu-desktop.ru) к которому разрешен ftp доступ.

Теперь приступим к созданию пользователя (пример) «ubuntu». Нам необходимо чтобы пользователь мог удалять, редактировать файлы. Пользователь должен иметь идентификатор 33, группу 33 и ограничен домашним каталогом сайта /var/www/ubuntu-desktop.ru.

Создаем пользователя:

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ubuntu --uid=33 --gid=33 --home=/var/www/ubuntu-desktop.ru --shell=/bin/false

Далее придумайте пароль для нового пользователя.

После выполнения команды у вас появится файл /etc/proftpd/ftpd.passwd, в нем будут находится данные созданного пользователя.

632578623784678934926
Перезапускаем ftp:

sudo /etc/init.d/proftpd restart

Проверяем доступно ли содержимое сайта через веб-браузер:

В адресной строке набираем (пример): ftp://ubuntu-desktop.ru

Указываем имя пользователя и проль.

764236978326738924

Как видите все получилось. Для редактирования и добавления файлов можно воспользоваться программой FileZilla.

FileZilla это полнофункциональный FTP-клиент с простой и удобной графической оболочкой.

Программа написана на C++ и использует библиотеку wxWidgets.

Возможности FileZilla:

  • Поддержка протоколов FTP, FTPS и SFTP
  • Поддержка
  • Более 40 языков интерфейса
  • Поддержка передачи и докачки больших (более 4 Гб) файлов
  • Простой и удобный менеджер сайтов, очередь передачи
  • Закладки
  • Поддержка Drag&Drop
  • Установка ограничений скорости
  • Фильтры имён файлов
  • Сравнение папок
  • Менеджер настройки сети
  • Редактирование файлов на сервере
  • Удержание соединения (Keep-alive)
  • Поддежка прокси-серверов для HTTP/1.1, SOCKS5 и FTP
  • Журналирование в файл
  • Синхронный обзор папок
  • Поиск по файлам на сервере
  • Поддержка вкладок позволяет подключаться к нескольким серверам одновременно

76943278678235678324

Установка программы:

sudo apt-get install filezilla

3782658734687342

72346786324876387

 

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

Теперь в принципе пользователю доступен сайт через протокол передачи данных ftp. Но если у Вас все получилось сделать на локальном хосте, это не значит что доступ через ftp будет доступен за пределами Вашей сети (из Интернета).

Необходимо открыть 21 порт:

Открываем порт брандмауэра:
sudo ufw allow 21
Далее необходимо сделать переброску портов («Правила NAT») абонентского термина (роутера), если сайты размещенные на Вашем сервере уже доступны в Интернете, то Вы знаете как это делать, ведь до этого Вам приходилось перебрасывать порт 80.
327496758234687 7342678632478

Comments

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