Сигурност на Виртуални Частни Мрежи и прилагането им в малки и средни предприятия


ПРАКТИЧЕН ПРИМЕР: СВЪРЗВАНЕ НА ДВА ОБЕКТА С ИЗПОЛЗВАНЕ НА СЕРТИФИКАТИ В ЛИНУКС УБУНТУ 10.04



страница4/4
Дата26.08.2016
Размер0.67 Mb.
#7366
1   2   3   4

5.6 ПРАКТИЧЕН ПРИМЕР: СВЪРЗВАНЕ НА ДВА ОБЕКТА С ИЗПОЛЗВАНЕ НА СЕРТИФИКАТИ В ЛИНУКС УБУНТУ 10.04

Целта на този практически пример е да опишем инсталирането на OpenVPN сървър върху Линукс Убунту операционна система. Също така и настройването на Етернет мост (Ethernet bridge) за достъп до локалната мрежа. Използването на OpenVPN позволява лесно свързване на външни потребители към вътрешната локална мрежа и получаването на трафика все едно са вътре в локалната мрежа.

Какво е необходимо:


    1. Компютър с инсталиран Линукс Убунту 10.04 .

    2. Root достъп до сървър

    3. Външен компютър за тестване

Първото нещо което трябва да се направи преди започването на инсталацията е да се разгледа документацията на OpenVPN. Това изглежда проста стъпка и често се пренебрегва, но ако незнаем точно как работи OpenVPN рискуваме създаването на проблеми със сигурността на нашата локална мрежа.

#Link to OpenVPN Homepage



http://openvpn.net/

#Link to Explanation of bridging



http://openvpn.net/bridge.html

След като имаме описано в предишните глави как функционира OpenVPN и различните режими на работа по-точно “bridging”, веднага преминаваме към имплементацията на тези технологии върху нашия сървър в локалната мрежа. Записваме си информацията относно нашата мрежа, т.е. практическия пример се отнася за мрежа със следните параметри:



Linux Server Internal IP: 10.0.20.10 //вътрешен IP адрес на Линукс сървъра

Internet Gateway: 10.0.20.1 //порта към Интернет (рутер NetGear WGR614)

Gateways (public) IP: 89.185.213.205 //публичен IP адрес

Network Layout //план на мрежата

Интернет  Рутер/Защитна стена  OpenVPN сървър (eth0)
За опростяване на настройките за потребителите желателно е регистрирането на IP адреса с име на домейн. В този пример IP-то 89.185.213.205 ни е регистрирано като “petrankab.homelinux.com”. Използваме безплатна регистрация с помощта на www.dyndns.com. В случая IP-то ни е статично и не се променя, но в случаите когато IP-то ни е динамично, сваляме инструмента за обновяване на адреса (dynamic dns update tool) и следваме инструкциите. Също така трябва да настроим рутера за порта 6670 да бъде отворен.



Отваряне на порт 6670

IP адресът на сървъра трябва да е статичен защото мостът няма да обнови адреса при промяна на IP-то от страна на DHCP. Конфигурирането на IP-то се извършва в файла: /etc/network/interfaces. Този файл в нашия пример изглежда така:



#Primary network interface that connects to our Netgear 614v7 router

eth0

iface eth0 inet static

address 10.0.20.10

netmask 255.255.255.0

network 10.0.20.0

broadcast 10.0.20.255

gateway 10.0.20.1

#dns – installed resolvconf package -- /etc/resolv.conf

dns-nameservers 10.0.20.1

Следващата стъпка е инсталирането на OpenVPN и инструментите за работа с мостът. Това се прави с въвеждането на:



sudo apt-get install openvpn bridge-utils

След като инсталацията свърши, преминаваме към конфигурирането. Копираме оригиналните данни в папка /etc/openvpn за по-лесен достъп и за защита на оригиналните данни.



cp –R /usr/share/doc/openvpn/examples/ /etc/openvpn/

Искаме да заредим vars файла с наши данни по подразбиране. Отваряме файла /etc/openvpn/examples/easy-rsa/vars с някакъв редактор и променяме KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, и KEY_EMAIL, с отговарящи за нас информации.



cd /etc/openvpn/examples/easy-rsa/2.0/

sudo gedit vars
Файлът vars ни изглежда така: (само най-важните неща)
#this is to ensure secure data

export KEY_SIZE=2048

# These are the default values for fields

# which will be placed in the certificate.

# Don't leave any of these fields blank.

export KEY_COUNTRY=”MK”

export KEY_PROVINCE=”SR”

export KEY_CITY=”Strumica”

export KEY_ORG=”DELTA-V”

export KEY_EMAIL=”vetatoy@gmail.com”
След редактирането на файла започваме с конфигурирането на сървъра.

Въвеждаме следващите команди:


source vars

./clean-all

./build-ca
Първата команда ще изчисти старите ключове или конфигурационни елементи. В началото няма, но желателно е за всеки случай. Крайната команда ще настрои конфигурационните елементи на Openvpn. Следваме инструкциите и попълваме с елементи които отговарят на нашата ситуация. След като заредихме файла vars (source vars) и преди това сложихме наши данни по подразбиране, те трябва да отговарят за всички елементи, но общото име (Common Name) трябва да се уточни.

Създаваме ключове за сървъра. Това са частни ключове, които трябва да пазим сигурно.



./build-key-server server
Използваме същата информация, която въвеждахме при предишната стъпка ./build-ca. Ако използваме различна, “Sign Certificate” и “Commit” няма да работят.

След като създадохме ключове за сървъра следва създаване на ключове за потребителите. Първо трябва да решим дали искаме ключовете да са защитени с пароли. Препоръчително е да са със пароли в случаите когато не се имплементира автентикация. Ако е обратно т.е. имплементираме автентикация на OpenVPN, тогава не използваме пароли. Тук ще включим автентикация тъй като това е най-сигурния метод.


#Generate with password

./build-key-pass username

#Generate without password

./build-key username
./build-key client1

./build-key client2

…….


Сега трябва да създадем Diffie Hellman параметри. Позволява се договарянето на сесиен ключ без изпращането му по несигурната връзка. Две договарящи се страни избират независима част от ключа, след което обменят ограничен обем от информация, така че всяка страна да може да изчисли обшия ключ, без това да е възможно за трета, злонамерена страна. Ако обмяната на информация се подслушва тогава договорения общ ключ е компрометиран.

Този процес отнема повече време за разлика от останалите.



./build-dh

#Generate server id key

openvpn - -genkey - -secret ta.key

След като са генерирани всичките ключове, от предишния пример важи същата таблица която разпределяше кои ключове за къде са и как да се пазят.



Име на файл

Използва го

Цел

Пазене в тайна

ca.crt

Сървър и всички клиенти

Root CA сертификат

НЕ

ca.key

Само сигурен компютър за генериране на ключове

Root CA ключ

ДА!!

dh{n}.pem

Само сървър

Diffie Hellman

НЕ

server.crt

Само сървър

Сървър сертификат

НЕ

server.key

Само сървър

Сървър ключ

ДА

client1.crt

Клиент1

Клиент1 сертификат

НЕ

client1.key

Клиент1

Клиент1 ключ

ДА

client2.crt

Клиент2

Клиент2 сертификат

НЕ

client2.key

Клиент2

Клиент2 ключ

ДА

client3.crt

Клиент3

Клиент3 сертификат

НЕ

client3.key

Клиент3

Клиент3 ключ

ДА

Следващата стъпка е конфигурирането на файла server.conf. За нашия пример той изглежда така:

# На коя IP адреса трябва OpenVPN

# да слуша? (незадължително)

local 10.0.20.10

port 6670

//По подразбиране портът е 1194. Тъй като Интернет доставчикът който имам е блокирал този порт, използвам 6670.
# TCP или UDP сървър?

proto tcp
#Това е ключно за конфигурирането на моста

# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.
# Use "dev tap0" if you are ethernet bridging
# and have precreated a tap0 virtual interface
# and bridged it with your ethernet interface.
# If you want to control access policies
# over the VPN, you must create firewall
# rules for the the TUN/TAP interface.
# On non-Windows systems, you can give
# an explicit unit number, such as tun0.
# On Windows, use "dev-node" for this.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.

dev tap0
#Задаваме точния път към генерираните файлове

ca /etc/openvpn/examples/easy-rsa/2.0/keys/ca.crt

cert /etc/openvpn/examples/easy-rsa/2.0/keys/server.crt

key /etc/openvpn/examples/easy-rsa/2.0/keys/server.key

dh /etc/openvpn/examples/easy-rsa/2.0/keys/dh2048.pem
#В този файл се пази запис потребител->виртуален IP адрес

#В случай че сървъра падне или се рестартира, на включващите

#се отново потребители им се задават същите адреси.

ifconfig-pool-persist ipp.txt
#Трябва да сме сигурни че обхватът на последните два адреса

# в израза не се използват от DHCP сървъра или

# някое друго устройство във вътрешната мрежа.

server-bridge 10.0.20.10 255.255.255.0 10.0.20.19 10.0.20.49

#Необходимо за да позволи комуникацията във вътрешната мрежа

client-to-client
#Изпращане на ping съобщения за да се знае кога някоя от страните

#е изключена. Ping на всеки 10 секунди. Ако не се получи за 120 секунди

#отдалечения е изключен

keepalive 10 120
#Криптографски алгоритъм

#AES е много използван

#в случай, че имаме нужда от по-голяма скорост използваме blowfish: "BF-CB"

cipher AES-128-CBC
#Ако имаме друга частна подмрежа зад сървъра.В момента няма.

;push "route 10.0.21.0 255.255.255.0"
#server id protection, За по-голяма сигурност

tls-auth /etc/openvpn/examples/easy-rsa/2.0/ta.key 0
#Позволява компресия на VPN връзката

comp-lzo


#Ограничаване на броя на потребители(свързвания)

max-clients 15
#Настройки за сигурност

# не се използват когато сървъра е на Windows

user nobody

group nogroup

persist-key

persist-tun
#Статус файл, обновяващ на всяка минута.

