Configurarea funcției openvpn

Trebuie să conectăm un angajat la distanță la rețeaua de lucru. Acest lucru se face inclusiv prin utilizarea VPN, în cazul nostru OpenVPN. Acesta este un serviciu gratuit, destul de fiabil și nu foarte complex pe serverul de configurare și pe un client VPN.







Structura rețelei noastre este:

Configurarea funcției openvpn

Setarea inițială este simplă pentru orice sistem de operare popular:

Poate că nu voi spune nimic despre Mac OS, tk. nu sa întâlnit personal.

Instalarea OpenVPN pe Linux

Eu folosesc CentOS, așa că pot descrie instalarea pentru acest Linux special.

Ca și în alte părți, pentru a descărca pachetul și a instala nu este gud, t. va fi mai dificil de actualizat. Și de atunci "yum install openvpn" va produce smochinele, trebuie să conectăm depozitul.

Opțiunea 1 - încercați să puneți depozitul din foarte deschisvpn.net:

Cel mai probabil, acest lucru nu este pentru tine să călăriți :)

Opțiunea 2 - Depozit RPMForge

Să verificăm ce am învățat:

Mai ales să nu vă dați drumul cu vreun depozit :) Mai puține dintre ele, cu atât mai bine.

Deci, indiferent ce faceți, trebuie să executați cu succes comanda:

# yum instala openvpn

instalat:
openvpn.i386 0: 2.3-3

Dependența instalată:
pkcs11-helper.i686 0: 1.08-1.el6.rf

Configurația inițială OpenVPN

Indiferent, pe FreeBSD, Linux sau Windows, pașii generali pentru a crea infrastructura necesară pentru OpenVPN sunt aproape la fel.

Copiați fișierul de configurare:

# cp /usr/share/doc/openvpn-*/sample-config-files/server.conf / etc / openvpn /

Copiați pachetul de gestionare a cheilor RSA de la livrarea OpenVPN la / etc / openvpn / easy-rsa:

# cp /usr/share/doc/openvpn-*/easy-rsa/2.0/ / etc / openvpn /
# cd / etc / openvpn / easy-rsa
# cp openssl-1.0.0.cnf openssl.cnf
# cheile mkdir

Editarea fișierului / etc / openvpn / rsa-keys / vars:

export KEY_COUNTRY = "RU"
export KEY_PROVINCE = "RU"
export KEY_CITY = "Moscova"
export KEY_ORG = "Companie"
export KEY_EMAIL = "[email protected]"
exportați [email protected]
export KEY_CN = schimbare
export KEY_NAME = schimbare
export KEY_OU = Office
export PKCS11_MODULE_PATH = schimbare
export PKCS11_PIN = 1234

Apoi, ar trebui să exportați variabilele KEY_ *, acestea sunt necesare pentru a rula build-* script-uri care generează certificate. În această etapă, pot spune că nu am primit imediat variabile de export din fișierul / etc / OpenVPN / ușor / chei RSA. a trebuit să facă un script pentru a exporta variabila de mediu PATH $, dar mi se pare, acest lucru este pur problema mea a fost (în Windows bazate pe versiunea C: variabilele programului FilesOpenVPNeasy-rsavars.bat exportate fara probleme):

# cd / etc / openvpn / easy-rsa
# ./vars

În Windows, deschideți linia de comandă "cmd":

cd "C: Program FilesOpenVPNeasy-rsa
vars.bat

Notă doar în cazul în care, dacă nu puteți executa niciun script, cel mai probabil pur și simplu nu are drepturi de a lansa, de exemplu, atunci când porniți ./build-ca, am primit primul mesaj:

Editați scriptul vars pentru a reflecta configurația dvs.,
apoi sursa cu "sursa ./vars".
Apoi, pentru a începe cu o nouă configurație PKI și pentru a șterge orice
certificatele anterioare și cheile, executați "./clean-all".
În cele din urmă, puteți rula acest instrument (pkitool) pentru a construi certificate / chei.

Despre ce este vorba? Și pur și simplu variabilele dintr-un fișier vars nu au fost exportate, deoarece. Vars nu a fugit, pentru că el are nevoie de drepturi pentru a alerga, adică "chmod + x vars". A trebuit să acord permisiunea de a rula mai multe fișiere, printre care:
construi-ca, curat-toate, pkitool, vars, whichopensslcnf.

Ștergeți toate cheile anterioare și fișierele de certificate din directorul / etc / openvpn / easy-rsa / keys (acest director este specificat în variabila KEY_DIR a fișierului vars):

