1 (16.09.2011 12:41:49 отредактировано AlfaStriker)

Добрый день!

На тестовой машине устанавливаю Exim+Dovecot+MySQL

При попытке забрать почту через почтовый клиент в логах появляется ошибка:

cat /var/log/maillog

Sep 16 04:39:33 localhost dovecot: dovecot: Relative home directory paths not supported (user linux@point.local):
Sep 16 04:39:33 localhost dovecot: pop3-login: Internal login failure (auth failed, 1 attempts): user=<linux@point.local>, method=PLAIN, rip=192.168.50.10, lip=192.168.50.2

dovecot.conf содержит следующее:

mail_location = maildir:/var/vmail/%d/%u

dovecot-sql.conf

#File: /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=vexim user=vexim password=password
default_pass_scheme = CRYPT
password_query = SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT "" AS `home`, 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

Втупил ли я ?

Спасибо!

2

Здесь надо переделать запрос MySQL чтобы использовался абсолютный путь за место относительного.

Так вот как его переделать, так чтобы все работало ?

3

#File: /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=vexim user=vexim password=password
default_pass_scheme = CRYPT
password_query = SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT "" AS `home`, 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

Если переделать здесь запрос  user_query на следующий

user_query = SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

Он не ругается.

4

Но выходит другая ошибка:

2011-09-16 05:15:34 1R4TNQ-0003sf-Nn failed to expand "${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='${quote_mysql:$domain}' AND `active`='1'}}" while checking a list: lookup of "SELECT `domain` FROM `domain` WHERE `domain`='point.local' AND `active`='1'" gave DEFER: MYSQL connection failed: Access denied for user 'vexim'@'localhost' (using password: YES)

5

Проблема решена!

Приветствую!
как решили следующую проблему

MYSQL connection failed: Access denied for user 'vexim'@'localhost'

7

AlfaStriker в продолжении данной темы задам вопросик если позволите : как использовать зашифрованные пароли вместо plain ? (на примере Outlook не получается настроить что то другое)  ac

8 (23.08.2012 12:27:13 отредактировано AlfaStriker)

Они сейчас и так зашифрованы, когда я запускал в первый раз Exim, чтобы не усложнять установку пароли хранил простым текстом. Потом нашел способ как хранить пароли в MD5.
У меня Outlook нормально работает. Что пишет Outlook у тебя?

Если у тебя проблемы с Outlook'oм значить тебе надо крутить Довекот, а не Exim.

9

AlfaStriker пишет:

Потом нашел способ как хранить пароли в MD5.

С этого места можно поподробней ?

10

Посмотри конфиг файлы
- /etc/exim/exim.conf
- /var/www/html/postfixadmin/config.inc.php
- /etc/dovecot-mysql.conf

Там описано как хранить, считывать и записывать пароли в формате MD5.

11

nik222
Для того чтобы хранить пароли в формате MD5 надо:
Открыть файл /etc/dovecot/dovecot-mysql.conf
В нем найти и изменить строчку на:

default_pass_scheme = MD5-CRYPT

Потом открыть главный конфигурационный файл Exim - /etc/exim/exim.conf и поменять секции авторизации:

auth_plain:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = "${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}"
server_set_id = $1

auth_login:
driver = plaintext
public_name = PLAIN
server_condition = "${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}"
server_prompts = :
server_set_id = $2

auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

Далее требуется открыть конфигурационный файл PostfixAdmin - /var/www/html/postfixadmin/config.inc.php
В этом файле надо найти и поменять значение строчки:

$CONF['encrypt'] = 'md5crypt';

После настройки Exim, Dovecot и Postfixadmin надо перезапустить демон Exim и Dovecot:

# service exim restart
# service dovecot restart

Если есть старые учетные записи в которых пароль хранится открытым текстом, надо заного пересоздать эти учетные записи.

12 (23.08.2012 15:27:23 отредактировано nik222)

Спасибо, шикарно. Вот только как в этом случае быть с postfix ?
С  config.inc.php и dovecot-mysql.conf все остается также как я понимаю ?
И в dovecot.conf прописываю

auth_mechanisms = plain login cram-md5

Я так понимаю ?

13

Вообще-то пароли уже по умолчанию создаются в MD5.
Это прямо видно в файле config.inc.php выше.

14

Пфф, мне непонятен один момент: в базе пароли у меня зашифрованы, все ок. Но когда я ввожу данные авторизации в клиенте, я ведь ввожу пароль в открытом виде и в этом виде он отдается dovecot-у ?

15

Для этого надо использовать шифрования SSL/TSL.
Настройка этого есть в сети.

16

nik222 пишет:

Пфф, мне непонятен один момент: в базе пароли у меня зашифрованы, все ок. Но когда я ввожу данные авторизации в клиенте, я ведь ввожу пароль в открытом виде и в этом виде он отдается dovecot-у ?

Подобное шифрование паролей - есть только иллюзия безопасности?
Рассмотрим можель угроз и нарушителей.
1. Если храним пароли (или их хеши) в какой то базе данных, то боимся ли мы администатора? Вряд ли. Ему и так может быть доступна вся наша почта. Без знания наших паролей. Значит эта угроза неактуальна.
2. Передача паролей по сети. Нарушитель может слушать сетевой трафик. Насколько это актуально в корпоративных или домашних локальных сетях? Особенно с учетом промышленных коммутаторов, в которых на порты может идти трафик только на те компу, что к этим портам подключены. А иной трафик - мимо? Ну а для дома - вообще какой смысл? Значит это тоже не актуально.
3. Нарушитель слушает интернетный трафик исходящий от нас к провайдеру. Насколько это реально? По моему - эта угроза есть литературный миф.

Далее, если есть таки нарушитель и он перехватил не плайн-пароль, а его дайджест, то это всё равно, что перехватил сам плайн-пароль. Так как нет ничего проще подставить именно перехваченный дайджест при атаке. Отсюда - по устойчивости в взлому системы и плайн-пароли и их дайджесты  совершенно одинаковы. И полагаться на подобный механизм аутентификации нельзя.
Устойчивая аутентификация должна использовать дополнительные механизмы. А именно:
1. Сервер, получив идентификатор пользователя должен послать ему случайное число.
2. пользователь вычисляет из этого случайного числа и дайджества своего пароля новый суммирующий случайный (разовый) дайджест и отправляет его серверу.
3. сервер делает аналогичную операцию с хранимым на нем дайждестом и сравнивает полученный от пользователя дайджест со своим вычислением. Ну и если результат совпал, то юзер знает секрет и его можно пропускать.
Это есть базовый механизм устойчивой ко взлому системы аутентификации, все остальное, где по сети передаются или плайн-пароли или их дайджесты - неустойчиво.

17

nik222 пишет:

Пфф, мне непонятен один момент: в базе пароли у меня зашифрованы, все ок. Но когда я ввожу данные авторизации в клиенте, я ведь ввожу пароль в открытом виде и в этом виде он отдается dovecot-у ?

дело в том, что злоумышленник может получить доступ к базе данных, и КО ВСЕМ паролям на вашем сервере.
Однако, если злоумышленник получит все хеши, а не все пароли, то это ему ничего не даст. Суть в том, что можно из пароля вычислить хеш, но обратное преобразование невозможно (только полным перебором, что для пароля из 8+ символов невозможно на сегодня).

Cruiser78 пишет:

Далее, если есть таки нарушитель и он перехватил не плайн-пароль, а его дайджест, то это всё равно, что перехватил сам плайн-пароль. Так как нет ничего проще подставить именно перехваченный дайджест при атаке.

если злоумышленник перехватил именно пароль, то он может им воспользоваться. Однако, имея хеш пароля, ничего сделать нельзя. В том случае, конечно, если этот хеш вычисляется сервером. Последнему нужен именно пароль, а не хеш, который сервер вычисляет самостоятельно, и сравнивает его со своим хешем из БД. У одинаковых паролей одинаковые хеши, потому хранить пароли НИКОГДА не нужно.

У этой схемы имеются две уязвимости:

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

Cruiser78 пишет:

1. Сервер, получив идентификатор пользователя должен послать ему случайное число.
2. пользователь вычисляет из этого случайного числа и дайджества своего пароля новый суммирующий случайный (разовый) дайджест и отправляет его серверу.
3. сервер делает аналогичную операцию с хранимым на нем дайждестом и сравнивает полученный от пользователя дайджест со своим вычислением. Ну и если результат совпал, то юзер знает секрет и его можно пропускать.
Это есть базовый механизм устойчивой ко взлому системы аутентификации

и что помешает злоумышленнику проделать точно такую-же операцию? К сожалению, если юзер не может доверять серверу, а сервер не может доверять юзеру, то данная схема НЕ сработает. Такие дела.
Но и тут есть выход - нужно привлечь какую-либо третью сторону, которой доверяет и клиент, и сервер. Т.е. серверу необходим сертификат, подписанный третьей стороной. В этом случае, клиент может проверить сертификат сервера, и будет уверен в том, что данный сервер не является подставой (fake). В противном случае клиент может послать свой пароль/дайджест/хеш/хитромудрый ключ на 100500 бит не на сервер, а прямо злоумышленнику, со всеми вытекающими.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

18

Все это здорово но у меня два вопроса:

1. в общем то мне непонятен момент озвученный в 14 посте.
2. Исходя из описанных вариантов  - с чего начать ?

19

nik222 пишет:

1. в общем то мне непонятен момент озвученный в 14 посте.

ответ - да. В открытом виде.

nik222 пишет:

2. Исходя из описанных вариантов  - с чего начать ?

зависит от того, ЧЕГО вы желаете добиться. Попробуйте для начала настроить TLS шифрование. Отправная точка: http://ru.wikipedia.org/wiki/TLS
Но ещё раньше решите, а оно вам ДЕЙСТВИТЕЛЬНО надо? Лично я и так обхожусь (дык неуловимый Джо же!)

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

20

drBatty пишет:

ответ - да. В открытом виде.

почтовые клиенты не могут передавать пароль в зашифрованном виде ?

21

nik222 пишет:

почтовые клиенты не могут передавать пароль в зашифрованном виде ?

могут. Используя TLS.
Передавать хеш пароля а не сам пароль не имеет никакого смысла - если сервер принимает хеш, то злоумышленник может его перехватить и им воспользоваться. Кстати, почтовый клиент НЕ передаёт пароль на почтовый сервер. Обычно клиент передаёт почту на какой-нить промежуточный сервер, а с него почта идёт дальше проходя несколько промежуточных узлов. По этой причине ваш сервер вряд-ли будет работать с клиентом напрямую.

ИМХО шифровать почту/почтовые пароли не имеет особого смысла. Если сообщение секретное, или важно доказать, что вы это действительно вы, используйте GnuPG шифрование и ЭЦП. (жаль, что многие люди пугаются цифровых сигнатур, которые я леплю в каждой мессаге ac )

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

22

Благодарю. Начну с TLS.

23

drBatty пишет:

дело в том, что злоумышленник может получить доступ к базе данных, и КО ВСЕМ паролям на вашем сервере.

Вопрос - как? Особенно, если бэкапы хранятся правильно. Тогда для того, чтобы получить доступ к базе, которая хранит пароли, надо знать пароли доступа к базе. Если нет этого знания - как получить доступ к базе? Или мы храним парольную информацию в базе, которая отвечает первому встречному на его select all password?  :-)

drBatty пишет:

Однако, если злоумышленник получит все хеши, а не все пароли, то это ему ничего не даст. Суть в том, что можно из пароля вычислить хеш, но обратное преобразование невозможно (только полным перебором, что для пароля из 8+ символов невозможно на сегодня).
.....Однако, имея хеш пароля, ничего сделать нельзя

Заблуждение. Нет принципиальной разницы что передавать серверу - перехваченный пароль или перехваченный хэш пароля. Если актуальна угроза перехвата протокола аутентификации, то одинаково опасно пользоваться как плайн-паролями, так и потоянными их хешами.
Простой и наглядный пример - протокол аутентификации в POP3. POP3-сервер ждет от клиента дайджест пароля. Что мешает нарушителю этот дайджест перехватить и ввести его от имени пользователя? Сам, когда изучал почтовые протоколы телнетом ходил на свои РОР-сервера и дайджесты паролей вставлял из клипборда. Так что, по уровню устойчивости при перехвате, что простой пароль, что его дайджест - одинаково ненадежно. Никто не станет восстанавливать исходный пароль. Применять будут именно дайджест. Передача же дайджестов паролей - это создание иллюзии безопасности.

drBatty пишет:

и что помешает злоумышленнику проделать точно такую-же операцию? К сожалению, если юзер не может доверять серверу, а сервер не может доверять юзеру, то данная схема НЕ сработает. Такие дела.

Это нормальная рабочая схема. При перехвате процедуры аутентификации у нарушителя нет знания одного секрета - знания пароля пользователя. Поэтому нарушитель не может повторить эту процедуру. Нарушитель может перехватить случайную соль, посланную с сервера и ответ юзера, смешанный с этой случайной солью. То есть тоже случайное число. Ни пароли, ни их дайджесты при этом по сети не передаются. Они используются для вычисления новой случайности на стороне клиента и сервера. Из этого случайного числа восстановить неслучайный пароль, чтобы проделать ту же операцию и зайти от имени легального юзера на реальный сервер - не слишком возможно.
Ну а рисовать сервер до неотличимости схожий с реальным (то есть расматриваем ситуацию, когда не доверяем серверу) - это слишком перебор. Я не могу отнести эту угрозу к реальным (при аутентификации с со случайной солью онли). Это можно логин-страницу вконтакта или одноклассников подставлять. Но там и случайной соли в аутентификации нет. Так что информацию о паролях собрать можно. А там, где используется соль - ничего не соберешь. 

drBatty пишет:

Но и тут есть выход - нужно привлечь какую-либо третью сторону, которой доверяет и клиент, и сервер. Т.е. серверу необходим сертификат, подписанный третьей стороной. В этом случае, клиент может проверить сертификат сервера, и будет уверен в том, что данный сервер не является подставой (fake). В противном случае клиент может послать свой пароль/дайджест/хеш/хитромудрый ключ на 100500 бит не на сервер, а прямо злоумышленнику, со всеми вытекающими.

Это тоже решение. Но реально - если не впадать в паранойю - перебор.

24

Cruiser78 пишет:

Вопрос - как?

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

Cruiser78 пишет:

Заблуждение. Нет принципиальной разницы что передавать серверу - перехваченный пароль или перехваченный хэш пароля. Если актуальна угроза перехвата протокола аутентификации, то одинаково опасно пользоваться как плайн-паролями, так и потоянными их хешами.

дык я о том-же.
действительно нет разницы, что передавать
но есть разница, что хранить на сервере
хеши хранить лучше, чем пароли.

Cruiser78 пишет:

Это нормальная рабочая схема.

ну это и есть SSL/TLS
если я вас правильно понимаю, это SSL с самоподписанным сертификатом. К сожалению нам она НЕ подходит, ибо, как я уже выше писал, клиент общается с нашим сервером НЕ напрямую.
Такой метод можно (и нужно!) использовать в SSH, но с почтой так не получается.

Cruiser78 пишет:

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

а зря. Почитайте заголовки своей почты - она к вам идёт через несколько серверов, и не факт, что она не прошла через сервер злоумышленника.
И если при входе на ssh сервер нам показывают отпечаток (fingerprint), то с почтовым этого нет.
Именно поэтому, почта ОБЯЗАТЕЛЬНО должна быть хотя-бы подписана. А если она секретная, то и зашифрована.
Ну а пароль в почте помогает разве что от спама, что-бы ваш сервер не стал релеем для его рассылки.

Cruiser78 пишет:

Это можно логин-страницу вконтакта или одноклассников подставлять. Но там и случайной соли в аутентификации нет.

вы не понимаете назначение соли. Дело в том, что соль постоянная, и НЕ помогает от перехвата пароля. Т.е., если вы например знаете, что мой пароль скажем к root'у к примеру i99sEifG!, то вам ничего не помешает войти в мою систему, набрав логин root и пароль i99sEifG!. При этом, значение соли вам знать НЕ нужно. Точно также и для фконтакта, или любого иного сервиса.

Объясняю ещё раз, зачем нужна соль:

Если злоумышленник похитил БД, и нашёл там хеш ba1f2511fc30423bdbb183fe33f3dd0f, то он тупым перебором подберёт пароль 123
Причём перебор он может совершить заблаговременно, заготовив радужную таблицу. Таким образом он может подобрать не только 123, но и i99sEifG!, или любой другой, не слишком длинный пароль.
Однако, если к паролю прилагается соль vg5czfbqg4yeJCfcfar, то радужная таблица будет бессильна (ибо её объём должен быть в тысячи Тб, и время вычисления десятки или сотни лет). Причём сама соль известна злоумышленнику, он она становится ему известной после кражи БД (ибо там и записана своя уникальная соль для каждого клиента).

Соль это конечно хорошо, однако соль никак не помогает от перехвата.

Cruiser78 пишет:

Это тоже решение. Но реально - если не впадать в паранойю - перебор.

нет. Перебор это для ssh, а для почтовых серверов - вполне себе норма. Конечно, если ваша почта нужна исключительно вам и вашей компании, вы можете сэкономить, и использовать самоподписанные сертификаты (которые понадобится установить на ВСЕ подотчётные компьютеры). Но попытка принять/отправить почту куда-нить наружу приведёт к fail'у.
Именно потому я и предлагаю использовать для почты простой текстовый пароль, и забить болт на его перехват. Если вся почта подписана, то можно не опасаться её искажения злоумышленником.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

25 (25.08.2012 21:10:27 отредактировано Cruiser78)

drBatty пишет:

хеши хранить лучше, чем пароли.

Ничем не лучше. Какая разница, что утечет, сам пароль или его хэш, если сервер пускает к себе по полученному от юзера (или кого угодно) паролб или хэшу? Утекут хэши с сервера и будет нарушитель их подставлять (или иначе использовать) в свое полное удовольствие...

drBatty пишет:

ну это и есть SSL/TLS
если я вас правильно понимаю, это SSL с самоподписанным сертификатом.

Совершенно нет. Неправильно. Нет там, в этой схеме никаких криптографических (за исключением вычисления хэша, который не слишком криптография, так как нет там секрета) алгоритмов, никаких сертификатов (я понимаю этот термин исключительно в рамках ассиметричной криптографии, в рамках ЭЦП и всего, что на этой базе построено). Соль этого алгоритма - в передаче клиенту _случайной_ соли, случайного значения, синхронного вычисления клиентом (хеша пароля, хеша конкатенации случайной соли и хэша пароля) и сервером (хеша конкатенации случайной соли и хэша пароля, хранящегося на сервере) и равнения на сервере того, что вычислил клиент с тем, что вычислил сервер. При этом ни пароли, ни их хэши по сети не передаются, передаются только случайные (каждый раз новые) значения. Кстати, это алгоритм аутентификации в сетях NovellNetware.

drBatty пишет:

а зря. Почитайте заголовки своей почты

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

drBatty пишет:

вы не понимаете назначение соли. Дело в том, что соль постоянная, и НЕ помогает от перехвата пароля.

Соль не может и не должна быть постоянной. Соль должна быть исключительно случайным значением. Тогда она сыграет свою рояль. Иное - иллюзия.

drBatty пишет:

Именно потому я и предлагаю использовать для почты простой текстовый пароль, и забить болт на его перехват. Если вся почта подписана, то можно не опасаться её искажения злоумышленником.

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

drBatty пишет:

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

Про сейфовые комнаты в курсе?

26

Ребята, давайте поговорим о хлебе или наконец о женской красоте. Вот например мне нравятся ножки и сиски =)
К черту парольную защиту и шифрацию, СИСКИ - наше все )))

27

AlfaStriker пишет:

Ребята, давайте поговорим о хлебе или наконец о женской красоте. Вот например мне нравятся ножки и сиски =)

Lupo Alberto: Нарядно, конечно, но... в «личку», если кто заинтересуется.
ну как-то так..

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

28

Сиси vs попа
Что рулит?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

29

Cruiser78 пишет:

Мы сознательно переходим от проблемы надежной аутентификации на сервере (каких либо приложений) к проблеме защиты почтовых сообщений?

та не, мы с неё и начали.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

30

drBatty пишет:

Lupo Alberto:

что в этой девушке тебе не понравилось?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)