Меню Рубрики

Установка ubuntu server proftpd

Установка и настройка ProFTPD(FTP-сервер).

На данный момент под Linux популярно ставить два сервера: ProFTPD и vsftpd(Very Secure FTP Daemon). Но vsftpd мне честно не нравиться, хотя бы тем что он последний раз обновлялся в 2015 году. По этому я остановлюсь на ProFTP.

apt-get install proftpd

Во время установки, вас попросят выбрать как будет работать сервер. Выбираем standalone.

Ну а теперь настройки nano /etc/proftpd/proftpd.conf

Найдем и раскомпрометируется строчку:

На этом собственно самая простая настройка закончена. Перезапускаем сервер.

/etc/init.d/proftpd restart

Но это далеко не все возможности этого сервера.

Давайте добавим еще виртуальных пользователей.

Для начала нам надо сделать файл с пользователями. ProFTP умеет работать и MySQL, но не в этой статье.

ftpasswd — -passwd — -file=/etc/proftpd/ftpd.passwd — -name=test — -u >

Создадим пользователя test c uid и gid 33,домашней директорией /var/www/test, shell /bin/false. Указание id группы и пользователя помогут избежать проблем с правами на файл. Например 33 по умолчанию у пользователя Apache(www-data).

В итоге у нас получиться файл ftpd.passwd с похожим содержанием:

Кстати, изменить пароль пользователя можно следующей командой:

ftpasswd — -passwd — -name=test — -change-password —file /etc/proftpd.passwd

Для AuthGroupFiles , используем —group :

ftpasswd —group —name=group-name —g >

Теперь поменяем настройки сервера nano /etc/proftpd/proftpd.conf

RequireValidShell off иначе виртуальный пользователь не сможет войти. Не проверять если шелл.

AuthUserFile /etc/proftpd/ftpd.passwd путь к файлу с пользователями.

# Use only AuthUserFiles when authenticating, and not the system’s /etc/passwd
AuthOrder mod_auth_file.c если мы хотим что бы только виртуальные пользователи входили.

Перезагружаем /etc/init.d/proftpd restart.

Защитить сервер от подбора паролей можно с помощью Fail2Ban .

Более подробно о файле конфигурации вы можете почитать на официальном сайте http://www.proftpd.org/docs/example-conf.html , Успехов.

Denian/Ubuntu. На других Linux дистрибутивах установка может отличаться.

P.S. Обнаруженный в модуле mod_copy баг затрагивает все версии ProFTPd вплоть до 1.3.5b включительно, однако опасность грозит только тем серверам, где модуль включен по умолчанию — особенно это касается таких дистрибутивов, как Debian и Ubuntu. Так как для указанных ОС обновленной версии ProFTPD пока нет, лучший вариант — отключить опасный модуль в настройках сервера.

Более 1 миллиона серверов оказались под угрозой кибератак из-за критической уязвимости в программном обеспечении ProFTPD. Уязвимость позволяет удалённо выполнить произвольный код и получить доступ к информации на FTP-сервере.

источник

Linux для чайников (пых-пых)

Всякая всячинка для тех у кого на компах и серверах Linux

14 июня 2010 г.

Установка и настройка FTP сервера ProFTPD в Ubuntu

Этот небольшой постик посвящён установке и настройке FTP сервера ProFTPD в Ubuntu.

К написанию сподвигло отсутствие нормального пошагового руководства на чём вчера споткнулся сам :/

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

Установить ftp сервер ProFTPD на базе Ubuntu в локальной сети. Сервер не анонимный, имеет авторизацию по выдаваемому администратором логину и паролю. Базы данных для авторизации не используются в данном случае, то есть никаких умопомрачительных конструкций с mysql не будет 🙂

Устанавливаем сам сервер. Я поставил тот, что идёт с репозиториев, кому хочется поставить более свежую версию — собирайте его сами с сайта.

sudo apt-get install proftpd-basic

Сервер устанавливаем как standalone (должно вылететь соответствующее окошко с запросом).

Далее создаём каталог, обращаю внимание на то, что я устанавливал сервер на десктоп версию убунты, так как нагрузка на него не велика 2-3 юзера в день.

Переходим в домашний каталог:

Создаём в нём каталог ftp в котором и будут храниться наши файлы

Далее вам необходимо зайти в файл

/etc/shells и проверить, есть ли там строчка

если нет, то добавьте её туда (здесь и далее я разжёвывать не буду уж такие простые вещи, как редактирование файла под sudo хорошо?, всё же если вы ставите сервер, то потрудитесь перед этим изучить самые основы).

Выставим права на каталог ftp в который будем заливать файлы:

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

Первая команда — создаём группу ftp2 пользователем которой является пользователь с именем user, автоматически будет также создан файл ftpd.group

sudo ftpasswd —passwd —name=user —home=/home/ftp —shell=/bin/false —u >
При вводе команды будет запроше пароль для пользователя, ну придумайте уж какой-нибудь.

Последние две команды выше повторяем столько раз сколько пользователей вам нужно. Кому очень хочется посмотреть куда пишутся пароли и прочее (они там будут в виде хэша) велком в каталог /etc/proftpd


Ещё раз для понимания — это не UNIX пользователи, это фактически учётные записи вашего фтп-сервера.

Далее настраиваем конфиг сервера
/etc/proftpd/proftpd.conf

Привожу свой рабочий конфиг полностью. Добавил также некоторые комментарии.

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group

# Don’t use IPv6 support by default.
UseIPv6 off

ServerName «ftp-server»
ServerType standalone
DeferWelcome on

# Эти две команды убыстряют работу сервака, гуглите для подробностей.
UseReverseDNS off
IdentLookups off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks off

TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200

DisplayChdir .message
ListOptions «-l»

#Запрещаем подключаться на сервер как root, полезно для безопасности

# Создаём журналы
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log
#Запрещаем заливать на сайт файлы начинающиеся с точки, полезно для безопасности
DenyFilter \*.*/

# Используем файлик /etc/ftpusers в нём перечислены те пользователи, которым запрещено входить на сервер, полезно для безопасности
UseFtpUsers on

# Разрешаем докачивать файлы
AllowStoreRestart on

# задаём порт, на котором будет работать сервак, обычно 21
Port 21

# Против DDOS атаки, полезно для безопасности
MaxInstances 8

# Сервер запускается и работает под этим пользователем и группой
User nobody
Group nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg «Welcome to Server»
#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent on «privet :))»

# Устанавливаем домашний каталог
DefaultRoot /home/ftp

# Запираем всех в домашнем каталоге, чтобы не могли просмотреть каталоги выше, важно для безопасности
DefaultRoot

MaxLoginAttempts 5
#VALID LOGINS

AllowUser user
DenyALL

Umask 022 022
AllowOverwrite on

17 комментариев:

При такой конфигурации все пользователи будут хранить свои файлы в одной общей папке?

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

Хороший мануал.Спасибо.В 10.04 надо standolone заменить initd

ProFTPd warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.
ProFTPd предупреждение: не может запуститься ни в автономном ни в Inetd/Xinetd режиме. Проверьте конфигурацию.

К сожалению потребности в фтп у меня нет сейчас, поэтому проверить повторно не могу, но у меня данная конфигурация полностью работала.
Проверяйте настройки, гуглите.

норм статья. Тольково написано. Завелось с первого раза. Только один вопрос- если например я создал пару пользователей п1,п2,п3 как мне удалить например пользователя2?

Ох. фишка в том, что я сейчас не пользую фтп — отпала надобность, поэтому могу посоветовать только глянуть
/etc/proftpd
что там? файлик там должен быть с хэшами паролей юзеров, вроде так.
Задача видимо сведётся к удалению соответствующего юзера из файла и всё.

Ребят, man passwd, файл для ProFTPd работает аналогично. И не забывайте юзать файл ftpasswd из папки contrib дистрибутива proftpd.

ребятки че то я ни как не могу въехать! все сделал по мануалу! все заработало! только не пойму что в Браузере нужно вписывать! «ftp://. а вот че дальше? да и после команды /etc/init.d/proftpd start, вроде все поднялось, ввожу команду «ps aux» и не вижу процесса ftp!? почему?

Как сделать чтобы пользователи не видели чужих папок?

Получаю вот такое сообщение об ошибке:
Статус: Соединяюсь с 23.23.241.114:21.
Статус: Соединение установлено, ожидание приглашения.
Ответ: 220 ProFTPD 1.3.4a Server ready.
Команда: USER user
Ответ: 331 Password required for user
Команда: PASS *******
Ответ: 230 Welcome
Команда: SYST
Ответ: 215 UNIX Type: L8
Команда: FEAT
Ответ: 211-Features:
Ответ: LANG en-US.UTF-8*;en-US
Ответ: MDTM
Ответ: MFMT
Ответ: TVFS
Ответ: UTF8
Ответ: MFF modify;UNIX.group;UNIX.mode;
Ответ: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Ответ: REST STREAM
Ответ: SIZE
Ответ: 211 End
Команда: OPTS UTF8 ON
Ответ: 200 UTF8 set to on
Статус: Соединение установлено
Статус: Получение списка каталогов.
Команда: PWD
Ответ: 257 «/» is the current directory
Команда: TYPE I
Ответ: 200 Type set to I
Команда: PASV
Ошибка: Превышено время ожидания соединения
Ошибка: Не могу получить список каталогов!

Ставил vsftpd точно такаяже ситуация, в чём может быть проблема??

Получаю такое сообщение об ошибке:

