The OpenNET Project / Index page

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

PPTP туннель с MS-CHAPv2 (аутентификация), MPPE (шифрование) и MPPC (сжатие) (vpn ppp tunnel crypt linux chap pptp)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: vpn, ppp, tunnel, crypt, linux, chap, pptp,  (найти похожие документы)
From: Sergey Sikorsky <fagot#kalinovka.net> Date: Mon, 20 Dec 2004 18:21:07 +0000 (UTC) Subject: PPTP туннель с MS-CHAPv2 (аутентификация), MPPE (шифрование) и MPPC (сжатие) Оригинал: http://fine.kalinovka.net/modules.php?op=modload&name=News&file=article&sid=3 Шифрованный VPN туннель к провайдеру: MS-CHAPv2, MPPE, MPPC и все, все , все... Мне кажется, этот вопрос сегодня стоит перед многими пользователями сети Интернет и ОС Linux в частности... в отличии от ответа на него :) А настройка такого подключения у новичков вызывает некоторые проблемы. Да, из Microsoft Windows несколько проще подключится к VPN серверу по протоколу PPTP от Microsoft, используя протокол аутентификации Microsoft MS-CHAPv2, с использованием метода шифрования Microsoft Point-to-Point Encryption и сжатия Microsoft Point-to-Point Compression... Но к счастью, из под ОС Linux это тоже вполне реализуемо, а на сегодняшний день - еще и довольно просто, что и будет продемонстрировано ниже. MS-CHAPv2 - Это протокол аутентификации, широко используемый в продуктах от Microsoft, в связи с чем стал, по-сути, стандартом. Он более защищен по сравнению с PAP/CHAP и является усовершенствованной версией MS-CHAP, использовавшегося ранее и славящегося своими дырами в плане безопасности сейчас :) Его поддержка есть в pppd последних версий, для более ранних существуют патчи. К ядру MS-CHAP не имеет никакого отношения. MPPE и MPPC MPPE - это Microsoft Point-to-Point Encryption, метод шифрования данных при передаче по VPN-каналу. Тоже довольно популярен, даже используется в некоторых аппаратных шлюзах, роутерах и т.д. Разумеется очень рекомендуется к применению, особенно при построении туннеля через "дикий" Интернет. Хотя можно и не использовать, тогда никаких патчей искать не нужно. Для использования MPPE нужна поддержка в самом ядре Linux и в pppd. В pppd поддержка появилась относительно недавно, в ядре... ну, пока что ждем, надеемся и верим :) А патчи уже есть. Раньше я использовал патчи ppp-2.4.0-openssl-0.9.6-mppe.patch и linux-2.4.16-openssl-0.9.6b-mppe.patch (http://www.advancevpn.com/cgi-bin/content?lang=1&cid=LIBRARY&hid=15 ), но сейчас это кажется уже не модно :) С включением в pppd поддержки MPPE, в исходниках была директория include/linux/mppe, в которой тоже лежал патч к ядру, но почему-то в pppd-2.4.2 ее нет. Также имеется kernelmod с уже готовым модулем, но он тоже считается уже устаревшим и к тому же заточен только под ядра RedHat (поправьте меня, если я ошибаюсь). Самый распространенный набор патчей на сегодня "живет" на http://public.planetmirror.com/pub/mppe (ранее - http://mirror.binarix.com/ppp-mppe ) Впрочем, я буду использовать немножко другие, авторства Jan Dubiec - http://www.polbox.com/h/hs001 Автор добавил немножко "отсебятины", поэтому для работы требуется пропатчить не только ядро, но и pppd (да, да и новый тоже). Достоинством этих патчей является поддержка MPPC - Microsoft Point-to-Point Compression, если кому надо... Система: Slackware 9.1, linux-2.4.22 Патчи ложатся на исходный код нормально, без напильника, и кажется работают :) После применения патча к ядру, в `make menuconfig` появляется новая опция - "Microsoft PPP compression/encryption (MPPC/MPPE) (NEW)": Linux Kernel v2.4.22 Configuration [*] Network device support ARCnet devices ---> < > Dummy net driver support <M>Bonding driver support <M>EQL (serial line load balancing) support <M>Universal TUN/TAP device driver support < > Ethertap network tap (OBSOLETE) Ethernet (10 or 100Mbit) ---> Ethernet (1000 Mbit) ---> [ ] FDDI driver support [ ] HIPPI driver support (EXPERIMENTAL) <M>PPP (point-to-point protocol) support [ ] PPP multilink support (EXPERIMENTAL) [ ] PPP filtering <M>PPP support for async serial ports <M>PPP support for sync tty ports <M>PPP Deflate compression <M>PPP BSD-Compress compression <M>Microsoft PPP compression/encryption (MPPC/MPPE) (NEW) <M>PPP over Ethernet (EXPERIMENTAL) < > SLIP (serial line) support Wireless LAN (non-hamradio) ---> Token Ring devices ---> [ ] Fibre Channel driver support <M>Red Creek Hardware VPN (EXPERIMENTAL) <M>Traffic Shaper (EXPERIMENTAL) Wan interfaces ---> PCMCIA network device support ---> Ее следует включить (CONFIG_PPP_MPPE=y, можно модулем ) и пересобрать ядро. Это уж как кому хочется :) Установка PPPD http://samba.org/ppp Берем последний pppd, собираем, ставим. Тут и далее вместо `make install` будет применятся checkinstall ( http://asic-linux.com.mx/~izto/checkinstall ), кто не знает что это, могут делать по старинке. Качаем: user@linux:~$ cd user@linux:~$ wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.2.tar.gz user@linux:~$ md5sum ./ppp-2.4.2.tar.gz 362bcf218fba8afbb9afbee7471e5dac ./ppp-2.4.2.tar.gz Патч к pppd для поддержки MPPE и MPPC: user@linux:~$ wget http://www.polbox.com/h/hs001/ppp-2.4.2-mppe-mppc-1.0.patch.gz user@linux:~$ md5sum ./ppp-2.4.2-mppe-mppc-1.0.patch.gz 844c9d343d7511902b5380b27eca417e ./ppp-2.4.2-mppe-mppc-1.0.patch.gz Собираем и ставим: user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/ppp-2.4.2.tar.gz user@linux:/usr/src$ cd ./ppp-2.4.2/ user@linux:/usr/src/ppp-2.4.2$ ./configure user@linux:/usr/src$ zcat ~/ppp-2.4.2-mppe-mppc-1.0.patch.gz |patch -p1 user@linux:/usr/src/ppp-2.4.2$ make user@linux:/usr/src/ppp-2.4.2$ sudo checkinstall Если вы (почему-то) хотите использовать бета-версии pppd. У меня бета (ppp_2.4.2b1) никогда нормально не собиралась: user@linux:~$ cd /usr/src user@linux:/usr/src$ tar -zxvf ~/ppp_2.4.2b1.tgz user@linux:/usr/src$ cd ppp user@linux:/usr/src/ppp$ ./configure user@linux:/usr/src/ppp$ make ... creating config.h make -C radiusclient make[3]: Вход в каталог `/usr/src/ppp/pppd/plugins/radius/radiusclient' cd . && autoheader ./aclocal.m4:49: error: m4_defn: undefined macro: _m4_divert_diversion acoldnames.m4:86: AM_PROG_INSTALL is expanded from... ./aclocal.m4:49: the top level autoconf: tracing failed make[3]: *** [stamp-h.in] Ошибка 1 make[3]: Выход из каталог `/usr/src/ppp/pppd/plugins/radius/radiusclient' make[2]: *** [radiusclient/lib/.libs/libradiusclient.a] Ошибка 2 make[2]: Выход из каталог `/usr/src/ppp/pppd/plugins/radius' make[1]: *** [all] Ошибка 2 make[1]: Выход из каталог `/usr/src/ppp/pppd/plugins' make: *** [all] Ошибка 2 Лечится даунгрейдом m4 на время установки, или так: user@linux:/usr/src/ppp$ cd ./pppd/plugins/radius/radiusclient user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ rm aclocal.m4 user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ update user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ aclocal user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ cd ../../../.. user@linux:/usr/src/ppp$ make user@linux:/usr/src/ppp$ sudo checkinstall Ядро http://kernel.org Качаем и устанавливаем патч к ядру для поддержки MPPE и MPPC. На сайте разработчика (патча, не ядра :) есть куча патчей под разные версии ядра, поищите, что вам больше подходит. user@linux:~$ cd user@linux:~$ wget http://www.polbox.com/h/hs001/linux-2.4.22-mppe-mppc-0.98.patch.gz user@linux:~$ md5sum ~/linux-2.4.22-mppe-mppc-0.98.patch.gz 90d3dffa4bada645ce2fa9605684565e /home/fagot/linux-2.4.22-mppe-mppc-0.98.patch.gz user@linux:~$ su - root@linux:~# cd /usr/src/linux root@linux:/usr/src/linux# zcat /home/fagot/linux-2.4.22-mppe-mppc-0.98.patch.gz |patch -p1 root@linux:/usr/src/linux# make menuconfig Собираем то, что вышло: root@linux:/usr/src/linux# make dep root@linux:/usr/src/linux# make bzlilo root@linux:/usr/src/linux# mv /vmlinuz /System.map /boot root@linux:/usr/src/linux# lilo root@linux:/usr/src/linux# make modules root@linux:/usr/src/linux# make modules_install Если все прошло нормально, можно попробовать загрузить модуль. Если поддержка MPPE была включена как модуль, систему можно не перегружать. root@linux:/usr/src/linux# modprobe ppp_mppe_mppc root@linux:/usr/src/linux# lsmod|grep ppp_mppe_mppc ppp_mppe_mppc 20568 0 (unused) ppp_generic 16444 0 [ppp_mppe_mppc] Все получилось. Закрепим результат: # echo "alias ppp-compress-18 ppp_mppe_mppc" >>/etc/modules.conf Установка PPTP-клиента http://pptpclient.sourceforge.net Если в системе уже есть (или планируется pptpd), pptp-клиент (linux-pptp) не нужен. Иначе -- в путь-дорожку: Качаем linux-pptp с http://pptpclient.sourceforge.net/#download user@linux:~$ cd user@linux:~$ md5sum ./pptp-linux-1.4.0.tar.gz 9e5c07de3e347c7125ed94824cebeaee ./pptp-linux-1.4.0.tar.gz user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/pptp-linux-1.4.0.tar.gz user@linux:/usr/src$ cd ./pptp-linux-1.4.0/ user@linux:/usr/src/poptop-1.1.4$ make user@linux:/usr/src/pptp-linux-1.4.0$ sudo checkinstall Настройка сводится к минимуму: user@linux:/usr/src/pptp-linux-1.4.0$ sudo mkdir /etc/ppp/peers Файл /etc/ppp/peers/ISP-NAME: name LOGIN remotename ISP-NAME debug lock deflate 0 defaultroute file /etc/ppp/options.pptp pty "/usr/sbin/pptp SERVER --nolaunchpppd" Файл /etc/ppp/options.pptp: lock noauth nobsdcomp nodeflate Файл /etc/ppp/pap-secrets ИЛИ /etc/ppp/chap-secrets: # client server secret IP addresses LOGIN ISP-NAME PASSWORD * Тут LOGIN - логин на сервере, PASSWORD - соответствующий пароль, ISP-NAME - что угодно, чтоб было понятно, куда звоним, SERVER - IP-адрес или имя сервера провайдера. Запуск: user@linux:~$ sudo /usr/sbin/pppd call ISP-NAME Если `ifconfig` покажет интерфейс ppp0, значит все гут, можно пингануть Яндекс для уверенности. Если нет - смотреть /var/log/messages (внимательно) Бонус: для того, чтоб с клиента сделать сервер делаем следующее: Установка PPTPD http://www.poptop.org Качаем pptpd-1.1.4-b4.tar.gz с понравившегося зеркала - http://sourceforge.net/project/showfiles.php?group_id=44827 user@linux:~$ cd user@linux:~$ md5sum ./pptpd-1.1.4-b4.tar.gz 58603224998f22542e8d7ecb357bc006 ./pptpd-1.1.4-b4.tar.gz user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/pptpd-1.1.4-b4.tar.gz user@linux:/usr/src$ cd ./poptop-1.1.4/ user@linux:/usr/src/poptop-1.1.4$ ./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var user@linux:/usr/src/poptop-1.1.4$ make user@linux:/usr/src/ppp-2.4.2$ sudo checkinstall Файл /etc/pptpd.conf: debug Файл /etc/ppp/options: require-mschap-v2 mppe required Остальные опции додумаете сами - man pppd (параметр mppe там тоже есть) Файл /etc/ppp/chap-secrets: # client server secret IP addresses test * test 10.0.0.1 test1 * test1 10.0.0.2 test2 * test2 10.0.0.3 Запуск: user@linux:/$ sudo /usr/local/sbin/pptpd Проверяем запустился, или нет. Если что-то ему не понравится, pptpd об этом прямо на консоль и скажет, кстати. user@linux:/$ ps -A|grep pptpd 20425 ? 00:00:00 pptpd Вот и все, приехали. Тут и сказочке конец, а кто слушал... тот быстренько пошел на машину с Windows XP, создал новое VPN-соединение, проверил в параметрах, стоит ли галка использовать шифрование, используется ли MS-CHAPv2 и соединился с свеже-запущенным сервером. Если все прошло хорошо - откройте окно состояния соединения, на вкладке "Сведения" должно быть: Проверка подлинности: MS CHAP V2 Шифрование: MPPE 128 Сжатие: MPPC IP-адрес клиента: тот, что вы указали в chap-secrets Если же ничего не вышло - смотрим /var/log/messages, /var/log/debug, запоминаем с какой ошибкой вылетает клиент - и вперед на Google.com... (c) Sergey Sikorsky AKA fagot 24.06.2004, час ночи mail-to:fagot#kalinovka.net PS. Сразу предупреждаю, на письма вида "А вот я все сделал как написано, но ничего не работает..." отвечать НЕ БУДУ. Есть поисковики, есть форум - http://www.linux.org.ru/profile/fagot/view-group.jsp?group=1340, там и ищите и обрящите

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, Алик (?), 01:03, 05/02/2005 [ответить]  
  • +/
    если тебе не трудно немог бы ты рассказать как во FreeBSD настроить такое подключение. Т.е. у меня есть провайдер тоже CHAPv2 (аутентификация), но никак не получается, pptpclient установил, а что дальше делать никак не пойму
     
  • 1.2, Андрей (??), 14:34, 10/02/2005 [ответить]  
  • +/
    Попытался использовать эту статью как наглядное руководство (Slackware 10 2.4.26), но возикла проблема в логах пишет что не проходит авторизация CHAP нул провод на виндовую машину все работает.
    А также после патчинга  ядра в меню конфигурации нет опции
    <M>Microsoft PPP compression/encryption (MPPC/MPPE), есть только MPPE
    одуль ppp_mppe_mppc не собрался, а собрался модуль ppp_mppe и не более.
    НАрод подскажите с какой стороны подступиться в данной ситуации.
     
     
  • 2.4, sikorsky (?), 16:25, 16/03/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >но возикла проблема в логах пишет что не проходит авторизация CHAP

    можно попробовать проверить конфиг :)

    ><M>Microsoft PPP compression/encryption (MPPC/MPPE), есть только MPPE

    а это точно те патчи?

     
     
  • 3.5, Андрей (??), 16:09, 05/04/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Конфиг я проверял, к нему никаких притензий. Патчи были взяты с оригинальоного сайта для той версии и pptp  и ядра. Так что я, честно говоря, не знаю как поступить, поэтому я решил все это поставить на FreeBSD.  Теперь все заработало.
     

  • 1.3, sikorsky (?), 16:22, 16/03/2005 [ответить]  
  • +/
    Адрес оригинала изменился, сейчас адрес статьи - http://fine.kalinovka.net/?q=node/13
     
  • 1.6, b2d (ok), 13:54, 19/02/2008 [ответить]  
  • +/
    Если коннектиться из под венды у меня все замечательно бегает тоже самое сд... большой текст свёрнут, показать
     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру