Вивчення з’єднання PPTP тунелю. Створення PPTP з'єднання віртуальної приватної мережі на базі сервера з операційною системою Linux та клієнтом на базі операційної системи Windows
Протокол PPТР
Віртуальна приватна мережа (Virtual Private Network – VPN) – логічна мережа, що створюється поверх іншої мережі, наприклад, інтернет. Попри те, що комунікації здійснюються по публічними мережами, з використанням небезпечних протоколів, за рахунок шифрування, створюються закриті від сторонніх канали обміну інформацією.
Найчастіше для створення віртуальної мережі використовується інкапсуляція протоколу точка-точка PPP (Point - to - Point Protocol - протокол двоточкового з'єднання RFC1331), який спочатку був створений для комунікації ліній, в який-небудь інший протокол. З найбільш поширених можливо відмітити тунельний протокол точка-точка PPTP (Point - to - Point Tunneling Protocol) - загальна інкапсуляція маршрутів GRE (Generic Routing Encapsulation) в PPP через існуючу TCP/IP -мережу, і протокол з'єднання точка-точка через мережу Ethetnet PPPoE (Point - to - Point Protocol over Ethernet) - інкапсуляцію PPP в кадри Ethernet [1]. Також існують інші протоколи формування захищених каналів (IPSec, SSH, ViPNet, SSL та ін.), що надають можливість забезпечити захищеність та приватність.
Протокол PPP складається з двох частин. Перша - це механізми фрагментації і декодування пакетів, друга - це група протоколів узгодження налаштувань та ідентифікації: протокол управління з'єднання - LCP (Link Control Protocol), протокол управління IP - IPCP (Internet Protocol Control Protocol), протокол - пароль перевірки достовірності - PAP (Password Authentication Protocol) і протокол перевірки достовірності із запитом і відповіддю - CHAP (Challenge Handshake Authentication Protocol) та ін.
PAP - це протокол простої перевірки достовірності, що передбачає відправку імені користувача і пароля на сервер виділеного доступу відкритим текстом (без шифрування). Протокол PAP украй ненадійний, оскільки паролі, які пересилаються, можливо легко читати в пакетах PPP, якими обмінюються сторони в ході перевірки достовірності.
PAP використовується тільки при підключенні до старих серверів виділеного доступу на базі UNIX, які не підтримують ніяких інших протоколів перевірки достовірності, або де не потрібно забезпечення захищеності чи необхідно тільки розділити з'єднання або мережі.
CHAP протокол, заснований на широко поширеному алгоритмі перевірки достовірності, що передбачає передачу не самого пароля користувача, а непрямих відомостей про нього. При використанні CHAP сервер виділеного доступу відправляє клієнтові рядок запиту. На основі цього рядка і пароля користувача клієнт виділеного доступу обчислює хеш-код з допомогою 128-бітового алгоритму хешування, MD5 (Message Digest - 5). Хеш-функція є алгоритмом одностороннього (безповоротного) шифрування, оскільки значення хеш-функції для блока даних обчислюти легко, а визначити початковий блок за хеш-кода за реальний час (в межах декілька днів) з математичної точки зору неможливо. Хеш-код MD5 передається серверу виділеного доступу. Сервер, якому доступний пароль користувача, виконує ті ж самі обчислення і порівнює результат з хеш-кодом, отриманим від клієнта. У разі збігу облікові дані клієнта виділеного доступу вважаються справжніми.
У операційній системі Linux існують декілька реалізацій сервера PPTP. У цій лабораторній роботі ми розглядаємо сервер Poptop, поширюваний за ліцензією GPL. Poptop сам усього лише інкапсулює PPP в GRE -з'єднання. Для створення PPP - з'єднання, він використовує pppd. В якості PPPoE -сервера може виступати rp - pppoe. Як і Poptop, rp - pppoe використовує pppd для створення ppp - з'єднання. Для BSD існує ще декілька реалізацій PPTP - і PPPoE -серверів, зокрема mpd і pppoed.
Pppd включає підтримку ідентифікації, таким чином можливо робити контроль, хто може створювати PPP з'єднання і яку IP адресу можливо використовувати.
Пакет pptpd у складі сервера Poptop складається з декількох частин:
– VPN демон PPTP;
– менеджер управління PPTP з'єднаннями.
Хід роботи
2.1. Перевірка та встановлення необхідних пакетів
Спочатку необхідно перевірити чи встановлені необхідні пакети ppp і pptpd :
- pppd – version,
--pptpd – v.
Якщо отримані відповіді зі вказівкою версією, то пропускаємо усі пункти 2.1-2.5 і переходимо до пункту 2.6.
У разі, якщо пакети невстановлені, то необхідно скачати пакети:
– ppp (ftp://ftp.samba.org/pub/ppp/);
– pptpd (http://Poptop.sourceforge.net/) [2].
Існує декілька способів установки пакетів у систему: за допомогою менеджера пакетів використовуваного дистрибутива Linux (завантаження і установка відбуватимуться автоматично); завантаження і установка вже зібраного пакету для використовуваного дистрибутива Linux (deb, rpm і так далі); завантаження початкового коду пакета з подальшою його зборкою та установкою.
Розглянемо найбільш універсальний варіант - установка пакетів з початкових кодів.
Для цього необхідно завантажити початкові коди пакетів, звичайно, окрім офіційного ресурсу розробника в мережі існують безліч дзеркал-серверів пакетів, що зберігають різні версії.
2.2. Завантажити пакети
Пакети необхідні для лабораторної роботи ppp - 2.4.4.tar.gz і pptpd - 1.3.3.tar.gz.
2.3. Розархівуйте пакети
Розархівування можливо зробити наступними командами:
$ tar - zvxf ppp - 2.4.4.tar.gz;
$ tar - zvxf pptpd - 1.3.3.tar.gz.
В результаті розархівування мають бути створені однойменні пакети без префікса tar.gz.
2.4. Встановіть пакет ppp
Увійдіть до кореневої теки пакета ppp - 2.4.4. Зберіть пакет ppp, це можливо зробити наступними командами:
$ ./configure.
За замовчуванням шляхи подальшої установки файлів пакета налагоджені на /usr/local (бінарні файли) і /etc (налаштування). Їх можливо поміняти параметрами --prefix і --sysconfdir.
$ make
Наступні команди необхідно виконувати з правами адміністратора :
# make install
2.5. Встановіть пакет pptpd
Увійдіть до кореневої директорії пакета pptpd - 1.3.3. Зберіть пакет pptpd. Це можливо зробити наступними командами:
$ ./configure
За замовчуванням шлях подальшої установки файлів пакета налагоджений на /usr/local. Його можливо поміняти параметром --prefix. Також існують параметри для детальнішого завдання шляхів для кожної частини пакета, їх можливо побачити набравши команду ./configure --help.
$ make
Збираємо у бінарні файли. Наступні команди необхідно виконувати з правами адміністратора:
# make install
Встановлюємо файли пакета.
2.6. Створення конфігураційних файлів, їх коректування та створення
скрипта запуску сервера PPTP.
Створити конфігураційні файли і скрипт запуску сервера PPTP. Приклади конфігураційних файлів пакетів ppp і pptpd знаходяться відповідно в піддиректоріях ./ppp-2.4.4/scripts і ./pptpd-1.3.3/samples. Опис параметрів конфігураційних і командних файлів описані у відповідних man сторінках.
PPTP сервер Poptop можливо запустити наступною командою:
#./pptpd --conf <шлях до конфігураційного файла pptpd>/pptpd.conf
За замовчуванням шлях до конфігураційного файла pptpd - /etc/ppp/pptpd.conf. При виконанні цієї команди може виникнути необхідність завантаження модулів ядра, що забезпечують роботу ppp і pptpd. Це може бути виконано наступними командами:
# modprobe ipip
# modprobe ip_gre
і так далі, завантажуючи необхідні модулі ядра.
Нижче показано приклад конфігураційного фала сервера Роptоp. Необхідно звірити усі рядки, які не починаються на знак коментарій - #. Якщо якийсь рядок відрізняється, то внести зміни і відобразити в протоколі.
Приклад конфігураційного файла /etc/ppp/pptpd.conf:
###############################################################################
# pptpd.conf,
# Зміни набувають чинності після перезапуску pptpd.
#############################################################################
# TAG: ppp
# Шлях до pppd, по умовчанню '/usr/sbin/pppd'
ppp /usr/local/sbin/pppd
# TAG: option
# Вказує місцезнаходження файла опцій PPP, так званого peer -а.
# За замовчуванням PPP читає '/etc/ppp/options'
option /etc/ppp/options.pptpd
# TAG: debug
# Включає налагоджувальний вивід у syslog.
#debug
# TAG: stimeout
# Вказує таймаут(у секундах) для старту з'єднання.
# stimeout 10
# TAG: noipparam
# Забороняє передачу IP клієнта в PPP
#noipparam
# TAG: logwtmp
# Використовувати wtmp(5) для запису клієнтських підключень і відключень.
#logwtmp
# TAG: bcrelay <if>
# Включає режим броадкастового релея до клієнтів з вказаного інтерфейсу <if>
#bcrelay eth1
# TAG: delegate
# Делегувати розподіли клієнтських IP адрес pppd.
# Без цієї опції, за замовчуванням, pptpd керує списком
# клієнтських IP адресів і передає наступну вільну адресу pppd.
# З цією опцією, pptpd не передає IP адреси, і, отже, pppd може
# використовувати radius або файл chap - secrets для виділення адрес.
#delegate
# TAG: connections
# Обмежує кількість допустимих клієнтів, що підключаються.
# Якщо pptpd розподіляє IP адреси (тобто опція delegate не використовується),
# тоді кількість підключень також обмежується опцією remoteip.
# За замовчуванням 100.
#connections 100
# TAG: localip
# TAG: remoteip
# Встановлюють діапазон локальних і виділених IP адрес.
# Ці опції ігноруються у разі використання опції delegate.
# Будь-які адреси працюю упродовж періоду, доки локальна станція буде забезпечувати їх
# маршрутизацію. Якщо ви хочете використовувати MS - Windows мережу, ви повинні
# використовувати IP адреси, що не входять в діапазон адрес локальної мережі (LAN)
# і використовувати опцію proxyarp у файлі опцій pppd, або запустити bcrelay.
# Ви можете задавати окремі IP адреси, які розділяються комою або ви можете
# вказати діапазон, або і те, і інше разом. Наприклад:
# 192.168.0.234,192.168.0.245-249,192.168.0.254
# ВАЖЛИВІ ОБМЕЖЕННЯ:
# 1. Між комами і в адресах не допускаються пропуски.
# 2. Якщо ви задали IP адрес більше ніж значення опції connections,
# розподіл почнеться з початку списку, вибиратиме послідовно
# IP адреси доки не досягне значення connections,
# інакше буде проігноровано.
# 3. Скорочення не допустимі!
# тобто 234-8 не означає діапазон від 234 до 238,
# необхідно призначати 234-238, якщо ви маєте це на увазі.
# 4. Якщо ви задали один локальний IP, він буде призначений усім локальним IP.
# Ви повинні задати принаймні один виділений IP
# для кожного клієнта, які працюватимуть одночасно.
# (Рекомендований)
localip 192.168.1.100
remoteip 192.168.1.200-250
# чи
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245
Нижче показаний приклад конфігураційного фала сервера рpp. Звірити усі рядки, які не починаються на знак коментарів - #. Якщо якийсь рядок відрізняється, то внести зміни і відобразити в протоколі.
Приклад конфігураційного файла /etc/ppp/options.pptpd:
#############################################################################
# options.pptpd
# Приклад файла опцій Poptop PPP /etc/ppp/options.pptpd
# Опції використовуються у PPP, коли клієнт здійснює підключення.
# Цей файл вказується опцією option у /etc/pptpd.conf.
# Після його зміни і збереження, зміни будуть застосовані
# до наступних підключень. См "man pppd".
# Мається на увазі зміна цього файла для завдання параметрів,
# необхідних вашій системі.
# Для налаштувань за замовчуванням потрібний PPP 2.4.2 і модуль ядра MPPE.
############################################################################
# Автентифікація (ідентифікація)
# Ім'я локальної системи для потреб автентифікації.
# (повинно співпадати з другим полем рядків в /etc/ppp/chap - secrets)
name pptpd
# Вирізати префікс домена з імені користувача перед автентифікацією.
# (працює, якщо ви використовуєте pppd з патчем chapms - strip - domain)
#chapms - strip - domain
# Шифрування
# (Нижче перераховані різні версії PPP з підтримкою шифрування.
# Виберіть, яку з секцій ви використовуватимете.)
# ppp - 2.4.2 під BSD ліцензією інтегрований з MPPE, модуль ядра ppp_mppe.o
# {{{
refuse-pap
require-chap
require-mschap
# Потрібна автентифікація клієнта з використанням MS - CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2].
require-mschap-v2
# Потрібно MPPE 128 - bit шифрування
# (зверніть увагу, що MPPE вимагає використання MSCHAP - V2 при автентифікації)
#require- mppe-128
# }}}
# ppp - 2.4.1 під OpenSSL ліцензією працює з MPPE через зовнішні інтерфейси
# модуля ядра mppe.o
# {{{
#-chap
#-chapms
# Потрібна автентифікація клієнта з використанням MS - CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2].
#+chapms - v2
# Потрібно MPPE шифрування.
# (зверніть увагу, що MPPE вимагає використання MSCHAP - V2 при автентифікації)
#mppe - 40 # має бути використана одна з опцій або 40 - bit або 128 - bit
#mppe - 128
#mppe - stateless# }}}
# Мережа і маршрутизація.
# Якщо pppd виступає в ролі сервера для Microsoft Windows клієнтів, дана
# опція дозволяють pppd повідомляти один або два DNS (Domain Name Server)
# адреси клієнтам. Перше значення цієї опції
# задає первинну DNS адресу; друге значення (якщо задано)
# задає вторинну DNS адресу.
#ms - dns 10.0.0.1
#ms - dns 10.0.0.2
# Якщо pppd виступає в ролі сервера для Microsoft Windows або "Samba" сервера,
# дана опція дозволяє pppd повідомляти одну або дві адреси
# WINS (Windows Internet Name Services) сервера клієнтам. Перше
# значення цієї опції задає первинну WINS адресу; друге значення
# (якщо задано) задає вторинну WINS адресу.
#ms - wins 10.0.0.3
#ms - wins 10.0.0.4
# Додати значення в ARP [Address Resolution Protocol] таблицю
# цієї системи з IP адресою PPTP з'єднання і Ethernet адресою цієї системи.
# Це дозволить зробити PPTP з'єднання доступним для інших
# систем в локальній мережі ethernet.
proxyarp
# Рptpd не встановлює IP адреси pppd, але якщо була встановлена
# опція delegate в pptpd.conf або параметр --delegate в командному рядку,
# тоді pppd використовує chap - secrets або radius для визначення
# IP адреси клієнта.
# (ви не повинні використовувати це, якщо ви не використовуєте опцію #delegate)
#10.8.0.100
# ВВести логи.
# Включити виведення налагоджувальної інформації.
# (дивіться налаштування демона syslog, куди pppd посилає налагоджувальну інформацію)
#debug
# Виводити усі значення, які встановлені.
# (потрібне підтвердження цієї опції у налаштуваннях демона syslog)
dump
# Додаткові опції
# Створювати лок файл UUCP - стиля для псевдо-tty для забезпечення доступу, # що виключає даний tty
# для інших.
lock
# Вимикнути BSD - компресію
nobsdcomp
# Вимикнути Van Jacobson компресію.
# Необхідно в деяких мережах з Windows 9x/ME/XP клієнтами.
novj
novjccomp
# вимикнути логування в stderr
nologfd
# тут можуть поміщатися використовувані додаткові модулі (плагіни)
# (приміщення їх вище може викликати посилку повідомлення на pty)
2.7. Тестування роботи сервера PPTP
По умовчання сервер прослуховує порт 1723, таким чином працездатність сервера можливо перевірити наступною командою:
$ telnet <IP адреса сервера PPTP> 1723
При встановлених в конфігураційних файлах опція debug, робота сервера детально логірується демоном syslog, за замовчуванням повідомлення сервера поміщатимуться у файл /var/log/messages. Динамічно переглядати зміну цього файла можливо запустивши наступну команду:
# tail - d /var/log/messages
2.8. Додавання клієнта у віртуальну приватну мережу
Клієнти PPTP сервера Poptop ідентифікуються за допомогою механізмів пакета ppp. Існує декілька способів для управління клієнтами. Найбільш простий з них - це редагування конфігураційного файла з логінами і паролями користувачів. Складніший - за допомогою ідентифікації через RADIUS сервер.
Розглянемо спосіб додавання користувача через конфігураційний файл.
Приклад конфігураційного файла /etc/ppp/chap-secrets:
# Дані для автентифікації користовуючів з CHAP авторизацією.
# клієнт сервер пароль IP адреса
username pptpd password *
2.9. Запуск пакета відладки та захоплення пакетів tcpdump
Запустити програму захоплення пакетів tcpdump. Наприклад, такою командою: tcpdump - I eth1 > lab5.txt
2.10. Настроїти клієнта для створення віртуальної приватної мережі з ОС Windows (лабораторна робота 3)
Для того, щоб з ОС Windows можливо було підключатися до сервера PPTP в ній має бути присутнім Microsoft VPN Adapter. Розглянемо приклад підключення OC Windows XP, в ній цей драйвер встановлений за замовчуванням. Для створення VPN підключення необхідно виконати наступні кроки:
1) пуск->Панель управління->Мережні підключення->Створення нового підключення;
2) буде запущений майстер створення підключення;
3) на другому кроці вибрати «Підключити до мережі на робочому місці»;
4) на наступному кроці «Підключення до віртуальної приватної мережі»;
5) далі вказати назву підключення «pptp»;
6) далі «Не набирати номер для попереднього підключення»;
7) далі вказати IP адреси запущеного PPTP сервера (192.168.0.122);
8) готово.
Після запуску створеного підключення задається логін і пароль користувача, необхідно ввести дані, подані в 2.8 пункті.
Пропінговати сервер. (командою ping)
Відключити з'єднання.
Відключити tcpdump.
2.11. Додаткове завдання. Настроїти клієнта для створення віртуальної
приватної мережі з ОС Linux
Підключення ОС Linux до сервера PPTP може здійснюватися аналогічно ОС Windows із застосуванням різноманітних помічників як графічних (pptpconfig та ін.), так і текстових (pptp - command та ін.) існуючих у сучасних дистрибутивах. Проте, для прикладу розглянемо механізм підключення ОС Linux за допомогою ручного редагування конфігураційних файлів і запуску демона pppd. До того ж, для підключення клієнта має бути встановлений пакет pptp (PPTP driver http://pptpclient.sourceforge.net/). У разі його відсутності, необхідно зробити його установку одним з описаних в пункті 1 методом.
Підключення може бути виконане наступною командою:
# pppd call vpn
(Опція nodetach корисна для відладки).
Де vpn ім'я файла з налаштуваннями підключення знаходиться в директорії /etc/ppp/peers/.
Приклад конфігураційного файла vpn (параметри аналогічні конфігураційному файлу options.pptpd) :
name username
remotename vpn
ipparam vpn
#Використовувати програму pptp як псевдотермінал для pppd
pty "pptp IP.IP.IP.IP --nolaunchpppd"
connect /bin/true
defaultroute
refuse-eap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
noauth
lock
Приклад конфігураційного файла chap - secrets:
username * password *
Дата добавления: 2016-05-11; просмотров: 1458;