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

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

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


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

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

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

۳ نظر

  1. سلام
    آموزش خوبی رو ارائه کردید
    چند وقتی بود دنبال ی اموزش خوب مثل این بودم
    ممنون از شما

  2. ممنون از سایتتون

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*