The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Подключение виртуальной базы пользователей к Dovecot с CRAM-MD5 аутентификацией
Для того чтобы не хранить базу виртуальных пользователей с открытыми паролями
можно использовать в Dovecot механизм аутентификации CRAM-MD5.

Для включения  CRAM-MD5 аутентификации в /etc/dovecot.conf необходимо привести конфигурацию к виду:

   default_mail_env = maildir:/var/spool/vhosts/%d/%n
   auth_mechanisms = plain DIGEST-MD5 CRAM-MD5
   auth_verbose = yes
   auth default {
      mechanisms = plain cram-md5
      passdb passwd-file {
      args = /etc/dovecot/passdb
   }
   userdb static {
      args = uid=virtual gid=virtual /etc/dovecot/userdb
   }


В директории /etc/dovecot создаем два файла: passdb с паролями и userdb со
списком пользователей и расположением их виртуальных аккаунтов.

Пример содержимого userdb:

   tom@example.com::510:510::/var/spool/vhosts/example.com/:/bin/false::
 
Пример passdb:

   tom@example.com:{HMAC-MD5}e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6

Для формирования HMAC-MD5 хэша на основе открытого пользовательского пароля
необходимо использовать утилиту dovecotpw:

   # dovecotpw
   Enter new password:
   Retype new password:
   {HMAC-MD5}e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6
 
12.11.2009 , Источник: http://postfixmail.com/blog/index.p...
Ключи: crypt, dovecot, imap, mail, cuth / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / Mail, почта / Безопасность и установка ограничений

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Гайбруш Трипвуд, 14:53, 12/11/2009 [ответить] [смотреть все]
  • +/
    Такое хеширование имеет немного смысла, потому что знания этого хеша достаточно для аутентификации.
     
     
  • 2.2, Sw00p aka jerom, 10:07, 13/11/2009 [^] [ответить] [смотреть все]
  • +/
    уважаемый читаем как работает крам аутентификация

    давно уже перешёл на хранения в базе (слон) в краме и авторизацию

    пс: кому нужен пхп скрипт для генерации хеша ??? могу дать

     
     
  • 3.3, Гайбруш Трипвуд, 11:04, 13/11/2009 [^] [ответить] [смотреть все]
  • +/
    Я знаю, как работает cram-md5, поэтому и запостил, чтобы у читателей не возникало иллюзий, что таким образом можно защитить базу паролей от кражи. cram-md5 позволяет не передавать пароли в открытом виде при аутентификации, но за это приходится платить хранением их в открытом виде. Вы скажете, что хранится хеш? Но если посмотрите на алгоритм cram-md5, то увидите, что dovecot хранит их хеши только для того, чтобы не вычислять одно и тоже при каждом подключении и знания этого хеша достаточно для успешной аутентификации.
     
     
  • 4.4, Sw00p aka jerom, 15:49, 13/11/2009 [^] [ответить] [смотреть все]
  • +/
    уважаемый плохо читали значить я хряню в базе не плаин текстовые пароли а захеш... весь текст скрыт [показать]
     
     
  • 5.5, Sw00p aka jerom, 16:01, 13/11/2009 [^] [ответить] [смотреть все]  
  • +/
    Non-plaintext authentication mechanisms See Authentication Mechanisms for explan... весь текст скрыт [показать]
     
     
  • 6.6, Гайбруш Трипвуд, 17:02, 13/11/2009 [^] [ответить] [смотреть все]  
  • +/
    Документация ввела вас в заблуждение.
    Еще раз повторяю: знания довекотовского cram-md5 хеша достаточно для успешной авторизации по механизму cram-md5, и польза такого хеширования ограничена лишь:
    - меньше вычислений при каждом логине
    - знание такого хеша не позволит авторизоваться по некоторым другим механизмам (digest-md5, например), что верно подмечено в документации

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

    Посмотрите хотя бы вот этот тред
    http://www.dovecot.org/list/dovecot/2008-April/029986.html
    Ну и стандарты почитать тоже можно.

     
     
  • 7.7, Sw00p aka Jerom, 14:38, 14/11/2009 [^] [ответить] [смотреть все]  
  • +/
    схему в студию как вы будете зная хеш на стороне сервера проходить авторизацию

    пс: тот кто отвечал в треде даже сам понятия не имеет как этот механизм реализован

    и говорит мол Then you have to store passwords in plaintext.
    для дайджеста да но не для крама

     
     
  • 8.9, Гайбруш Трипвуд, 16:17, 14/11/2009 [^] [ответить] [смотреть все]  
  • +/
    Тред вы не дочитали, они там разобрались Попробуем уйти в детали CRAM-MD5 рабо... весь текст скрыт [показать]
     
     
  • 9.10, Sw00p aka Jerom, 10:45, 16/11/2009 [^] [ответить] [смотреть все]  
  • +/
    описанный вами алгоритм он производится на стороне сервера довкот посылает челен... весь текст скрыт [показать]
     
     
  • 10.11, Sw00p aka Jerom, 11:05, 16/11/2009 [^] [ответить] [смотреть все]  
  • +/
    вот ещё функция реализации hmac_md5($challenge,$password)

    function hmac_md5($data, $key='') {

        if (extension_loaded('mhash')) {
                if ($key== '') {
                            $mhash=mhash(MHASH_MD5,$data);
                } else {
                            $mhash=mhash(MHASH_MD5,$data,$key);
                }
                return $mhash;
        }

        if (!$key) {
            return pack('H*',md5($data));
        }

        $key = str_pad($key,64,chr(0x00));
        if (strlen($key) > 64) {
            $key = pack("H*",md5($key));
        }
        $k_ipad =  $key ^ str_repeat(chr(0x36), 64) ;
        $k_opad =  $key ^ str_repeat(chr(0x5c), 64) ;
        /* Heh, let's get recursive. */
        $hmac=hmac_md5($k_opad . pack("H*",md5($k_ipad . $data)) );
        return $hmac;
    }

     
  • 10.12, Гайбруш Трипвуд, 11:22, 16/11/2009 [^] [ответить] [смотреть все]  
  • +/
    Посмотрим на такой алгоритм аутентификации имени меня.
    - сервер посылает случайное число challenge
    - клиент вычисляет некое x = H1(challenge, H2(password)), H1 и H2 - криптохеш-функции и посылает на сервер.
    - сервер делает то же самое, только с хранящимся на сервере паролем и сравнивает
    Видно, что это некий абстрактный cram-md5.

    Так вот, хитрющий довекот хранит у себя dovecot_hash=H2(password), чтобы не вычислять его каждый раз. Если файл с хешами попадет к нехорошему человеку, он при аутентификации сможет вычислить x = H1(challenge, dovecot_hash) и авторизоваться.
    > а теперь вопрос - зная хеш пароля куда я его буду пихат ?????????????

    Я уже говорил, что нужно посмотреть, что именно довекот может вычислить без знания challenge (т.е. H2), и тогда можно будет определить формулу для злоумышленника.

     
     
  • 11.13, Sw00p aka Jerom, 12:16, 16/11/2009 [^] [ответить] [смотреть все]  
  • +/
    а вы попробуйте реализовать этот алгоритм dovecot_hash=H2(password)
    а потом сделайте так x = H1(challenge, dovecot_hash)


     
  • 7.8, Sw00p aka Jerom, 14:45, 14/11/2009 [^] [ответить] [смотреть все]  
  • +/
    а на счёт брутфорсеров - то всё можно пробрутфорсить
    но при этом есть варианты брутфорса с использованием имеющегося хеша пароля и без него

    типичный случай брутфорс мд5 который возвращает один и тот же хеш и в данном случае достаточно шифровать последовательности и сравнивать с хешом

    в случае мд5 используемом в системе юниксов для авторизации необходимо иметь хеш чтобы пробрутфорсить

     
  • 3.14, fi, 20:11, 17/11/2009 [^] [ответить] [смотреть все]  
  • +/
    Да это уже проходили.

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

    Сами разберитесь как это работает, в инете достаточно много есть об этом.

     
     
  • 4.15, Sw00p aka Jerom, 10:04, 18/11/2009 [^] [ответить] [смотреть все]  
  • +/
    мда не знал что у меня в базе плаинтекстовые пассы храняться

    капча: 30005

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor