Nainštalujte a nakonfigurujte server OpenVPN na serveri CentOS 7

V tomto článku zvážime inštaláciu a konfiguráciu servera OpenVPN založeného na systéme Linux CentOS 7 a ukážeme, ako používať nakonfigurovaný server OpenVPN na pripojenie dvoch vzdialených počítačov (alebo kancelárií) umiestnených za sieťou NAT do jednej siete. Vykonávame autentifikáciu klientov VPN podľa certifikátov.

obsah:

  • Nainštalujte OpenVPN a Easy-RSA
  • Jednoduché nastavenie RSA a vydávanie certifikátov
  • Vytvárame kľúče a certifikáty pre server OpenVPN
  • Konfigurácia servera OpenVPN: konfiguračný súbor, firewall
  • Kombinujeme niekoľko kancelárií (počítačov) pomocou OpenVPN

VPN - Sada technológií, ktoré vám umožňujú vybudovať zabezpečenú sieť na verejných sieťach alebo na InterTet. Pomocou VPN môžete kombinovať segmenty siete oddelené od internetu do jednej miestnej siete..

OpenVPN - jedna z implementácií technológie otvoreného zdroja VPN založenej na SSL / TLS (na základe knižnice OpenSSL). Pomocou OpenVPN môžete kombinovať vzdialené kancelárie aj jednotlivé miestne počítače umiestnené za NAT do jednej siete.

Nainštalujte OpenVPN a Easy-RSA

Prvým krokom je pripojenie úložiska EPEL a aktualizácia systému:

yum install epel-release -y
yum update -y

Po aktualizácii systému musíte nainštalovať pomocou správcu balíkov yum OpenVPN a Easy-RSA (Budeme potrebovať implementáciu infraštruktúry PKI kľúčov na serveri VPN).

yum install openvpn easy-rsa -y

Jednoduché nastavenie RSA a vydávanie certifikátov

Skopírujte všetky skripty ľahko rsa do katalógu / etc / openvpn /:

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

Poďme do katalógu / etc / openvpn / easy-rsa / 3 / a vytvorte tam súbor Vars:

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

Pridajte obsah súboru (môžete ho opraviť sami):

set_var EASYRSA "$ PWD" 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-Company" set_var EASYRSA_REQ_EMAIL "[email protected]. ru "set_var EASYRSA_REQ_OU" IT oddelenia "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" nie "set_var EASYRSA_NS_COMMENT" certifikačnou autoritou "set_var EASYRSA_EXT_DIR" $ EASYRSA / X.509-types "set_var EASYRSA_SSL_CONF" $ EASYRSA / openssl-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "

Dáta v súbore môžu byť brané ľubovoľne, nebude to zasahovať do konfigurácie a ďalšej činnosti servera.

Súbor musí byť spustiteľný, postupujte takto:

chmod + x vars

Vytvárame kľúče a certifikáty pre server OpenVPN

Pred vytvorením kľúča musíme adresár inicializovať PKI a vytvorte kľúč CA.
cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki

Poznámka: pomocou konfigurácie Easy-RSA od: ./vars init-pki complete; teraz môžete vytvoriť CA alebo žiadosti. Váš novo vytvorený adresár PKI je: / etc / openvpn / easy-rsa / 3 / pki

Vytvorte kľúč CA:

./ easyrsa build-ca

Po spustení príkazu bude potrebné zadať heslo, aby sa vygenerovali certifikáty a kľúč. Na podpis certifikátov bude v budúcnosti potrebné heslo.

Vytvorte kľúč servera (názov servera server.vpn.ru):

voľba nopass - vypnúť heslo pre server.vpn.ru

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

