اوبونتوسرور مجازیمدیریت سرورمقالات وب

چگونه ارتباط امن و ریموتی را برای MYSQL در سرور مجازی اوبونتو ۱۶٫۰۴ پیکربندی کنیم؟

در این مقاله به شما نشان خواهیم داد که چگونه می توانید ارتباط امن و ی را برای MYSQL خود در سرور مجازی ابونتو ۱۶٫۰۴ ایجاد کنید. اگر از ارتباط رمزگذاری نشده برای سرور MariaDB/MySQL ریموت خود استفاده می کنید من است هر فردی بتواند به شبکه تان دسترسی داشته باشد و داده هایی که بین کلاینت و سرور ارسال و دریافت می شود را تجزیه و تحلیل کند. در ادامه همراه باشید تا نحوه امن کردن این ارتباط را با هم مرور کنیم.


ابتدا از طریق SSH به سرور مجازی خود لاگین کنید:

ssh my_sudo_user@my_server

در این مقاله فرض می کنیم که شما MySQL 5.7 را با های پیش فرض کرده اید.

ارتباط SSL را فعال کنید:

یک گواهینامه محلی جدید ایجاد کنید:
ما از این گواهینامه به عنوان گواهینامه روت self-signed استفاده خواهیم کرد که برای امضای گواهینامه سرور و کلاینت مورد استفاده قرار می گیرد. برای ایجاد اتوریتی گواهینامه محلی جدید، دستور زیر را اجرا کنید:

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

تولید گواهینامه و Key سرور:
برای تولید گواهینامه و Key باید دستور زیر را اجرا کنید:

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

تولید گواهینامه و Key کلاینت:

باید گواهینامه را برای کلاینت نیز تولید کنیم. برای اینکار از دستور زیر استفاده کنید:

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

اگر می خواهید گواهینامه SSl امضا شده با CA را داشته باشید میتوانید آن را از یک منبع امن ی کنید.

ارتباط SSL را برای MySQL Server فعال کنید:

فایل پیکربندی MYSQL را باز کنید و آن را نرم افزار ویرایشگر متن به شیوه زیر ویرایش نمایید:

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

خطوط زیر را از حالت Comment در بیاورید:

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

فایل را ذخیره کنید و سرویس MYSQL را ارت کنید:

sudo systemctl restart mysql

برای تایید اینکه SSL فعال شده است، به سرور MYSQL خود لاگین کنید:

mysql -uroot -p

و دستور زیر را اجرا نمایید:

mysql> show variables LIKE ‘%ssl%';

خروجی باید شبیه خروجی زیر باشد:

+—————+—————————-+
| 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 |
+—————+—————————-+

۹ rows in set (0.15 sec)

ارتباط ریموت را از طریق 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 server را به کمک دستور زیر ریستارت کنید:

sudo systemctl restart mysql

تایید کنید که سرور شما در تمامی رابط ها listen می کند:

sudo netstat -anp | grep 3306

خروجی دستور بالا باید شبیه خروجی زیر باشد:

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

برای اینکه بتوانید کلاینت MYSQL خود را برای ارتباط با سرور فعال کنید، باید به کاربر پایگاه داده اجازه دهید به پایگاه داده موجود بر روی سرور ریموت دسترسی داشته باشد. به عنوان مثال اگر می خواهید به کاربر dbuser اجازه دهید به پایگاه داده database_name دسترسی داشته باشد و لاگین SSL را برای او فعال نمایید می توانید از دستور زیر استفاده کنید:

GRANT ALL ON database_name.* TO dbuser@192.168.1.10 IDENTIFIED BY ‘dbuserpassword' REQUIRE SSL;

که در آن ۱۹۲٫۱۶۸٫۱٫۰ ، آی پی آدرس کلاینت MYSQL است. حالا باید کلاینت خود را به گونه ای پیکربندی کنید که بتواند از گواهینامه تولید شده استفاده کند. فایل زیر را از سرور MYSQL به دستگاه کلاینت خود کپی کنید:

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

فایل پیکربندی کلاینت را باز کنید و خطوط زیر را بدان بیفزایید:

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

حالا می توانید از دستگاه کلاینت ارتباط با سرور را تست کنید:

mysql -udbuser -pdbuserpassword -h 192.168.1.5

که در آن ۱۹۲٫۱۶۸٫۱٫۵ ای آپی ادرس سرور پایگاه داده است. خوب کار شما تمام شد.

Rate this post
برچسب ها

نوشته های مشابه

‫۳ نظرها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن