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

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

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?

  1. Nainstalujte OpenVPN a Easy-RSA
  2. Nakonfigurujte Easy-RSA 3 Vars
  3. Sestavte klíče OpenVPN
  4. Nakonfigurujte OpenVPN Server
  5. Nakonfigurujte bránu firewall a povolte přesměrování portů
  6. Nastavení klienta
  7. 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.


Cent OS
  1. Jak nainstalovat a používat TeamSpeak Server na CentOS 7

  2. Jak nainstalovat OpenVPN na CentOS/RHEL 8

  3. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  1. Jak nainstalovat OpenVPN na CentOS 7 nebo 8

  2. Jak nainstalovat a nakonfigurovat Gitlab na CentOS 8

  3. Jak nainstalovat a nakonfigurovat OpenVPN Server na Ubuntu 20.04

  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