[ Что нового ? | Заметки | Статьи | Ссылки | Настройка pppd ]     [ win | koi ]
16.06.1999, © Igor Sysoev, igor@nitek.ru

 

Что делать, если Вам не повезло, и у Вашего провайдера стоит Windows NT RAS

 

Если Вы звоните на Windows NT Remote Access Server, то после строки "CONNECT" Вы не увидите никакого приглашения. Поэтому из нашего скрипта нужно убрать ожидание строки "login:" и завершать работу скрипта сразу после получения строки "CONNECT":

                ABORT           "ERROR"                 \
                ABORT           "NO DIALTONE"           \
                TIMEOUT         5                       \
                ""              "AT"                    \
                "OK"            "ATZ"                   \
                "OK"            "ATS7=120"              \
                ABORT           "BUSY"                  \
                ABORT           "NO ANSWER"             \
                ABORT           "NO CARRIER"            \
                "OK"            "ATDP$1"                \
                TIMEOUT         125                     \
                "CONNECT"       "\\с"

        if [ "$?" = "0" ]; then
                exit 0
        fi

Теперь можно приступить к аутентификации. Из того, что понимает pppd, Windows NT RAS поддерживает PAP и так называемый MS CHAP 80. Аутентификация через PAP пройдет в том случае, если в Windows NT RAS установлен параметр "Allow any authentication including clear text". Если же тамошние администраторы страдают паранойей и установили параметры "Require encrypted authentication" или даже "Require Microsoft encrypted authentication", то единственный способ аутентификации - это MS CHAP 80.

Что же такое MS CHAP 80 ? В CHAP могут использоватся различные методы шифрования и передачи пароля. Описанному выше методу с использованием алгоритма MD5 присвоен номер 05. Microsoft разработал свой метод с использованием алгоритмов MD4 и DES для Windows NT 3.5, 3.51, 4.0 и Windows 95, назвал его MS CHAP и ему был присвоен номер 80. Это метод описан в RFC 2433. Но видимо, что-то там оказалось не так и после SP3 был выпущены хотфиксы pptp3-fix (включенный в SP4) и rras30-fix с новым методом за номером 81, названный MS CHAP V2. Если Вам безумно интересно, то Вы можете посмотреть черновой вариант описания этого метода. Предыдущий MS CHAP теперь называется MS CHAP V1.

Если на Windows NT 4.0 установлен SP3, то после некоторого шаманства в реестре можно использовать и CHAP 5.

Для того, что бы pppd мог аутентифицироваться по методу MS CHAP 80, его нужно собрать с поддержкой этого метода:

  • Прежде всего, нам нужны исходники самого pppd.

  • Затем необходимо установить библиотеку, выполняющую шифрование методом DES.

    Дело в том, что, как правило, в FreeBSD не устанавливают всё, что связано с DES, а для шифрования паролей используется метод MD5. Тем не менее, в дистрибутив DES входит.

    Нам нужно взять из дистрибутива два файла des/des.aa и des/des.ab и вытащить из них всего два файла - /usr/include/des.h и /usr/lib/libdes.so.X.X:

    cat des.?? | ( cd / ; \
      tar zxfv - usr/include/des.h 'usr/lib/libdes.so.*' )
    
  • Для FreeBSD 2.2.7 и 2.2.8 необходимо подпатчить chap_ms.c. Для FreeBSD 3.1 и выше этого делать не надо. Берём патч и накладываем его:

    patch < patch-chap_ms.txt
    
  • Добавляем в Makefile такие строки:

    #LDADD+=-lpcap
    #DPADD+=${LIBPCAP}
    
    # MS-CHAP support.  Requires the DES library.
    CFLAGS+=-DCHAPMS
    SRCS+=      chap_ms.c
    LDADD+=     -ldes
    DPADD+=     ${LIBDES}
    
    .include <bsd.prog.mk>
    

    В FreeBSD 3.0 и 3.1 эти строки уже есть, но они закомментированы. А в 3.2 и 3.3 они раскомментированы, но будут учитываться, только если у Вас уже установлен DES, поэтому Вам нужно закомментировать находящиеся там .if и .endif.

  • Теперь всё это можно собрать и установить:

    make
    make install BINDIR=/usr/sbin
    

После этого нужно записать наше имя "igor" и пароль "1234567" в файл /etc/ppp/chap-secrets:

igor            lame        1234567

Кроме того, мы указали имя удалённой стороны "lame". В отличие от CHAP 5, в CHAP 80 удалённая сторона не передаёт нам своё имя, поэтому оно может быть любым и его необходимо указать в параметре remotename:

pppd cuaa0 57600 lock connect '/etc/ppp/dial'           \
        user igor remotename lame                       \
        defaultroute noipdefault debug

Если Windows NT, на которой устновлен RAS, не является контроллером домена и не является stand-alone сервером, то для проведения аутентификации ему необходимо сделать запрос к контроллеру домена. В этом случае Вам нужно добавить к Вашему имени имя домена. Для домена "dummies" Ваше имя в /etc/ppp/chap-secrets будет выглядеть так:

dummies\\igor   lame        1234567

Соответственно, необходимо изменить и параметры pppd:

pppd cuaa0 57600 lock connect '/etc/ppp/dial'           \
        user dummies\\igor remotename lame              \
        defaultroute noipdefault debug

Необходимо заметить, что поддержка MS CHAP 80 в pppd ограничена аутентификацией себя и pppd не сможет аутентифицировать других по этому методу, поэтому Вам нужно отключить этот тип аутентификации на звонящих к Вам Windows NT 4.0.

Более подробно о настройках PPP-аутентификации в Windows NT RAS Вы можете прочитать в статье Microsoft KnowledgeBase Q136634.

counter