Poznámka: pomocou konfigurácie Easy-RSA z: ./vars Používanie SSL: openssl OpenSSL 1.0.2k-fips 26. januára 2017 Generovanie 4096 bitového súkromného kľúča RSA ... ++ ... ++ písanie nového súkromného kľúča do '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Budete požiadaný o zadanie informácií, ktoré budú začlenené do vašej žiadosti o certifikát. Chystáte sa zadať to, čo sa nazýva Rozlišovacie meno alebo DN. Existuje niekoľko polí, ale niektoré môžete nechať prázdne. Pre niektoré polia bude predvolená hodnota. Ak zadáte „.“, Pole zostane prázdne. ----- Bežné meno (napr .: meno používateľa, hostiteľa alebo servera) [server.vpn.ru]: Žiadosť o kľúč a certifikát bola dokončená. Vaše súbory sú: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req kľúč: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .key

V procese vydávania osvedčenia v stĺpci Bežný názov kliknúť vstúpiť,.

Kľúč server.vpn.ru podpíšeme pomocou nášho certifikátu CA:

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

Pri podpisovaní certifikátu budete potrebovať heslo, ktoré sme nastavili pri vydávaní certifikátu CA:

Ako je uvedené na snímke obrazovky, v tomto procese budete musieť vstúpiť áno a heslo od CA.

Ak chcete overiť, či boli certifikáty vygenerované bez chýb, spustite príkaz:

# openssl overiť -CAfile pki / ca.crt pki / vydal / server.vpn.ru.crt

pki / vydal / server.vpn.ru.crt: OK

Všetky certifikáty servera OpenVPN boli vytvorené.

  • Koreňový certifikát sa nachádza: 'pki / ca.crt'
  • Súkromný kľúč servera sa nachádza: 'pki / private / server.vpn.ru.key'
  • Certifikát servera sa nachádza: 'pki / vydal / server.vpn.ru.crt'

Ak chcete vygenerovať kľúč klienta, musíte spustiť príkaz:

./ easyrsa meno gen-req klienta nopass

Vygenerujte kľúč klienta admin1:

# ./easyrsa gen-req admin1 nopass

Poznámka: pomocou konfigurácie Easy-RSA z: ./vars Používanie SSL: openssl OpenSSL 1.0.2k-fips 26. januára 2017 Generovanie 4096 bitového súkromného kľúča RSA ... ++ ... ++ písanie nového súkromného kľúča do '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- Budete požiadaný o zadanie informácií, ktoré budú začlenené do vašej žiadosti o certifikát. Chystáte sa zadať to, čo sa nazýva Rozlišovacie meno alebo DN. Existuje niekoľko polí, ale niektoré môžete nechať prázdne. Pre niektoré polia bude predvolená hodnota. Ak zadáte „.“, Pole zostane prázdne. ----- Bežné meno (napr .: meno používateľa, hostiteľa alebo servera) [admin1]: Žiadosť o kľúč a certifikát bola dokončená. Vaše súbory sú: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req kľúč: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

Rovnako ako v prípade servera, musíte ho podpísať pomocou certifikátu CA:

./ easyrsa sign-req klient admin1

Certifikát bol vytvorený pre používateľa.

Ďalej je potrebné vygenerovať kľúč Diffie-Hellman, ktorý sa použije pri výmene kľúčov:

./ easyrsa gen-dh

Vyrába sa na dlhú dobu:

Potom vygenerujeme certifikát TLS:

openvpn --genkey --secret ta.key

Ak plánujeme v budúcnosti odvolať klientske certifikáty, musíme vygenerovať kľúč CRL:

# ./easyrsa gen-crl

Poznámka: pomocou konfigurácie Easy-RSA z: ./vars Používanie SSL: openssl OpenSSL 1.0.2k-fips 26. januára 2017 Použitie konfigurácie z /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Zadajte prístupovú frázu pre /etc/openvpn/easy-rsa/3/pki/private/ca.key: Bol vytvorený aktualizovaný CRL. Súbor CRL: /etc/openvpn/easy-rsa/3/pki/crl.pem

Ak chcete certifikát odvolať, vykonajte príkaz:

./ easyrsa odvolať admin1 - kde admin1 toto je názov certifikátu

