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
- Krok 1 - Nainštalujte OpenVPN a Easy-RSA
- Krok 2 – Nakonfigurujte Easy-RSA 3
Krok 3 - Vytvorte kľúče OpenVPN
- - Inicializácia a zostavenie CA
- - Vytvoriť kľúč servera
- - Vytvoriť kľúč klienta
- - Zostavte kľúč Diffie-Hellman
- - Voliteľné: Vygenerujte kľúč CRL
- - Skopírujte súbory certifikátov
Krok 7 - Pripojte sa k OpenVPN
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/