nixp.ru v3.0

17 октября 2017,
вторник,
09:09:48 MSK

DevOps с компанией «Флант»
Ruslan413 написал 19 февраля 2009 года в 22:11 (892 просмотра) Ведет себя неопределенно; открыл 8 тем в форуме, оставил 15 комментариев на сайте.

Пробую первый раз поднять ftp-сервак c помощью proftpd, на базе Debian 5.o

вот листинг файла proftpd.conf:

——————

#

# /etc/proftpd/proftpd.conf — This is a basic ProFTPD configuration file.

# To really apply changes reload proftpd after modifications.

#

# Includes DSO modules

Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.

UseIPv6 on

ServerName «Debian»

ServerType standalone

DeferWelcome off

MultilineRFC2228 on

DefaultServer on

ShowSymlinks on

TimeoutNoTransfer 600

TimeoutStalled 600

TimeoutIdle 1200

DisplayLogin welcome.msg

DisplayFirstChdir .message

ListOptions «-l»

DenyFilter \*.*/

# Port 21 is the standard FTP port.

Port 21

# In some cases you have to specify passive ports range to by-pass

# firewall limitations. Ephemeral ports can be used for that, but

# feel free to use a more narrow range.

# PassivePorts 49152 65534

# To prevent DoS attacks, set the maximum number of child processes

# to 30. If you need to allow more than 30 concurrent connections

# at once, simply increase this value. Note that this ONLY works

# in standalone mode, in inetd mode you should use an inetd server

# that allows you to limit maximum number of processes per service

# (such as xinetd)

MaxInstances 30

# Set the user and group that the server normally runs at.

User proftpd

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

# Normally, we want files to be overwriteable.

AllowOverwrite on

# Uncomment this if you are using NIS or LDAP to retrieve passwords:

# PersistentPasswd off

# Be warned: use of this directive impacts CPU average load!

#

# Uncomment this if you like to see progress and transfer rate with ftpwho

# in downloads. That is not needed for uploads rates.

# UseSendFile off

TransferLog /var/log/proftpd/xferlog

SystemLog /var/log/proftpd/proftpd.log

TLSEngine off

QuotaEngine on

Ratios on

# Delay engine reduces impact of the so-called Timing Attack described in

# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02

# It is on by default.

DelayEngine on

ControlsEngine on

ControlsMaxClients 2

ControlsLog /var/log/proftpd/controls.log

ControlsInterval 5

ControlsSocket /var/run/proftpd/proftpd.sock

AdminControlsEngine on

# A basic anonymous configuration, no upload directories.

#

# User ftp

# Group nogroup

# # We want clients to be able to login with «anonymous» as well as «ftp»

# UserAlias anonymous ftp

# # Cosmetic changes, all files belongs to ftp user

# DirFakeUser on ftp

# DirFakeGroup on ftp

#

# RequireValidShell off

#

# # Limit the maximum number of anonymous logins

# MaxClients 10

#

# # We want 'welcome.msg' displayed at login, and '.message' displayed

# # in each newly chdired directory.

# DisplayLogin welcome.msg

# DisplayFirstChdir .message

#

# # Limit WRITE everywhere in the anonymous chroot

#

#

# DenyAll

#

#

#

# # Uncomment this if you’re brave.

# #

# # # Umask 022 is a good standard umask to prevent new files and dirs

# # # (second parm) from being group and world writable.

# # Umask 022 022

# #

# # DenyAll

# #

# #

# # AllowAll

# #

# #

#

#

———————

(пробовал и с раскоментированным разделом Anonymos)

Пытаюсь подключиться с другого компа, из под винды, через Total Commander, в настройках указываю в качестве сервера ip компа с Debian, как анонимный пользователь. При попытке подключения выдает что неверный логин.

Подскажите, как быть, что исправить, чтобы можно было подключаться анонимно. И где в случае чего смотреть логи proftpd.

Заранее спасибо!

Дмитрий Шурупов

Где смотреть логи? Вы же сами написали :-)

SystemLog   /var/log/proftpd/proftpd.log

Для анонимного логина нужно раскомментировать секцию Anonymous. И можно начинать смотреть логи…

Ruslan413

Она должна быть раскомментирована так:

#

  User                        ftp

  Group                        nogroup

  # We want clients to be able to login with «anonymous» as well as «ftp»

  UserAlias                  anonymous ftp

  # Cosmetic changes, all files belongs to ftp user

  DirFakeUser      on ftp

  DirFakeGroup on ftp

#  RequireValidShell            off

? И подключаться как просто анонимный пользователь, или пользователь с логином ftp без пароля?

Дмитрий Шурупов

С логином anonymous и любым email’ом в качестве пароля (хоть a@a.a).

Ruslan413

Спасибо! А как-то можно это проверить, самому к своему компу подключиться что-ли?

Дмитрий Шурупов

Да, конечно. Можно смело заходить на ftp://127.0.0.1/

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

Ruslan413

Всем спасибо, разобрался. Но опять возник вопрос. Я сделал авторизацию пользователей через MySQL, по этой инструкции:

http://forum.ubuntu.ru/index.php?action=dlattach;topic=37507.0;attach=9555

При авторизации пользователя для него создается папка, и только в этой папке он может что-либо делать. Как сделать чтобы была 1 общая папка с файлам, и юзеры могли из неё скачивать, и в подпапке Incoming создавать любые папки и в них закачивать файлы.

Не могу понять — это делается в БД MySQL или же в конфигах ProftpD?

Дмитрий Шурупов

Это делается в конфиге proftpd.

1) Куда (в какой каталог) пользователи будут изначально попадать и как они будут ограничены в рамках файловой системы — это см. директивы DefaultRoot и DefaultChdir.

2) Для создания Incoming с правами на upload нужно сделать что-то вроде:


AllowAll </Limit> DenyAll </Limit> </Directory>

(тут разрешены заливка любых файлов и создание любых каталогов, но запрещено удаление любых файлов)

Этот блок должен оказаться внутри «» — если выражаться точнее, то внутри блока конфига, посвященного каким-то пользователям.

Ruslan413

Получается тут принцип такой: что НЕ описано в блоке — то разрешено?

Дмитрий Шурупов
Ruslan413
Получается тут принцип такой: что НЕ описано в блоке — то разрешено?

Ага. Из ProFTPD mini HOWTO: Configuring s: «By default, all commands are allowed in a directory».

Тем не менее, в примере разрешается STOR и MKD во избежание потенциальных проблем с унаследованием запрета этих команд из родительского блока. В общем, рекомендую почитать упомянутое HOWTO для понимания. Вот оттуда пример для реализации принципа UNIX («по умолчанию запрещено все[, что не разрешено]»).


DenyAll </Limit> AllowAll </Limit> </Directory>
Ruslan413

Огромное спасибо, Дмитрий. Еще вот пытаюсь вникнуть в аутентификацию через файл, директивы AuthUserFile и AuthGroupFile указал, в моем примере мне немного непонятен формат файла с паролями:

Строка:

joe:$1$2KdLsLL1G$LNq21xp91/4vhF/l/0N1. :20000:20000:Joe User:/srv/ftp/joe:

Это пользователь joe с паролем qwerty, хешированным утилитой ftpasswd. И что означает:

/4vhF/l/0N1. :20000:20000:Joe ?

Также неясно, после какого символа начинается шифрованный пароль и где заканчивается?

Дмитрий Шурупов

Здесь разделителем является знак «:». Пароль — вот он: «$1$2KdLsLL1G$LNq21xp91/4vhF/l/0N1. » (второй элемент в строке).

20000 и еще раз 20000 — uid и gid пользователя, Joe User — его полное имя…

По формату файла можно почитать в:

man 5 passwd

(ftpasswd — он по сути тот же passwd.)