Vytvorili sa potrebné osvedčenia pre prácu, skopírujte ich do pracovných adresárov:

Certifikáty servera:

cp pki / ca.crt / etc / openvpn / server /
cp pki / vydal / server.vpn.ru.crt / etc / openvpn / server /
cp pki / private / server.vpn.ru.key / etc / openvpn / server /
cp pki / private / dh.pem / etc / openvpn / server /
cp pki / private / ta.key / etc / openvpn / server /
cp pki / crl.pem / etc / openvpn / server /

Certifikáty klientov:

cp pki / vydal / admin1.crt / etc / openvpn / client /
cp pki / private / admin1.key / etc / openvpn / client /

Konfigurácia servera OpenVPN: konfiguračný súbor, firewall

Poďme k nastaveniam konfiguračného súboru OpenVPN. Najprv vytvorte konfiguračný súbor OpenVPN server.conf:

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

Zmeňte obsah súboru na:

# Zadajte port, protokol a port zariadenia 1194 proto udp dev tun # Zadajte cestu k certifikátom servera ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt key / etc / openvpn /server/server.vpn.ru.key # Cesty k CRL a DH kľúčom dh /etc/openvpn/server/dh.pem crl-ověřit /etc/openvpn/server/crl.pem # Zadajte sieťové nastavenia IP, adresy, z ktorých VPN klienti dostanú server 15.10.2.0 255.255.255.0 push "redirect-gateway def1" # Špecifikujte cieľový server DNS push "dhcp-option DNS 77.88.8.8" push "dhcp-option DNS 8.8.4.4" # Povoliť rôznym klientom pripojenie, s rovnakým kľúčom duplikát-cn # TLS ochrana tls-auth /etc/openvpn/server/ta.key 0 šifra AES-256-CBC tls-version-min 1,2 tls-šifra TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-S-AES-256-CBC-SHA256: TLS-DHE-RSA-S-AES-128-GCM-SHA256: TLS-DHE-RSA-S-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Ďalšia konfigurácia keepalive 20 60 persist-key persist-tun comp-lzo áno užívateľ démona nikto skupina nikto # Cesta k súboru protokolu log-append /var/log/openvpn.log sloveso 3 

Potom súbor uložte. Zadal som štandardný port UDP 1194 pre server VPN, ale pre server OpenVPN môžete zadať ľubovoľný voľný port na serveri..

Zostáva nakonfigurovať pravidlá brány firewall, aby sa umožnilo pripojenie a smerovanie medzi segmentmi.

Ak používate Firewalld, musíte najskôr aktivovať modul jadra forwarding:

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

net.ipv4.ip_forward = 1

Pridajte službu openvpn do služby firewalld, a rozhranie tun0 do dôveryhodnej zóny

firewall-cmd - permanentný --add-service = openvpn
firewall-cmd - permanentný --zone = dôveryhodný --add-interface = tun0

Aktivujte „MASQUERADE“ pre dôveryhodnú zónu firewalld:
firewall-cmd - permanentný --zone = dôveryhodný - ad-maškaráda

Aktivujte NAT:

firewall-cmd - permanentný - priamy - priechod ipv4 -t nat -A POSTROUTING -s 15.10.2.0/24 -o Server IP -j MASQUERADE
firewall-cmd-reload

Ak používate iptables bez firewalld, potom musíte spustiť nasledujúce príkazy:

iptables -t nat -A POSTROUTING -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -port 1194 -j ACCEPT
služba iptables uložiť

Spustite OpenVPN a pridajte ho do spustenia systému Linux:

systemctl spustiť openvpn @ server
systemctl povoľte openvpn @ server

Skontrolujte, či služba nepočúva port 1194:

# lsof -i: 1194

PRÍKAZOVÝ PID POUŽÍVATEĽ FD TYP ZARIADENIA / VYPNUTÉ NODE NÁZOV NÁZOV openvpn 11887 nikto 5u IPv4 45892 0t0 UDP *: openvpn

Pozrime sa na nastavenia IP sieťového rozhrania:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .2.1 peer 15.10.2.2/32 rozsah globálny tun0 valid_lft navždy preferovaný_lft navždy inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 príznaky odkazu na smerovanie 800 valid_lft navždy preferovaný_ navždy

Ako vidíte, na zariadení tun0 sieť zadaná počas konfigurácie je pridaná.

Toto sú minimálne nastavenia, ktoré potrebujete, aby OpenVPN fungoval..

Kombinujeme niekoľko kancelárií (počítačov) pomocou OpenVPN

Zvážte, ako sa pripojiť k serveru OpenVPN z dvoch vzdialených počítačov, ktoré sú pripojené k internetu cez NAT, a medzi nimi zorganizovať spoločnú sieť. Na pripojenie z počítača so systémom Windows k serveru OpenVPN používam oficiálneho klienta vývojárov. Môžete si ho stiahnuť na oficiálnych webových stránkach, nebudeme sa zameriavať na to, ale pôjdeme rovno do nastavenia.

Po nainštalovaní klienta musíte ísť do konfiguračného súboru, ktorý musíte vytvoriť na ceste:

C: \ Program Files \ OpenVPN \ config \

Vytvoril som súbor zákazník a pridal k nemu nasledujúci obsah:

client dev tun proto udp remote 182.122.41.12 1194 resolv-retry nekonečný nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-tls server tls-client auth SHA512 tls-auth "C: \\ Program Files \\ OpenVPN \\ config \\ ta.key "1 remote-cert-eku" TLS Web Server Authentication "ca" C: \\ Program Files \\ OpenVPN \\ config \\ ca.crt "cert" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.crt "key" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.key "šifra AES-256-CBC comp-lzo sloveso 3

Na konfiguráciu potrebujeme skôr vytvorené klientske, bezpečnostné a serverové certifikáty. Musia byť stiahnuté zo servera a umiestnené do adresára, ktorý vám vyhovuje. Potom musíte zadať cestu k nim v konfiguračnom súbore klienta OpenVPN..

Po pripojení prostredníctvom zástupcu klienta Open VPN v paneli:

Pripojil som sa a získal som nasledujúcu IP adresu pre svoj počítač:

Adresa IPv4 ...: 10.15.2.14 Maska podsiete ...: 255.255.255.252

Na druhom počítači pre NAT som vykonal rovnaké kroky, po vytvorení certifikátu pre druhého používateľa, keď som pripojil druhé PC, dostal som tiež IP zo siete:

Adresa IPv4 ...: 15.10.2.6 Maska podsiete ...: 255.255.255.252

Po pripojení sú oba počítače v rovnakej sieti a navzájom sa vidia.

Spustite príkaz ping na druhom počítači:

Výmena paketov od 10,15.2.14 do 32 dátových bajtov: Odpoveď od 10.15.2.14: počet bajtov = 32 čas = 67 ms TTL = 127

Spustite príkaz ping na prvom počítači:

Výmena paketov z 10/15 / 2,6 na 32 bajtov údajov: Odpoveď z 10/15 / 2,6: počet bajtov = 32 čas = 71 ms TTL = 127

Obaja pripojení klienti VPN si môžu vymieňať pakety a priamo medzi sebou prenášať súbory. Takto sme dokázali spojiť dva počítače umiestnené v rôznych častiach krajiny do jednej miestnej siete.

Na serveri s OpenVPN môžete pre používateľov vytvárať neobmedzený počet kľúčov a certifikátov. Ak potrebujete nový certifikát, v adresári spustite nasledujúce príkazy / etc / openvpn / easy-rsa / 3:

./ easyrsa meno gen-req klienta nopass
./ easyrsa názov klienta pre prihlasovacie meno

Nezabudnite pravidelne odvolávať klientske certifikáty, ak sa nepoužívajú na ochranu vašich údajov.