Ako nainštalovať OpenVPN server a klienta s Easy-RSA 3 na CentOS 8


Tento návod existuje pre tieto verzie OS

  • CentOS 8
  • CentOS 7.6
  • CentOS 7

Na tejto stránke

  1. Krok 1 - Nainštalujte OpenVPN a Easy-RSA
  2. Krok 2 – Nakonfigurujte Easy-RSA 3
  3. Krok 3 - Vytvorte kľúče OpenVPN

    1. - Inicializácia a zostavenie CA
    2. - Vytvoriť kľúč servera
    3. - Vytvoriť kľúč klienta
    4. - Zostavte kľúč Diffie-Hellman
    5. - Voliteľné: Vygenerujte kľúč CRL
    6. - Skopírujte súbory certifikátov
  4. Krok 4 - Nakonfigurujte OpenVPN
  5. Krok 5 – Povoľte presmerovanie portov a nakonfigurujte smerovanie v bráne Firewalld
  6. Krok 6 - Nastavenie klienta OpenVPN
  7. Krok 7 - Pripojte sa k OpenVPN

    1. - V systéme Linux
    2. - V systéme Mac OS
    3. - V systéme Windows
  8. Odkaz

OpenVPN je open-source aplikácia, ktorá vám umožňuje vytvoriť zabezpečenú súkromnú sieť cez verejný internet. OpenVPN implementuje virtuálnu súkromnú sieť (VPN) na vytvorenie zabezpečeného pripojenia. OpenVPN používa knižnicu OpenSSL na zabezpečenie šifrovania a poskytuje niekoľko mechanizmov autentifikácie, ako sú napríklad vopred zdieľané kľúče založené na certifikátoch a overenie používateľského mena/hesla.

V tomto návode vám ukážeme, ako krok za krokom nainštalovať a nakonfigurovať OpenVPN na serveri CentOS 8. A zavedieme overenie OpenVPN založené na certifikátoch.

Predpoklady

  • Server CentOS 8
  • Privilégiá root

Čo urobíme?

  • Nainštalujte OpenVPN a Easy-RSA
  • Konfigurácia Easy-RSA 3 Vars
  • Vytvorte kľúče OpenVPN
  • Nakonfigurujte server OpenVPN
  • Nakonfigurujte bránu firewall a povoľte presmerovanie portov
  • Nastavenie klienta
  • Testovanie

Krok 1 - Nainštalujte OpenVPN a Easy-RSA

Po prvé, pridáme úložisko EPEL (Extra Package for Enterprise Linux) a nainštalujeme najnovší balík OpenVPN a stiahneme skript easy-rsa do systému CentOS 8.

Nainštalujte úložisko EPEL pomocou príkazu dnf nižšie.

dnf install epel-release

Potom nainštalujte najnovší balík OpenVPN 2.4.7.

dnf install openvpn

Po dokončení inštalácie prejdite na '/etc/openvpn' a stiahnite si skript easy-rsa pomocou príkazu wget nižšie.

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Teraz rozbaľte súbor 'EasyRSA-unix-v3.0.6.tgz' a premenujte adresár na 'easy-rsa'.

tar -xf EasyRSA-unix-v3.0.6.tgz
mv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

Do systému CentOS 8 bol nainštalovaný balík OpenVPN a skript easy-rsa.

Krok 2 – Nakonfigurujte Easy-RSA 3

V tomto kroku nakonfigurujeme easy-rsa 3 vytvorením nového súboru 'vars'. Súbor „vars“ obsahuje nastavenia Easy-RSA 3.

Prejdite do adresára '/etc/openvpn/easy-rsa/' a vytvorte nový skript vars pomocou editora vim.

cd /etc/openvpn/easy-rsa/
vim vars

Nižšie prilepte konfigurácie vars easy-rsa 3.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email "
set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Uložiť a ukončiť.

Poznámka:

  • Zmeňte hodnoty premenných podľa potreby.
  • Zvýšte „EASYRSA_KEY_SIZE“ pre lepšie zabezpečenie.
  • Zmeňte „EASYRSA_CA_EXPIRE“ a „EASYRSA_CERT_EXPIRE“.

Teraz urobte súbor „vars“ spustiteľným zmenou povolenia súboru.

chmod +x vars

Konfigurácia easy-rsa 3 bola dokončená.

Krok 3 - Vytvorte kľúče OpenVPN

V tomto kroku vytvoríme kľúče OpenVPN na základe súboru easy-rsa 3 „vars“, ktorý sme vytvorili. Zostavíme kľúč CA, kľúče servera a klienta, súbor DH a CRL PEM.

Všetky tieto kľúče vytvoríme pomocou príkazového riadku „easyrsa“. Prejdite do adresára '/etc/openvpn/easy-rsa/'.

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

- Inicializácia a zostavenie CA

Pred vytvorením kľúča servera a klienta musíme inicializovať adresár PKI (Public Key Infrastructure) a zostaviť kľúč CA.

Spustite adresár PKI a vytvorte kľúč CA pomocou príkazu nižšie.

./easyrsa init-pki
./easyrsa build-ca

Teraz zadajte heslo pre váš kľúč CA a v adresári 'pki' získate súbory 'ca.crt' a 'ca.key'.

- Vytvoriť kľúč servera

Teraz chceme vytvoriť kľúč servera a vytvoríme kľúč servera s názvom 'hakase-server'.

Vytvorte kľúč servera „hakase-server“ pomocou príkazu nižšie.

./easyrsa gen-req hakase-server nopass

Poznámka:

  • nopass=voľba pre zakáže heslo pre kľúč 'hakase-server'.

A podpíšte kľúč 'hakase-server' pomocou nášho certifikátu CA.

./easyrsa sign-req server hakase-server

Budete požiadaní o heslo „CA“, zadajte heslo a stlačte kláves Enter. A dostanete súbor certifikátu 'hakase-server.crt' v adresári 'pki/issued/'.

Overte súbor certifikátu pomocou príkazu OpenSSL a uistite sa, že nedošlo k chybe.

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

Všetky kľúče certifikátov servera boli vytvorené. Súkromný kľúč servera sa nachádza na 'pki/private/hakase-server.key' a certifikát servera na 'pki/issued/hakase-server.crt'.

- Vytvoriť kľúč klienta

Teraz musíme vytvoriť kľúče pre klienta. Vygenerujeme nový kľúč klienta s názvom 'client01'.

Vygenerujte kľúč 'client01' pomocou príkazu nižšie.

./easyrsa gen-req client01 nopass

Teraz podpíšte kľúč 'client01' pomocou nášho certifikátu CA, ako je uvedené nižšie.

./easyrsa sign-req client client01

Zadajte „áno“ na potvrdenie žiadosti o certifikát klienta a potom zadajte heslo CA.

Klientsky certifikát s názvom 'client01' bol vygenerovaný, overte certifikát klienta pomocou príkazu openssl.

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Uistite sa, že nedošlo k chybe.

- Zostavte kľúč Diffie-Hellman

Pre lepšiu bezpečnosť je potrebný kľúč Diffie-Hellman. A vygenerujeme DH kľúč „2048“ na základe konfiguračného súboru „vars“, ktorý sa vytvoril navrchu.

Vygenerujte kľúč Diffie-Hellman pomocou príkazu nižšie.

./easyrsa gen-dh

A bol vygenerovaný kľúč DH, ktorý sa nachádza v adresári 'pki'.

- Voliteľné: Vygenerujte kľúč CRL

Na odvolanie klientskeho kľúča sa použije kľúč CRL (Certificate Revoking List). Ak máte na svojom serveri VPN viacero klientskych certifikátov klientov a chcete niekomu odstrániť kľúč, stačí ho odvolať pomocou príkazu easy-rsa.

Ak chcete odvolať nejaký kľúč, spustite príkaz nižšie.

./easyrsa revoke someone

A potom vygenerujte kľúč CRL.

./easyrsa gen-crl

Súbor CRL PEM bol vygenerovaný v adresári 'pki' - nasledujúci príklad je na mojom serveri.

- Skopírujte súbory certifikátov

Všetky certifikáty boli vygenerované, teraz skopírujte súbory certifikátov a súbory PEM.

Skopírujte kľúč servera a certifikát.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

Skopírujte kľúč a certifikát klienta01.

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/

Skopírujte kľúč DH a CRL.

cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Všetky certifikáty pre server a klienta boli skopírované do každého adresára.

Krok 4 - Nakonfigurujte OpenVPN

V tomto kroku vytvoríme novú konfiguráciu 'server.conf' pre server OpenVPN.

Prejdite do adresára '/etc/openvpn/server/' a vytvorte nový konfiguračný súbor 'server.conf' pomocou vim.

cd /etc/openvpn/server/
vim server.conf

Prilepte tam nasledujúcu konfiguráciu servera OpenVPN.

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun
# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key
#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem
# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"
# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"
#Enable multiple clients to connect with the same certificate key
duplicate-cn
# TLS Security
cipher 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
# Other Configuration
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody
# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

Uložiť a ukončiť.

A konfigurácia servera OpenVPN bola vytvorená.

Krok 5 – Povoľte presmerovanie portov a nakonfigurujte smerovanie v bráne Firewalld

V tomto kroku povolíme modul jadra na presmerovanie portov a nakonfigurujeme smerovanie 'Firewalld' pre OpenVPN.

Povoľte modul jadra na presmerovanie portov spustením nasledujúcich príkazov.

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

Ďalej nakonfigurujte smerovanie pomocou brány Firewalld pre OpenVPN.

Pridajte službu OpenVPN do „verejnej“ a „dôveryhodnej“ zóny brány firewall.

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn

Potom pridajte 'tun0' do 'dôveryhodnej' zóny.

firewall-cmd --permanent --zone=trusted --add-interface=tun0

Teraz povoľte „MASQUERADE“ na predvolenom firewalle „verejnej“ zóny.

firewall-cmd --permanent --add-masquerade

Povoľte NAT pre internú IP adresu OpenVPN '10.5.0.0/24' na externú IP adresu 'SERVERIP'.

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

A znova načítaj firewall.

firewall-cmd --reload

Port-forwarding a konfigurácia smerovania Firewallu bola dokončená, spustite službu OpenVPN a povoľte jej automatické spustenie pri každom štarte systému.

systemctl start openvpn-server@server
systemctl enable openvpn-server@server

Potom skontrolujte službu OpenVPN pomocou nižšie uvedených príkazov.

netstat -plntu
systemctl status openvpn-server@server

A dostanete výsledok, ako je uvedené nižšie.

Výsledkom je, že služba OpenVPN funguje na protokole UDP s predvoleným portom „1194“.

Krok 6 - Nastavenie klienta OpenVPN

Prejdite do adresára '/etc/openvpn/client' a vytvorte nový konfiguračný súbor klienta openvpn 'client01.ovpn' pomocou vim.

cd /etc/openvpn/client
vim client01.ovpn

Prilepte tam nasledujúcu konfiguráciu klienta OpenVPN.

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
ca ca.crt
cert client01.crt
key client01.key
cipher AES-256-CBC
auth SHA512
auth-nocache
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
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Uložiť a ukončiť.

Teraz komprimujte adresár '/etc/openvpn/client' do súboru 'zip' alebo 'tar.gz' a stiahnite si komprimovaný súbor pomocou SCP z vášho lokálneho počítača.

Komprimujte adresár '/etc/openvpn/client' do súboru 'client01.tar.gz'.

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Teraz si môžete stiahnuť komprimovaný súbor OpenVPN pomocou servera FTP alebo príkazu scp, ako je uvedené nižšie.

scp [email :/etc/openvpn/client01.tar.gz .

Krok 7 - Pripojte sa k OpenVPN

Testovanie na klientoch.

- V systéme Linux

Nainštalujte balík OpenVPN a ak chcete konfiguráciu GUI, nainštalujte správcu siete OpenVPN.

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

Ak sa chcete pripojiť pomocou shellu terminálu, spustite príkaz OpenVPN nižšie.

openvpn --config client01.ovpn

Keď ste pripojení k OpenVPN, otvorte novú kartu terminálu a skontrolujte pripojenie pomocou príkazu curl.

curl ifconfig.io

A získate IP adresu servera OpenVPN.

- V systéme Mac OS

Stiahnite si Tunnelblick a nainštalujte ho.

Rozbaľte súbor 'client01.tar.gz' a premenujte adresár 'client' na 'client01.tblk'.

tar -xzvf client01.tar.gz
mv client client01.tblk

Dvakrát kliknite na 'client01.tblk' a Tunnelblick automaticky zistí konfiguráciu OpenVPN a potom importuje.

Teraz sa pripojte cez Tunnelblick na hornej lište.

- V systéme Windows

Stiahnite si klienta openvpn pre Windows a importujte konfiguráciu.

Odkaz

  • https://openvpn.net/