Як налаштувати віддалені та захищені з'єднання для MySQL на Ubuntu 16.04 VPS

У цій статті ми покажемо вам, як налаштувати віддалені та безпечні з'єднання для MySQL на Ubuntu 16.04 VPS. Якщо ви використовуєте незашифроване з'єднання для підключення до свого віддаленого сервера MariaDB / MySQL, всі, хто має доступ до мережі, зможуть відслідковувати та аналізувати дані, що надсилаються або отримуються між клієнтом і сервером. Цей посібник повинен працювати і на інших VPS-системах Linux, але був протестований і написаний для Ubuntu 16.04 VPS.

Увійдіть до свого VPS через SSH

SSH [Електронна пошта захищена]_SERVER

У кроках цього підручника передбачається, що ви встановили MySQL 5.7 за умовчанням.

Увімкнути SSL-з'єднання

Створіть новий місцевий орган сертифікації

Ми будемо використовувати місцевий сертифікаційний центр як самоконтрольний коректний сертифікат, який ми будемо використовувати для підписання серверних та клієнтських сертифікатів. Щоб створити новий локальний файл сертифіката сертифіката, виконайте такі команди:

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 / тощо /mysql/ca-csr.pem -subj / CN = mysql-CA / sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey / тощо / mysql /ca-key.pem -days 3650 sudo echo 01> /etc/mysql/cacert.srl

Створити сертифікат і ключ сервера

Щоб створити сертифікат сервера та ключ, виконайте наступні команди:

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 / тощо /mysql/server-csr.pem -subj / CN = mysql / sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA / тощо / mysql /cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

Створити сертифікат та ключ ключів

Потім потрібно створити сертифікат клієнта. Виконайте наступні команди, щоб створити клієнтський сертифікат та ключ:

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 / тощо /mysql/client-csr.pem -subj / CN = mysql / sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA / тощо / mysql /cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

Якщо ви хочете, щоб сертифікат SSL був підписаний CA, ви можете придбати довірений сертифікат SSL тут.

Увімкнути підключення SSL до сервера MySQL

Відкрийте конфігураційний файл MySQL за допомогою текстового редактора:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

і розкоментувати наступні рядки:

ssl-ca = / etc / mysql / cacert.pem ssl-cert = / etc / mysql / server-cert.pem ssl-key = / etc / mysql / server-key.pem

Збережіть файл і перезапустіть службу MySQL:

sudo systemctl перезапустити mysql 

Щоб перевірити, чи активовано протокол SSL, увійдіть на сервер MySQL

mysql -uroot -p

і запустіть таку команду:

mysql> показати змінні LIKE '% ssl%';

Вихід повинен бути подібним до наступного:

+ --------------- + ---------------------------- + | Ім'я змінної | Значення | + --------------- + ---------------------------- + | have_openssl | ТАК | | have_ssl | ТАК | | 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 у наборі (0.15 с)

Увімкнути віддалені підключення через SSL

За замовчуванням MySQL слухає лише підключення на локальному комп'ютері. Щоб увімкнути віддалені підключення, потрібно переконфігурувати MySQL на своєму сервері для прослуховування на всіх інтерфейсах, для цього відкрийте файл конфігурації MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

і змінити

bind-address = 127.0.0.1

до

bind-address = 0.0.0.0

Щоб зміни вступили в силу, перезапустіть сервер MySQL за допомогою такої команди:

sudo systemctl перезапустити mysql 

Переконайтеся, що ваш сервер MySQL прослуховує всі інтерфейси:

sudo netstat -anp | grep 3306

вихід повинен бути подібним до наступного:

tcp 0 0 0.0.0.0: 3306 0.0.0.0: * LISTEN 938 / mysqld

Щоб увімкнути клієнт MySQL для підключення до сервера MySQL, необхідно надати користувачеві базу даних доступ до бази даних на віддаленому сервері.

Наприклад, якщо ви хочете надати доступ до dbuser користувач до ім'я_системи бази даних базу даних і примусити SSL, увійдіть до оболонки MySQL як root і запустіть таку команду:

GRANT ALL ON ім'я бази даних. * TO [Електронна пошта захищена] ІДЕНТИФІКОВАНО за допомогою 'dbuserpassword' REQUIRE SSL;

де 192.168.1.10 це IP-адреса вашого клієнтського комп'ютера MySQL.

Далі необхідно налаштувати свій клієнт MySQL на використання попередньо створених сертифікатів SSL. Скопіюйте наступні файли з вашого сервера MySQL на ваш клієнтський комп'ютер MySQL:

/etc/mysql/cacert.pem /etc/mysql/client-cert.pem /etc/mysql/client-key.pem

відкрийте конфігурацію клієнта MySQL та додайте наступні рядки:

[client] ssl-ca = / etc / mysql / cacert.pem ssl-cert = / etc / mysql / client-cert.pem ssl-key = / etc / mysql / client-key.pem

Тепер ви можете перевірити ваше з'єднання з клієнтського комп'ютера на сервер бази даних MySQL:

mysql -udbuser -pdbuserpasswordword -h 192.168.1.5

де 192.168.1.5 це ваша IP-адреса сервера бази даних MySQL.

Це воно. Ви успішно налаштували віддалені та безпечні з'єднання для MySQL на вашому Ubuntu 16.04 VPS. Щоб отримати додаткові відомості про безпечні з'єднання MySQL, зверніться до офіційна документація MySQL.

джерело

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.