Виртуални частни мрежи (VPN)

Отдалеченият достъп до дадена мрежа през Интернет се практикува все по-често напоследък. И има защо – връзката към Глобалната мрежа става все по-бърза за все по-малко пари. Причините за отдалечения достъп са много, но най-често удобството и мобилността – лесно можем да вземем някой забравен файл от компютъра у дома, да конфигурираме желания от нас сървър или просто да послушаме музика.
Начините да постигнем това са много:

  • Remote Desktop (RDP) – виждаме картина от отдалечения компютър. Възможно е пренасочването на принтери, серийни и паралелни портове, звук и куп други настройки. Изключително ефективно средство за отдалечен контрол дори при лоши параметри на комуникационната линия (държи се добре дори през модемна връзка 56 Kbps!!!). Често клиентския компютър се нарича терминал.
  • VNC – Подобно на RDP дава възможност за контрол върху отдалечения компютър;
  • SSH (secure shell) – текстово базиран (CLI – Command Line Interface) достъп до shell-а на отдалечения компютър. Изписаните команди се изпълняват на отдалечения компютър;
  • Citrix Solutions – много подобно на Remote Desktop, но не се вижда целия десктоп. Картината от отдалечено стартираните приложения се изобразява на нашия компютър в обикновен прозорец, който можем да минимизираме, максимизираме и затваряме с познатите бутони minimize, maximize и close. Често те се наричат терминални прозорци. Дори се появяват в лентата със задачите в Windows;
  • много други.

Общото между всички тях е, че те ни предоставят визията на случващото се в отдалечената машина. Т.е. нашият компютър се явява самостоятелна единица за наблюдение и управление. Обаче тривиалните неща, като прехвърляне на файлове, media streaming, IP телефония и т.н. се реализират с допълнителен софтуер, разрешаване и пренасочване на портове във Firewall-а, както и други хитроумни решения. Трудоемко нали? Друго си е компютъра да е включен към суича на”отсрещната” локална мрежа – всичко е на “една ръка разстояние”. Но постижимо ли е това?
Защо не? Ето няколко идейки:

Забележка:
За примера некаприемем, че иматеедин компютър вСофия и сървър + целева мрежа в Ню Йорк.

  • ако трябва да копираме няколко файла на компютъра в Ню Йорк просто си купуваме самолетен билет, включваме PC-то на място и прехвърляме желаната информация;
  • прокараме UTP кабел от София до Ню Йорк, който кабел включваме в суича на мрежата от въпросния US град;
  • разрешаваме SMB,RDP и всякакви други протоколи (т.е. спираме Firewall-ите) награничните сървъри/компютри в двата града.

Първите дваварианта определено са финансово неизгодни 🙂 .Третият пък е лесно постижим, но главния проблем произлиза отфакта, че информацията, която се обменя между нашата машина и тази в Ню Йорк пътувапрез Интернет, където не се гарантира никаква сигурност. Някои от използваните днес протоколи са толкова несигурни (FTP, Telnet, HTTP при предаване на пароли и т.н.), че този вариант си е направо абсурден и е меко казано дупка в сигурносттана мрежата ни.

Тогава идва и логичният въпрос: “Възможно ли е да използваме съществуващата си Интернет връзка и малко софтуер, за да постигнем същия резултат, осигурявайки и необходимото ниво на защита?” Отговорът е ДА! Точно тук на помощ идват виртуалните частни мрежи (VPN – Virtual Private Networks). VPN технологията има за цел да направи предаването на информация сигурно, дори през Интернет, чрез различни криптографски методи. Казва се, че между началната и крайната точка на предаване на информацията се изгражда т.нар. VPN тунел или просто тунел.Образно той е нашият виртуален UTP кабел, който ни прави част от отсрещната мрежа, която тук ще наричамецелева мрежа.

