PPTP
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
PPTP (англ. Point-to-Point Tunneling Protocol) — тунельний протокол типу точка-точка, що дозволяє комп'ютеру встановлювати захищене з'єднання з сервером за рахунок створення спеціального тунелю в стандартній, незахищеній мережі. PPTP поміщає (інкапсулює) кадри PPP в IP-пакети для передачі по глобальній IP-мережі, наприклад інтернет. PPTP може також використовуватися для організації тунелю між двома локальними мережами. РРТР використовує додаткове TCP- з'єднання для обслуговування тунелю.
Необхідність застосування
Протоколи туннелювання потрібні тому, що деякі протоколи не можуть маршрутизуватися через певні мережі. Кадри PPP, які не маршрутизуються через мережу Інтернет, не можуть самостійно знайти правильний маршрут через Інтертет до одержувача, для цього їм потрібна підтримка. Саме для цього і потрібні протоколи тунелювання. Вони дозволяють проводити інкапсуляцію пакетів PPP, завдяки чому кадри правильно доходять до одержувача.
Специфікація
Протокол PPTP (Point-to-Point-Tunneling Protocol) розроблений компанією Microsoft спільно з компаніями Ascend Communications, 3Com/Primary Access, ECI-Telematics і US Robotics. Цей протокол був представлений в робочу групу «PPP Extentions» IETF як претендент на стандартний протокол створення захищеного каналу при доступі віддалених користувачів через публічні мережі (в першу чергу Internet) до корпоративних мереж. Спецификация протокола була опублікована RFC 2637 в 1999 році. Вона не була ратифікована IETF. Протокол вважається менш захищеним, ніж IPSec. PPTP працює, встановлюючи звичайний PPP сеанс протилежною стороною за допомогою протоколу Generic Routing Encapsulation. Друге з'єднання на TCP-порту 1723 використовується для ініціювання та управління GRE-з'єднанням. PPTP складно перенаправляти за мережевий екран, оскльки він вимагає одночасного встановлення двох мережевих сеансів.
PPTP-трафік може бути зашифрованим за допомогою MPPE. Для аутентифікації клієнтів можуть використовуватися різноманітні механізми, найбезпечніші з них — MS-CHAPv2 и EAP-TLS.
Багатопротокольність — основна перевага інкапсулюючих протоколів канального рівня, до яких належить протокол PPTP.
PPTP працює шляхом інкапсуляції «рідних» пакетів локальної мережі — наприклад, пакетів IPX — всередину пакетів TCP / IP. Весь пакет IPX, включаючи його керуючу інформацію, стає корисним навантаженням для пакета TCP / IP, який потім можна передавати по Internet. Програмні засоби на іншому кінці лінії зв'язку витягують пакет IPX і направляють його для нормальної обробки згідно з його власним протоколом. Цей процес називається тунелюванням — ймовірно, тому, що створюється коридор в Internet, що з'єднує два вузли.
Процес зв'язку по протоколу PPTP
Оскільки вся ідея дистанційного доступу полягає в дозволі машини клієнта підключатися по телефонній лінії до машини сервера, з'єднання PPTP ініціюється клієнтом, який використовує службовий засіб Windows NT — Remote Access Service (RAS) — для встановлення PPP-з'єднання з постачальником послуг Internet. Потім при активізованому з'єднанні PPP за допомогою сервера, що підключений до Internet і діє як сервер RAS, клієнт застосовує RAS для виконання другого з'єднання. Цього разу у полі номера телефону вказується IP-адреса (ім'я або номер), і клієнт для того, щоб здійснити з'єднання, використовує замість COM-порту VPN-порт (VPN-порти конфігуруються на машинах клієнта й сервера в процесі інсталяції PPTP). Введення IP-адреси ініціює передачу запиту серверу на початок сеансу. Клієнт чекає від сервера підтвердження імені користувача і пароля і відповіді повідомленням, що з'єднання встановлено. У цей момент починає свою роботу канал PPTP, і клієнт може приступити до тунелювання пакетів серверу. Оскільки вони можуть бути пакетами IPX і NetBEUI, сервер може виконувати з ними свої звичайні процедури забезпечення захисту. В основі обміну даними по протоколу PPTP лежить керуюче з'єднання PPTP — послідовність керуючих повідомлень, які встановлюють і обслуговують тунель. Повне з'єднання PPTP складається тільки з одного з'єднання TCP / IP, яке вимагає передачі ехо-команд для підтримки його відкритим, поки виконуються транзакції.
У протоколі PPTP визначено дві схеми його застосування. Перша схема розрахована на підтримку захищеного каналу між сервером віддаленого доступу ISP (Internet Service Provider — провайдера Internet) і прикордонним маршрутизатором корпоративної мережі (див. перший малюнок).
На другому малюнку зображено, як користувач двічі встановлює віддалене з'єднання за допомогою утиліти Dial-Up Networking, що являє собою клієнтську частину сервісу віддаленого доступу Windows NT.
Реалізація PPTP
Cisco першою реалізувала PPTP і пізніше ліцензувала цю технологію корпорації Microsoft.
PPTP вдалося домогтися популярності завдяки тому, що це перший протокол тунелювання, який був підтриманий корпорацією Microsoft. Всі версії Microsoft Windows, починаючи з Windows 95 OSR2, мають у своєму складі PPTP-клієнт, однак існує обмеження на два одночасних вихідних з'єднання. А сервіс віддаленого доступу для Microsoft Windows містить у собі PPTP сервер.
До недавнього часу в Linux- дистрибутивах була відсутня повна підтримка PPTP через побоювання патентних претензій з приводу протоколу MPPE. Вперше повна підтримка MPPE з'явилася в Linux 2.6.13. Офіційно підтримка PPTP була розпочата з версії ядра Linux 2.6.14. Тим не менше, сам факт застосування MPPE в PPTP фактично не забезпечує безпеку протоколу PPTP.
Операційна система FreeBSD підтримує PPTP протокол, використовуючи як сервер PPTP порт mpd (/ usr / ports / net / mpd), використовуючи підсистему netgraph. Як клієнт PPTP в системі FreeBSD може виступати або порт pptpclient (/ usr / ports / net / pptpclient), або порт mpd, що працює в режимі клієнта.
Mac OS X поставляється з вбудованим PPTP клієнтом. Cisco і Efficient Networks продають PPTP клієнти для старіших версій Mac OS. КПК Palm, що підтримують технологію Wi-Fi, поставляються з PPTP клієнтом Mergic.
Microsoft Windows Mobile 2003 і новіші версії також підтримують протокол PPTP.
Безпека протоколу PPTP
Протокол PPTP дозволяє створювати захищені канали для обміну даними по різних мережевих протоколах — IP, IPX або NetBEUI. Дані цих протоколів інкапсулюються за допомогою протоколу PPTP в пакети протоколу IP, за допомогою якого переносяться в зашифрованому вигляді через мережу TCP / IP. Інкапсулюється вихідний кадр РРР, тому протокол PPTP можна віднести до класу протоколів інкапсуляції канального рівня в мережевий.
PPTP був об'єктом численних аналізів безпеки, в ньому були виявлені серйозні проблеми. Відомі проблеми стосуються аутентифікації PPP протоколів, влаштування протоколу MPPE та інтеграції між аутентифікаціями MPPE і PPP для створення ключа сеансу. Короткий огляд даних проблем:
- MSCHAP-v1 абсолютно ненадійний. Існують утиліти для легкого вилучення хешів паролів з перехопленого обміну MSCHAP-v1.[1]
- MSCHAP-v2 вразливий до словникової атаки на перехоплені challenge response пакетів. Існують програми, що виконують даний процес. [1]
- При використанні MSCHAP-v1, MPPE використовує однаковий RC4 сеансовий ключ для шифрування інформаційного потоку в обох напрямках. Тому стандартним методом є виконання XOR'а потоків з різних напрямків разом, тому криптоаналітик може дізнатися про ключ.[2]
- MPPE використовує RC4 потік для шифрування. Не існує методу для аутентифікації цифробуквенного потоку, і тому даний потік вразливий до атаки, що виконує підмін бітів. Зловмисник легко може змінити потік при передачі й змінити деякі біти, щоб змінити вихідний потік без небезпеки свого виявлення. Цей підмін біт може бути виявлений за допомогою протоколів, які підраховують контрольні суми.[1]
Див. також
Примітки
Посилання
- RFC 2637 (англ.)
- FAQ по PPTP от Microsoft (англ.)
- FAQ — Microsoft's PPTP Implementation, Брюс Шнайер, 1998 (англ.)
- PPTP клиент, Linux, FreeBSD и NetBSD клієнт (англ.)
- pptpproxy — Linux pptp-проксі (англ.)
- Налаштування PPTP VPN у Windows (7) (рос.)
- Чому не потрібно використовувати PPTP (англ.)