# chmod + x clean-all
# .clean-all

Creăm autoritatea de certificare a serverului:

# chmod + x construi-ca
# chmod + x pkitool
# ./build-ca

++++++
. ++++++
scrierea unei chei private private în 'ca.key'
-----
Sunteți pe punctul de a fi rugați să introduceți informații care vor fi incluse
în cererea dvs. de certificat.
Care este numele unui Nume Distins sau al unui DN.
Există destul de multe domenii, dar puteți lăsa câteva
Pentru unele câmpuri va exista o valoare implicită,
Dacă introduceți ".", Câmpul va fi lăsat necompletat.
-----
Numele țării (cod de 2 litere) [RU]:
Numele de stat sau de provincie (numele complet) [RU]:
Numele localității (de exemplu, orașul) [Moscova]:
Numele organizației (de exemplu, compania) [Compania]:
Numele unității organizaționale (de exemplu, secțiunea) [Office]:
Nume obișnuit (de exemplu, numele dvs. sau numele de gazdă al serverului dvs.) [changeme]: VPNServer
Nume [changeme]: Nume
Adresa de e-mail [[email protected]]:

Bine, am reușit.

Fiți atenți la completarea acestor certificate, câmpul Nume comun este obligatoriu pentru a fi completat, iar pentru server trebuie să fie unul și altul pentru client. De exemplu, în câmpul Nume comun când generați certificatul X.509 pentru server, puteți scrie "server", respectiv pentru client, respectiv "client".

Creați un certificat X.509 pentru server.

# chmod + x construiți-cheie-server
# ./build-key-server server
Generarea unei chei private RSA de 1024 biți
.++++++
. ++++++
scrierea unei chei private private în "server.key"
-----
Sunteți pe punctul de a fi rugați să introduceți informații care vor fi incluse
în cererea dvs. de certificat.
Care este numele unui Nume Distins sau al unui DN.
Există destul de multe domenii, dar puteți lăsa câteva
Pentru unele câmpuri va exista o valoare implicită,
Dacă introduceți ".", Câmpul va fi lăsat necompletat.
-----
Numele țării (cod de 2 litere) [RU]:
Numele de stat sau de provincie (numele complet) [RU]:
Numele localității (de exemplu, orașul) [Moscova]:
Numele organizației (de exemplu, compania) [Compania]:
Numele unității organizaționale (de exemplu, secțiunea) [Office]:
Nume obișnuit (de exemplu, numele dvs. sau numele de gazdă al serverului dvs.) [server]:
Nume [schimbare]: IAmServer
Adresa de e-mail [[email protected]]:

Introduceți următoarele atribute "extra"
pentru a fi trimise cu certificatul dvs.
O parolă de provocare []:






Un nume de companie opțional []:
Folosind configurația din /etc/openvpn/easy-rsa/openssl.cnf
Verificați dacă cererea corespunde semnăturii
Semnătura ok
Denumirea distinsă a disciplinei este după cum urmează
countryName: PRINTABLE: "RU"
stateOrProvinceName: PRINTABLE: 'RU'
localityName: PRINTABLE: "Moscova"
organizationName: PRINTABLE: 'Company'
organizationalUnitName: PRINTABLE: 'Office'
commonName: PRINTABLE: "server"
nume: PRINTABLE: "IAmServer"
emailAdresa: IA5STRING:'[email protected] '
Certificatul trebuie să fie atestat până la 7 aprilie 12:15:29 2022 GMT (3650 zile)
Semnează certificatul? [y / n]: y

1 din 1 cereri de certificat certificate, comite? [y / n] y
Scrieți baza de date cu 1 intrări noi
Baza de date actualizată

Pentru a crea un fișier parametru Diffie-Hellman pentru o protecție mai fiabilă a datelor atunci când stabiliți o conexiune client-server, efectuăm:

# chmod + x build-dh
# ./build-dh
Generarea parametrilor DH, primă sigură de 1024 biți, generator 2
Acest lucru va dura mult timp

Creăm certificate pentru un client la distanță:

# ./build-key-pass Client1
Generarea unei chei private RSA de 1024 biți
. ++++++
. ++++++
scrierea cheii private private la 'Client1.key'
.


1 din 1 cereri de certificat certificate, comite? [y / n] y
Scrieți baza de date cu 1 intrări noi
Baza de date actualizată

