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_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_ca_expire 7500
set_var easyrsa_cert_expire 365
set_var easyrsa_ns_support "no"
easyrssa ”hhaserss” hakrssa “
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.