PPTP (англ. Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например, Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.
Спецификация
правитьСпецификация протокола была опубликована как «информационная» RFC 2637 в 1999 году. Она не была ратифицирована IETF. Протокол считается менее безопасным, чем IPSec. PPTP работает, устанавливая обычную PPP-сессию с противоположной стороной с помощью протокола Generic Routing Encapsulation. Второе соединение на TCP-порту 1723 используется для инициации и управления GRE-соединением. PPTP сложно перенаправлять за сетевой экран, так как он требует одновременного установления двух сетевых сессий.
PPTP-трафик может быть зашифрован с помощью MPPE. Для аутентификации клиентов могут использоваться различные механизмы, наиболее безопасные из них — MS-CHAPv2 и EAP-TLS.
Реализация PPTP
правитьCisco первой реализовала PPTP и позже лицензировала эту технологию корпорации Microsoft.
PPTP удалось добиться популярности благодаря тому, что это первый протокол туннелирования, который был поддержан корпорацией Microsoft. Все версии Microsoft Windows, начиная с Windows 95 OSR2, включают в свой состав PPTP-клиент, однако существует ограничение на два одновременных исходящих соединения. А сервис удалённого доступа для Microsoft Windows включает в себя PPTP-сервер[1].
Некоторое время в Linux-дистрибутивах отсутствовала полная поддержка PPTP из-за опасения патентных претензий по поводу протокола MPPE. Впервые полная поддержка MPPE появилась в Linux 2.6.13 (2005 год). Официально поддержка PPTP была начата с версии ядра Linux 2.6.14. Тем не менее, сам факт применения MPPE в PPTP фактически не обеспечивает безопасности протокола PPTP.
Операционная система FreeBSD поддерживает PPTP-протокол, используя в качестве сервера PPTP порт mpd (/usr/ports/net/mpd5), используя подсистему netgraph; можно также использовать программу PoPToP (/usr/ports/net/poptop). В качестве клиента PPTP в системе FreeBSD может выступать либо порт pptpclient (/usr/ports/net/pptpclient), либо порт mpd, работающий в режиме клиента.
Операционные системы Mac OS X и iOS поставлялись со встроенным PPTP-клиентом, однако начиная с версий macOS Sierra и iOS 10 встроенный клиент удален по соображениям безопасности[2]. Cisco и Efficient Networks продают реализации PPTP-клиента для более старых версий Mac OS. КПК Palm, имеющих поддержку Wi-Fi, поставляются с PPTP клиентом Mergic.
Microsoft Windows Mobile 2003 и более новые также поддерживают PPTP.
Безопасность протокола PPTP
правитьPPTP был объектом множества анализов безопасности, в нём были обнаружены различные серьёзные уязвимости. Известные относятся к используемым протоколам аутентификации PPP, устройству протокола MPPE и интеграции между аутентификациями MPPE и PPP для установки сессионного ключа. Краткий обзор данных уязвимостей:
- MSCHAP-v1 совершенно ненадёжен. Существуют утилиты для лёгкого извлечения хешей паролей из перехваченного обмена MSCHAP-v1[3].
- MSCHAP-v2 уязвим для словарной атаки на перехваченные challenge response пакеты. Существуют программы, выполняющие данный процесс[4].
- В 2012 году было показано, что сложность подбора ключа MSCHAP-v2 эквивалентна подбору ключа к шифрованию DES, и был представлен онлайн-сервис, который способен восстановить ключ за 23 часа[5].
- При использовании MSCHAP-v1, MPPE использует одинаковый RC4 сессионный ключ для шифрования информационного потока в обоих направлениях. Поэтому стандартным методом является выполнение XOR’а потоков из разных направлений вместе, благодаря чему криптоаналитик может узнать ключ[6].
- MPPE использует RC4-поток для шифрования. Не существует метода для аутентификации цифробуквенного потока и поэтому данный поток уязвим для атаки, делающей подмену битов. Злоумышленник легко может изменить поток при передаче и заменить некоторые биты, чтобы изменить исходящий поток без опасности своего обнаружения. Данная подмена битов может быть обнаружена с помощью протоколов, считающих контрольные суммы[3].
См. также
правитьПримечания
править- ↑ "PPTP - Point to Point Tunneling Protocol", Bradley Mitchell, Updated June 25, 2016 . Дата обращения: 13 ноября 2016. Архивировано 13 ноября 2016 года.
- ↑ Служба поддержки Apple . Дата обращения: 12 июля 2017. Архивировано 27 сентября 2016 года.
- ↑ 1 2 Bruce Schneier, Cryptanalysis of Microsoft's Point to Point Tunneling Protocol (PPTP) . Дата обращения: 21 декабря 2010. Архивировано из оригинала 4 июня 2011 года.
- ↑ Статья Exploiting Cisco Leap Архивировано 26 июля 2012 года. (англ.) (Дата обращения: 1 сентября 2011)
- ↑ Divide and Conquer: Cracking MS-CHAPv2 with a 100% success rate Архивировано 16 марта 2016 года.
- ↑ Bruce Schneier, Cryptanalysis of Microsoft's PPTP Authentication Extensions (MS-CHAPv2), October 19 1999 . Дата обращения: 21 декабря 2010. Архивировано 3 апреля 2015 года.