Основните елементи на една виртуална частна мрежа са:

  • VPN сървър – обикновено крайнататочка на VPN тунела. Може да бъде реализиран както софтуерно, така и хардуерно. Към него могат да се свързват много на брой VPN клиенти, а правилата, по които става това се контролират от разнообразни политики. Броят и функционалността им зависи от софтуера, реализиращ VPN сървъра;
  • VPN клиент – началната точка на VPN тунела. Обикновено инициатор на връзката. Може да бъде реализиран софтуерно или хардуерно;
  • набор от протоколи и методи за криптиране на информацията:

По същество при изграждане на VPN тунела клиентският компютър се сдобива с допълнителен LAN интерфейс (бледо синята мрежова карта с IP адрес 10.0.0.100), който виртуално е закачен за мрежата от другата страна на тунела т.е. клиентската машина става част от “отсрещната” мрежа.
От казаното по-горе можем да направим логичното заключение, че за да изградим VPN е необходимо двете машини да имат работоспособна връзка към Интернет, като VPN сървъра трябва да има публичен (реален)IP адрес (не е задължително, но може да има регистрирано име в някойдомейн/поддомейн).

На фиг. 1 е показана типова реализация на виртуална частна мрежа.

[singlepic=90,480,480]

Фигура 1 (пример за VPN)

На фиг. 1, в син цвят, е показана съществуващата връзка към Интернет на двете машини. Абсолютно без значение е начина на достъп – чрез модем, рутер, комбинация от двете или друго. Важното е VPN сървъра да има публичен (реален)IP адрес, за да може VPN клиента да се обърне към него,и даинициира VPN тунела. В случая VPN сървъра е свързан към местен LAN доставчик. При клиента положението е същото, но се използва и рутер. Искаме клиентската машина да стане част от “отсрещната” локална мрежа.
Важен момент преди вдигането на VPN тунела е автентикацията на потребителя. В Windows базираните системи това става на базата на акаунти, които се намират в security базата от страна на VPN сървъра. Разбира се, може да се използват и smart карти.
При конфигурацията на входящата връзка (откъм VPN сървъра) се задава кои потребители имат право да осъществяват достъп. След автентикацията следва момента на авторизацията – определя се дали успешно автентикиралият се потребител има право да ползва VPN услугите. Различните софтуери за VPN сървъри предлагат разнообразни настройки – почасов достъп, в кои дни от седмицата е възможен достъпът и т.н.
На базата на фиргура 1 гореописаният процес може да се опише така:

Забележка:
Вътрешната мрежа от страната на VPN сървъра (10.0.0.0/24 в случая) условно ще наричаме “мрежа ЦЕЛ” или целева мрежа. Също така, ще приемем, че настройките в крайните точки на VPN тунела са зададени коректно и последния може да се инициализира нормално.

  1. Въвеждате IP адреса/името на VPN сървъра (в случая 193.192.14.55), както и информация за потребителя и прилежащата му парола, който има правото да използва VPN;
  2. Клиентът се свързва с VPN сървъра през Интернет (синия пунктир) и се договаря с него за протокола, като представя и информация за потребителя и неговата парола;
  3. След успешна автентикация към VPN сървъра и положителна авторизация от негова страна се изгражда VPN тунела (на фиг.1 е във вид на тръба, “пробождаща” облака);
  4. При клиента става активена мрежовата връзка от тип VPN. Този интерфейс получава настройки за мрежата или ръчно, или чрез DHCP сървър, който се намира от страната на целевата мрежа (в случая интерфейсът е получил IP адрес 10.0.0.100).
  5. В този момент Windows добавя в routing таблицата сиинформация за маршрута иинтерфейса (, кактонеговия приоритет) към мрежата цел.

Ключът от палатката:
Илюзията за “виртуален тунел” се създава с цел по-лесното възприемане от страна на потребителите 🙂 .

Какво се случва на практика:
Ако се опитате да отворите ресурс от целевата мрежа (примерно влизате в папка “myRemoteFolder”, споделена накомпютър с IP адрес 10.0.0.20, като запишете:\\10.0.0.20\myRemoteFolder) Windows ще изпрати всички пакетикъм виртуалния мрежов интерфейс. Там те ще се криптират и ще отпътуват през Глобалната мрежа по синия пунктир, но казваме, че нешифрираната информация (заявката ни за достъп до \\10.0.0.20\myRemoteFolderв случая)преминава през криптиранияVPN тунел – червения пунктир. От своя страна VPN сървърът ще ги декриптира и препрати към съответния компютър от мрежа 10.0.0.0/24.
И тъй като “с единия мрежов интерфейс сте в суича на целавата мрежа” обратното също е в сила (от компютър в мрежа 10.0.0.0/24 да достъпитекомпютъра 192.168.3.18). Разбира се, тези процеси зависят пряко и от настройките на firewall-а на VPN клиента и компютрите от страната на VPN сървъра.
Ставайкичаст от целевата локална мрежаВие спокойно можете да достъпвате и използвате ресурсите, които предлага тя: споделени папки/файлове, медийни файлове, споделени принтери, Remote Desktop, Telnet, FTP, HTTP, NETBIOSи т.н. Но в този случай трафика, който се генерира при използването им ще бъде защитен от изградения VPN тунел.

Не на последно място трябва да отбележа две важни неща:

  1. Използването на VPN изисква разрешаването на няколко порта в защитната Ви стена (firewall) от страната на VPN сървъра, а именно:
      • 1723 (PPTP)
      • 500 (IPSec /ако използвате този протокол/ )
      • 51 (по непотвърдена информация) (Update 08.09.08 – Eol)
      • 50 (по непотвърдена информация) (Update 08.09.08 – Eol)
      • 47 (GRE+ http://support.microsoft.com/kb/241251) (Update 08.09.08 – Eol)
    В случай, че VPN сървърът стои зад NAT (Network Address Translation) упоменатите портове трябва да се пренасочат към IP адреса на сървъра във вътрешната мрежа.
  2. Изключително важно е целевата локална мрежа и вашата локална мрежа да са с РАЗЛИЧНИ мрежови идентификатори (частта от IP адреса, определен от мрежовата маска, който задава мрежата). По-просто казано не може целевата и локалната Ви мрежа да бъдат еднакви, примерно 192.168.0.0/24.
    Причината е много проста: при успешно инициализиране на VPN тунела Windows добавя в рутинг таблицата си (routing table) записи, описващи целевата мрежа. Аколокалната и целевата Ви мрежа имат еднакви идентификатори (което е погрешно!), примерно 192.168.0.0/24, то Windows няма как да разбере през кой интерфейс да изпрати/рутира мрежовите пакети (по дефиниция рутирането се извършва между две различни мрежи!). Резултатите са непредсказуеми, но винаги водят до липса на комуникация през тунела.

* Информацията за портовете касае VPN имплементацията на Microsoft в Windows. При други операционни системи е възможно да има разлика.

В следваща статия ще опиша как можете да реализирате VPN връзка със средствата на Windows XP (т.е. без допълнителен софтуер)

Връзки към други сайтове с подобна тематика:

3 thoughts on “Виртуални частни мрежи (VPN)

  1. Пешко … 47,50 и 51 са номера на протоколи не протове докато 500 наистина е tcp/udp порт на който работи iskamp-то
    eol@moon:~$ cat /etc/protocols | grep 50
    esp 50 IPSEC-ESP # Encap Security Payload [RFC2406]
    eol@moon:~$ cat /etc/protocols | grep 51
    ah 51 IPSEC-AH # Authentication Header [RFC2402]
    eol@moon:~$ cat /etc/protocols | grep 47
    gre 47 GRE # General Routing Encapsulation
    eol@moon:~$ cat /etc/services | grep 500
    isakmp 500/tcp # IPsec – Internet Security Association
    isakmp 500/udp # and Key Management Protocol

  2. Pingback: 14-07-2009 – поредният неподреден ден « Блог на Zelenkroki

Leave a Reply

Your email address will not be published. Required fields are marked *