V tomto článku vám ukážeme, jak nakonfigurovat vzdálená a bezpečná připojení pro MySQL na Ubuntu 16.04 VPS. Pokud pro připojení ke vzdálenému serveru MariaDB/MySQL používáte nešifrované připojení, pak každý s přístupem k síti může sledovat a analyzovat data odesílaná nebo přijímaná mezi klientem a serverem. Tato příručka by měla fungovat i na jiných systémech Linux VPS, ale byla testována a napsána pro Ubuntu 16.04 VPS.
1. Přihlaste se ke svému VPS přes SSH
ssh my_sudo_user@my_server
Kroky v tomto tutoriálu předpokládají, že jste nainstalovali MySQL 5.7 s výchozí konfigurací.
Povolit připojení SSL:
2. Vytvořte novou místní certifikační autoritu
Lokální certifikační autoritu použijeme jako kořenový certifikát s vlastním podpisem, který budeme používat k podepisování serverových i klientských certifikátů. Chcete-li vytvořit nový soubor místní certifikační autority, spusťte následující příkazy:
sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048 sudo chmod 600 /etc/mysql/ca-key.pem sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/ sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650 sudo echo 01 > /etc/mysql/cacert.srl
3. Vygenerovat certifikát a klíč serveru
Chcete-li vygenerovat certifikát serveru a klíč, zadejte následující příkazy:
sudo openssl genrsa -out /etc/mysql/server-key.pem 2048 sudo chmod 600 /etc/mysql/server-key.pem sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
4. Vygenerujte klientský certifikát a klíč
Dále musíme vygenerovat klientský certifikát. Spuštěním následujících příkazů vygenerujte klientský certifikát a klíč:
sudo openssl genrsa -out /etc/mysql/client-key.pem 2048 sudo chmod 600 /etc/mysql/client-key.pem sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
Pokud chcete mít certifikát SSL podepsaný CA, můžete si zde zakoupit důvěryhodný certifikát SSL.
5. Povolit připojení MySQL Server SSL
Otevřete konfigurační soubor MySQL pomocí textového editoru:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
a odkomentujte následující řádky:
ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
Uložte soubor a restartujte službu MySQL:
sudo systemctl restart mysql
Chcete-li ověřit, že je povoleno SSL, přihlaste se k serveru MySQL
mysql -uroot -p
a spusťte následující příkaz:
mysql> show variables LIKE '%ssl%';
Výstup by měl být podobný následujícímu:
+---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysql/cacert.pem | | ssl_capath | | | ssl_cert | /etc/mysql/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | /etc/mysql/server-key.pem | +---------------+----------------------------+ 9 rows in set (0.15 sec)
6. Povolit vzdálená připojení přes SSL
Ve výchozím nastavení MySQL naslouchá pouze připojení na localhost. Chcete-li povolit vzdálená připojení, musíte překonfigurovat MySQL na vašem serveru tak, aby naslouchalo na všech rozhraních, otevřete konfigurační soubor MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
a změnit
bind-address = 127.0.0.1
do
bind-address = 0.0.0.0
Aby se změny projevily, restartujte MySQL server pomocí následujícího příkazu:
sudo systemctl restart mysql
Ověřte, že váš server MySQL naslouchá na všech rozhraních:
sudo netstat -anp | grep 3306
výstup by měl být podobný následujícímu:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 938/mysqld
Chcete-li povolit připojení vašeho klienta MySQL k serveru MySQL, musíte uživateli databáze udělit přístup k databázi na vzdáleném serveru.
Například pokud chcete udělit přístup k dbuser
uživatele na database_name
databáze a pro vynucení SSL se přihlaste do prostředí MySQL jako root a spusťte následující příkaz:
GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;
kde 192.168.1.10
je IP adresa vašeho klientského počítače MySQL.
Dále musíte nakonfigurovat klienta MySQL tak, aby používal dříve vygenerovaný certifikát SSL. Zkopírujte následující soubory ze serveru MySQL do klientského počítače MySQL:
/etc/mysql/cacert.pem /etc/mysql/client-cert.pem /etc/mysql/client-key.pem
7. Konfigurace klienta MySQL
otevřete konfiguraci klienta MySQL a přidejte následující řádky:
[client] ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/client-cert.pem ssl-key=/etc/mysql/client-key.pem
8. Otestujte své připojení
Nyní můžete otestovat své připojení z klientského počítače k databázovému serveru MySQL:
mysql -udbuser -pdbuserpassword -h 192.168.1.5
kde 192.168.1.5
je IP adresa vašeho databázového serveru MySQL.
A je to. Úspěšně jste nakonfigurovali vzdálená a zabezpečená připojení pro MySQL na vašem Ubuntu 16.04 VPS. Další informace o zabezpečených připojeních MySQL naleznete v oficiální dokumentaci MySQL.
Samozřejmě nemusíte konfigurovat vzdálená a zabezpečená připojení pro MySQL na Ubuntu 16.04, pokud používáte jednu z našich hostingových služeb Ubuntu VPS. V takovém případě můžete jednoduše požádat naše zkušené administrátory Linuxu, aby nakonfigurovali vzdálená a zabezpečená připojení pro MySQL na Ubuntu 16.04 pro vás. Jsou k dispozici 24×7 a okamžitě se postarají o váš požadavek.
PS . Pokud se vám líbil tento příspěvek o tom, jak nakonfigurovat vzdálené a zabezpečené připojení pro MySQL na Ubuntu 16.04, sdílejte jej se svými přáteli na sociálních sítích pomocí tlačítek vlevo nebo jednoduše zanechte odpověď níže. Děkuji.