Статус: Соединяюсь с 23.23.241.114:21.
Статус: Соединение установлено, ожидание приглашения.
Ответ: 220 ProFTPD 1.3.4a Server ready.
Команда: USER user
Ответ: 331 Password required for user
Команда: PASS *******
Ответ: 230 Welcome
Команда: SYST
Ответ: 215 UNIX Type: L8
Команда: FEAT
Ответ: 211-Features:
Ответ: LANG en-US.UTF-8*;en-US
Ответ: MDTM
Ответ: MFMT
Ответ: TVFS
Ответ: UTF8
Ответ: MFF modify;UNIX.group;UNIX.mode;
Ответ: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Ответ: REST STREAM
Ответ: SIZE
Ответ: 211 End
Команда: OPTS UTF8 ON
Ответ: 200 UTF8 set to on
Статус: Соединение установлено
Статус: Получение списка каталогов.
Команда: PWD
Ответ: 257 «/» is the current directory
Команда: TYPE I
Ответ: 200 Type set to I
Команда: PASV
Ошибка: Превышено время ожидания соединения
Ошибка: Не могу получить список каталогов!

Ставил vsftpd такая же ситуация, в чём может быть проблема?

Спасибо! Хороший мануал. Подскажите, а как создать еще одного пользователя, но с другой домашней директорией.

Андрей, у меня уже давно потребности нет в FTP, так что к сожалению подсказать не могу, запостите вопрос вот здесь
http://forum.ubuntu.ru/index.php?board=62.0

Хороший мануал, долго искал подобный. Спасибо автору. С первого раза все получилось.

а когда будет вариант конфигурации с разными папками?

источник

Установка и настройка ProFTPd на Ubuntu Server

Среди возможностей ProFTPd есть использование виртуальных пользователей с uid системных учетных записей, работа по FTP через TLS, использование виртуальных пользователей с хранением их в отдельном файле или базе данных. Мы рассмотрим настройку всех этих возможностей сервера FTP на примере Linux Ubuntu 18.04. Инструкция также, во многом, подойдет для настройки на Debian.

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

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

1. Время

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

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

. и разрешаем его запуск при загрузке системы:

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

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

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

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

а) Iptables

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

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

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

apt-get install iptables-persistent

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

ufw allow 20,21,40900:40999/tcp

Установка и запуск с базовыми параметрами

Установка ProFTPd на Ubuntu выполняется следующей командой:

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

Редактируем значения для параметров:

* где UseIPv6 — разрешаем или запрещает использование IPv6. Если в нашей среде будет использоваться IP версии 6, то значение данной опции должно быть on.

Снимаем комментарий для опции PassivePorts и задаем ей следующее значение:

* где 40900 — 40999 — диапазон динамических портов для пассивного режима.

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

systemctl restart proftpd

Готово — пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или браузер. В качестве логина и пароля используем учетную запись пользователя Ubuntu.

Если мы хотим использовать выделенную учетную запись для FTP, то создаем ее командой:

Если мы хотим, чтобы учетная запись не могла покидать пределы своей домашней директории, в настройках ProFTPd снимаем комментарий с опции:

systemctl restart proftpd

Шифрование при передаче данных

Следующим этапом настроим передачу данных через TLS.

В конфигурационном файле сервера ftp снимаем комментарий для строки:

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

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

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

* параметр TLSRequired можно задать в значение off, если мы не хотим требовать от клиента соединения по TLS.

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ftp.dmosk.local/CN=ftp»

* где ftp.dmosk.local — имя сервера в формате FQDN (не принципиально).

systemctl restart proftpd

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

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

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

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

ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpvirt —u >

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

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

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

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

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

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:

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

mysqladmin -u root password

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

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

> 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.

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

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

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

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

.
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
.

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

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

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

RequireValidShell off
AuthOrder mod_sql.c

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

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

LoadModule mod_sql.c
.
LoadModule mod_sql_mysql.c

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

systemctl restart proftpd

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

Настройка прав доступа

Разберем пример, когда нам нужно будет к одной и той же папке дать разные права — одному пользователю только на чтение, другому на чтение и запись.

* в данном примере мы задаем права для директории /var/tmp. Мы разрешаем запись в директорию только для пользователя ftpvirt, остальные права разрешены для всех.

Устранение проблем

Для решения проблем в работе FTP-сервера можно просмотреть файл журнала. Файлов может быть несколько и они находятся в каталоге /var/log/proftpd. Основной — proftpd.log.

Для просмотра вводим команду:

tail -f /var/log/proftpd/proftpd.log

По умолчанию, настройка лога в конфигурационном файле proftpd выглядит так:

TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log

При необходимости, можно настроить дополнительный файл журнала:

ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth

* в данном примере в файле /var/log/proftpd/access.log будут храниться логи обращения к файлам; /var/log/proftpd/auth.log — аутентификации.

Не забываем перезагрузить сервис:

systemctl restart proftpd

Читайте также

Другие инструкции про FTP, которые могут быть полезны:

источник

Читайте также:  Установка freestyle dash на xbox 360 4gb

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

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