status openvpn-status.log

verb 3

Сега когато сървърът ни е конфигуриран, трябва да създадем “bridge” интерфейса. Той ще се използва само от OpenVPN, затова създаваме скрипт за стартиране и стопиране на интерфейса. Примерен скрипт имаме в /etc/openvpn/examples/sample-scripts/. Нашия скрипт /etc/init.d/bridge изглежда така:



#!/bin/bash

# Create global variables

# Define Bridge Interface

br="br0"

# Define list of TAP interfaces to be bridged,

# for example tap="tap0 tap1 tap2".

tap="tap0"

# Define physical ethernet interface to be bridged

# with TAP interface(s) above.

eth="eth0"

eth_ip="10.0.20.10"

eth_netmask="255.255.255.0"

eth_broadcast="10.0.20.255"

gw="10.0.20.1"

start_bridge () {

#################################

# Set up Ethernet bridge on Linux

# Requires: bridge-utils

#################################

for t in $tap; do

openvpn --mktun --dev $t

done

for t in $tap; do

ifconfig $t 0.0.0.0 promisc up

done

ifconfig $eth 0.0.0.0 promisc up

brctl addbr $br

brctl addif $br $eth

for t in $tap; do

brctl addif $br $t

done

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast up

route add default gw $gw $br

}

stop_bridge () {

####################################

# Tear Down Ethernet bridge on Linux

####################################

ifconfig $br down

brctl delbr $br

for t in $tap; do

openvpn --rmtun --dev $t

done

ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast up

route add default gw $gw $eth

}

case "$1" in

start)

echo -n "Starting Bridge"

start_bridge

;;

stop)

echo -n "Stopping Bridge"

stop_bridge

;;

restart)

stop_bridge

sleep 2

start_bridge

;;

*)

echo "Usage: $0 {start|stop|restart}" >&2

exit 1

;;

esac

За стартиране на скрипта използваме:


update-rc.d bridge defaults 15

С това приключваме конфигурирането на OpenVPN сървъра. Остава конфигурирането на потребителския конфигурационен скрипт client.conf. Ще се даде на потребителите за тяхното свързване към сървъра.

Ето как изглежда файла/скрипта:
client

dev tap

proto tcp

remote petrankab.homelinux.com 6670

resolv-retry infinite

nobind

persist-key

persist-tun

# Point the key and crt files to

# the ones for this user

client1

ca ca.crt

cert client1.crt

key client1.key

#ensure that we are talking to a server

ns-cert-type server

#confirm we are talking to the correct server

tls-auth ta.key 1

# Select a cryptographic cipher.

# If the cipher option is used on the server

# then you must also specify it here.

cipher AES-128-CBC

# Enable compression on the VPN link.

comp-lzo

ЗАКЛЮЧЕНИЕ

За реализирането на дипломната работа са извършени следните дейности:



      1. Изследван е проблема за отдалечен достъп на служители към локалната мрежа на фирмата в която работят;

      2. Анализиран е проблема свързан с необходимостта от по-голяма сигурност при свързване на потребители извън локалната мрежа, като са разгледани най-честите алгоритми за криптиране;

      3. Поставена е задача за създаване на малка виртуална частна мрежа, извършен е анализ на задачата и избор на VPN системи нейното решаване.

Разработени са следните модули:




        1. Модул за настройка на рутер D-LINK DI-824VUP+, като VPN сървър. Модулът включва настройки за всички протоколи (PPTP, L2TP, IPSec) които рутера позволява;

        2. Модул за настройка на VPN клиент, включващ отново описаните протоколи, както и използването на Smart VPN Client;

        3. Модул за настройка на OpenVPN сървър и клиенти, върху Windows операционна система и Линук Убунту.

В настоящата дипломна работа е направен преглед на най-разпространените технологии за VPN. Целта на дипломната работа беше да се даде възможност за отдалечен достъп на служители на фирма до мрежата на тяхната фирма чрез VPN. За реализирането използвахме различни подходи и в заключение като най-подходящо решение като се вземе предвид лесното настройване, цената, популярността, съвместимостта с почти всички известни за нас операционни системи, избираме OpenVPN. Изводът който може да се направи е, че разгледаното решение може успешно да намери приложение в реализирането на VPN свързаност между клиенти и офис, между два физически отдалечени офиси на една фирма и сл. И всичко това за малки и средни предприятия. В случай на големи предприятия отново може да се приложи, но там вече е желателно по-голям анализ и по-голяма предпазливост относно сигурността, и се предпочитат професионални скъпи решения.



ИЗПОЛЗВАНА ЛИТЕРАТУРА

          1. James s Tiller: VPN – A Technical Guide to IPSec Virtual Private Networks

          2. J.Davies and E.Lewis: Deploying VPN with Microsoft Windows Server 2003

          3. Документация на Openvpn: http://openvpn.net/

          4. Microsoft Step-By-Step Guides:

http://technet.microsoft.com/en-us/network/bb545442.aspx




Сподели с приятели:
1   2   3   4




©obuch.info 2024
отнасят до администрацията

    Начална страница