În cele din urmă, generăm o cheie TLS care este comună pentru client și server, care servește drept protecție suplimentară. TLS oferă posibilitatea de a autentifica și de a transfera în siguranță datele prin Internet folosind instrumente criptografice. Adesea, numai autentificarea serverului are loc, în timp ce clientul rămâne neautorizat. Pentru autentificarea reciprocă, fiecare parte trebuie să susțină infrastructura cheii publice (PKI), care ajută la protejarea aplicațiilor client-server cu privire la interceptarea comunicațiilor, edita posturile existente și de a crea false (sursa: wikipedia).

openvpn --genkey - secret ta.key

Ca rezultat, în directorul / etc / openvpn / easy-rsa / keys avem următoarele fișiere:

ca.crt - certificatul principal de autenticitate (Autoritatea de Certificare), acest fișier este necesar atât pentru client, cât și pentru server
dh1024.pem - cheia Diffie Helman, acest fișier este necesar doar de către server
server.crt - server de certificate X.509 (standard ITU-T X.509 este un sprijin fundamental al tuturor celorlalte utilizate în infrastructura de chei publice (PKI) Scopul său principal -. definirea formatului electronic al listei certificatului și certificatul de revocare) numai nevoie de server
server.key - cheia de server, nevoie doar de server (fișier SECRET)
client1.crt - certificat client X.509, necesar doar de client
client1.key - cheie client, necesară doar de client (fișier SECRET)
ta.key - TLS-cheie, atât client și server nevoie

Server - unul, clientul - altul

Acum, în directorul / etc / openvpn / keys de pe viitorul server OpenVPN, copiem fișierele ca.crt, dh1024.pem, server.crt, server.key și ta.key:

# mkdir / etc / openvpn / chei
# Cp /etc/openvpn/easy-rsa/keys/ca.crt dh1024.pem server.crt server.key ta.key / etc / OpenVPN / chei

În viitorul dosar client / etc / openvpn / client1 copiem fișierele ca.crt, client1.crt, client1.key și ta.key:

# mkdir / etc / openvpn / client1
# cp /etc/openvpn/easy-rsa/keys/ca.crt client1.crt client1.key ta.key / etc / openvpn / client1

Acum, subdirectorul "client1" poate fi copiat în folderul de configurare al viitorului client la distanță Windows.

În principiu, în directorul / etc / openvpn / easy-rsa / keys / toate fișierele pot fi lăsate, doar în cazul în care :) Permisiunea de a accesa folderul openvpn este mai bine să actualizați la cele corecte:

# chown -R rădăcină: roată / etc / openvpn

Configurația serverului OpenVPN

Locul de amplasare fișier de configurare server: "/etc/openvpn/config/server.conf" (pentru Windows: "C: Programul FilesOpenVPNconfigserver.ovpn").

Exemplu de fișier de configurare pentru serverul OpenVPN (potrivit pentru Windows, Linux, FreeBSD cu modificări minime):

# pe site-ul dezvoltatorilor este recomandat să utilizați și UDP
# din motive de securitate
proto udp

ca "/etc/openvpn/keys/ca.crt"
cert "/etc/openvpn/keys/server.crt"
cheie "/etc/openvpn/keys/server.key" # Păstrați acest fișier secret!

#include autentificarea TLS
-server tls
# specificați tasta tls și specificați 0 pentru server și 1 pentru client
tls-auth "/etc/openvpn/keys/ta.key" 0
# timeout până la reconectare
tls-timeout 120
auth MD5

# setați ROUTE-ul la client
# și masca de subrețea pentru a putea "vedea"
# rețea în spatele serverului OpenVPN (rețea 192.168.10.0/24)
împinge "ruta 192.168.10.0 255.255.255.0"

ruta 192.168.10.0 255.255.255.0

# păstrați conexiunea (utilă atunci când lucrați prin nat, proxy, etc.)
păstrați 10 120

# permite codificarea pachetelor
cifră BF-CBC

# permite compresia (dacă există probleme cu conexiunea - dezactivați această opțiune pe client și pe server)
comp-LZO

# maxim de clienți
max-clienți 5

; nimeni nu foloseste
; nimeni de grup

# Nu recitiți cheile după primire
# SIGUSR1 sau ping-restart
persistă-cheie
# Nu închideți și redeschideți TUNTAP
# dispozitiv, după primire
# SIGUSR1 sau ping-restart
persistă-tun

# clienții se pot "vedea" reciproc
client-to-client

log "/etc/openvpn/log/openvpn.log"
log-append "/etc/openvpn/log/openvpn.log"

# Raportează nivelul detaliilor
verb 3

Note despre fișierul de configurare al serverului OpenVPN

