Вопрос по SQL аутентификации proftpd

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dallone
проходил мимо
Сообщения: 9
Зарегистрирован: 2008-01-10 18:44:09

Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение dallone » 2008-01-11 18:46:06

Здравствуйте, на днях столкнулся с проблемой: нужно перенастроить proftpd на sql аутентификацию и нет админа (я начинающий программист, знания Unix стремятся к нулю :) ).
Прочитал статью с этого сайта http://www.lissyara.su/?id=1144 и http://www.tutorial.ru/index.php/tutorial/11/
Как ни странно proftpd после изменения конфига даже заработал, но вот столкнулся с такой вещью: Если вносим в SQL базу данных пользователя который в FreeBSD реально существует(даже с другим паролем и uid gid) - все работает. Если же вносим пользователя которого во FreeBSD нет, не логинится (530 Login incorrect)
Вопрос: это нормальное поведение или где-то допущена ошибка в конфиге?
Конфиг:

Код: Выделить всё

ServerName                      "My ftp"
ServerType                      standalone
DefaultServer                   on

DeferWelcome                    off

Port                            21
Umask                           002
TimeoutLogin                    120
TimeoutIdle                     600
TimeoutNoTransfer               900
TimeoutStalled                  3600

User                            ftp
Group                           ftp

MaxInstances                    30
MaxClientsPerHost               5

AllowRetrieveRestart            on
AllowStoreRestart               on
AllowOverwrite                  on
AllowOverride                   off
AuthPAM                         off

RootLogin                       off
IdentLookups                    off
UseReverseDNS                   off
DenyFilter                      \*.*/
TimesGMT                        off

DefaultRoot                     ~

RLimitCPU                       600 600
RLimitMemory                    64M 64M
RLimitOpenFiles                 1024 1024

LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"
LogFormat                       write   "%h %l %u %t \"%r\" %s %b"

ExtendedLog                     /home/dallone/proftpd_write.log WRITE,READ write
ExtendedLog                     /home/dallone/proftpd_auth.log AUTH auth

<Global>

SQLAuthTypes                    Plaintext
SQLAuthenticate                 users
SQLConnectInfo                  *****@localhost:3306  ****** ******
SQLUserInfo                     users username password uid gid homedir shell
#SQLGroupInfo                    groups groupname gid members
SQLLogFile                     /home/dallone/proftpd_sql.log ALL default
RequireValidShell               off


</Global>
Последний раз редактировалось Alex Keda 2011-04-13 13:04:27, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Alex Keda » 2008-01-12 1:37:45

портянку не смотрел, однако - для НЕреального пользователя, в БД надо задавать вполне реальные уиды... которые есть в системе.
по крайней мере я на этом споткнулся в похожей ситуации.
заюзал собственный зачрутив всех.
а работали от меня =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
paranoidchaos
мл. сержант
Сообщения: 80
Зарегистрирован: 2007-12-13 10:58:23

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение paranoidchaos » 2008-01-12 8:05:26

Лис правильно отметил всё решают юиды и гиды реального пользователя,
создавая нового фтп пользователя, который в тоже время является не системным пользователя надо ему придавать юид и гид реального пользователя

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение 100kg » 2008-01-12 15:50:51

если пароли в мд5 хэшэ, то попробуй поменять его на plain, тоесть

Код: Выделить всё

update таблица set password='password' where user='user';
после этого залогинся заного

Аватара пользователя
paranoidchaos
мл. сержант
Сообщения: 80
Зарегистрирован: 2007-12-13 10:58:23

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение paranoidchaos » 2008-01-12 17:02:36

я использую mysql шифрование паролей

Код: Выделить всё

SQLAuthTypes Backend
и где-то читал что поле password в таблице надо увеличить до 80 символов по дефлту 50

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(80) NOT NULL,
  `groupname` varchar(24) NOT NULL,
  `uid` int(11) NOT NULL,
  `gid` int(11) NOT NULL,
  `homedir` varchar(50) NOT NULL,
  `shell` varchar(20) NOT NULL,
  `last_login` int(15) NOT NULL,
  PRIMARY KEY (`id`)
) ;

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение 100kg » 2008-01-12 17:40:31

просто в конфиге раздел Global у тебя SQLAuthTypes Plaintext
и где-то читал что поле password в таблице надо увеличить до 80 символов по дефлту 50
ну насколько я знаю мд5 хэш имеет 32 символа

Аватара пользователя
paranoidchaos
мл. сержант
Сообщения: 80
Зарегистрирован: 2007-12-13 10:58:23

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение paranoidchaos » 2008-01-13 13:48:07

при

Код: Выделить всё

SQLAuthTypes Backend
не мд5 хеш там а хеш функции PASSWORD() sha1

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение 100kg » 2008-01-13 22:33:40

и сколько символов имеет этот хэш? разве больше 32... а если больше но меньше 50 то тогда не нужно увеличивать поле password

Аватара пользователя
paranoidchaos
мл. сержант
Сообщения: 80
Зарегистрирован: 2007-12-13 10:58:23

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение paranoidchaos » 2008-01-14 7:54:58

40 символов реально говорюже не срабатывало почему-то
решением стало увеличение символов

dallone
проходил мимо
Сообщения: 9
Зарегистрирован: 2008-01-10 18:44:09

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение dallone » 2008-01-14 11:01:10

для НЕреального пользователя, в БД надо задавать вполне реальные уиды... которые есть в системе
Спасибо большое сейчас попробую :)

dallone
проходил мимо
Сообщения: 9
Зарегистрирован: 2008-01-10 18:44:09

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение dallone » 2008-01-14 16:43:30

Эм... Понимаю, конечно, что телепаты в отпуске, но может кто нибудь сталкивался с такой проблемой:
После того как в таблицы реальный uid/gid поставил все начало работать НО :( Не до конца:
Если ставить homedir в папке /usr/www/wwwroot то (где мне доступ и нужно открыть) пускает только тех пользователей который существуют в Unix.
Если homedir ставить в остальных папках то все работает любое имя пользователя подходит...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Alex Keda » 2008-01-14 23:05:12

права одинаковые?
Убей их всех! Бог потом рассортирует...

Proftp
проходил мимо

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Proftp » 2008-01-15 14:50:24

если я правельно понял, то не нужно пускать польователей которые есть в учетке самой системе?

xm
проходил мимо

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение xm » 2009-01-13 9:40:17

А если у меня уже есть БД в которой есть таблица с пользователями, но пароли у этих пользователей зашифрованы в md5. Как мне сделать, чтобы proftpd понимал эти пароли.
Пробовал в конфиге добавить SQLAuthTypes md5, при запуске фтп ошибка:
"/usr/local/etc/rc.d/proftpd.sh start
Starting proftpd.
- Fatal: SQLAuthTypes: unknown auth handler on line 43 of '/usr/local/etc/proftpd.conf'"

ПодскАжите решение?

Делал по http://www.lissyara.su/?id=1144

Аватара пользователя
borisen
рядовой
Сообщения: 27
Зарегистрирован: 2007-10-18 14:54:35
Откуда: Киев
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение borisen » 2009-02-06 13:13:15

Такой вопросец, в какой кодировке скриптик для просмотра статистики (ftp.php) прикрепленный к статье?


xopc
проходил мимо
Сообщения: 2
Зарегистрирован: 2009-05-31 9:50:43

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение xopc » 2009-05-31 9:57:46

Ребята подскажите как привязать логин к ip или подсети? Тоесть юзер заходит логинится, в базе проверяется логин пароль и ип с которого юзер ломится.
:-o

Аватара пользователя
Nks
рядовой
Сообщения: 23
Зарегистрирован: 2009-07-05 17:28:03
Откуда: Nsk
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Nks » 2009-07-08 21:39:46

Свойство "AllowUser username" может помочь при настройке доступа определенных пользователей к определенным папкам (например, разделение прав на двух и более пользователей).

Код: Выделить всё

<Directory /usr/home/somewhere/ftp/*>
<Limit WRITE DELE MKD STOR>
#Пользователь username будет иметь права на запись в каталог, 
#тогда как другие пользователи заchrootеные на данный каталог смогут только качать и 
#просматривать каталог.
AllowUser username 
</Limit>
</Directory>

Связывается свойство почему то только с системными учетками, но логин и chroot остается за mysql. Как связать весь конфиг строго с mysql пока не разобрался...

Аватара пользователя
Nks
рядовой
Сообщения: 23
Зарегистрирован: 2009-07-05 17:28:03
Откуда: Nsk
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Nks » 2009-07-08 21:41:53

xopc писал(а):Ребята подскажите как привязать логин к ip или подсети? Тоесть юзер заходит логинится, в базе проверяется логин пароль и ип с которого юзер ломится.
:-o
Можно разрешить логин с определенных IP или подсети:

Код: Выделить всё

<Directory ~>
<Limit ALL>
                        Order Allow,Deny
			Allow 195.200.31.220
			Allow 212.32.17.0/26
			Deny ALL

</Limit>
</Directory>

Аватара пользователя
sEr...
рядовой
Сообщения: 45
Зарегистрирован: 2008-12-18 4:35:43
Откуда: СССР
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение sEr... » 2009-07-17 8:29:34

Я вот что не понял
Создал в БД пользователей и себя туда вписал. С моей учёткой всё нормально работает как положено uid, gid поставил свои.
Для других пользователей uid gid поставил 21:21 (ftp:ftp) пробовал настроить доступ на запись для отдельных папок у в ихних хомяках не трогая конфиг при этом. Получилось, когда установил права на папку 777, но записаный фаил принадлежить юзеру, которого нет в системе с uid=65533, а группа как положено написана ftp
Когда пишу из под своей учетки то всё нормально пишет с моими правами и можно настрить нормально доступ к папкам, и не приходится ставить 777 что не приятно.
Анонимус, которого нет ни в БД ни в системных юзерах, а есть только в конфиге, пишет файлы, как узер ftp в группе ftp, как нужно.
Внимание вопрос!
Кто какие uid:gid посоветует юзать для юзверей фтп, кторрые в БД и чо делать чтоб их воспринимало, как пользователей c этими uid:gid? Дописать их в конфиг? Каким образом? :unknown:

Аватара пользователя
Nks
рядовой
Сообщения: 23
Зарегистрирован: 2009-07-05 17:28:03
Откуда: Nsk
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Nks » 2009-07-17 8:41:37

sEr... писал(а):Я вот что не понял
Создал в БД пользователей и себя туда вписал. С моей учёткой всё нормально работает как положено uid, gid поставил свои.
Для других пользователей uid gid поставил 21:21 (ftp:ftp) пробовал настроить доступ на запись для отдельных папок у в ихних хомяках не трогая конфиг при этом. Получилось, когда установил права на папку 777, но записаный фаил принадлежить юзеру, которого нет в системе с uid=65533, а группа как положено написана ftp
Когда пишу из под своей учетки то всё нормально пишет с моими правами и можно настрить нормально доступ к папкам, и не приходится ставить 777 что не приятно.
Анонимус, которого нет ни в БД ни в системных юзерах, а есть только в конфиге, пишет файлы, как узер ftp в группе ftp, как нужно.
Внимание вопрос!
Кто какие uid:gid посоветует юзать для юзверей фтп, кторрые в БД и чо делать чтоб их воспринимало, как пользователей c этими uid:gid? Дописать их в конфиг? Каким образом? :unknown:
Если мне память не изменяет 21 - это всего лишь порт. Создай пользователя отдельного и назови его ftp. В sql пропиши соответствующий gid и uid и работай с ним и будет тебе счастье.

Аватара пользователя
sEr...
рядовой
Сообщения: 45
Зарегистрирован: 2008-12-18 4:35:43
Откуда: СССР
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение sEr... » 2009-07-17 11:20:43

Память тебе не изменяет, 21 это порт.
Пользователь ftp у меня создан и его uid = 21 и группа тоже есть ftp gid = 21
А вот щастья как-то нету... :Search:

Аватара пользователя
Nks
рядовой
Сообщения: 23
Зарегистрирован: 2009-07-05 17:28:03
Откуда: Nsk
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение Nks » 2009-07-17 15:13:38

Конфиг proftpd можно посмотреть?

Аватара пользователя
sEr...
рядовой
Сообщения: 45
Зарегистрирован: 2008-12-18 4:35:43
Откуда: СССР
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение sEr... » 2009-07-17 16:11:56

Канешна!!! :)

Код: Выделить всё

#
# For more informations about Proftpd configuration
# look at : http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to 
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName			"ProFTPD sErvEr01"
ServerType			standalone
DefaultServer			on
ScoreboardFile		/var/run/proftpd/proftpd.scoreboard

# Port 21 is the standard FTP port.
Port				21

# Use IPv6 support by default.
#UseIPv6				on

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

# 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

CommandBufferSize	512

# Set the user and group under which the server will run.
User				ftp
Group				ftp

# Тип авторизации (на самом деле - в каком виде хрянятся
# пароли в БД - в данном случае - открытым текстом)
#SQLAuthTypes            MD5
SQLAuthTypes            Plaintext

# Кого и как аутентифицируем - on - всех и вся :)
# Но - если поставить `on` то он ломится в БД за группами.
# мне группы никчему. Посему поставил `users`
SQLAuthenticate         users
# инфа для соединения с MySQL сервером:
# имя_базы_данных@хост_где_MySQL:порт имя_пользователя пароль
SQLConnectInfo          proftp@localhost:3306 proftp parol
# в каком порядке вернёт поля запрос - первое поле, это
# имя таблицы, где лежат пользователи
SQLUserInfo             `users_table` `username` `password` `uid` `gid` \
                        `homedir` `shell`
# должен ли быть у юзера (для того, чтобы он мог коннектится),
# `реальный` shell описанный в /etc/shells
RequireValidShell off
# лог файл работы с SQL
SQLLogFile      /var/log/proftpd.log

# Вот тут моя натура склонная к ведению логов на всё в
# БД MySQL смогла разыграться на полную катушку :)
# Записываем удачные логины в БД. Общий смысл такой - создаём
# именованую кверю, с указанием что мы должны сохранять
SQLLog          PASS            counter_login
SQLNamedQuery   counter_login   UPDATE "`last_login`=UNIX_TIMESTAMP(), \
                                `login_count`=`login_count`+1 WHERE \
                                `username`='%u'" `users_table`
# пишем неудачные логины в БД
SQLLog          ERR_PASS        counter_err
SQLNamedQuery   counter_err     UPDATE "`last_err_login`=UNIX_TIMESTAMP(), \
                                `err_login_count`=`err_login_count`+1 WHERE \
                                `username`='%U'" `users_table`

# логируем что сохраняет и тащщит с сервера:
# переменные
# %u - имя пользователя (с которым залогинился)
# %f - полный путь и имя файла который был скачан
# %b - число байт, которые были скачаны
# %h - имя клиента (из DNS), если не удалось разрешить - IP
# %a - IP-адрес клиента
# %m - имя команды полученной от клиента (RETR/STOR)
# %T - время (секунд) ушедшее на передачу файла клиенту

SQLLog          RETR,STOR               log_story_transfer
SQLNamedQuery   log_story_transfer      INSERT "'',\
                                        UNIX_TIMESTAMP(),'%u',\
                                        '%f', '%b', '%h', \
                                        '%a', '%m', '%T'" \
                                         `xfer_table`
# записываем ошибки при сохранении и чтении файлов
# (в одну строку не влезли - но работает и в таком виде :))
SQLLOG          ERR_RETR,ERR_STOR,ERR_DELE,ERR_RMD,ERR_RNTO\
                                        log_err_modify
SQLNamedQuery   log_err_modify          INSERT "'',\
                                        UNIX_TIMESTAMP(),\
                                        '%u', '%f', '%h', \
                                        '%a', '%m'" `xfer_errors`

# если вылезет проблема, типа тормозов при подключении
# (в момент установления коннекта `задумывается` на 10-20 секунд)
# то раскомментируйте следующие две строки
UseReverseDNS     off
IdentLookups      off



# если надо чтобы ВСЕ пользователи по ftp были ограниченны
# своей домашней директорией, то надо раскомментировать
# следующую строку:
#DefaultRoot            ~
# у меня хитрее сделано - себе я разрешил шариться по всему серверу
# а остальных за`chroot`ил. Если, например, надо чтобы пользователи
# могли по серверу шариться а анонимоусы нет, то надо указать !users
# также можно указать определённую группу.
DefaultRoot ~

# Дают возможность докачки
AllowRetrieveRestart on
AllowStoreRestart on

#Перекодировка символов
LangEngine on
UseEncoding UTF-8 CP1251

# Директории
<Directory ~>
AllowOverwrite          on
<Limit WRITE>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>

<Anonymous /home/ftp/anonymous>
# пользователь от которого анонимоусы шарятся
User            ftp
# группа анонимоусов
Group           ftp
# альясы ананонимоусов (можно будет входить как ftp, а
# не anonymous)
UserAlias       anonymous ftp

#Разрешить пустой пароль
AnonRequirePassword	off

# максимально число анонимоусов
MaxClients      16      "Sorry, max %m users - try again later"
<Directory /home/ftp/anonymous/NET>
AllowOverwrite          on
<Limit WRITE>
Allow 192.168.222.0/24
Allow 192.168.1.10/24
DenyAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>

<Limit WRITE>
DenyAll
</Limit>
</Anonymous>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.

#########################################################################
#                                                                       #
# Uncomment lines with only one # to allow basic anonymous access       #
#                                                                       #
#########################################################################

#<Anonymous ~ftp>
#   User				ftp
#   Group				ftp

  ### We want clients to be able to login with "anonymous" as well as "ftp"
  # UserAlias			anonymous ftp

  ### 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
  # <Limit WRITE>
  #   DenyAll
  # </Limit>
#</Anonymous>
Не знаю, но по моему не в конфиге собака зарыта.

Аватара пользователя
sEr...
рядовой
Сообщения: 45
Зарегистрирован: 2008-12-18 4:35:43
Откуда: СССР
Контактная информация:

Re: Вопрос по SQL аутентификации proftpd

Непрочитанное сообщение sEr... » 2009-08-08 20:46:16

Меня не было, я вернулся, проблема осталась, а никто не ответил. Что ещё подскажите?
Я продолжу это коврять :)