Namestite in konfigurirajte strežnik OpenVPN na CentOS 7

V tem članku bomo razmislili o namestitvi in ​​konfiguriranju strežnika OpenVPN, ki temelji na Linux CentOS 7, in pokazali, kako uporabiti konfiguriran strežnik OpenVPN za povezavo dveh oddaljenih računalnikov (ali pisarn), ki se nahajajo za NAT, v eno omrežje. Izvedli bomo overjanje VPN odjemalcev v skladu s certifikati.

Vsebina:

  • Namestite OpenVPN in Easy-RSA
  • Enostavna namestitev RSA in izdaja certifikatov
  • Ustvarimo ključe in potrdila za strežnik OpenVPN
  • Konfiguriranje strežnika OpenVPN: konfiguracijska datoteka, požarni zid
  • Z OpenVPN združujemo več pisarn (računalnikov)

VPN - Nabor tehnologij, ki vam omogočajo, da zgradite varno omrežje na javnih omrežjih ali InterTetu. S pomočjo VPN-ja lahko združite internetne ločene segmente omrežja v eno lokalno omrežje..

Openvpn - ena od implementacij odprtokodne VPN tehnologije, ki temelji na SSL / TLS (temelji na knjižnici OpenSSL). Z uporabo OpenVPN lahko združite oddaljene pisarne in posamezne lokalne osebne računalnike, ki se nahajajo za NAT, v eno omrežje.

Namestite OpenVPN in Easy-RSA

Prvi korak je povezava skladišča EPEL in posodobitev sistema:

umestite epel-release -y
posodobitev -y

Ko je sistem posodobljen, ga morate namestiti z upraviteljem paketov yum Openvpn in Easy-RSA (potrebovali ga bomo za izvajanje infrastrukture PKI ključev na strežniku VPN).

yum namestite openvpn easy-rsa -y

Enostavna namestitev RSA in izdaja certifikatov

Kopirajte vse skripte enostavno-rsa v katalog / itd / openvpn /:

cp -r / usr / share / easy-rsa / itd / openvpn /

Pojdimo na katalog / etc / openvpn / easy-rsa / 3 / in tam ustvarite datoteko vars:

cd / etc / openvpn / easy-rsa / 3 /
nano vars

Dodajte vsebino datoteke (lahko jo popravite sami):

set_var EASYRSA "$ napotitvi delavcev" set_var EASYRSA_PKI "$ EASYRSA / PKI" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-podjetja" set_var EASYRSA_REQ_EMAIL "[email protected]. ru "set_var EASYRSA_REQ_OU" IT oddelek "set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT" ne "set_var EASYRSA_NS_COMMENT" POTRDILO ORGANA "set_var EASYRSA_EXT_DIR" $ EASYRSA / x509-vrste "set_var EASYRSA_SSL_CONF" $ EASYRSA / openssl-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "

Podatke v datoteki lahko vzamemo poljubno, to ne bo motilo nastavitve strežnika in nadaljnjega dela.

Datoteka mora biti izvršljiva, zato naredite:

chmod + x vars

Ustvarimo ključe in potrdila za strežnik OpenVPN

Pred ustvarjanjem ključa moramo inicializirati imenik PKI in ustvarite ključ CA.
cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki

Opomba: uporaba Easy-RSA konfiguracije iz: ./vars init-pki komplet; zdaj lahko ustvarite potrdilo o odobritvi ali zahteve. Vaš novo ustvarjeni PKI dir je: / etc / openvpn / easy-rsa / 3 / pki

Ustvari ključ CA:

./ easyrsa build-ca

Po zagonu ukaza bomo morali določiti geslo, da bodo potrdila in ključ generirani. V prihodnosti bo za podpisovanje potrdil potrebno geslo.

Ustvari strežniški ključ (ime strežnika server.vpn.ru):

možnost prehod - onemogoči geslo za server.vpn.ru

# ./easyrsa gen-req server.vpn.ru nopass

Opomba: uporaba konfiguracije Easy-RSA iz: ./vars Uporaba SSL: openssl OpenSSL 1.0.2k-fips 26. januar 2017 Ustvarjanje 4096 bitnega zasebnega ključa RSA ... ++ ... ++ pisanje novega zasebnega ključa v '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Od vas se bo zahtevalo, da vnesete podatke, ki bodo vključeni v vašo prošnjo za potrdilo. To, kar nameravate vnesti, je tisto, kar se imenuje Razlikovano ime ali DN. Polja je kar nekaj, vendar lahko pustite nekaj praznih. Za nekatera polja bo privzeta vrednost, če vnesete '.', Polje bo prazno. ----- Splošno ime (npr. Ime vašega uporabnika, gostitelja ali strežnika) [server.vpn.ru]: Zahteva za vnos ključa in potrdila je zaključena. Vaše datoteke so: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req ključ: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .key

V postopku izdaje potrdila, v stolpcu Splošno ime treba klikniti Vnesite,.

Ključ server.vpn.ru bomo podpisali s certifikatom CA:

./ easyrsa sign-req server server.vpn.ru

Ob podpisu potrdila boste potrebovali geslo, ki smo ga postavili pri izdaji potrdila CA:

Kot je navedeno na posnetku zaslona, ​​boste morali v postopek vnesti da in geslo od CA.

Če želite preveriti, ali so potrdila ustvarjena brez napak, zaženite ukaz:

# openssl preverite -CAfile pki / ca.crt pki / izdano / server.vpn.ru.crt

pki / izdano / server.vpn.ru.crt: V redu

Vsi certifikati OpenVPN strežnika so ustvarjeni.

  • Nahaja se korensko potrdilo: 'pki / ca.crt'
  • Zasebni ključ strežnika se nahaja: 'pki / private / server.vpn.ru.key'
  • Nahaja se potrdilo strežnika: 'pki / izdano / server.vpn.ru.crt'

Če želite ustvariti odjemalni ključ, morate zagnati ukaz:

./ easyrsa gen-req odjemalca ime nopass

Ustvari odjemalni ključ admin1:

# ./easyrsa gen-req admin1 nopass

Opomba: uporaba konfiguracije Easy-RSA iz: ./vars Uporaba SSL: openssl OpenSSL 1.0.2k-fips 26. januar 2017 Ustvarjanje 4096 bitnega zasebnega ključa RSA ... ++ ... ++ pisanje novega zasebnega ključa v '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- Naprotili vas bomo, da vnesete podatke, ki bodo vključeni v vašo prošnjo za potrdilo. To, kar nameravate vnesti, je tisto, kar se imenuje Razlikovano ime ali DN. Polja je kar nekaj, vendar lahko pustite nekaj praznih. Za nekatera polja bo privzeta vrednost, če vnesete '.', Polje bo prazno. ----- Splošno ime (npr .: ime vašega uporabnika, gostitelja ali strežnika) [admin1]: Zahteva za vnos ključa in potrdila je zaključena. Datoteke so: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req ključ: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

Tako kot pri strežniškem ključu ga morate podpisati s potrdilom CA:

./ easyrsa sign-req odjemalec admin1

Potrdilo izdelano za uporabnika.

Poleg tega morate ustvariti ključ Diffie-Hellman, ki bo uporabljen pri izmenjavi ključev:

./ easyrsa gen-dh

Dolgo nastaja:

Nato ustvarimo certifikat TLS:

openvpn --genkey --secret ta.key

Če nameravamo v prihodnje preklicati odjemalska potrdila, moramo ustvariti ključ CRL:

# ./easyrsa gen-crl

Opomba: uporaba konfiguracije Easy-RSA iz: ./vars Uporaba SSL: openssl OpenSSL 1.0.2k-fips 26. januar 2017 Uporaba konfiguracije iz /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Vnesite izraz za /etc/openvpn/easy-rsa/3/pki/private/ca.key: Posodobljen CRL je bil ustvarjen. Datoteka CRL: /etc/openvpn/easy-rsa/3/pki/crl.pem

Če želite preklicati potrdilo, izvedite ukaz:

./ easyrsa prekliče admin1 - kje admin1 to je ime potrdila

Ustvarjena so potrebna potrdila za delo, kopirajte jih v delovne imenike:

Potrdila strežnika:

cp pki / ca.crt / itd / openvpn / strežnik /
cp pki / izdano / server.vpn.ru.crt / itd / openvpn / server /
cp pki / private / server.vpn.ru.key / etc / openvpn / server /
cp pki / private / dh.pem / itd / openvpn / server /
cp pki / zasebno / ta.key / itd / openvpn / server /
cp pki / crl.pem / itd / openvpn / strežnik /

Potrdila stranke:

cp pki / izdano / admin1.crt / itd / openvpn / odjemalec /
cp pki / private / admin1.key / itd / openvpn / odjemalec /

Konfiguriranje strežnika OpenVPN: konfiguracijska datoteka, požarni zid

Pojdimo na nastavitve konfiguracijske datoteke OpenVPN. Najprej ustvarite konfiguracijsko datoteko OpenVPN server.conf:

cd / etc / openvpn / && nano server.conf

Vsebino datoteke spremenite v naslednje:

# Določite vrata, protokol in napravo 1194 proto udp dev tun # Določite pot do strežniških potrdil ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt tipka / etc / openvpn /server/server.vpn.ru.key # Poti do tipk CRL in DH dh /etc/openvpn/server/dh.pem crl-verify /etc/openvpn/server/crl.pem # Določite nastavitve omrežja IP, naslove iz katerih VPN odjemalci bodo prejemali strežnik 15.10.2.0 255.255.255.0 push "preusmeritev-prehod def1" # Določite ciljni DNS strežnik push "dhcp-opcija DNS 77.88.8.8" push "dhcp-opcija DNS 8.8.4.4" # Dovoli, da se različni odjemalci povežejo, z istim ključem dvojnik-cn # TLS zaščita tls-auth /etc/openvpn/server/ta.key 0 šifer AES-256-CBC tls-version-min 1,2 tls-cipher TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-WITH-AES-256-CBC-SHA256: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Druga konfiguracija keepalive 20 60 persist-key persist-tun comp-lzo da daemon uporabnik nihče nikogar nikdo # Pot do datoteke dnevnika log-dodaj /var/log/openvpn.log glagol 3 

Nato shranite datoteko. Določil sem standardna vrata UDP 1194 za strežnik VPN, za OpenVPN pa lahko določite katero koli prosto pristanišče na strežniku.

Ostaja konfigurirati pravila požarnega zidu, ki omogočajo povezavo in usmerjanje med segmenti.

Če uporabljate Firewalld, morate najprej aktivirati modul jedra posredovanje:

# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p

net.ipv4.ip_forward = 1

V storitev dodajte storitev openvpn firewalld, in vmesnik tun0 v zaupno cono

požarni zid-cmd - stalni --add-service = openvpn
požarni zid-cmd - stalni --zone = zaupanja vreden --add-vmesnik = tun0

Aktivirajte 'MASQUERADE' za zaupanja vredno območje firewalld:
požarni zid-cmd - stalni --zone = zaupanja vreden - add-maskarada

Aktiviraj NAT:

požarni zid-cmd - stalni - direkten - prehod skozi ipv4 -t nat -A POSTAVITEV -s 15.10.2.0/24 -o strežnik IP -j MASQUERADE
požarni zid-cmd -reload

Če uporabljate iptables brez firewalld, potem morate zagnati naslednje ukaze:

iptables -t nat -A POSTAVITEV -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -dport 1194 -j SPREJEM
storitve iptables shranite

Zaženite OpenVPN in ga dodajte v zagon Linuxa:

sistemctl zaženite openvpn @ strežnik
systemctl omogoči openvpn @ strežnik

Preverite, ali storitev 1194 posluša:

# lsof -i: 1194

KOMAND PID UPORABNIK FD VRSTA NAPRAVE VELIKOSTI / IZKLOPI NODE IME openvpn 11887 none 5u IPv4 45892 0t0 UDP *: openvpn

Preverimo nastavitve IP omrežnega vmesnika:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: mtu 1500 qdisc pfifo_fast stanje NEZNANO skupina privzeto qlen 100 link / none inet 15.10 .2.1 peer 15.10.2.2/32 obseg globalni tun0 valid_lft za vedno prednost_lft za vedno inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 zastavice povezave obsega 800 valid_lft za vedno prednost_lft za vedno

Kot lahko vidite, v napravi tun0 omrežje, določeno med konfiguracijo, je dodano.

To so minimalne nastavitve, ki jih morate narediti, da OpenVPN deluje..

Z OpenVPN združujemo več pisarn (računalnikov)

Razmislite, kako se povezati s strežnikom OpenVPN iz dveh oddaljenih računalnikov, ki sta z internetom povezana prek NAT, in med njima organizirati skupno omrežje. Za povezovanje z računalnikom Windows na strežnik OpenVPN uporabljam uradno stranko razvijalcev. Lahko ga prenesete na uradni spletni strani, na to se ne bomo osredotočili, ampak bomo šli naravnost v nastavitev.

Ko namestite odjemalca, morate iti v konfiguracijsko datoteko, ki jo morate ustvariti na poti:

C: \ programske datoteke \ OpenVPN \ config \

Ustvaril sem datoteko odjemalec in ji dodali naslednjo vsebino:

odjemalec dev tun proto udp daljinski 182.122.41.12 1194 resoluv-retry neskončen nobind block-zunaj-dns persist-key persist-tun mute-refy-opozoril daljinski-cert-tls strežnik tls-client auth SHA512 tls-auth "C: \\ Programske datoteke \\ OpenVPN \\ config \\ ta.key "1 daljinsko preverjanje pristnosti spletnega strežnika" ca "C: \\ Programske datoteke \\ OpenVPN \\ config \\ ca.crt" cert "C: \\ Programske datoteke \\ OpenVPN \\ config \\ admin1.crt "tipka" C: \\ Programske datoteke \\ OpenVPN \\ config \\ admin1.key "šifrant AES-256-CBC comp-lzo verb 3

Za konfiguracijo potrebujemo predhodno ustvarjene potrdila odjemalca, zaščite in strežnika. Prenesti jih je treba s strežnika in jih dati v priročno za vas imenik, po katerem morate v konfiguracijski datoteki odjemalca OpenVPN določiti pot do njih.

Ko se povežemo s bližnjico odjemalca Open VPN v pladnju:

Povezala sem se in dobila naslednji IP za svoj računalnik:

IPv4 naslov ...: 10.15.2.14 Maska podomrežja ...: 255.255.255.252

Na drugem računalniku za NAT sem izvedel enake korake, ko sem ustvaril potrdilo za drugega uporabnika, ko sem priključil drugi računalnik, sem prejel tudi IP iz omrežja:

IPv4 naslov ...: 15.10.2.6 Maska podomrežja ...: 255.255.255.252

Po povezavi sta oba računalnika v istem omrežju in se vidita.

Zaženite ping na drugem računalniku:

Paketna izmenjava od 10.15.2.14 do 32 podatkovnih bajtov: Odgovor od 10.15.2.14: število bajtov = 32 čas = 67 ms TTL = 127

Zaženite ping v prvem računalniku:

Paketna izmenjava od 10/15 / 2,6 do 32 bajtov podatkov: Odgovor od 10/15 / 2,6: število bajtov = 32 časa = 71 ms TTL = 127

Oba povezana odjemalca VPN lahko izmenjata pakete in neposredno prenašata datoteke. Tako smo lahko združili dva osebna računalnika, ki se nahajata v različnih delih države, v eno lokalno omrežje.

Na strežniku z OpenVPN lahko ustvarite neomejeno število ključev in potrdil za uporabnike. Če potrebujete nov certifikat, v imeniku zaženite naslednje ukaze / etc / openvpn / easy-rsa / 3:

./ easyrsa gen-req odjemalca ime nopass
./ ime odjemalca easyrsa sign-req

Ne pozabite občasno preklicati odjemalskih potrdil, če jih ne uporabljate za varovanje podatkov.