Ať už chcete přistupovat k internetu bezpečně a bezpečně, když jste připojeni k nedůvěryhodné veřejné síti Wi-Fi, obejít obsah s geografickým omezením nebo umožnit svým spolupracovníkům, aby se při práci na dálku bezpečně připojili k vaší firemní síti, nejlepším řešením je použití VPN.
Síť VPN vám umožňuje připojit se ke vzdáleným serverům VPN, díky čemuž je vaše připojení šifrované a zabezpečené a můžete anonymně procházet web tím, že vaše data o provozu uchová v soukromí.
Existuje mnoho komerčních poskytovatelů VPN, ze kterých si můžete vybrat, ale nikdy si nemůžete být skutečně jisti, že poskytovatel vaši aktivitu nezaznamenává. Nejbezpečnější možností je nastavit si vlastní VPN server.
Tento tutoriál vás provede procesem nastavení vašeho vlastního serveru VPN instalací a konfigurací OpenVPN na Ubuntu 18.04. Ukážeme si také, jak generovat klientské certifikáty a vytvářet konfigurační soubory
OpenVPN je plně funkční řešení VPN s otevřeným zdrojovým kódem Secure Socket Layer (SSL). Implementuje zabezpečené síťové rozšíření OSI vrstvy 2 nebo 3 pomocí protokolu SSL/TLS.
Předpoklady #
K dokončení tohoto kurzu budete potřebovat:
- Sudo přístup k serveru Ubuntu 18.04 pro hostování vaší instance OpenVPN.
- Server by měl mít nakonfigurován základní firewall UFW.
- Samostatný vyhrazený počítač, který bude sloužit jako vaše CA (certifikační autorita). Pokud nechcete pro svůj CA používat vyhrazený počítač, můžete si vytvořit CA na svém OpenVPN serveru nebo na místním počítači. Jakmile dokončíte vytváření CA, doporučujeme přesunout adresář CA někam do zabezpečeného prostředí nebo offline.
Tento tutoriál předpokládá, že CA je na samostatném počítači Ubuntu 18.04. Stejné kroky (s malými úpravami) budou platit, pokud svůj server používáte jako CA.
Důvodem, proč používáme samostatný počítač CA, je zabránit útočníkům proniknout na server. Pokud se útočníkovi podaří získat přístup k soukromému klíči CA, mohl by jej použít k podepsání nových certifikátů, které mu umožní přístup k serveru VPN.
Budování CA s EasyRSA #
Při nastavování nového serveru OpenVPN je prvním krokem vytvoření infrastruktury veřejného klíče (PKI). K tomu budeme muset vytvořit následující:
- Certifikát certifikační autority (CA) a soukromý klíč.
- Samostatný pár certifikátu a soukromého klíče pro server vydaný naším CA.
- Samostatný pár certifikátu a soukromého klíče pro každého klienta vydaný naším CA.
Jak je uvedeno v předpokladech z bezpečnostních důvodů, vybudujeme CA na samostatném počítači.
K vytvoření CA, žádostí o certifikáty a podepisování certifikátů použijeme nástroj CLI s názvem EasyRSA.
Na svém počítači CA proveďte následující kroky .
-
Nejprve si stáhněte nejnovější verzi EasyRSA z repozitáře projektu Github pomocí následujícího wgetcommand:
cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgz -
Po dokončení stahování rozbalte archiv pomocí:
tar xzf EasyRSA-nix-3.0.5.tgz -
Přepněte se do adresáře EasyRSA a vytvořte konfigurační soubor s názvem
varszkopírovánímvars.examplesoubor:cd ~/EasyRSA-3.0.5/cp vars.example vars -
Otevřete soubor a odkomentujte a aktualizujte následující položky, aby odpovídaly vašim informacím.
~/EasyRSA-3.0.5/varsnano ~/EasyRSA-3.0.5/varsset_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "Pennsylvania" set_var EASYRSA_REQ_CITY "Pittsburgh" set_var EASYRSA_REQ_ORG "Linuxize" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "Community" -
Před vygenerováním páru klíčů CA musíme nejprve inicializovat nové PKI pomocí:
./easyrsa init-pkiinit-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/causer/EasyRSA-3.0.5/pki -
Dalším krokem je sestavení CA:
./easyrsa build-caPokud nechcete být vyzváni k zadání hesla při každém podepisování certifikátů, spusťte
build-capomocí příkazunopassmožnost:./easyrsa build-ca nopass.... Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- ... ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/causer/EasyRSA-3.0.5/pki/ca.crtBudete požádáni o nastavení hesla pro klíč CA a zadání běžného názvu vaší CA.
Po dokončení skript vytvoří dva soubory — veřejný certifikát CA
ca.crta soukromý klíč CAca.key.Nyní, když je vytvořena certifikační autorita (CA), můžete ji použít k podepisování žádostí o certifikát pro jeden nebo více serverů a klientů OpenVPN.
Instalace OpenVPN a EasyRSA #
Naším dalším krokem je instalace balíčku OpenVPN, který je k dispozici v repozitářích Ubuntu, a stažení nejnovější verze EasyRSA.
Následující kroky se provádějí na serveru OpenVPN .
-
Instalace OpenVPN je docela přímočará, stačí spustit následující příkazy na serveru OpenVPN :
sudo apt updatesudo apt install openvpn -
Stáhněte si nejnovější verzi EasyRSA:
cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.5/EasyRSA-nix-3.0.5.tgzPo dokončení stahování zadejte následující příkaz pro rozbalení archivu:
tar xzf EasyRSA-nix-3.0.5.tgzPřestože jsme již inicializovali PKI na počítači CA, musíme také vytvořit nové PKI na serveru OpenVPN. Chcete-li to provést, použijte stejné příkazy jako dříve:
cd ~/EasyRSA-3.0.5/./easyrsa init-pkiPokud vás stále zajímá, proč potřebujeme dvě instalace EasyRSA, je to proto, že tuto instanci EasyRSA použijeme ke generování požadavků na certifikát, které budou podepsány pomocí instance EasyRSA na počítači CA .
Může to znít složitě a trochu matoucí, ale jakmile si přečtete celý tutoriál, uvidíte, že to opravdu není složité.
Vytváření klíčů Diffie-Hellman a HMAC #
V této části vygenerujeme silný klíč Diffie-Hellman, který bude použit během výměny klíčů, a soubor podpisu HMAC pro přidání další vrstvy zabezpečení do připojení.
-
Nejprve přejděte do adresáře EasyRSA na vašem serveru OpenVPN .
cd ~/EasyRSA-3.0.5/ -
Vygenerujte klíč Diffie-Hellman:
./easyrsa gen-dhSkript vygeneruje 2048bitové parametry DH. To může nějakou dobu trvat, zvláště na serverech s malými prostředky. Po dokončení se na obrazovce vytiskne následující zpráva:
DH parameters of size 2048 created at /home/serveruser/EasyRSA-3.0.5/pki/dh.pemZkopírujte
dh.pemsoubor do/etc/openvpnadresář:sudo cp ~/EasyRSA-3.0.5/pki/dh.pem /etc/openvpn/ -
Vygenerujte podpis HMAC:
openvpn --genkey --secret ta.keyPo dokončení zkopírujte
ta.keysoubor do/etc/openvpnadresář:sudo cp ~/EasyRSA-3.0.5/ta.key /etc/openvpn/
Vytváření certifikátu serveru a soukromého klíče #
Tato část popisuje, jak vygenerovat soukromý klíč a žádost o certifikát pro server OpenVPN.
-
Přejděte do adresáře EasyRSA na vašem serveru OpenVPN a vygenerujte nový soukromý klíč pro server a soubor žádosti o certifikát:
cd ~/EasyRSA-3.0.5/./easyrsa gen-req server1 nopassPoužíváme
nopassargument, protože chceme spustit server OpenVPN bez zadání hesla. Také v tomto příkladu používámeserver1jako identifikátor názvu serveru (entity). Pokud pro svůj server zvolíte jiný název, nezapomeňte upravit níže uvedené pokyny, kde se název serveru používá.Příkaz vytvoří dva soubory, soukromý klíč (
server1.key) a soubor žádosti o certifikát (server1.req).----- Common Name (eg: your user, host, or server name) [server1]: Keypair and certificate request completed. Your files are: req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/server1.req key: /home/serveruser/EasyRSA-3.0.5/pki/private/server1.key -
Zkopírujte soukromý klíč do
/etc/openvpnadresář:sudo cp ~/EasyRSA-3.0.5/pki/private/server1.key /etc/openvpn/ -
Přeneste soubor žádosti o certifikát do počítače CA:
scp ~/EasyRSA-3.0.5/pki/reqs/server1.req causer@your_ca_ip:/tmpV tomto příkladu používáme
scpk přenosu souboru můžete také použítrsyncpřes ssh nebo jinou zabezpečenou metodu. -
Přihlaste se ke svému počítači CA , přepněte do adresáře EasyRSA a importujte soubor žádosti o certifikát:
cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/server1.req server1První argument je cesta k souboru žádosti o certifikát a druhý je krátký název serveru (entity). V našem případě je název serveru
server1.The request has been successfully imported with a short name of: server1 You may now use this name to perform signing operations on this request.Tento příkaz pouze zkopíruje soubor požadavku do
pki/reqsadresář. -
Ještě v adresáři EasyRSA na počítači CA spusťte následující příkaz k podepsání požadavku:
cd ~/EasyRSA-3.0.5./easyrsa sign-req server server1První argument může být buď
serverneboclienta druhý je krátký název serveru (entity).Budete vyzváni k ověření, že požadavek pochází z důvěryhodného zdroje. Zadejte
yesa stiskněteenterpro potvrzení:You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 1080 days: subject= commonName = server1 Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes ...Pokud je váš klíč CA chráněn heslem, budete vyzváni k zadání hesla. Po ověření skript vygeneruje certifikát SSL a vytiskne k němu úplnou cestu.
... Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days) Write out database with 1 new entries Data Base Updated Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/server1.crt -
Dalším krokem je přenos podepsaného certifikátu
server1.crtaca.crtsoubory zpět na váš server OpenVPN. Opět můžete použítscp,rsyncnebo jakoukoli jinou zabezpečenou metodou:scp ~/EasyRSA-3.0.5/pki/issued/server1.crt serveruser@your_server_ip:/tmpscp ~/EasyRSA-3.0.5/pki/ca.crt serveruser@your_server_ip:/tmp -
Přihlaste se ke svému serveru OpenVPN a přesuňte soubor
server1.crtaca.crtsoubory do/etc/openvpn/adresář:sudo mv /tmp/{server1,ca}.crt /etc/openvpn/
Po dokončení kroků uvedených v této části byste měli mít na svém serveru OpenVPN následující nové soubory :
/etc/openvpn/ca.crt/etc/openvpn/dh.pem/etc/openvpn/ta.key/etc/openvpn/server1.crt/etc/openvpn/server1.key
Konfigurace služby OpenVPN #
Nyní, když máte certifikát serveru podepsaný vaší CA a přenesený na váš server OpenVPN , je čas nakonfigurovat službu OpenVPN.
Jako výchozí bod použijeme vzorový konfigurační soubor dodaný s instalačním balíčkem OpenVPN a poté do něj přidáme vlastní možnosti konfigurace.
Začněte rozbalením konfiguračního souboru do /etc/openvpn/ adresář:
sudo sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server1.conf" Otevřete soubor pomocí svého oblíbeného textového editoru:
sudo nano /etc/openvpn/server1.conf -
Najděte direktivy Certificate, Key a DH parametrů a změňte názvy souborů:
/etc/openvpn/server1.confcert server1.crt key server1.key dh dh.pem -
Chcete-li přesměrovat klientský provoz přes VPN, vyhledejte
/etc/openvpn/server1.confredirect-gatewaya odkomentujte jej adhcp-optionmožnosti:push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"Ve výchozím nastavení se používají překladače OpenDNS. Můžete to změnit a použít CloudFlare, Google nebo jakýkoli jiný překladač DNS, který chcete.
-
Najděte
/etc/openvpn/server1.confuseragroupdirektivy a odkomentujte tato nastavení odstraněním „;” na začátku každého řádku:user nobody group nogroup -
Připojte následující řádek na konec souboru. Tato direktiva změní algoritmus ověřování zpráv (HMAC) z SHA1 na SHA256
/etc/openvpn/server1.confauth SHA256
Jakmile budete hotovi, konfigurační soubor serveru (bez komentářů) by měl vypadat nějak takto:
/etc/openvpn/server1.confport 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256
Spouštění služby OpenVPN #
V tomto tutoriálu jsme použili server1.conf jako konfigurační soubor. Chcete-li spustit službu OpenVPN s touto konfigurací, musíme zadat název konfiguračního souboru za názvem souboru jednotky systemd:
Na vašem serveru OpenVPN spusťte následující příkaz pro spuštění služby OpenVPN:
sudo systemctl start openvpn@server1 Ověřte, zda byla služba úspěšně spuštěna zadáním:
sudo systemctl status openvpn@server1 Pokud je služba aktivní a běží, výstup bude vypadat nějak takto:
● [email protected] - OpenVPN connection to server1
Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Mon 2018-10-08 20:11:57 UTC; 6min ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 26739 (openvpn)
Status: "Initialization Sequence Completed"
Povolte automatické spouštění služby při spouštění pomocí:
sudo systemctl enable openvpn@server1 Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
Pokud se nepodaří spustit službu OpenVPN, zkontrolujte protokoly pomocí sudo journalctl -u openvpn@server1
OpenVPN Server vytvoří nové zařízení tun tun0 . Chcete-li zkontrolovat, zda je zařízení dostupné, použijte následující příkaz ip:
ip a show tun0 Výstup by měl vypadat nějak takto:
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::1627:9a20:bca8:e6a5/64 scope link stable-privacy
valid_lft forever preferred_lft forever
V tomto okamžiku je váš server OpenVPN nakonfigurován a běží správně.
Konfigurace brány firewall a sítě serveru #
Abychom mohli správně předávat síťové pakety, musíme povolit předávání IP.
Následující kroky se provádějí na serveru OpenVPN .
Otevřete /etc/sysctl.conf soubor a přidejte nebo odkomentujte řádek, který zní net.ipv4.ip_forward = 1 :
sudo nano /etc/sysctl.conf /etc/sysctl.conf# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 Až budete hotovi, uložte a zavřete soubor.
Použijte nová nastavení spuštěním následujícího příkazu:
sudo sysctl -p net.ipv4.ip_forward = 1
Pokud jste dodrželi předpoklady, měli byste již mít na svém serveru UFW firewall spuštěný.
Nyní musíme přidat pravidla brány firewall, abychom umožnili maskování. To umožní provozu opustit VPN a vašim klientům VPN poskytne přístup k internetu.
Před přidáním pravidel musíte znát veřejné síťové rozhraní vašeho Ubuntu OpenVPN Server. Rozhraní můžete snadno najít spuštěním následujícího příkazu:
ip -o -4 route show to default | awk '{print $5}'
V našem případě se rozhraní jmenuje ens3 jak je znázorněno na výstupu níže. Vaše rozhraní bude mít pravděpodobně jiný název.
ens3
Ve výchozím nastavení jsou při použití UFW předané pakety zahazovány. Budeme to muset změnit a dát našemu firewallu pokyn, aby povolil přeposílání paketů.
Otevřete konfigurační soubor UFW, vyhledejte DEFAULT_FORWARD_POLICY a změňte hodnotu z DROP ACCEPT :
sudo nano /etc/default/ufw /etc/default/ufw...
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
...
Dále musíme nastavit výchozí politiku pro POSTROUTING řetěz v nat stole a nastavte pravidlo maškarády.
Chcete-li tak učinit, otevřete /etc/ufw/before.rules soubor a připojte řádky zvýrazněné žlutě, jak je znázorněno níže.
sudo nano /etc/ufw/before.rules
Nezapomeňte nahradit ens3 v -A POSTROUTING řádek, který odpovídá názvu rozhraní veřejné sítě, které jste našli v předchozím příkazu. Vložte řádky za poslední řádek začínající COMMIT .
...
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through ens3 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o ens3 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT Až budete hotovi, uložte a zavřete soubor.
Potřebujeme také otevřít UDP provoz na portu 1194 což je výchozí port OpenVPN. Chcete-li tak učinit, spusťte následující příkaz:
sudo ufw allow 1194/udp V případě, že jste zapomněli otevřít port SSH, abyste se vyhnuli uzamčení, spusťte následující příkaz k otevření portu:
sudo ufw allow OpenSSH Nakonec znovu načtěte pravidla UFW vypnutím a opětovným povolením UFW:
sudo ufw disablesudo ufw enable
Chcete-li ověřit změny, spusťte následující příkaz pro seznam pravidel POSTROUTING:
sudo iptables -nvL POSTROUTING -t nat Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ens3 10.8.0.0/16 0.0.0.0/0
Vytvoření klientské konfigurační infrastruktury #
V tomto tutoriálu vytvoříme samostatný certifikát SSL a vygenerujeme jiný konfigurační soubor pro každého klienta VPN.
Klientský soukromý klíč a žádost o certifikát lze vygenerovat na klientském počítači nebo na serveru. Pro jednoduchost vygenerujeme žádost o certifikát na serveru a poté ji odešleme CA k podpisu.
Celý proces generování klientského certifikátu a konfiguračního souboru je následující:
- Vygenerujte soukromý klíč a žádost o certifikát na serveru OpenVPN.
- Odešlete požadavek na počítač CA, který má být podepsán.
- Zkopírujte podepsaný certifikát SSL na server OpenVPN a vygenerujte konfigurační soubor.
- Odešlete konfigurační soubor do počítače klienta VPN.
Začněte vytvořením sady adresářů pro uložení souborů klientů:
mkdir -p ~/openvpn-clients/{configs,base,files} baseadresář bude ukládat základní soubory a konfiguraci, které budou sdíleny mezi všemi klientskými soubory.configsadresář bude ukládat vygenerovanou konfiguraci klienta.filesadresář bude uchovávat pár certifikát/klíč specifický pro klienta.
Zkopírujte ca.crt a ta.key soubory do ~/openvpn-clients/base adresář:
cp ~/EasyRSA-3.0.5/ta.key ~/openvpn-clients/base/cp /etc/openvpn/ca.crt ~/openvpn-clients/base/
Poté zkopírujte ukázkový konfigurační soubor klienta VPN do souboru client-~/openvpn-clients/base adresář. Tento soubor použijeme jako základní konfiguraci:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-clients/base/ Nyní musíme soubor upravit tak, aby odpovídal nastavení a konfiguraci našeho serveru. Otevřete konfigurační soubor pomocí textového editoru:
nano ~/openvpn-clients/base/client.conf -
Najděte vzdálenou direktivu a změňte výchozí zástupný symbol s veřejnou IP adresou vašeho OpenVPN serveru:
~/openvpn-clients/base/client.conf# The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote YOUR_SERVER_IP 1194 -
Najděte a okomentujte
~/openvpn-clients/base/client.confca,certakeysměrnice. Certifikáty a klíče budou přidány do konfiguračního souboru:# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. # ca ca.crt # cert client.crt # key client.key -
Připojte na konec souboru následující řádek, aby odpovídal nastavení serveru:
~/openvpn-clients/base/client.confauth SHA256
Jakmile budete hotovi, konfigurační soubor serveru by měl vypadat nějak takto:
~/openvpn-clients/base/client.confclient
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth SHA256
key-direction 1
Dále vytvořte jednoduchý bash skript, který sloučí základní konfiguraci a soubory s klientským certifikátem a klíčem, a uloží vygenerovanou konfiguraci do ~/openvpn-clients/configs adresář.
Otevřete textový editor a vytvořte následující skript:
nano ~/openvpn-clients/gen_config.sh ~/openvpn-clients/gen_config.sh#!/bin/bash
FILES_DIR=$HOME/openvpn-clients/files
BASE_DIR=$HOME/openvpn-clients/base
CONFIGS_DIR=$HOME/openvpn-clients/configs
BASE_CONF=${BASE_DIR}/client.conf
CA_FILE=${BASE_DIR}/ca.crt
TA_FILE=${BASE_DIR}/ta.key
CLIENT_CERT=${FILES_DIR}/${1}.crt
CLIENT_KEY=${FILES_DIR}/${1}.key
# Test for files
for i in "$BASE_CONF" "$CA_FILE" "$TA_FILE" "$CLIENT_CERT" "$CLIENT_KEY"; do
if [[ ! -f $i ]]; then
echo " The file $i does not exist"
exit 1
fi
if [[ ! -r $i ]]; then
echo " The file $i is not readable."
exit 1
fi
done
# Generate client config
cat > ${CONFIGS_DIR}/${1}.ovpn <<EOF
$(cat ${BASE_CONF})
<key>
$(cat ${CLIENT_KEY})
</key>
<cert>
$(cat ${CLIENT_CERT})
</cert>
<ca>
$(cat ${CA_FILE})
</ca>
<tls-auth>
$(cat ${TA_FILE})
</tls-auth>
EOF
Uložte soubor a udělejte jej spustitelný spuštěním následujícího chmod příkaz:
chmod u+x ~/openvpn-clients/gen_config.sh Vytvoření soukromého klíče klientského certifikátu a konfigurace #
Proces generování klientského soukromého klíče a žádosti o certifikát je stejný jako při generování serverového klíče a žádosti o certifikát.
Jak jsme již zmínili v předchozí části, klientský soukromý klíč a žádost o certifikát vygenerujeme na serveru OpenVPN. V tomto příkladu bude název prvního klienta VPN client1 .
-
Přejděte do adresáře EasyRSA na vašem serveru OpenVPN a vygenerujte nový soukromý klíč a soubor žádosti o certifikát pro klienta:
cd ~/EasyRSA-3.0.5/./easyrsa gen-req client1 nopassPříkaz vytvoří dva soubory, soukromý klíč (
client1.key) a soubor žádosti o certifikát (client1.req).Common Name (eg: your user, host, or server name) [client1]: Keypair and certificate request completed. Your files are: req: /home/serveruser/EasyRSA-3.0.5/pki/reqs/client1.req key: /home/serveruser/EasyRSA-3.0.5/pki/private/client1.key -
Zkopírujte soukromý klíč
client1.keydo~/openvpn-clients/filesadresář, který jste vytvořili v předchozí části:cp ~/EasyRSA-3.0.5/pki/private/client1.key ~/openvpn-clients/files/ -
Přeneste soubor žádosti o certifikát do počítače CA:
scp ~/EasyRSA-3.0.5/pki/reqs/client1.req causer@your_ca_ip:/tmpV tomto příkladu používáme
scpk přenosu souboru můžete také použítrsyncpřes ssh nebo jinou zabezpečenou metodu. -
Přihlaste se ke svému počítači CA , přepněte do adresáře EasyRSA a importujte soubor žádosti o certifikát:
cd ~/EasyRSA-3.0.5./easyrsa import-req /tmp/client1.req client1První argument je cesta k souboru žádosti o certifikát a druhý je jméno klienta.
The request has been successfully imported with a short name of: client1 You may now use this name to perform signing operations on this request. -
Z adresáře EasyRSA na počítači CA spusťte následující příkaz k podepsání požadavku:
cd ~/EasyRSA-3.0.5./easyrsa sign-req client client1Budete vyzváni k ověření, že požadavek pochází z důvěryhodného zdroje. Zadejte
yesa stiskněteenterpro potvrzení:Pokud je váš klíč CA chráněn heslem, budete vyzváni k zadání hesla. Po ověření skript vygeneruje certifikát SSL a vytiskne k němu úplnou cestu.
... Certificate created at: /home/causer/EasyRSA-3.0.5/pki/issued/client1.crt -
Dále přeneste podepsaný certifikát
client1.crtsoubor zpět na váš server OpenVPN. Můžete použítscp,rsyncnebo jakoukoli jinou zabezpečenou metodou:scp ~/EasyRSA-3.0.5/pki/issued/client1.crt serveruser@your_server_ip:/tmp -
Přihlaste se ke svému serveru OpenVPN a přesuňte soubor
client1.crtsoubor do~/openvpn-clients/filesadresář:mv /tmp/client1.crt ~/openvpn-clients/files -
Posledním krokem je vygenerování konfigurace klienta pomocí
gen_config.shskript. Přepněte na~/openvpn-clientsadresář a spusťte skript s použitím názvu klienta jako argumentu:cd ~/openvpn-clients./gen_config.sh client1Skript vytvoří soubor s názvem
client1.ovpnv~/client-configs/configsadresář. Můžete to zkontrolovat výpisem adresáře:ls ~/openvpn-clients/configsclient1.ovpn
V tomto okamžiku je vytvořena konfigurace klienta. Nyní můžete přenést konfigurační soubor do zařízení, které hodláte používat jako klienta.
Například pro přenos konfiguračního souboru na váš místní počítač pomocí scp měli byste spustit následující příkaz:
scp ~/openvpn-clients/configs/client1.ovpn your_local_ip:/ Chcete-li přidat další klienty, opakujte stejné kroky.
Připojování klientů #
Linux #
Vaše distribuční nebo desktopové prostředí může poskytovat nástroj nebo grafické uživatelské rozhraní pro připojení k serverům OpenVPN. V tomto tutoriálu vám ukážeme, jak se připojit k serveru pomocí openvpn nástroj.
-
Nainstalujte OpenVPN na Ubuntu a Debian
sudo apt updatesudo apt install openvpn -
Nainstalujte OpenVPN na CentOS a Fedoru
sudo yum install epel-releasesudo yum install openvpn
Jakmile je balíček nainstalován, pro připojení k serveru VPN použijte openvpn a zadejte konfigurační soubor klienta:
sudo openvpn --config client1.ovpn macOS #
Tunnelblick je bezplatné grafické uživatelské rozhraní s otevřeným zdrojovým kódem pro OpenVPN na OS X a macOS.
Windows #
Stáhněte si a nainstalujte nejnovější sestavení aplikace OpenVPN na stránce Stahování OpenVPN.
Zkopírujte .ovpn soubor do konfigurační složky OpenVPN (\Users\<Name>\OpenVPN\Config nebo \Program Files\OpenVPN\config ).
Spusťte aplikaci OpenVPN.
Klikněte pravým tlačítkem na ikonu OpenVPN na hlavním panelu a v nabídce se zobrazí název konfiguračního souboru OpenVPN, který jste zkopírovali. Klikněte na Připojit.
Android a iOS #
Aplikace VPN vyvinutá společností OpenVPN je k dispozici pro Android i iOS. Nainstalujte aplikaci a importujte klienta .ovp soubor.
- Android OpenVPN Connect
- iOS OpenVPN Connect
Zrušení klientských certifikátů #
Zrušení certifikátu znamená zneplatnění podepsaného certifikátu, takže jej již nelze používat pro přístup k serveru OpenVPN.
Chcete-li odvolat klientský certifikát, postupujte takto:
-
Přihlaste se ke svému počítači CA a přepněte se do adresáře EasyRSA:
cd EasyRSA-3.0.5 -
Spusťte skript easyrsa pomocí příkazu
revokeargument následovaný jménem klienta, kterého chcete odvolat:./easyrsa revoke client1Budete vyzváni k potvrzení, že chcete certifikát zrušit. Zadejte
yesa stiskněteenterpro potvrzení:Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client1 Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes ...If your CA key is password protected, you’ll be prompted to enter the password. Once verified the script will revoke the certificate.
... Revocation was successful. You must run gen-crl and upload a CRL to your infrastructure in order to prevent the revoked cert from being accepted. -
Use the
gen-crloption to generate a certificate revocation list (CRL):./easyrsa gen-crlAn updated CRL has been created. CRL file: /home/causer/EasyRSA-3.0.5/pki/crl.pem -
Upload the CRL file to the OpenVPN server:
scp ~/EasyRSA-3.0.5/pki/crl.pem serveruser@your_server_ip:/tmp -
Login to your OpenVPN server server and move the file to the
/etc/openvpnadresář:sudo mv /tmp/crl.pem /etc/openvpn -
Open the OpenVPN server configuration file:
sudo nano /etc/openvpn/server1.confPaste the following line at the end of the file
/etc/openvpn/server1.confcrl-verify crl.pemUložte a zavřete soubor.
-
Restart the OpenVPN service for the revocation directive to take effect:
sudo systemctl restart openvpn@server1At this point, the client should no longer be able to access the OpenVPN server using the revoked certificate.
If you need revoke additional client certificates just repeat the same steps.