Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Авторизация в proftpd после вывода ENCRYPT в новом MySQL 8  (Прочитано 75458 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Counsellor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
  • Dangerous! Biological contamination!
    • Просмотр профиля
Добрый день!
Ubuntu 22.04.2 LTS
mysql  Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
PHP Version 8.1.2-1ubuntu2.13
ProFTPD Version 1.3.7c
В связи с тем, что в MySQL 8 пропал метод шифрования ENCRYPT, для proftpd предлагается использование MD5, SHA1 и т.д.. Но в mod_sql они не поддерживаются, для этого надо подключить mod_sql_passwd, т.к. он вышел позднее чем mod_sql. В старых версиях proftpd настройки хранились в одном proftpd.conf и там же подключались модули. В новых, модули подключаются в файле modules.conf и для mod_sql используется свой конфигурационный файл. Я раскомментировал в modules.conf строку LoadModule mod_sql_passwd.c для подключения его при загрузке.
Написал файл конфигурации sql_passwd.conf

<IfModule mod_sql_passwd.c>
    SQLPasswordEngine on
    SQLPasswordMD5 on
    SQLPasswordSHA1 on
</IfModule>

В sql.conf исправил SQLAuthTypes с Crypt Plaintext на Crypt MD5 SHA1 Plaintext
Потом

systemctl restart proftpd
Далее в MySQL

UPDATE `ftpuser` SET `passwd` = SHA1('password') WHERE `ftpuser`.`id` = 5;
Пробую подключиться

331 Необходим пароль для пользователя pwd_chk
Password:
530 Некорректные данные аутентификации.
ftp: Login failed

При этом на существующего пользователя с не шифрованным паролем ответ:

331 Необходим пароль для пользователя TechData
Password:
230 Пользователь TechData подключён
Remote system type is UNIX.
Using binary mode to transfer files.

Может где то что-то еще надо включать?
В описании на mod_sql_passwd сказано, что необходимо включить поддержку OpenSSL.

Цитировать
NOTE: it is important that mod_sql_passwd appear after mod_sql in your --with-modules configure option:

$ ./configure --enable-openssl --with-modules=mod_sql:mod_sql_passwd ...
Цитировать
Then follow the usual steps:
$ make
 $ make install

Но мне не понятно в какой директории производить сборку?
Или, при уже установленном и настроенном proftpd предлагается выполнить

$ prxs -c -i -d mod_sql_passwd.c
Но я не найду где находится mod_sql_passwd.c. Поиском находится только mod_sql_passwd.so в /usr/lib/proftpd
« Последнее редактирование: 28 Июля 2023, 14:04:22 от Counsellor »
Все не так плохо, как Вы думаете. Все НАМНОГО хуже.

Оффлайн Counsellor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 24
  • Dangerous! Biological contamination!
    • Просмотр профиля
Проблема решена.
Уже собранные модули идут с расширением .so

В modules.conf включить
<IfModule mod_sql_passwd.c>
    SQLPasswordEngine on
</IfModule>

Этого достаточно, т.к. включаются все алгоритмы со значениями по умолчанию. Для MD5 по умолчанию SQLPasswordEncoding имеет значение hex, по этому явно его указывать не надо. Если же надо изменить, например на base64-encoded, то надо так:
<IfModule mod_sql_passwd.c>
    SQLPasswordEngine on
    SQLPasswordEncoding base64
  </IfModule>

После этого в sql.conf надо добавить MD5 в SQLAuthTypes:
SQLAuthTypes Crypt MD5 Plaintext
Литература http://www.proftpd.org/docs/contrib/mod_sql_passwd.html#SQLPasswordEncoding
Все не так плохо, как Вы думаете. Все НАМНОГО хуже.

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.