تأمين MariaDB مع دعم SSL على أوبونتو 16.04

MariaDB هي قاعدة بيانات مجانية مفتوحة المصدر ، وهي الاستبدال الأكثر استخدامًا لـ MySQL. تم صنعه من قبل مطوري MySQL ويهدف إلى البقاء مجانيًا تحت GNU GPL. إنه سريع جدًا وقابل للتطوير ويأتي بمجموعة غنية من الميزات التي تجعله متعدد الاستخدامات لمجموعة متنوعة من حالات الاستخدام.

سيرشدك هذا البرنامج التعليمي إلى كيفية تثبيت MariaDB وتكوينه مع دعم SSL على Ubuntu 16.04.

المتطلبات

  • نسخة جديدة من Ubuntu 16.04 Vultr.
  • مستخدم غير جذري بامتيازات sudo.
  • تم تكوين عنوان IP ثابت 192.168.0.190 على مثيل الخادم.
  • تم تكوين عنوان IP ثابت 192.168.0.191 على جهاز العميل.

الخطوة 1: تثبيت MariaDB

افتراضيًا ، لا يتوفر أحدث إصدار من MariaDB في مستودع Ubuntu 16.04 ؛ لذلك ستحتاج إلى إضافة مستودع MariaDB إلى نظامك.

أولاً ، قم بتنزيل المفتاح بالأمر التالي:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

بعد ذلك ، أضف مستودع MariaDB إلى /etc/apt/sources.listالملف:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

قم بتحديث فهرس apt بالأمر التالي:

sudo apt-get update -y

بمجرد تحديث فهرس apt ، قم بتثبيت خادم MariaDB بالأمر التالي:

sudo apt-get install mariadb-server -y

قم بتشغيل خادم MariaDB وتمكينه من البدء في وقت التمهيد:

sudo systemctl start mysql
sudo systemctl enable mysql

بعد ذلك ، ستحتاج إلى تشغيل mysql_secure_installationالبرنامج النصي لتأمين تثبيت MariaDB. يسمح لك هذا البرنامج النصي بتعيين كلمة مرور الجذر ، وإزالة المستخدمين المجهولين ، وعدم السماح بتسجيل الدخول إلى الجذر البعيد وإزالة قاعدة بيانات الاختبار:

sudo mysql_secure_installation

الخطوة 2: إنشاء شهادة SSL ومفتاح خاص للملقم

أولاً ، قم بإنشاء دليل لتخزين جميع ملفات المفتاح والشهادة.

sudo mkdir /etc/mysql-ssl

بعد ذلك ، غيّر الدليل /etc/mysql-sslوقم بإنشاء شهادة المرجع المصدق والمفتاح الخاص بالأمر التالي:

sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem

أجب عن جميع الأسئلة كما هو موضح أدناه:

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.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:example@example.com

بعد ذلك ، أنشئ مفتاحًا خاصًا للخادم باستخدام الأمر التالي:

sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem

أجب عن جميع الأسئلة كما فعلت في الأمر السابق.

بعد ذلك ، قم بتصدير المفتاح الخاص للخادم إلى مفتاح من نوع RSA باستخدام الأمر التالي:

sudo sudo openssl rsa -in server-key.pem -out server-key.pem

أخيرًا ، أنشئ شهادة خادم باستخدام شهادة المرجع المصدق كما يلي:

sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

يمكنك الآن رؤية جميع الشهادات والمفتاح باستخدام الأمر التالي:

ls

يجب أن تشاهد الإخراج التالي:

ca-cert.pem  ca-key.pem  server-cert.pem  server-key.pem  server-req.pem

بمجرد الانتهاء ، يمكنك المتابعة إلى الخطوة التالية.

الخطوة 3: تكوين خادم MariaDB لاستخدام SSL

يجب أن يكون لديك جميع الشهادات ومفتاح خاص ؛ والآن ستحتاج إلى تكوين MariaDB لاستخدام المفتاح والشهادات. يمكنك القيام بذلك عن طريق تحرير /etc/mysql/mariadb.conf.d/50-server.cnfالملف:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

أضف الأسطر التالية تحت [mysqld]القسم:

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

##Change this value to connect the MariaDB server from another host.
bind-address = *

احفظ الملف ، ثم أعد تشغيل خدمة MariaDB لتطبيق هذه التغييرات:

sudo systemctl restart mysql

الآن ، يمكنك التحقق مما إذا كان تكوين SSL يعمل أم لا مع الاستعلام التالي:

mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';

إذا كان التكوين ناجحًا ، فسترى الناتج التالي:

+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            |
| have_ssl      | YES                            |
| ssl_ca        | /etc/mysql-ssl/ca-cert.pem     |
| ssl_capath    |                                |
| ssl_cert      | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher    |                                |
| ssl_crl       |                                |
| ssl_crlpath   |                                |
| ssl_key       | /etc/mysql-ssl/server-key.pem  |
+---------------+--------------------------------+