În această configurație vor exista doar două diferențe în versiunile de server pentru Unix sau pentru Windows.

1. Calea de localizare a fișierelor de configurare, a certificatelor etc. în fișierul de configurare Windows trebuie să fie scrisă după cum urmează:

dh "C: Program FilesOpenvpnconfigdh1024.pem"

și în Linux / FreeBSD cum ar fi:

; nimeni nu foloseste
; nimeni de grup

utilizator nimeni nu utilizatorul nimeni
nu face nimeni nimeni

Cu config pentru server, în principiu, totul. Pentru a începe să lucrați, este suficient pentru configurația specificată mai sus.

Autostart a serverului OpenVPN în Linux / FreeBSD

#! / bin / sh
dir = / etc / openvpn / config
modprobe tun
echo 1> / proc / sys / net / ipv4 / ip_forward
openvpn --cd $ dir --daemon --config /etc/openvpn/config/server.conf
# Apropo, aici puteți rula mai multe servere OpenVPN în același timp:
# openvpn --cd $ dir --daemon --config /etc/openvpn/config/server2.conf

fie (de exemplu, în FreeBSD):

openvpn_enable = "DA"
openvpn_if = "tun" #
openvpn_configfile = "/ etc / openvpn / config / server.conf"
openvpn_dir = "/ etc / openvpn" # - directorul cd

Configurarea clientului OpenVPN pe Windows XP

Luăm fișiere client din directorul / etc / OpenVPN / client1 pe server și le copiați într-un dosar „C: Programul FilesOpenVPNconfig“ pe client.

Locație fișier de configurare Client: „C: Programul FilesOpenVPNconfigclient1.ovpn“ (pentru Linux / FreeBSD locație, cred că oriunde în directorul home al utilizatorului, de exemplu, „/home/vpn/client1.ovpn“).

Exemplu de fișier de configurare client OpenVPN:

ca "C: Program FilesOpenVPNconfigca.crt"
cert "C: Program FilesOpenVPNconfigclient1.crt"
cheie "C: Program FilesOpenVPNconfigclient1.key"

client-tls
tls-auth "C: Program FilesOpenVPNconfigta.key" 1
auth MD5

# Aceasta este o altă protecție, de data aceasta de la atacul "om în mijloc"
ns-cert de tip server

De asemenea, trebuie să configurați paravanul de protecție, astfel încât clienții externi ai OpenVPN să poată "vedea" rețeaua "în spatele NAT". Voi aduce o parte din configurațiile iptables ale gateway-ului CentOS / Squid care rulează (rețeaua internă 192.168.10.0/24):

Cu aceste configurații, clientul VPN poate funcționa cu computerele din rețeaua locală. Dacă aveți propriile idei despre iptables și setările de rutare - voi fi foarte recunoscător. Și cititorii. La urma urmei, dacă citești asta, probabil știți că acest subiect este rupt o mulțime de copii.

Revocarea certificatului client

Pentru a revoca certificatul oricărui client (de exemplu, dacă pierdeți o tabletă cu OpenVPN configurate), adică. Pentru a nu permite clientului să se conecteze la server folosind certificatul său, trebuie să faceți niște acțiuni simple.

# cd /etc/openvpn/easy-rsa/2.0/
#. /etc/openvpn/easy-rsa/2.0/vars
# ./reducerea unui client25


eroare 23 la 0 căutare aprofundată: certificatul revocat

După executarea cu succes a ultimei comenzi (ar trebui să vedeți ultima linie), în directorul va fi creat /etc/openvpn/easy-rsa/2.0/keys fișier crl.pem (CRL - lista de revocare certificate - o listă a certificatelor revocate). Copiați-l în directorul în care aveți alte fișiere legate de serverul OpenVPN care rulează. În teorie, acest director este / etc / openvpn. În orice caz, verificați existența vechiului directorul de fișiere crl.pem (există o bună practică - mai întâi face o copie de rezervă). Rețineți că echipa înseamnă căi relative, nu absolut:

# cp chei / crl.pem / etc / openvpn /

Și acum îi vom spune serverului nostru să verifice lista certificatelor revocate de fiecare dată când este conectat un nou client. Pentru aceasta, adăugați o linie la serverul config (poate /etc/openvpn/server.conf):

Reporniți serverul OpenVPN:

# service openvpn restart

Acum, chiar dacă nu ați șters cheile client client25 de la server, acesta nu va fi capabil să se conecteze.







Articole similare

Trimiteți-le prietenilor: