Nastavení serveru OpenVPN na CentOS 8
Nainstalujte úložiště EPEL
Nejnovější balíčky OpenVPN poskytují úložiště EPEL na CentOS 8 a dalších podobných derivátech. EPEL lze nainstalovat na CentOS 8 spuštěním příkazu níže;
dnf install epel-release -y
Nainstalujte OpenVPN na CentOS 8
Jakmile jsou repozitáře EPEL na místě, můžete nyní nainstalovat balíček OpenVPN na CentOS 8 provedením příkazu níže;
dnf install openvpn
Nainstalujte Easy-RSA CA Utility na CentOS 8
Balíček Easy-RSA je nástroj CA založený na shellu, který se používá ke generování párů klíčů SSL, které se používají k zabezpečení připojení VPN.
dnf install easy-rsa
Vytvoření infrastruktury veřejného klíče OpenVPN
Prvním krokem při nastavování serveru OpenVPN je vytvoření PKI, které se skládá z veřejných a soukromých klíčů pro server OpenVPN a připojujících se klientů a hlavního certifikátu certifikační autority a soukromého klíče pro podepisování certifikátů serveru OpenVPN a klientských certifikátů. Pokud je to možné, měli byste z bezpečnostních důvodů vytvořit PKI na samostatném serveru se systémem OpenVPN.
Inicializovat PKI
Easy-RSA se používá pro správu PKI. Skripty Easy-RSA se instalují pod /usr/share/easy-rsa
adresář.
Abyste zajistili, že v případě upgradu nebude jakákoli provedená konfigurace Easy-RSA přepsána, zkopírujte skripty do jiného adresáře, nejlépe do /etc
adresář.
mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/
Jakmile jsou skripty na místě, přejděte do adresáře a inicializujte PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Vygenerujte certifikát a klíč certifikační autority (CA)
Dále vygenerujte certifikát CA a klíč, který se bude používat k podepisování certifikátů, spuštěním příkazů níže v adresáři Easy-RSA výše.
./easyrsa build-ca
Zobrazí se výzva k zadání přístupového hesla klíče CA a běžného názvu serveru.
Using SSL: openssl OpenSSL 1.1.1c FIPS 28 May 2019 Enter New CA Key Passphrase: ENTER PASSWORD Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD Generating RSA private key, 2048 bit long modulus (2 primes) ...................................................................+++++ .+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 140160794502976:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: Kifarunix-CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/easy-rsa/pki/ca.crt
Certifikát CA je uložen na /etc/easy-rsa/pki/ca.crt
.
Vygenerujte parametry Diffie Hellmana
Ve stejném adresáři Easy-RSA jako výše spusťte příkaz níže a vygenerujte soubor klíče Diffie-Hellman, který lze použít pro výměnu klíčů během navázání spojení TLS s připojováním klientů.
./easyrsa gen-dh
Dokončení příkazu bude chvíli trvat. Poté uloží parametry DH na /etc/easy-rsa/pki/dh.pem
soubor.
Vygenerujte certifikát a klíč serveru OpenVPN
Chcete-li vygenerovat certifikát a soukromý klíč pro server OpenVPN, spusťte níže uvedený příkaz;
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Po spuštění příkazu budete vyzváni k zadání výše vytvořené přístupové fráze klíče CA.
nopass
zakáže použití přístupové fráze.
Vygenerování klíče ověřovacího kódu zprávy založeného na hash (HMAC)
Chcete-li vygenerovat předsdílený ověřovací klíč TLS/SSL, který bude použit k přidání dalšího podpisu HMAC ke všem paketům handshake SSL/TLS, aby se zabránilo útoku DoS a zahlcení portů UDP, spusťte níže uvedený příkaz;
openvpn --genkey --secret /etc/easy-rsa/pki/ta.key
Vygenerujte certifikát o zrušení
Chcete-li zneplatnit dříve podepsaný certifikát, musíte vygenerovat certifikát o zrušení.
./easyrsa gen-crl
Certifikát zneplatnění je uložen jako /etc/easy-rsa/pki/crl.pem
.
Zkopírujte certifikáty a klíče serveru do adresáře serveru
Dále zkopírujte všechny vygenerované certifikáty/klíče do konfiguračního adresáře serveru OpenVPN.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
Vygenerujte klientský certifikát a klíč OpenVPN
Chcete-li vygenerovat klientský certifikát a soukromý klíč OpenVPN, spusťte níže uvedený příkaz;
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
kde koromicha je jméno klienta, pro kterého jsou generovány certifikáty a klíče. Vždy používejte jedinečný společný název pro každého klienta, pro kterého generujete certifikát a klíče.
Chcete-li vygenerovat pro druhého klienta,
./easyrsa build-client-full johndoe nopass
Zkopírujte klientské certifikáty a klíče do adresáře klientů
Vytvořte adresář pro každého klienta v adresáři klienta OpenVPN
mkdir /etc/openvpn/client/{koromicha,johndoe}
Dále zkopírujte všechny klientem vygenerované certifikáty/klíče a certifikát CA do konfiguračního adresáře klienta OpenVPN. Můžete
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
Nakonfigurujte OpenVPN Server na CentOS 8
OpenVPN je dodáván s ukázkovým konfiguračním souborem v adresáři dokumentace. Zkopírujte soubor do /etc/openvpn/server/
a upravte jej tak, aby vyhovoval vašim potřebám.
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
Otevřete konfiguraci pro úpravu.
vim /etc/openvpn/server/server.conf
Soubor je vysoce komentovaný. Přečtěte si komentáře pro každou možnost konfigurace.
V nejzákladnější podobě jsou níže naše konfigurační možnosti bez komentářů.
port 1194 proto udp4 dev tun ca ca.crt cert issued/server.crt key private/server.key # This file should be kept secret dh dh.pem topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 192.168.10.3" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512
Po dokončení úprav uložte a ukončete konfiguraci.
Chcete svým klientům OpenVPN přiřadit pevné/statické IP adresy? Postupujte podle níže uvedeného průvodce;
Přiřaďte klientům OpenVPN statické IP adresy
Vytvořte adresář protokolu;
mkdir /var/log/openvpn/
Prozkoumejte konfiguraci a proveďte další jemné doladění, aby vyhovovala vašim potřebám.
Nakonfigurujte směrování serveru OpenVPN
Abyste zajistili, že provoz z klienta bude směrován přes IP adresu serveru (pomáhá maskovat IP adresu klienta), musíte na serveru OpenVPN povolit předávání IP;
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Spusťte níže uvedený příkaz, abyste provedli změny bez restartování serveru.
sysctl --system
Povolit port služby OpenVPN přes firewall
firewall-cmd --add-port=1194/udp --permanent
Aktivovat IP Masquerading
firewall-cmd --add-masquerade --permanent
Předat provoz přijatý na zadané podsíti OpenVPN, například v našem případě 10.8.0.0/24, na rozhraní, přes které se budou odesílat pakety.
Chcete-li najít rozhraní, přes které jsou pakety odesílány, spuštěním příkazu níže;
ip route get 8.8.8.8
8.8.8.8 via 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0
Název rozhraní a definovaná podsíť se mohou ve vašem případě lišit. Vyměňte je odpovídajícím způsobem.
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s3 -j MASQUERADE
Znovu načtěte firewall, aby se změny projevily.
firewall-cmd --reload
Spusťte a nastavte spuštění OpenVPN při spouštění systému.
systemctl enable --now [email protected]
Když služba OpenVPN běží, vytvoří tunelové rozhraní, tun0;
ip add s
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::2ed5:8f74:c456:96b7/64 scope link stable-privacy valid_lft forever preferred_lft forever
Kontrola protokolů;
tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed
Váš OpenVPN Server je nyní v provozu. Tím se dostáváme na konec našeho průvodce, jak nainstalovat a nastavit OpenVPN Server na CentOS 8.
Nyní můžete přistoupit ke konfiguraci klientů OpenVPN;
Nainstalujte a nakonfigurujte klienta OpenVPN na CentOS 8/Ubuntu 18.04
Nakonfigurujte ověřování založené na OpenVPN LDAP.
Nakonfigurujte OpenVPN LDAP Based Authentication
Související výukový program
Nakonfigurujte IPSEC VPN pomocí StrongSwan na Ubuntu 18.04
Nakonfigurujte klienta strongSwan VPN na Ubuntu 18.04/CentOS 8
Připojte se k Cisco VPN pomocí souboru PCF na Ubuntu