GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat OpenVPN Server a klienta s Easy-RSA 3 na CentOS 8

OpenVPN je open-source aplikace, která vám umožňuje vytvořit zabezpečenou privátní síť přes veřejný internet. OpenVPN implementuje virtuální privátní síť (VPN) k vytvoření zabezpečeného připojení. OpenVPN K zajištění šifrování používá knihovnu OpenSSL a poskytuje několik autentizačních mechanismů, jako jsou předsdílené klíče založené na certifikátech a autentizace pomocí uživatelského jména a hesla.

V tomto tutoriálu vám ukážeme, jak krok za krokem nainstalovat a nakonfigurovat OpenVPN na CentOS 8 Server. A zavedeme autentizaci OpenVPN založenou na certifikátech.

Předpoklady

  • CentOS 8 Server
  • Oprávnění uživatele root

Co budeme dělat?

  • Nainstalujte OpenVPN a Easy-RSA
  • Nakonfigurujte Easy-RSA 3 Vars
  • Sestavte klíče OpenVPN
  • Nakonfigurujte OpenVPN Server
  • Nakonfigurujte bránu firewall a povolte přesměrování portů
  • Nastavení klienta
  • Testování

Krok 1 – Instalace OpenVPN a Easy-RSA

Nejprve přidáme úložiště EPEL (Extra Package for Enterprise Linux) a nainstalujeme nejnovější balíček OpenVPN a stáhneme skript easy-rsa do systému CentOS 8.

Nainstalujte úložiště EPEL pomocí příkazu dnf níže.

dnf install epel-release

Poté nainstalujte nejnovější balíček OpenVPN 2.4.7.

dnf install openvpn

Po dokončení instalace přejděte na '/etc/openvpn' a stáhněte si skript easy-rsa pomocí příkazu wget níže.

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

Nyní rozbalte soubor 'EasyRSA-unix-v3.0.6.tgz' a přejmenujte adresář 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

Balíček OpenVPN a skript easy-rsa byly nainstalovány do systému CentOS 8.

Krok 2 – Konfigurace Easy-RSA 3

V tomto kroku nakonfigurujeme easy-rsa 3 vytvořením nového souboru 'vars'. Soubor 'vars' obsahuje nastavení Easy-RSA 3.

Přejděte do adresáře '/etc/openvpn/easy-rsa/' a vytvořte nový skript vars pomocí editoru vim.

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

Níže vložte konfigurace 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" id "id" id "
set_var_province" JAKARTA " /> set_var easyrsa_req_city "jakarta"
set_var easyrsa_req_org "Hakase-labs Certificate Authority"
set_var easyrsa_req_email "[e-mail chráněn]"
set_var easyrsa_req_ou "haase-labs

se set_var

set_var easyrsa_algo rsa
set_var easyrsa_ca_expire 7500
set_var easyrsa_cert_expire 365
set_var easyrsa_ns_support "no"
easyrssa ”hhaserss” hakrssa “set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA 6" presha 2 presha > >

Uložte a ukončete.

Poznámka:

  • Změňte hodnoty proměnných podle potřeby.
  • Zvyšte „EASYRSA_KEY_SIZE“ pro lepší zabezpečení.
  • Změňte „EASYRSA_CA_EXPIRE“ a „EASYRSA_CERT_EXPIRE“.

Nyní udělejte soubor 'vars' spustitelný změnou oprávnění souboru.

chmod +x vars

Konfigurace easy-rsa 3 byla dokončena.

Krok 3 – Sestavení klíčů OpenVPN

V tomto kroku vytvoříme klíče OpenVPN na základě souboru „vars“ easy-rsa 3, který jsme vytvořili. Vytvoříme klíč CA, klíče serveru a klienta, soubor DH a CRL PEM.

Všechny tyto klíče vytvoříme pomocí příkazového řádku 'easyrsa'. Přejděte do adresáře '/etc/openvpn/easy-rsa/'.

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

- Inicializace a sestavení CA

Před vytvořením klíče serveru a klienta musíme inicializovat adresář PKI (Public Key Infrastructure) a sestavit klíč CA.

Spusťte adresář PKI a vytvořte klíč CA pomocí příkazu níže.

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

Nyní zadejte heslo pro váš klíč CA a získáte soubory 'ca.crt' a 'ca.key' v adresáři 'pki'.

- Klíč sestavení serveru

Nyní chceme sestavit klíč serveru a vytvoříme klíč serveru s názvem 'hakase-server'.

Sestavte klíč serveru 'hakase-server' pomocí příkazu níže.

./easyrsa gen-req hakase-server nopass

Poznámka:

  • nopass =volba pro zakáže heslo pro klíč 'hakase-server'.

A podepište klíč 'hakase-server' pomocí našeho certifikátu CA.

./easyrsa sign-req server hakase-server

Budete požádáni o heslo 'CA', zadejte heslo a stiskněte Enter. A získáte soubor certifikátu 'hakase-server.crt' v adresáři 'pki/issued/'.

Ověřte soubor certifikátu pomocí příkazu OpenSSL a ujistěte se, že nedošlo k chybě.

openssl ověřit -CAfile pki/ca.crt pki/issued/hakase-server.crt

Všechny klíče certifikátu serveru byly vytvořeny. Soukromý klíč serveru je umístěn na 'pki/private/hakase-server.key' a certifikát serveru na 'pki/issued/hakase-server.crt'.

- Klíč sestavení klienta

Nyní musíme vytvořit klíče pro klienta. Vygenerujeme nový klientský klíč s názvem 'client01'.

Vygenerujte klíč 'client01' pomocí příkazu níže.

./easyrsa gen-req client01 nopass

Nyní podepište klíč 'client01' pomocí našeho certifikátu CA, jak je uvedeno níže.

./easyrsa sign-req client client01

Zadejte „ano“ pro potvrzení žádosti o certifikát klienta a poté zadejte heslo CA.

Klientský certifikát s názvem 'client01' byl vygenerován, ověřte klientský certifikát pomocí příkazu openssl.

openssl ověřit -CAfile pki/ca.crt pki/issued/client01.crt

Ujistěte se, že nedošlo k chybě.

- Sestavení klíče Diffie-Hellman

Pro lepší zabezpečení je potřeba klíč Diffie-Hellman. A vygenerujeme DH klíč '2048' na základě konfiguračního souboru 'vars', který byl vytvořen nahoře.

Vygenerujte klíč Diffie-Hellman pomocí příkazu níže.

./easyrsa gen-dh

A byl vygenerován klíč DH, který se nachází v adresáři 'pki'.

- Volitelné:Vygenerujte klíč CRL

Pro odvolání klientského klíče bude použit klíč CRL (Certificate Revoking List). Pokud máte na svém serveru VPN více klientských certifikátů klientů a chcete někomu odebrat klíč, stačí jej zrušit pomocí příkazu easy-rsa.

Pokud chcete některý klíč zrušit, spusťte níže uvedený příkaz.

./easyrsa odvolat někoho

A pak vygenerujte klíč CRL.

./easyrsa gen-crl

Soubor CRL PEM byl vygenerován v adresáři 'pki' - níže je příklad na mém serveru.

- Kopírovat soubory certifikátu

Všechny certifikáty byly vygenerovány, nyní zkopírujte soubory certifikátů a soubory PEM.

Zkopírujte klíč serveru a certifikát.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server. klíč /etc/openvpn/server/

Kopírovat klient01 klíč a certifikát.

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

Zkopírujte klíč DH a CRL.

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

Všechny certifikáty pro server a klienta byly zkopírovány do každého adresáře.

Krok 4 – Konfigurace OpenVPN

V tomto kroku vytvoříme novou konfiguraci 'server.conf' pro server OpenVPN.

Přejděte do adresáře '/etc/openvpn/server/' a vytvořte nový konfigurační soubor 'server.conf' pomocí vim.

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

Zde vložte následující konfiguraci serveru OpenVPN.

# Port OpenVPN, protokol a Tun
port 1194
proto udp
dev tun

# Certifikát serveru OpenVPN – CA, klíč serveru a certifikát
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
klíč /etc/openvpn/server/hakase-server.key

#DH a klíč CRL
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Přesměrovat všechna připojení přes OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

# Pomocí DNS z https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Povolit více klientů pro připojení se stejným klíčem certifikátu
duplicate-cn

# Zabezpečení TLS
šifra AES-256-CBC
tls-version-min 1.2
tls -šifra TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TL S-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Jiná konfigurace
keepalive 20 60
persist-key
persist-tun
komprimovat lz4
démon
uživatel nikdo
skupina nikdo

# OpenVPN Log
log- připojit /var/log/openvpn.log
sloveso 3

Uložte a ukončete.

A konfigurace serveru OpenVPN byla vytvořena.

Krok 5 – Povolení přesměrování portů a konfigurace směrování v bráně Firewalld

V tomto kroku povolíme modul jádra pro předávání portů a nakonfigurujeme směrování 'Firewalld' pro OpenVPN.

Povolte modul jádra pro předávání portů spuštěním následujících příkazů.

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

Dále nakonfigurujte směrování pomocí brány Firewalld pro OpenVPN.

Přidejte službu OpenVPN do „veřejné“ a „důvěryhodné“ zóny brány firewall.

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

Poté přidejte 'tun0' do 'důvěryhodné' zóny.

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

Nyní povolte „MASQUERADE“ ve výchozím firewallu „veřejné“ zóny.

firewall-cmd --permanent --add-masquerade

Povolte NAT pro interní IP adresu OpenVPN '10.5.0.0/24' na externí IP adresu 'SERVERIP'.

SERVERIP=$(ip route získat 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 znovu načtěte firewall.

firewall-cmd --reload

Konfigurace směrování portů a firewallu byla dokončena, spusťte službu OpenVPN a povolte její automatické spouštění při každém spuštění systému.

systemctl start ope[e-mail protected]
systemctl enable [email protected]

Poté zkontrolujte službu OpenVPN pomocí příkazů níže.

netstat -plntu
stav systemctl [e-mail chráněn]

A dostanete výsledek, jak je uvedeno níže.

Výsledkem je, že služba OpenVPN běží na protokolu UDP s výchozím portem '1194'.

Krok 6 – Nastavení klienta OpenVPN

Přejděte do adresáře '/etc/openvpn/client' a vytvořte nový konfigurační soubor klienta openvpn 'client01.ovpn' pomocí vim.

cd /etc/openvpn/client
vim client01.ovpn

Zde vložte následující konfiguraci klienta OpenVPN.

klient
dev tun
proto udp

vzdálené xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
klíč client01.key

šifra 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
perist-tun
mute-replay-warnings
verb 3

Uložte a ukončete.

Nyní zkomprimujte adresář '/etc/openvpn/client' do souboru 'zip' nebo 'tar.gz' a stáhněte si komprimovaný soubor pomocí SCP z vašeho místního počítače.

Zkomprimujte adresář '/etc/openvpn/client' do souboru 'client01.tar.gz'.

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

Nyní si můžete stáhnout komprimovaný soubor OpenVPN pomocí FTP serveru nebo příkazu scp, jak je uvedeno níže.

scp [e-mail chráněný]:/etc/openvpn/client01.tar.gz .

Krok 7 – Připojte se k OpenVPN

Testování na klientech.

- V systému Linux

Nainstalujte balíček OpenVPN a pokud chcete konfiguraci GUI, nainstalujte OpenVPN network-manager.

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

Pokud se chcete připojit pomocí shellu terminálu, spusťte níže uvedený příkaz OpenVPN.

openvpn --config client01.ovpn

Když jste připojeni k OpenVPN, otevřete novou kartu terminálu a zkontrolujte připojení pomocí příkazu curl.

curl ifconfig.io

A získáte IP adresu serveru OpenVPN.

- V systému Mac OS

Stáhněte si Tunnelblick a nainstalujte jej.

Rozbalte soubor 'client01.tar.gz' a přejmenujte adresář 'client' na 'client01.tblk'.

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

Poklepejte na 'client01.tblk' a Tunnelblick automaticky rozpozná konfiguraci OpenVPN a poté provede import.

Nyní se připojte přes Tunnelblick na horní liště.

- V systému Windows

Stáhněte si klienta openvpn pro Windows a importujte konfiguraci.


Cent OS
  1. Jak nainstalovat OpenVPN na CentOS/RHEL 8

  2. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  3. Jak nainstalovat a nakonfigurovat OpenVPN Server na Ubuntu 20.04

  1. Jak nainstalovat OpenVPN na CentOS 7 nebo 8

  2. Jak nainstalovat a používat TeamSpeak Server na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Gitlab na CentOS 8

  1. Jak nainstalovat a nakonfigurovat VNC na CentOS 7

  2. Jak nainstalovat a nakonfigurovat server NFS na CentOS 8

  3. Jak nainstalovat a nakonfigurovat VNC na CentOS 8