sql >> Databáze >  >> RDS >> Mysql

Použití OpenVPN k zabezpečení přístupu k vašemu databázovému clusteru v cloudu

Internet je nebezpečné místo, zvláště pokud svá data necháváte nezašifrovaná nebo bez řádného zabezpečení. Existuje několik způsobů, jak zabezpečit svá data; vše na různých úrovních. Vždy byste měli mít silné zásady brány firewall, šifrování dat a zásady silného hesla. Dalším způsobem, jak zabezpečit svá data, je přistupovat k nim pomocí připojení VPN.

Virtual Private Network (neboli VPN) je metoda připojení používaná k přidání zabezpečení a soukromí do soukromých a veřejných sítí a k ochraně vašich dat.

OpenVPN je plně funkční řešení SSL VPN s otevřeným zdrojovým kódem pro zabezpečenou komunikaci. Může být použit pro vzdálený přístup nebo komunikaci mezi různými servery nebo datovými centry. Lze jej nainstalovat na prem nebo do cloudu, v různých operačních systémech a lze jej nakonfigurovat s mnoha možnostmi zabezpečení.

V tomto blogu vytvoříme připojení VPN pro přístup k databázi v cloudu. Existují různé způsoby, jak tohoto cíle dosáhnout, v závislosti na vaší infrastruktuře a na tom, kolik hardwarových prostředků chcete pro tento úkol použít.

Můžete například vytvořit dva virtuální počítače, jeden on-prem a druhý v cloudu, a mohou být mostem pro připojení vaší místní sítě k síti databázového cloudu prostřednictvím Peer-to- Peer VPN připojení.

Další jednodušší možností by mohlo být připojení k serveru VPN nainstalovanému v uzlu databáze pomocí připojení klienta VPN nakonfigurovaného na vašem místním počítači. V tomto případě použijeme tuto druhou možnost. Uvidíte, jak nakonfigurovat server OpenVPN v databázovém uzlu spuštěném v cloudu, a budete k němu moci přistupovat pomocí klienta VPN.

Pro databázový uzel použijeme instanci Amazon EC2 s následující konfigurace:

  • OS:Ubuntu Server 18.04
  • Veřejná IP adresa:18.224.138.210
  • Soukromá IP adresa:172.31.30.248/20
  • Otevřené porty TCP:22, 3306, 1194

Jak nainstalovat OpenVPN na Ubuntu Server 18.04

Prvním úkolem je nainstalovat OpenVPN server do vašeho databázového uzlu. Ve skutečnosti na použité databázové technologii nezáleží, protože pracujeme na síťové vrstvě, ale pro účely testování po konfiguraci připojení VPN řekněme, že používáme Percona Server 8.0.

Začněme tedy instalací balíčků OpenVPN.

$ apt install openvpn easy-rsa

Protože OpenVPN používá certifikáty k šifrování vašeho provozu, budete pro tento úkol potřebovat EasyRSA. Je to nástroj CLI pro vytvoření kořenové certifikační autority a vyžádání a podepsání certifikátů, včetně podřízených CA a seznamů zneplatněných certifikátů.

Poznámka:K dispozici je nová verze EasyRSA, ale abychom se mohli soustředit na instalaci OpenVPN, použijme verzi EasyRSA dostupnou v atm úložiště Ubuntu 18.04 (EasyRSA verze 2.2.2- 2).

Předchozí příkaz vytvoří adresář /etc/openvpn/ pro konfiguraci OpenVPN a adresář /usr/share/easy-rsa/ se skripty a konfigurací EasyRSA.

Aby byl tento úkol jednodušší, vytvořte symbolický odkaz na cestu EasyRSA v adresáři OpenVPN (nebo jej můžete jednoduše zkopírovat):

$ ln -s /usr/share/easy-rsa /etc/openvpn/

Nyní je třeba nakonfigurovat EasyRSA a vytvořit si certifikáty. Přejděte do umístění EasyRSA a vytvořte zálohu souboru „vars“:

$ cd /etc/openvpn/easy-rsa

$ cp vars vars.bak

Upravte tento soubor a změňte následující řádky podle svých informací:

$ vi vars

export KEY_COUNTRY="US"

export KEY_PROVINCE="CA"

export KEY_CITY="SanFrancisco"

export KEY_ORG="Fort-Funston"

export KEY_EMAIL="[email protected]"

export KEY_OU="MyOrganizationalUnit"

Potom vytvořte nový symbolický odkaz na soubor openssl:

$ cd /etc/openvpn/easy-rsa

$ ln -s openssl-1.0.0.cnf openssl.cnf

Nyní použijte soubor vars:

$ cd /etc/openvpn/easy-rsa

$ . vars

POZNÁMKA:Pokud spustíte ./clean-all, udělám rm -rf na /etc/openvpn/easy-rsa/keys

Spusťte skript pro vyčištění všeho:

$ ./clean-all

A vytvořte klíč Diffie-Hellman (DH):

$ ./build-dh

Generating DH parameters, 2048 bit long safe prime, generator 2

This is going to take a long time

.....................................................................................................................................................................+

Tato poslední akce může trvat několik sekund a po jejím dokončení budete mít v adresáři „keys“ v adresáři EasyRSA nový soubor DH.

$ ls /etc/openvpn/easy-rsa/keys

dh2048.pem

Nyní vytvoříme certifikáty CA.

$ ./build-ca

Generating a RSA private key

..+++++

...+++++

writing new private key to 'ca.key'

-----

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.

...

Tím se vytvoří ca.crt (veřejný certifikát) a ca.key (soukromý klíč). Veřejný certifikát bude vyžadován na všech serverech pro připojení k VPN.

$ ls /etc/openvpn/easy-rsa/keys

ca.crt  ca.key

Nyní máte vytvořenou CA, pojďme vytvořit certifikát serveru. V tomto případě to budeme nazývat „openvpn-server“:

$ ./build-key-server openvpn-server

Generating a RSA private key

.......................+++++

........................+++++

writing new private key to 'openvpn-server.key'

-----

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.

...

Certificate is to be certified until Dec 23 22:44:02 2029 GMT (3650 days)

Sign the certificate? [y/n]:y



1 out of 1 certificate requests certified, commit? [y/n]y



Write out database with 1 new entries

Data Base Updated

Tímto se vytvoří soubory CRT, CSR a Key pro server OpenVPN:

$ ls /etc/openvpn/easy-rsa/keys

openvpn-server.crt  openvpn-server.csr openvpn-server.key

Nyní musíte vytvořit klientský certifikát a proces je velmi podobný:

$ ./build-key openvpn-client-1

Generating a RSA private key

.........................................................................................+++++

.....................+++++

writing new private key to 'openvpn-client-1.key'

-----

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.

...

Certificate is to be certified until Dec 24 01:45:39 2029 GMT (3650 days)

Sign the certificate? [y/n]:y



1 out of 1 certificate requests certified, commit? [y/n]y



Write out database with 1 new entries

Data Base Updated

Tímto se vytvoří soubory CRT, CSR a Key pro klienta OpenVPN:

$ ls /etc/openvpn/easy-rsa/keys

openvpn-client-1.csr  openvpn-client-1.crt openvpn-client-1.key

V tuto chvíli máte připraveny všechny certifikáty. Dalším krokem bude vytvoření konfigurace OpenVPN serveru i klienta.

Konfigurace serveru OpenVPN

Jak jsme zmínili, instalace OpenVPN vytvoří adresář /etc/openvpn, kam přidáte konfigurační soubory pro serverové i klientské role, a pro každou z nich má vzorový konfigurační soubor v / usr/share/doc/openvpn/examples/sample-config-files/, takže můžete zkopírovat soubory ve zmíněném umístění a upravit je, jak chcete.

V tomto případě použijeme pouze konfigurační soubor serveru, protože se jedná o server OpenVPN:

$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

$ gunzip /etc/openvpn/server.conf.gz

Nyní se podíváme na soubor základní konfigurace serveru:

$ cat /etc/openvpn/server.conf

port 1194  

# Which TCP/UDP port should OpenVPN listen on?

proto tcp  

# TCP or UDP server?

dev tun  

# "dev tun" will create a routed IP tunnel,"dev tap" will create an ethernet tunnel.

ca /etc/openvpn/easy-rsa/keys/ca.crt  

# SSL/TLS root certificate (ca).

cert /etc/openvpn/easy-rsa/keys/openvpn-server.crt  

# Certificate (cert).

key /etc/openvpn/easy-rsa/keys/openvpn-server.key  

# Private key (key). This file should be kept secret.

dh /etc/openvpn/easy-rsa/keys/dh2048.pem  

# Diffie hellman parameters.

server 10.8.0.0 255.255.255.0  

# Configure server mode and supply a VPN subnet.

push "route 172.31.16.0 255.255.240.0"

# Push routes to the client to allow it to reach other private subnets behind the server.

keepalive 20 120  

# The keepalive directive causes ping-like messages to be sent back and forth over the link so that each side knows when the other side has gone down.

cipher AES-256-CBC  

# Select a cryptographic cipher.

persist-key  

persist-tun

# The persist options will try to avoid accessing certain resources on restart that may no longer be accessible because of the privilege downgrade.

status /var/log/openvpn/openvpn-status.log  

# Output a short status file.

log /var/log/openvpn/openvpn.log  

# Use log or log-append to override the default log location.

verb 3  

# Set the appropriate level of log file verbosity.

Poznámka:Změňte cesty certifikátů podle svého prostředí.

A poté spusťte službu OpenVPN pomocí vytvořeného konfiguračního souboru:

$ systemctl start [email protected]

Zkontrolujte, zda služba naslouchá na správném portu:

$ netstat -pltn |grep openvpn

tcp        0 0 0.0.0.0:1194            0.0.0.0:* LISTEN   20002/openvpn

Nakonec, na serveru OpenVPN musíte do souboru sysctl.conf přidat linku pro předávání IP, aby byl povolen provoz VPN:

$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

A spusťte:

$ sysctl -p

net.ipv4.ip_forward = 1

Nyní se podívejme, jak nakonfigurovat klienta OpenVPN pro připojení k této nové VPN.

Konfigurace klienta OpenVPN

V předchozím bodě jsme zmínili ukázkové konfigurační soubory OpenVPN a použili jsme serverový, takže nyní udělejme totéž, ale s použitím konfiguračního souboru klienta.

Zkopírujte soubor client.conf z /usr/share/doc/openvpn/examples/sample-config-files/ do odpovídajícího umístění a změňte jej podle potřeby.

$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Ke konfiguraci klienta VPN budete také potřebovat následující certifikáty vytvořené dříve:

ca.crt

openvpn-client-1.crt

openvpn-client-1.key

Takže zkopírujte tyto soubory do místního počítače nebo virtuálního počítače. Toto umístění souborů budete muset přidat do konfiguračního souboru klienta VPN.

Nyní se podíváme na základní konfigurační soubor klienta:

$ cat /etc/openvpn/client.conf

client  

# Specify that we are a client

dev tun  

# Use the same setting as you are using on the server.

proto tcp  

# Use the same setting as you are using on the server.

remote 18.224.138.210 1194  

# The hostname/IP and port of the server.

resolv-retry infinite  

# Keep trying indefinitely to resolve the hostname of the OpenVPN server.

nobind  

# Most clients don't need to bind to a specific local port number.

persist-key  

persist-tun

# Try to preserve some state across restarts.

ca /Users/sinsausti/ca.crt  

cert /Users/sinsausti/openvpn-client-1.crt

key /Users/sinsausti/openvpn-client-1.key

# SSL/TLS parms.

remote-cert-tls server  

# Verify server certificate.

cipher AES-256-CBC  

# Select a cryptographic cipher.

verb 3  

# Set log file verbosity.

Poznámka:Změňte cesty certifikátů podle svého prostředí.

Tento soubor můžete použít k připojení k serveru OpenVPN z různých operačních systémů, jako je Linux, macOS nebo Windows.

V tomto příkladu použijeme aplikaci Tunnelblick k připojení z klienta macOS. Tunnelblick je bezplatné, open source grafické uživatelské rozhraní pro OpenVPN na macOS. Poskytuje snadné ovládání klientů OpenVPN. Dodává se se všemi potřebnými balíčky, jako jsou OpenVPN, EasyRSA a ovladače tun/tap.

Protože konfigurační soubory OpenVPN mají příponu .tblk, .ovpn nebo .conf, Tunnelblick je může číst všechny.

Chcete-li nainstalovat konfigurační soubor, přetáhněte jej na ikonu Tunnelblick v řádku nabídek nebo na seznam konfigurací na kartě 'Konfigurace' v okně 'Podrobnosti VPN'.

A poté stiskněte tlačítko „Připojit“.

Nyní byste měli mít ve svém klientském počítači nějaké nové trasy:

$ netstat -rn # or route -n on Linux OS

Destination        Gateway Flags        Netif Expire

10.8.0.1/32        10.8.0.5 UGSc         utun5

10.8.0.5           10.8.0.6 UH           utun5

172.31.16/20       10.8.0.5 UGSc         utun5

Jak můžete vidět, existuje cesta k místní databázové síti přes rozhraní VPN, takže byste měli mít možnost přistupovat k databázové službě pomocí IP adresy soukromé databáze.

$ mysql -p -h172.31.30.248

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 13

Server version: 8.0.18-9 Percona Server (GPL), Release '9', Revision '53e606f'



Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.



Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



mysql>

Funguje to. Nyní máte svůj provoz zabezpečený pomocí VPN pro připojení k uzlu databáze.

Závěr

Ochrana vašich dat je nutností, pokud k nim přistupujete přes internet, prem nebo ve smíšeném prostředí. Musíte vědět, jak šifrovat a zabezpečit vzdálený přístup.

Jak jste mohli vidět, s OpenVPN se můžete dostat ke vzdálené databázi pomocí místní sítě prostřednictvím šifrovaného připojení pomocí certifikátů s vlastním podpisem. OpenVPN tedy vypadá jako skvělá volba pro tento úkol. Je to open source řešení a instalace/konfigurace je docela snadná. Použili jsme základní konfiguraci serveru OpenVPN, takže můžete hledat složitější konfiguraci v oficiální dokumentaci OpenVPN, abyste zlepšili svůj server OpenVPN.


  1. Jak uložit více možností do jedné tabulky?

  2. LongOpsWatcher v SQL Dev

  3. Datatyp Oracle:Mám použít VARCHAR2 nebo CHAR

  4. Rovná se(=) vs. LIKE pro datový typ data