VPN konfiguracja PDF Drukuj Email
piątek, 18 lutego 2011 23:07

Tags: OpenVPN | router | Tomato | VPN

VPN (ang. Virtual Private Network, Wirtualna Sieć Prywatna)

można opisać jako tunel, przez który płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem publicznej sieci (takiej jak Internet) w taki sposób, że węzły tej sieci są przezroczyste dla przesyłanych w ten sposób pakietów. Taki kanał może opcjonalnie kompresować lub szyfrować w celu zapewnienia lepszej jakości lub większego poziomu bezpieczeństwa przesyłanych danych.

Określenie "Wirtualna" oznacza, że sieć ta istnieje jedynie jako struktura logiczna działająca w rzeczywistości w ramach sieci publicznej, w odróżnieniu od sieci prywatnej, która powstaje na bazie specjalnie dzierżawionych w tym celu łącz. Pomimo takiego mechanizmu działania stacje końcowe mogą korzystać z VPN dokładnie tak jak gdyby istniało pomiędzy nimi fizyczne łącze prywatne. Rozwiązania oparte na VPN powinny być stosowane np. w sieciach korporacyjnych firm, których zdalni użytkownicy dosyć często pracują ze swoich domów na niezabezpieczonych łączach. Wirtualne Sieci Prywatne charakteryzują się dość dużą efektywnością, nawet na słabych łączach (dzięki kompresji danych) oraz wysokim poziomem bezpieczeństwa (ze względu na szyfrowanie).

1. Instalacja OpenVPN na komputerze.

OpenVPN jest w pełni funkcjonalnym SSL VPN, który implementuje warstwy OSI 2 lub 3 bezpiecznego rozszerzenia sieci za pomocą standardowych protokołów SSL / TLS, obsługuje elastyczne metody uwierzytelniania klienta na podstawie certyfikatów, kart inteligentnych i/lub podanie nazwy użytkownika i hasła. Pozwala użytkownikowi lub grupie dostęp przy użyciu reguł zapory zastosowane w wirtualnym VPN.

OpenVPN 2.0 zapewnia rozwiązanie skalowalne typu klient/serwer, dzięki czemu wielu klientów można podłączyć do jednego procesu serwera OpenVPN przez pojedynczy port TCP lub UDP.

Należy pobrać najnowszą wersję ze strony OpenVPN i zainstalować na komputerze z prawami Administratora.

2. Generowanie certyfikatów

W tym przykładzie będą generowane certyfikaty na serwer (router z TOMATO) i trzech klientów.

uwagi:
- wszystkie certyfikaty (dla serwera + klientów) generujemy na komputerze z zainstalowanym OpenVPN,
- częstym problemem w wygenerowaniu plików z certyfikatami jest brak odpowiednich uprawnień do katalogu instalacyjnego OpenVPN umożliwiający zapis wygenerowanych certyfikatów
(domyślna ścieżka c:\Program Files\OpenVPN).

W celu uzyskania certyfikatów i kluczy:

  • Z wiersza poleceń:

    C:\Program Files\OpenVPN\easy-rsa>init-config

    W wyniku wpisanego polecenia zostaną wygenerowane pliki, a system zwróci wynik:

    C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
    Liczba skopiowanych plików: 1.
    C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf
    Liczba skopiowanych plików: 1.
    C:\Program Files\OpenVPN\easy-rsa>


  • Zalecana jest modyfikacja zawartość pliku C:\Program Files\OpenVPN\easy-rsa>vars.bat

    KEY_COUNTRY=USset wpisz kraj - system przyjmuje tylko dwa bity np. KEY_COUNTRY=PL
    KEY_PROVINCE=CAset wpisz rejon - system przyjmuje tylko dwa bity np. KEY_PROVINCE=MA
    KEY_CITY=SanFranciscoset wpisz miasto np. KEY_CITY=Otwock
    KEY_ORG=OpenVPNset wpisz firmę lub organizacje np. KEY_ORG=TOMCOM
    KEY_EMAIL=mail@host.domain wpisz adres e-mail np. KEY_EMAIL= Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

    uwagi:
    - z moich obserwacji, modyfikacja pliku vars.bat nie jest warunkiem koniecznym do wygenerowania certyfikatów
    - dane pliku vars.bat są wykorzystane w dalszym procesie jako domyślne wartości formularza


  • Z wiersza poleceń:

    C:\Program Files\OpenVPN\easy-rsa>vars

    System, nie zwraca żadnej informacji

  • z wiersza poleceń:

    C:\Program Files\OpenVPN\easy-rsa>clean-all

    Liczba skopiowanych plików: 1.
    Liczba skopiowanych plików: 1.


  • Generujemy prywatny klucz poleceniem:

    C:\Program Files\OpenVPN\easy-rsa>build-ca

    Loading 'screen' into random state - done
    Generating a 1024 bit RSA private key
    ....++++++
    ................................................................................
    ...................................++++++
    writing new private key to 'keys\ca.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [US]:
    PL
    State or Province Name (full name) [CA]: Mazowieckie
    Locality Name (eg, city) [SanFrancisco]: Otwock
    Organization Name (eg, company) [OpenVPN]: TOMCOM
    Organizational Unit Name (eg, section) []: cisco
    Common Name (eg, your name or your server's hostname) []: linksys
    Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

  • Generujemy klucz na serwer:

    C:\Program Files\OpenVPN\easy-rsa>build-key-server server

    Loading 'screen' into random state - done
    Generating a 1024 bit RSA private key
    .....++++++
    ....++++++
    writing new private key to 'keys\server.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [US]:
    PL
    State or Province Name (full name) [CA]: Mazowieckie
    Locality Name (eg, city) [SanFrancisco]: Otwock
    Organization Name (eg, company) [OpenVPN]: TOMCOM
    Organizational Unit Name (eg, section) []: cisco
    Common Name (eg, your name or your server's hostname) []: linksys
    Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    wpisz_haslo
    An optional company name []:wpisz_nazwe_firmy
    emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '

  • Generujemy klucz dla pierwszego klienta:

    C:\Program Files\OpenVPN\easy-rsa>build-key client1

    Loading 'screen' into random state - done
    Generating a 1024 bit RSA private key
    ..............................++++++
    ....++++++
    writing new private key to 'keys\client1.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [US]:
    PL
    State or Province Name (full name) [CA]: Mazowieckie
    Locality Name (eg, city) [SanFrancisco]: Otwock
    Organization Name (eg, company) [OpenVPN]: TOMCOM
    Organizational Unit Name (eg, section) []: cisco
    Common Name (eg, your name or your server's hostname) []: linksys
    Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    wpisz_haslo
    An optional company name []:wpisz_nazwe_firmy
    emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '

  • Generujemy klucz dla drugiego klienta:

    C:\Program Files\OpenVPN\easy-rsa>build-key client2

    Loading 'screen' into random state - done
    Generating a 1024 bit RSA private key
    ...++++++
    ...........++++++
    writing new private key to 'keys\client2.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [US]:
    PL
    State or Province Name (full name) [CA]: Mazowieckie
    Locality Name (eg, city) [SanFrancisco]: Otwock
    Organization Name (eg, company) [OpenVPN]: TOMCOM
    Organizational Unit Name (eg, section) []: cisco
    Common Name (eg, your name or your server's hostname) []: linksys
    Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    wpisz_haslo1
    An optional company name []:wpisz_nazwe_firmy1
    emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '

  • Generujemy klucz dla trzeciego klienta:

    C:\Program Files\OpenVPN\easy-rsa>build-key client3

    Loading 'screen' into random state - done
    Generating a 1024 bit RSA private key
    ........++++++
    .......++++++
    writing new private key to 'keys\client3.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [US]: PL
    State or Province Name (full name) [CA]: Mazowieckie
    Locality Name (eg, city) [SanFrancisco]: Otwock
    Organization Name (eg, company) [OpenVPN]: TOMCOM
    Organizational Unit Name (eg, section) []: cisco
    Common Name (eg, your name or your server's hostname) []: linksys
    Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    wpisz_haslo1
    An optional company name []:wpisz_nazwe_firmy1
    emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '

  • Generujemy klucz dla trzeciego klienta:

    C:\Program Files\OpenVPN\easy-rsa>build-dh

    Loading 'screen' into random state - done
    Generating DH parameters, 1024 bit long safe prime, generator 2
    This is going to take a long time
    ...........+..........................................................+.........
    ................................................................................
    C:\Program Files\OpenVPN\easy-rsa>

  • Lokalizacja wygenerowanych certyfikatów

    W katalogu:
    C:\Program Files\OpenVPN\easy-rsa\keys
    znajdziemy pliki:

    ca.crt
    ca.key
    dh1024.pem
    server.crt
    server.key
    client1.crt
    client1.key
    client2.crt
    client2.key
    client3.crt
    client3.key

3. Konfiguracja VPN na serwerze - router z Tomato

Logujemy się do routera z Tomato i przechodzimy do menu
VPN Tunneling > Server i wpisujemy dane w poszczególnych zakładkach:

  • Basic

    vpn_basic
    Po wprowadzeniu danych zapamiętujemy naciskając Save u dołu ekranu.

    uwagi:
    Powyższe ustawienia są dla przypadku: vpn_basic

    Serwer OpenVPN nasłuchuje klienta na porcie 1194


  • Advanced

    vpn_advanced

    Po wprowadzeniu danych zapamiętujemy naciskając Save u dołu ekranu.

  • Keys

    vpn_keys

    W tej części interesują nas następujące pliki z katalogu
    C:\Program Files\OpenVPN\easy-rsa\keys:

    ca.crt
    server.crt
    server.key
    dh1024.pem

    Poszczególne pliki otwieramy za pomocą edytora np. notatnika i przekopiowujemy zawartość do odpowiedniego okna w zakładce Keys w Tomato:

    ca.crt do okna Certificate Authority
    server.crt do okna Server Certificate
    server.kay do okna Server Key
    dh1024.pem do okna Diffie Hellman parameters

    Po wklejeniu zapamiętujemy dane, naciskając Save u dołu ekranu.

  • Status

    Jeżeli wszystko zostało dobrze wprowadzone, to po naciśnięciu Start Now otrzymamy:

    vpn_status


4. Konfiguracja VPN na kliencie - komputer z Microsoft Vista

Przenosimy poniższe pliki z katalogu
C:\Program Files\OpenVPN\easy-rsa\keys do katalogu C:\Program Files\OpenVPN\config

ca.crt
ca.key
client1.crt
client1.key

Modyfikujemy plik C:\Program Files\OpenVPN\config\server.ovpn za pomocą np. notatnika

server_ovpn

Modyfikujemy linijkę remote, czyli informacje dla klienta gdzie znajdzie skonfigurowany wcześniej serwer w Internecie.

  • WAN routera posiada stały adres IP

    wpisujemy:
    remote xxx.xxx.xxx.xxx 1194

    przy czym:
    xxx.xxx.xxx.xxx - wpisz publiczny adres IP routera
    1194 - port na którym nasłuchuje serwer VPN ten sam co wpisany w zakładce Basic w Tomato.

  • WAN routera jest klientem DHCP lub korzysta z protokołu PPPoE

    wpisujemy:
    remote xxx.dyndns.org 1194
    przy czym:
    xxx - nazwa hosta zarejestrowanego na dyndns.org.
    Warunkiem połączenia jest poprawne skonfigurowanie DDNS na Tomato w menu Basic > DDNS.
    1194 - port na którym nasłuchuje serwer VPN ten sam co wpisany w zakładce Basic w Tomato.


uwagi:
znak # na początku wiersza traktuje linijkę jak komentarz. W powyższym przypadku klient VPN szuka routera pod stałym adresem IP (publicznym) xxx.xxx.xxx.xxx na porcie 1194 pomijając hosta xxx.dyndns.org.


5. Zestawienie połączenia

Uruchom OpenVPN GUI jako administrator - pojawi się ikona dwóch komputerów z kulą po prawej stronie w pasku zadań. Po najechaniu na nią myszą kliknij prawy przycisk myszy, w menu kliknij server > connect.
Jeżeli wszystko pójdzie dobrze, to zestawisz VPN, uzyskując dostęp do sieci wewnętrznej za ruterem. Sprawdzisz to wykonując ping lub logując się na ruter na adres IP LAN rutera.
 
© 2011 TOMCOM | Wszelkie prawa zastrzeżone.