يجب أن تلاحظ have_sslوتم have_opensslتمكين القيم في الإخراج أعلاه.

الخطوة 4: إنشاء مستخدم بامتيازات SSL

قم بإنشاء مستخدم بعيد لديه امتياز الوصول إلى خادم MariaDB عبر SSL. قم بذلك عن طريق تشغيل الأمر التالي:

أولاً ، قم بتسجيل الدخول إلى هيكل MySQL:

mysql -u root -p

بعد ذلك ، قم بإنشاء مستخدم remoteومنح الامتياز للوصول إلى الخادم عبر SSL.

MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;

ثم امسح الامتيازات بالأمر التالي:

MariaDB [(none)]>FLUSH PRIVILEGES;

أخيرًا ، اخرج من هيكل MySQL باستخدام الأمر التالي:

MariaDB [(none)]>exit;

ملاحظة: 192.168.0.191 هو عنوان IP لجهاز المستخدم البعيد (العميل).

خادمك جاهز الآن للسماح بالاتصالات بالمستخدم البعيد.

الخطوة 5: إنشاء شهادة العميل

اكتمل تكوين جانب الخادم الخاص بك. بعد ذلك ، ستحتاج إلى إنشاء مفتاح وشهادة جديدة للعميل.

على جهاز الخادم ، قم بإنشاء مفتاح العميل بالأمر التالي:

sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem

بعد ذلك ، قم بمعالجة مفتاح RSA للعميل باستخدام الأمر التالي:

sudo openssl rsa -in client-key.pem -out client-key.pem

أخيرًا ، قم بتوقيع شهادة العميل باستخدام الأمر التالي:

sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

الخطوة 6: تكوين عميل MariaDB لاستخدام SSL

جميع الشهادات والمفتاح جاهزة للعميل. بعد ذلك ، ستحتاج إلى نسخ جميع شهادات العميل إلى أي جهاز عميل تريد تشغيل عميل MariaDB فيه.

ستحتاج إلى تثبيت عميل MariaDB على جهاز العميل.

أولاً ، على جهاز العميل ، قم بتنزيل مفتاح MariaDB باستخدام الأمر التالي:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

بعد ذلك ، أضف مستودع MariaDB إلى /etc/apt/sources.listالملف:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

بعد ذلك ، قم بتحديث فهرس apt بالأمر التالي:

sudo apt-get update -y

بمجرد تحديث فهرس apt ، قم بتثبيت عميل MariaDB على جهاز العميل بالأمر التالي:

sudo apt-get install mariadb-client -y

الآن قم بإنشاء دليل لتخزين جميع الشهادات:

sudo mkdir /etc/mysql-ssl

بعد ذلك ، انسخ جميع شهادات العميل من جهاز الخادم إلى جهاز العميل باستخدام الأمر التالي:

sudo scp root@192.168.0.190:/etc/mysql-ssl/client-* /etc/mysql-ssl/

بعد ذلك ، ستحتاج إلى تكوين عميل MariaDB لاستخدام SSL. يمكنك القيام بذلك عن طريق إنشاء /etc/mysql/mariadb.conf.d/50-mysql-clients.cnfملف:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

أضف الأسطر التالية:

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

احفظ الملف عند الانتهاء.

الخطوة 7: التحقق من الاتصالات عن بعد

الآن بعد أن تم تكوين كل شيء ، حان الوقت للتحقق مما إذا كان يمكنك الاتصال بخادم MariaDB بنجاح أم لا.

على جهاز العميل ، قم بتشغيل الأمر التالي للاتصال بخادم MariaDB:

mysql -u remote -h 192.168.0.190 -p mysql

سيُطلب منك إدخال remoteكلمة مرور المستخدم. بعد إعطاء كلمة المرور ، سيتم تسجيل دخولك إلى خادم MariaDB البعيد.

تحقق من حالة الاتصال بالأمر التالي:

MariaDB [mysql]> status

يجب أن تشاهد الإخراج التالي:

--------------
mysql  Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      62
Current database:   mysql
Current user:       remote@192.168.0.191
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version:   10
Connection:     192.168.0.190 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         1 hours 31 min 31 sec

يجب أن ترى SSL: Cipher in use is DHE-RSA-AES256-SHAفي الإخراج أعلاه. هذا يعني أن اتصالك آمن الآن مع SSL.

استنتاج

تهانينا! لقد نجحت في تكوين خادم MariaDB بدعم SSL. يمكنك الآن منح الوصول إلى عملاء آخرين للوصول إلى خادم MariaDB عبر SSL.

اترك تعليقاً

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد