Nainstalujte a nakonfigurujte server OpenVPN na CentOS 7

V tomto článku zvážíme instalaci a konfiguraci serveru OpenVPN založeného na systému Linux CentOS 7 a ukážeme, jak pomocí nakonfigurovaného serveru OpenVPN propojit dva vzdálené počítače (nebo kanceláře) umístěné za NAT do jedné sítě. Provedeme autentizaci klientů VPN podle certifikátů.

Obsah:

  • Nainstalujte OpenVPN a Easy-RSA
  • Snadné nastavení RSA a vydávání certifikátů
  • Vytváříme klíče a certifikáty pro server OpenVPN
  • Konfigurace serveru OpenVPN: konfigurační soubor, firewall
  • Kombinujeme několik kanceláří (počítačů) pomocí OpenVPN

VPN - Sada technologií, které vám umožní vybudovat zabezpečenou síť na veřejných sítích nebo na InterTetu. Pomocí VPN můžete kombinovat segmenty sítě oddělené od Internetu do jediné místní sítě..

Openvpn - jedna z implementací technologie open source VPN založené na SSL / TLS (na bázi knihovny OpenSSL). Pomocí OpenVPN můžete kombinovat vzdálené kanceláře i jednotlivé místní počítače umístěné za NAT do jediné sítě.

Nainstalujte OpenVPN a Easy-RSA

Prvním krokem je připojení úložiště EPEL a aktualizace systému:

yum install epel-release -y
yum update -y

Po aktualizaci systému je třeba nainstalovat pomocí správce balíků yum Openvpn a Easy-RSA (Budeme potřebovat implementaci infrastruktury PKI klíčů na serveru VPN).

yum install openvpn easy-rsa -y

Snadné nastavení RSA a vydávání certifikátů

Zkopírujte všechny skripty snadný-rsa do katalogu / etc / openvpn /:

cp -r / usr / share / easy-rsa / etc / openvpn /

Pojďme do katalogu / etc / openvpn / easy-rsa / 3 / a vytvořte tam soubor vars:

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

Přidejte obsah souboru (můžete jej opravit sami):

set_var EASYRSA "$ PWD" set_var EASYRSA_PKI "$ EASYRSA / PKI" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Company" set_var EASYRSA_REQ_EMAIL „[email protected]. ru "set_var EASYRSA_REQ_OU" IT oddělení "set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO RSA set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT" ne "set_var EASYRSA_NS_COMMENT" certifikační autoritou "set_var EASYRSA_EXT_DIR" $ EASYRSA / X.509-types "set_var EASYRSA_SSL_CONF" $ EASYRSA / openssl-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "

Data v souboru lze brát libovolně, nebude to zasahovat do nastavení serveru a dále pracovat.

Soubor musí být spustitelný, postupujte takto:

chmod + x vars

Vytváříme klíče a certifikáty pro server OpenVPN

Před vytvořením klíče musíme adresář inicializovat PKI a vytvořit klíč CA.
cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki

Poznámka: pomocí konfigurace Easy-RSA od: ./vars init-pki kompletní; Nyní můžete vytvořit certifikační úřad nebo žádosti. Váš nově vytvořený adresář PKI je: / etc / openvpn / easy-rsa / 3 / pki

Vytvořte klíč CA:

./ easyrsa build-ca

Po spuštění příkazu musíme zadat heslo, aby byly vygenerovány certifikáty a klíč. K podpisu certifikátů bude v budoucnu vyžadováno heslo.

Vytvořte klíč serveru (název serveru server.vpn.ru):

možnost nopass - vypněte heslo pro server.vpn.ru

# ./easyrsa gen-req server.vpn.ru nopass

Poznámka: pomocí konfigurace Easy-RSA z: ./vars Použití SSL: openssl OpenSSL 1.0.2k-fips 26. ledna 2017 Generování 4096bitového soukromého klíče RSA ... ++ ... ++ zápis nového soukromého klíče do '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Chystáte se požádat o zadání informací, které budou začleněny do vaší žádosti o certifikát. Chystáte se zadat, co se nazývá Rozlišovací jméno nebo DN. Existuje poměrně málo polí, ale můžete nechat některá pole prázdná. Pro některá pole bude výchozí hodnota. Pokud zadáte „.“, Pole zůstane prázdné. ----- Obecný název (např .: jméno uživatele, hostitele nebo serveru) [server.vpn.ru]: žádost o klíč a certifikát byla dokončena. Vaše soubory jsou: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req klíč: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .key

V procesu vydávání certifikátu ve sloupci Obecný název musíte kliknout Vstoupit,.

Klíč server.vpn.ru podepíšeme pomocí našeho certifikátu CA:

./ easyrsa sign-req server server.vpn.ru

Při podpisu certifikátu budete potřebovat heslo, které jsme nastavili při vydávání certifikátu CA:

Jak je uvedeno na snímku obrazovky, v tomto procesu budete muset zadat ano a heslo od CA.

Chcete-li ověřit, že certifikáty byly vygenerovány bez chyb, spusťte příkaz:

# openssl ověřit -CAfile pki / ca.crt pki / vydal / server.vpn.ru.crt

pki / vydal / server.vpn.ru.crt: OK

Byly vytvořeny všechny certifikáty serveru OpenVPN.

  • Kořenový certifikát je umístěn: 'pki / ca.crt'
  • Soukromý klíč serveru je umístěn: 'pki / private / server.vpn.ru.key'
  • Nalezen certifikát serveru: 'pki / vydal / server.vpn.ru.crt'

Chcete-li vygenerovat klíč klienta, musíte spustit příkaz:

./ easyrsa jméno klienta gen-req nopass

Vygenerujte klíč klienta admin1:

# ./easyrsa gen-req admin1 nopass

Poznámka: pomocí konfigurace Easy-RSA z: ./vars Použití SSL: openssl OpenSSL 1.0.2k-fips 26. ledna 2017 Generování 4096bitového soukromého klíče RSA ... ++ ... ++ zápis nového soukromého klíče do '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- Chystáte se požádat o zadání informací, které budou začleněny do vaší žádosti o certifikát. Chystáte se zadat, co se nazývá Rozlišovací jméno nebo DN. Existuje poměrně málo polí, ale můžete nechat některá pole prázdná. Pro některá pole bude výchozí hodnota. Pokud zadáte „.“, Pole zůstane prázdné. ----- Obecný název (např .: jméno uživatele, hostitele nebo serveru) [admin1]: žádost o klíč a certifikát byla dokončena. Vaše soubory jsou: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req klíč: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

Stejně jako u klíče serveru jej musíte podepsat pomocí certifikátu CA:

./ easyrsa sign-req klient admin1

Certifikát byl vytvořen pro uživatele.

Dále je třeba vygenerovat klíč Diffie-Hellman, který bude použit při výměně klíčů:

./ easyrsa gen-dh

Generuje se na dlouhou dobu:

Poté vygenerujeme certifikát TLS:

openvpn --genkey --secret ta.key

Pokud plánujeme v budoucnu zrušit klientské certifikáty, musíme vygenerovat klíč CRL:

# ./easyrsa gen-crl

Poznámka: pomocí konfigurace Easy-RSA z: ./vars Použití SSL: openssl OpenSSL 1.0.2k-fips 26. ledna 2017 Použití konfigurace z /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Zadejte přístupovou frázi pro /etc/openvpn/easy-rsa/3/pki/private/ca.key: Byl vytvořen aktualizovaný seznam CRL. Soubor CRL: /etc/openvpn/easy-rsa/3/pki/crl.pem

Chcete-li certifikát zrušit, spusťte příkaz:

./ easyrsa odvolá admin1 - kde admin1 to je název certifikátu

Byly vytvořeny potřebné certifikáty pro práci, zkopírujte je do pracovních adresářů:

Certifikáty serveru:

cp pki / ca.crt / etc / openvpn / server /
cp pki / vydal / server.vpn.ru.crt / etc / openvpn / server /
cp pki / private / server.vpn.ru.key / etc / openvpn / server /
cp pki / private / dh.pem / etc / openvpn / server /
cp pki / private / ta.key / etc / openvpn / server /
cp pki / crl.pem / etc / openvpn / server /

Klientské certifikáty:

cp pki / vydal / admin1.crt / etc / openvpn / client /
cp pki / private / admin1.key / etc / openvpn / client /

Konfigurace serveru OpenVPN: konfigurační soubor, firewall

Pojďme k nastavení konfiguračního souboru OpenVPN. Nejprve vytvořte konfigurační soubor OpenVPN server.conf:

cd / etc / openvpn / && nano server.conf

Změňte obsah souboru na následující:

# Určete port, protokol a port zařízení 1194 proto udp dev tun # Určete cestu k certifikátu serveru ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt key / etc / openvpn /server/server.vpn.ru.key # Cesty k CRL a DH klíčům dh /etc/openvpn/server/dh.pem crl-ověřit /etc/openvpn/server/crl.pem # Určete nastavení sítě IP, adresy, ze kterých Klienti VPN budou přijímat server 15.10.2.0 255.255.255.0 push "redirect-gateway def1" # Určete cílový server DNS push "dhcp-option DNS 77.88.8.8" push "dhcp-option DNS 8.8.4.4" # Povolí připojení různým klientům, se stejným klíčem duplikát-cn # TLS ochrana tls-auth /etc/openvpn/server/ta.key 0 šifra AES-256-CBC tls-version-min 1,2 tls-šifra TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-S-AES-256-CBC-SHA256: TLS-DHE-RSA-S-AES-128-GCM-SHA256: TLS-DHE-RSA-S-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Další konfigurace keepalive 20 60 persist-key persist-tun comp-lzo ano démon uživatel nikdo skupina nikdo # Cesta k souboru protokolu log-append /var/log/openvpn.log sloveso 3 

Poté soubor uložte. Pro VPN server jsem specifikoval standardní port UDP 1194, ale pro OpenVPN můžete zadat libovolný volný port na serveru.

Zbývá nakonfigurovat pravidla brány firewall, aby umožňovala připojení a směrování mezi segmenty.

Pokud používáte Firewalld, musíte nejprve aktivovat modul jádra spedice:

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

net.ipv4.ip_forward = 1

Přidejte službu openvpn do firewalld, a rozhraní tun0 do důvěryhodné zóny

firewall-cmd - permanentní --add-service = openvpn
firewall-cmd - stálý --zone = důvěryhodný --add-interface = tun0

Aktivujte „MASQUERADE“ pro důvěryhodnou zónu firewalld:
firewall-cmd - permanentní --zone = důvěryhodný - ad-maškaráda

Aktivovat NAT:

firewall-cmd - permanentní - přesměrování - passthrough ipv4 -t nat -A POSTROUTING -s 15.10.2.0/24 -o IP adresa serveru -j MASQUERADE
firewall-cmd-reload

Pokud používáte iptables bez firewalld, musíte spustit následující příkazy:

iptables -t nat -A POSTROUTING -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -port 1194 -j ACCEPT
služba iptables uložit

Spusťte OpenVPN a přidejte jej do spuštění Linuxu:

systemctl spusťte openvpn @ server
systemctl povolit openvpn @ server

Zkontrolujte, zda služba neposlouchá port 1194:

# lsof -i: 1194

COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAME NÁZV openvpn 11887 nikdo 5u IPv4 45892 0t0 UDP *: openvpn

Zkontrolujte nastavení IP síťového rozhraní:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .2.1 peer 15.10.2.2/32 obor globální tun0 valid_lft navždy preferovaný_lft navždy inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 příznaky odkazu na 800 800 valid_lft navždy preferovaný_vždy navždy

Jak vidíte, na zařízení tun0 je přidána síť zadaná během konfigurace.

Toto je minimální nastavení, které musíte provést, aby OpenVPN fungoval..

Kombinujeme několik kanceláří (počítačů) pomocí OpenVPN

Zvažte, jak se připojit k serveru OpenVPN ze dvou vzdálených počítačů, které jsou připojeny k Internetu přes NAT, a uspořádat mezi nimi společnou síť. Pro připojení z počítače se systémem Windows k serveru OpenVPN používám oficiálního klienta od vývojářů. Můžete si ji stáhnout na oficiálních webových stránkách, nebudeme se na to zaměřovat, ale půjdeme rovnou k nastavení.

Po instalaci klienta musíte jít do konfiguračního souboru, který musíte vytvořit na cestě:

C: \ Program Files \ OpenVPN \ config \

Vytvořil jsem soubor klient a přidal k němu následující obsah:

client dev tun proto udp remote 182.122.41.12 1194 resolv-retry nekonečný nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-tls server tls-client auth SHA512 tls-auth "C: \\ Program Files \\ OpenVPN \\ config \\ ta.key "1 remote-cert-eku" TLS Web Server Authentication "ca" C: \\ Program Files \\ OpenVPN \\ config \\ ca.crt "cert" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.crt "key" C: \\ Program Files \\ OpenVPN \\ config \\ admin1.key "cipher AES-256-CBC comp-lzo sloveso 3

Ke konfiguraci potřebujeme dříve vytvořené klientské, bezpečnostní a serverové certifikáty. Musí být staženy ze serveru a umístěny do adresáře, který vám vyhovuje. Poté musíte zadat cestu k nim v konfiguračním souboru klienta OpenVPN..

Poté, co se připojíme prostřednictvím zástupce klienta VPN v liště:

Připojil jsem se a dostal jsem do počítače následující IP:

Adresa IPv4 ...: 10.15.2.14 Maska podsítě ...: 255.255.255.252

Na druhém počítači pro NAT jsem provedl stejné kroky, po vytvoření certifikátu pro druhého uživatele, když jsem připojil druhé PC, také jsem obdržel IP ze sítě:

IPv4 adresa ...: 15.10.2.6 Maska podsítě ...: 255.255.255.252

Po připojení jsou oba počítače ve stejné síti a vzájemně se vidí.

Spusťte ping na druhém počítači:

Výměna paketů od 10.15.2.14 do 32 datových bajtů: Odpověď od 10.15.2.14: počet bajtů = 32 čas = 67 ms TTL = 127

Spusťte ping na prvním počítači:

Výměna paketů z 10/15 / 2,6 na 32 bajtů dat: Odpověď z 10/15 / 2,6: počet bajtů = 32 čas = 71 ms TTL = 127

Oba připojení klienti VPN si mohou vyměňovat pakety a přímo mezi sebou přenášet soubory. Mohli jsme tak zkombinovat dva počítače umístěné v různých částech země do jedné místní sítě.

Na serveru s OpenVPN můžete vytvořit neomezený počet klíčů a certifikátů pro uživatele. Pokud potřebujete nový certifikát, spusťte v adresáři následující příkazy / etc / openvpn / easy-rsa / 3:

./ easyrsa jméno klienta gen-req nopass
./ easyrsa název klienta sign-req

Nezapomeňte pravidelně odebírat klientské certifikáty, pokud nejsou použity k zajištění vašich dat.