Пароли mysql-proxy cleartext

У меня прокси-сервер MySQL работает, и у меня есть LUA с функцией для read_auth(), однако пароли, которые передаются во время аутентификации, хэшируются (как и ожидалось).

Я требую их в формате, с которым я могу работать, и отправляю его дальше, так что явный текст. Включение плагина cleartext на клиенте MySQL не имеет никакого эффекта, я подозреваю, что прокси-сервер MySQL не требует, чтобы клиент отправил его в текстовое поле, поэтому по умолчанию используется хеширование.

Итак, в основном: есть ли у вас какие-либо идеи о том, как я могу получить четкие текстовые данные аутентификации в функции read_auth() прокси-сервера MySQL?

Примечание. Моя конечная цель заключается в авторизации с помощью LDAP, однако единственный способ получить пароль (хешированный или нет) - это фактически привязка к LDAP, он не может быть получен путем поиска.

Ответ 1

Сетевой протокол MySQL не позволяет отправлять пароли в текстовом виде, все, что вы могли бы захватить, - это зашифрованная версия.


Однако, если вы пытаетесь отправить текст (от клиента на сервер), текстовый плагин на стороне клиента должен работать...

По сравнению с MySQL 5.5.27, чтобы сделать непреднамеренное использование этого плагина менее вероятным, требуется, чтобы клиенты явно его включили. Это можно сделать несколькими способами:

Установите для переменной среды LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN значение, начинающееся с 1, Y или y. Это позволяет плагину для всех клиентских подключений.

Клиентские программы mysql, mysqladmin и mysqlslap поддерживают параметр --enable-cleartext-plugin, который позволяет плагину на основе каждого вызова.

Функция API mysql_options() C поддерживает параметр MYSQL_ENABLE_CLEARTEXT_PLUGIN, который позволяет подключаться к каждому соединению. Кроме того, любая программа, которая использует файлы параметров libmysqlclient и reads, может включить плагин, включив опцию enable-cleartext-plugin в группе параметров, прочитанной клиентской библиотекой.


В качестве альтернативы существует еще несколько вариантов аутентификации с помощью LDAP. Например, вы можете использовать плагин аутентификации PAM, который позволит вам использовать любой доступный модуль PAM для предоставления услуг аутентификации, а имеется модуль pam_ldap, который легко настроить.

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

Дополнительные ресурсы: