Sasl-dovecot (настройка аутентификации)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

paltusssss
Сообщения: 147

Sasl-dovecot

Сообщение paltusssss »

Здравствуйте!

Объясните пожалуйста следующий момент.

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

/etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

/etc/dovecot.conf

mechanisms = plain login

socket listen {
    client {
#   path = /var/run/dovecot/auth-client
     path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }

# telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to formoza.local (192.168.1.1).
Escape character is '^]'.
220 mail.local.lan ESMTP cool_mail
ehlo mail.local.lan
250-mail.local.lan
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


Как видно, аутентификация PLAIN LOGIN присутствует, но что интересно сеанс можно продолжить двумя способами:

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

helo www
250 mail.local.lan
auth login
334 VXNlcm5hbWU6
bmljaw==
334 UGFzc3dvcmQ6
cmp5bHuag==
235 2.7.0 Authentication successful
mail from:<>
250 2.1.0 Ok
rcpt to:<nick@mail.local.lan>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
hi
.
250 2.0.0 Ok: queued as 9A211C3C44


Или так:

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

helo www
250 mail.local.lan
mail from:<>
250 2.1.0 Ok
rcpt to:<nick@mail.local.lan>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
hi
.
250 2.0.0 Ok: queued as 04306C3C44


Как видно из примера, если я хочу пройти аутентификацию, то прохожу её, а если - нет, то свободно отправляю письмо от имени любого пользователя. Тогда какой смысл от этого Plain Login? Можно ли сделать так, что бы принудительно требовался от пользователя ввод пароля? Либо сразу после команды ehlo, либо до команды data.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Sasl-dovecot

Сообщение sash-kan »

paltusssss писал(а):
28.05.2011 19:43
Можно ли сделать так, что бы принудительно требовался от пользователя ввод пароля?
наверняка можно.
а вам именно это нужно? чтобы из внешнего мира вам никто не мог написать?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
paltusssss
Сообщения: 147

Re: Sasl-dovecot

Сообщение paltusssss »

sash-kan писал(а):
28.05.2011 21:21
а вам именно это нужно? чтобы из внешнего мира вам никто не мог написать?

Почему всё так серьёзно? Помню как то телнетом решил отправить себе же сообщение с mail.ru. Так вот пока не ввёл в base64 логин и пароль даже не смог вводить команды mail from и т.д. Разве это плохо?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Sasl-dovecot

Сообщение sash-kan »

paltusssss
обычно в задачи smtp-сервера входит приём почты для обслуживаемых им доменов.
огромное количество спама породило немалое количество препон, чинимых сервером подключившемуся к нему smtp-клиенту.
но требование аутентификации при приёме писем для «своих» доменов — это весьма редкий и специфичный способ использования smtp-сервера.
вот я и уточнил на всякий случай — вдруг вам нужно именно такое специфичное поведение.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Sasl-dovecot

Сообщение sash-kan »

paltusssss писал(а):
28.05.2011 22:48
Помню как то телнетом решил отправить себе же сообщение с mail.ru.
т.е., вы захотели использовать smtp-сервер mail.ru в качестве релея для отправки письма на какой-то другой домен?
было бы весьма удивительно, если бы mxs.mail.ru его принял.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Gineaser
Сообщения: 157
Статус: Evrashka
ОС: Arch Linux

Re: Sasl-dovecot

Сообщение Gineaser »

paltusssss
попробуй в Dovecot добавить срочку:
disable_plaintext_auth = yes

в Postfix main.cf:
smtpd_sasl_security_options = noanonymous
В main.cf нету дирректив связанных с smtpd_*restrictions (smtpd_sender_restrictions)?
Надо добавить:
smtpd_sender_restrictions = permit_sasl_authenticated
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject
Так же какой тип стоит в mynetworks_style?

А вообще если твой сервер работает и на внешку, то при попытке отправки письма с удаленного сервера оно будет отклонено сервером Dovecot-ом, по причине отсутствия аутентификации. В случае если аутентификационные данные были введены верно - письмо отправится. По логам /var/log/mail увидишь сообщение Send = (OK ...)
В случае попытки обхода аутентификации будет сообщение SASL AUTH ERROR.
В случае попытки использовать твой сервер как ретранслятор на другие почтовики, не указанные в мапах, будешь видеть сообщение Relay Access Denied для таких писем.
Обезьянка видит - Обезьянка делает...
Спасибо сказали:
paltusssss
Сообщения: 147

Re: Sasl-dovecot

Сообщение paltusssss »

Gineaser

Спасибо Вам за помощь! Заработало так, как хотелось. В mynetworks_style поставил тип subnet. Это не критично? До кучи решил прикрутить ещё cram-md5 для сравнения. Тоже заработало, но не смог разобраться как проверить его работу. Нашёл описание:

После того, как клиент отсылает команду AUTH CRAM-MD5, сервер шлет в ответ код 334, а вместе с кодом через пробел шлет секретный ключ, закодированный в base64. Клиент берет ключ, раскодирывает и с помощью него вычисляет хэш для пароля по методу HMAC-MD5. После этого клиент создает строку для ответа. Записывает логин, через пробел получившийся хэш, после чего кодирует в base64 и отправляет серверу. Сервер в случае успеха должен ответить кодом 235.

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