Страница 1 из 1

Exim, Mysql + шифрованные пароли в базе.

Добавлено: 2007-04-18 12:17:14
dikens3
Кому интересно:
mysql:

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

INSERT INTO `users`(username,password,domain) VALUES ('dik',sha1('test'),'domain.ru');
exim:

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

# Настройка аутентификации
begin authenticators

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT username FROM users WHERE username = '${quote_mysql:${local_part:$2}}' \
                    AND password=(SELECT sha1('${quote_mysql:$3}')) AND active='Y'}{yes}{no}}
  server_prompts = :
  server_set_id = $2

auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT username FROM users WHERE username = '${quote_mysql:${local_part:$1}}' \
                    AND password=(SELECT sha1('${quote_mysql:$2}')) AND active='Y'}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $1
Собственно минусы:
Не будут работать аутентификации spa(ntlm) Cram-md5 и может ещё какие.

Собственно хотел посоветоваться с народом, а надо ли хранить в базе критованные пароли?

В моём случае собираюсь сделать аутентификацию только через TLS.(Никто не знает как заставить использовать только TLS для аутентификации?) Чтобы не перехватывались пароли. Но в таком случае нафига они нужны криптованные/хэшированные?

Добавлено: 2007-04-18 12:41:36
dikens3

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

 Если вы хотите информировать о доступности AUTH лишь когда подключение зашифровано с использованием TLS, вы можете использовать тот факт, что значение этой опции раскрывается, установкой типа такой:

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

Сам нашёл. Спасибо лиссяре за перевод.

Добавлено: 2007-04-18 13:50:40
Alex Keda
плюсы - можно спокойно хранить пароли в БД.
многие юзеры будут не в восторге, если узнают что их пароли лежат открытые.

Добавлено: 2007-04-18 14:05:21
dikens3
lissyara писал(а):плюсы - можно спокойно хранить пароли в БД.
многие юзеры будут не в восторге, если узнают что их пароли лежат открытые.
Мои тоже что-то вякали, пока я не показал как на компе выламываются все пароли практически из всех программ. Особенно BAT, OExpress, ICQ и т.п. хлам. Теперь молчат ибо нет такой проги из которой нельзя выломать пароль (на которых работают мои пользователи). Им теперь точно пофигу как лежат пароли на сервере(они не знают вобщем)

Ну украдут базу, она ведь нужна спамерам в первую очередь. А E-Mail'ы там открытые. В случае OpenRelay поменять пароли недолго. :-)
Если хэшировать ещё и логин, тогда неясно как ставить ограничения. Нифига ведь не знаешь для кого ставишь. :-(

Re: Exim, Mysql + шифрованные пароли в базе.

Добавлено: 2008-02-20 18:57:01
binomics
Господа, а не подскажите ли rак заставить authdaemond' при первой выборке из БД выбирать хешированный пароль. Пароли кладутся в базу как указано в первом посте.

Дебаг конфиг пишет нижеследующее:

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

Feb 19 11:10:20 SERVER courier-imap: Connection, ip=[1.1.1.1]
Feb 19 11:10:23 SERVER authdaemond: received auth request, service=pop3, authtype=login
Feb 19 11:10:23 SERVER authdaemond: authmysql: trying this module
Feb 19 11:10:23 SERVER authdaemond: Install of a character set for MySQL. SQL query: SET NAMES utf8
Feb 19 11:10:23 SERVER authdaemond: SQL query: SELECT `username`, "", `password`, 26, 6., CONCAT('/var/mail/exim/', `maildir`), CONCAT('/var/mail/exim/', `maildir`), quota, `name`, "" FROM `mailbox` WHERE `username` = "test@server.ru" AND (active='1')
Feb 19 11:10:23 SERVER authdaemond: supplied password '123' does not match clearpasswd '40bd001563085fc35165329ea1ff5c5ecbdbbeef'
Feb 19 11:10:23 SERVER authdaemond: authmysql: REJECT - try next module
Feb 19 11:10:23 SERVER authdaemond: FAIL, all modules rejected

Re: Exim, Mysql + шифрованные пароли в базе.

Добавлено: 2008-02-20 20:44:08
binomics
SORRY не совсем корректно сформулировал. Если я правильно понял, то authdaemond нужно заставить полученный пароль от клиента захешировать SHA-1 и сравнить с полученным хешем из базы.
Но вот сделать это не получается :(
В документации по authdaemond описана функция проверки, но лезть в исходники откровенно говоря не хочется. Есть жгучее желание обойтись "малой кровью".
Надеюсь на помощь.
Сервер настраивался по статье http://www.lissyara.su/?id=1175

Re: Exim, Mysql + шифрованные пароли в базе.

Добавлено: 2008-02-24 10:55:19
binomics
Вопрос снят, проблема решена внимательным вкуриванием доков и в конечном итоге установкой dovecot.