PPTP
PPTP () — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. 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 сервер.

Некоторое время в 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 встроенный клиент удален по соображениям безопасности. 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.
 MSCHAP-v2 уязвим для словарной атаки на перехваченные challenge response пакеты. Существуют программы, выполняющие данный процесс.
 В 2012 году было показано, что сложность подбора ключа MSCHAP-v2 эквивалентна подбору ключа к шифрованию DES, и был представлен онлайн-сервис, который способен восстановить ключ за 23 часа.
 При использовании MSCHAP-v1, MPPE использует одинаковый RC4 сессионный ключ для шифрования информационного потока в обоих направлениях. Поэтому стандартным методом является выполнение XOR’а потоков из разных направлений вместе, благодаря чему криптоаналитик может узнать ключ.
 MPPE использует RC4 поток для шифрования. Не существует метода для аутентификации цифробуквенного потока и поэтому данный поток уязвим для атаки, делающей подмену битов. Злоумышленник легко может изменить поток при передаче и заменить некоторые биты, чтобы изменить исходящий поток без опасности своего обнаружения. Данная подмена битов может быть обнаружена с помощью протоколов, считающих контрольные суммы.

См. также 
 PPPoE
 L2TP

Примечания

Ссылки 
 RFC 2637
 ЧаВо по дырам в безопасности в реализации Майкрософт, Брюс Шнайер, 1998
 Poptop, сервер PPTP для Linux
 PPTP клиент, Linux, FreeBSD и NetBSD клиент
 pptpproxy — Linux pptp-прокси
 Настройка PPTP VPN клиента в Windows (виста) 
 Почему не следует внедрять PPTP 

Сетевые протоколы
VPN
Протоколы туннелирования