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 7.6. A zavedeme autentizaci OpenVPN založenou na certifikátech.
Předpoklady
- CentOS 7.6
- Oprávnění uživatele root
Co uděláme?
- 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
V tomto tutoriálu budeme používat nejnovější verzi serveru centos (7.5) a budeme používat OpenVPN 2.4 s easy-rsa 3. Před instalací balíčků OpenVPN a easy-rsa se ujistěte, že je úložiště 'epel' je nainstalován v systému. Pokud jej nemáte, nainstalujte repozitář epel pomocí příkazu yum níže.
yum install epel-release -y
Nyní nainstalujte OpenVPN 2.4 s easy-rsa 3 do systému.
yum install openvpn easy-rsa -y
Po dokončení instalace zkontrolujte verzi openvpn a easy-rsa.
openvpn --version
ls -lah /usr/share/easy-rsa/
OpenVPN 2.4 s easy-rsa 3 byla nainstalována.
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/' a zkopírujte skript 'easy-rsa'.
cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/
Nyní přejděte do adresáře 'easy-rsa/3/' a vytvořte nový soubor vars pomocí vim.
cd /etc/openvpn/easy-rsa/3/
vim vars
Níže vložte konfiguraci 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 protected]" 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-1.0.cnf" set_var EASYRSA_DIGEST "sha256"
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
Soubor vars pro nastavení Easy-RSA 3 byl vytvořen.
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/3'.
cd /etc/openvpn/easy-rsa/3/
Inicializace a sestavení CA
Před vytvořením jakýchkoli klíčů musíme inicializovat adresář PKI 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 =možnost deaktivace hesla 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 verify -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'.
Sestavení klientského klíče
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 verify -CAfile pki/ca.crt pki/issued/client01.crt
Sestavení klíče Diffie-Hellman
Tato akce zabere hodně času v závislosti na zvolené délce klíče a dostupné entropii na serveru. Budeme používat klíč délky, který definujeme v souboru 'vars'.
Vygenerujte klíč Diffie-Hellman pomocí příkazu níže.
./easyrsa gen-dh
Byl vygenerován DH klíč umístěný 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 vpn serveru více klientských certifikátů a chcete zrušit některý klíč, stačí jej zrušit pomocí příkazu easy-rsa.
Pokud chcete zrušit některý klíč, spusťte příkaz, jak je uvedeno níže.
./easyrsa revoke someone
A pak vygenerujte klíč CRL.
./easyrsa gen-crl
Soubor CRL PEM byl vygenerován v adresáři 'pki' - následuje příklad na mém serveru.
Kopírovat soubory certifikátů
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.key /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/
Krok 4 – Konfigurace OpenVPN
V tomto kroku vytvoříme novou konfiguraci 'server.conf' pro openvpn server.
Přejděte do adresáře '/etc/openvpn/' a vytvořte nový konfigurační soubor 'server.conf' pomocí vim.
cd /etc/openvpn/
vim server.conf
Zde vložte následující konfiguraci serveru 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.10.1.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 client to connect with 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 comp-lzo yes daemon user nobody group nobody # OpenVPN Log log-append /var/log/openvpn.log verb 3
Uložte a ukončete.
Konfigurace pro OpenVPN byla vytvořena.
Krok 5 – Povolení přesměrování portů a konfigurace brány firewall pro směrování
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 seznamu brány firewall a přidejte rozhraní 'tun0' do důvěryhodné zóny brány firewall.
firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0
Povolte 'MASQUERADE' na firewallu 'důvěryhodné' zóny.
firewall-cmd --permanent --zone=trusted --add-masquerade
Povolte NAT pro interní IP adresu OpenVPN '10.10.1.0/24' na externí IP adresu 'SERVERIP'.
SERVERIP=$(ip route get 84.200.69.80 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.10.1.0/24 -o $SERVERIP -j MASQUERADE
A znovu načtěte firewall.
firewall-cmd --reload
Přesměrování portů a směrování firewallu bylo dokončeno, nyní spusťte službu openvpn a povolte její automatické spouštění při každém spuštění systému.
systemctl start [email protected]
systemctl enable [email protected]
Zkontrolujte to pomocí příkazů níže.
netstat -plntu
systemctl status [email protected]
Server OpenVPN je spuštěn a běží na portu protokolu udp '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.
client dev tun proto udp remote 139.xx.xx.xx 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 lzo
nobind persist-key persist-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 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/*
scp [email protected]:/etc/openvpn/client01.tar.gz .
Krok 7 – Testování 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
Dvakrát klikněte na 'client01.tblk' a Tunnelblick automaticky rozpozná konfiguraci OpenVPN a poté importuje.
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.