العودة إلى المدونة

كيفية تثبيت وتأمين Redis على Ubuntu 18.04

كيفية تثبيت وتأمين Redis على Ubuntu 18.04

Redis هو مخزن قيم-مفاتيح قوي في الذاكرة يمكن استخدامه كخادم قاعدة بيانات، وذاكرة تخزين مؤقت، ووسيط رسائل. وهو معروف على نطاق واسع بأدائه السريع ومرونته ودعمه لمجموعة واسعة من اللغات. إنه برنامج مجاني ومفتوح المصدر مكتوب بلغة لغة البرمجة C. في هذا الدليل، تعرف على كيفية تثبيت وتأمين Redis على Ubuntu 18.04.

المتطلبات الأساسية

من أجل اتباع هذا الدليل، ستحتاج إلى إعداد بعض الأشياء مسبقًا. يجب أن يكون لديك خادم Ubuntu 18.04، والذي يمكنك تثبيته بسهولة باتباع البرنامج التعليمي الخاص بنا. بالإضافة إلى ذلك، يجب أن يكون لديك مستخدم غير جذري (non-root) يتمتع بامتيازات sudo وجدار حماية أساسي مهيأ. يمكنك إعداد ذلك باتباع أدلتنا حول تكوين ملف Linux sudoers و إعداد UFW على خادم سحابي يعمل بنظام Ubuntu و Debian.

الآن، لنبدأ!

تثبيت Redis

يتوفر Redis مباشرة من مستودع Ubuntu الرسمي. هذه هي أبسط طريقة لتثبيته وتكوينه. نوصي باتباع هذا المسار ما لم تكن هناك أسباب محددة لعدم القيام بذلك. نظرًا لأن الكود المصدري لـ Redis متاح مجانًا، فمن الممكن أيضًا بناء Redis من المصدر. ومع ذلك، لا نوصي بذلك لأنه من الصعب إدارته وتحديثه.

تثبيت Redis من مستودع Ubuntu

أولاً، قم بتحديث ذاكرة التخزين المؤقت لحزم APT المحلية:

بعد ذلك، قم بتثبيت Redis باستخدام الأمر التالي:

تثبيت Redis من المصدر

لا يأتي Ubuntu مع أدوات البناء والمكتبات اللازمة بشكل افتراضي. سيقوم الأمر التالي بتثبيت جميع الأدوات اللازمة لبناء Redis:

هناك تبعيتان إضافيتان لبناء Redis. هذه التبعيات ضرورية لتجميع Redis بميزات إضافية، على سبيل المثال، دعم TLS، وتكامل systemd، وما إلى ذلك. لتجميع Redis مع دعم TLS، قم بتثبيت حزمة “libssl-dev”. لتجميع Redis لدعم systemd، قم بتثبيت حزمة “libsystemd-dev”:

يتوفر الكود المصدري لـ Redis على GitHub. تحقق من صفحة Redis على GitHub. بعد ذلك، احصل على الكود المصدري:

Redis GitHub page

قم بتغيير الدليل النشط الحالي إلى دليل الكود المصدري لـ Redis:

بعد ذلك، قم بتشغيل أداة make لبدء التجميع. سيقوم بتجميع Redis دون أي عناصر إضافية:

لتمكين دعم TLS (بافتراض تثبيت “libssl-dev”)، استخدم الأمر التالي بدلاً من ذلك:

لتمكين دعم systemd (بافتراض تثبيت “libsystemd-dev”)، استخدم الأمر التالي:

بعد ذلك، اختبر ما إذا كان التجميع ناجحًا. لاحظ أنه قد يتطلب حزمة إضافية “tcl-dev” والتبعيات المرتبطة بها لتشغيل الاختبار:

أخيرًا، قم بتثبيت Redis عن طريق تشغيل الأمر التالي:

إذا تم بناء Redis باستخدام TLS، فيجب تشغيل الخادم بالطريقة التالية:

تكوين Redis

بمجرد اكتمال التثبيت، يحين وقت تكوين Redis. افتح ملف تكوين Redis في محرر نصوص وانتقل لأسفل إلى قسم “supervised”:

secure redis 1

قم بتغيير قيمة “supervised” إلى “systemd”. سيضمن ذلك إدارة خدمة Redis بواسطة systemd. لتطبيق التغييرات، أعد تشغيل خدمة Redis:

اختبار Redis

من الجيد دائمًا اختبار ما إذا كان Redis يعمل بشكل صحيح قبل استخدامه بشكل أكبر. إليك بعض الطرق لاختبار سلوك Redis. الخطوة الأولى هي التحقق مما إذا كانت خدمة Redis قيد التشغيل:

هنا، يعمل Redis بالفعل. بشكل افتراضي، سيبدأ تشغيل خدمة Redis عند الإقلاع. إذا كان سيتم تشغيل خدمة Redis يدويًا، فقم بتعطيلها:

الاختبار التالي هو التحقق باستخدام وحدة تحكم Redis. قم بتشغيل عميل سطر أوامر Redis:

قم بتشغيل الأمر “ping”:

يؤكد المخرج أن الاتصال بالخادم لا يزال نشطًا. الاختبار التالي هو معرفة ما إذا كان يسمح بتعيين المفاتيح. قم بإنشاء مفتاح “temp” بالقيمة “hello world”:

استرجع القيمة باستخدام الأمر “get”:

إذا كان كل شيء يعمل بشكل جيد حتى الآن، فيجب أن يعيد Redis قيمة المفتاح دون أي مشكلة. أغلق عميل سطر أوامر Redis:

Redis command-line

الاختبار النهائي هو التحقق مما إذا كان بإمكان Redis حفظ البيانات حتى لو تم إيقافه أو إعادة تشغيله. أعد تشغيل خدمة Redis:

إذا واجهت خطأ أثناء تشغيل الأمر أعلاه، فاستخدم الأمر “systemctl enable redis-server”:

قم بتشغيل عميل سطر أوامر Redis واسترجع قيمة المفتاح “temp” الذي أنشأناه سابقًا:

بهذا ينتهي اختبار Redis. أصبح خادم Redis الخاص بك جاهزًا الآن للاستخدام في الغرض المطلوب.

تأمين Redis

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

الربط بـ localhost

بشكل افتراضي، لا يمكن الوصول إلى Redis إلا من localhost. ومع ذلك، إذا تم تكوين Redis على خادم بعيد، فيجب تحديث التكوين للسماح بالاتصال من أي مكان. ومع ذلك، قد لا يكون ذلك آمنًا مثل الربط بـ localhost. لإعادة ربط Redis بـ localhost، افتح ملف تكوين Redis في محرر نصوص:

قم بالتمرير لأسفل وابحث عن السطر التالي. تأكد من أنه ليس معلقًا:

Binding to localhost

احفظ الملف وأغلقه. ثم أعد تشغيل خدمة Redis للتأكد من أن التغيير ساري المفعول على الفور:

تحقق من نجاح التغيير:

إذا واجهت خطأ مثل ‘netstat: command not found’، فاستخدم الأمر لتثبيت net-tools وهو “sudo apt-get install net-tools”. يتحقق المخرج من أن “redis-server” مرتبط بنجاح بـ localhost (127.0.0.1)، مما يعكس التغيير الذي تم إجراؤه مؤخرًا. إذا كان هناك أي عنوان IP آخر (على سبيل المثال، 0.0.0.0)، فأعد التحقق من ملف التكوين وأعد تشغيل خادم Redis مرة أخرى.

تكوين كلمة مرور Redis

يتيح تكوين كلمة المرور استخدام ميزة أمان مدمجة في Redis – الأمر “AUTH”. وهو يتطلب من العملاء المصادقة للوصول إلى قاعدة البيانات. بشكل افتراضي، لا توجد كلمة مرور مكونة لـ Redis. يجب الإعلان عن كلمة المرور في ملف تكوين Redis. افتح ملف التكوين في محرر نصوص:

ثم قم بالتمرير لأسفل إلى السطر التالي وألغِ التعليق عنه:

بعد إلغاء التعليق، ستكون “foobared” هي كلمة المرور الافتراضية. قم بتغييرها إلى كلمة المرور التي تختارها. عندما يتعلق الأمر بـ Redis، فإن قوة كلمة المرور هي عامل قلق كبير. نظرًا لأن Redis خادم سريع الأداء، فمن المحتمل أن يكون من السهل استغلاله باستخدام هجمات القوة الغاشمة (brute-force). هذا هو السبب في أن ملف التكوين يحتوي مباشرة على التحذير التالي. إليك مثال سريع لإنشاء كلمة مرور عشوائية قوية جدًا. سنستخدم أمر OpenSSL لإنشاء سلسلة عشوائية:

بعد تكوين كلمة مرور جديدة، أعد تشغيل خدمة Redis لتطبيق التغييرات:

حان الوقت لاختبار ما إذا تم تطبيق كلمة المرور بنجاح. قم بتشغيل وحدة تحكم سطر أوامر Redis:

ثم، حاول تعيين مفتاح جديد:

سيرفض Redis الطلب لعدم وجود مصادقة لهذا الإجراء. لتنفيذ أي إجراء على الخادم، يجب تفويض المستخدم أولاً. قم بتفويض المستخدم باستخدام الأمر التالي:

إذا كانت كلمة المرور صحيحة، فسيقر Redis بالإجراء. الآن، سيسمح Redis بالوصول إلى وظائف الخادم الخاصة به:

في الوقت الحالي، انتهى عملنا مع وحدة تحكم Redis. يمكنك إغلاق وحدة التحكم:

إعادة تسمية الأوامر الخطيرة

يتيح Redis إعادة تسمية أو تعطيل بعض الأوامر التي تعتبر خطيرة تمامًا. هذه ميزة أمان مدمجة مهمة أخرى في Redis. لماذا تعتبر الأوامر خطيرة؟ إذا تم تشغيلها بواسطة مستخدم غير مصرح له، يمكن لهذه الأوامر إعادة تكوين البيانات أو تدميرها أو مسحها في الخادم. من الممارسات الشائعة تعطيل/إعادة تسمية مجموعة من أوامر Redis الخطيرة. لاحظ أن التهديد الأمني للأمر يعتمد على الموقف. على سبيل المثال، قد تكون بعض الأوامر التالية ضرورية بشكل منتظم. في مثل هذه الحالات، لا يوصى بتعطيلها. في مثل هذا الموقف، قد يكون إعادة تسمية الأمر أكثر فائدة. إليك قائمة سريعة بالأوامر التي تعتبر خطيرة. هذه نقطة بداية جيدة لتعزيز أمان خادم Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

لإعادة تسمية أمر أو تعطيله، يجب الإعلان عنه في ملف تكوين Redis. افتح ملف تكوين Redis، وأضف السطور التالية. هنا، يتم استخدام “rename-command” لإعادة تسمية الأوامر إلى سلسلة فارغة. أضف أكبر عدد ممكن من الإدخالات حسب الضرورة:

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

rename-command

احفظ الملف واخرج من المحرر. لتطبيق التغييرات، أعد تشغيل خدمة Redis:

تحقق من التغييرات. بعد ذلك، قم بتشغيل وحدة تحكم Redis وقم بمصادقة الوصول:

دعنا نفترض أنه تم تعطيل أمر “CONFIG” أو إعادة تسميته. حاول استخدام أمر “CONFIG” التالي. سيفشل:

إذا تم تعطيل الأمر، فلا يمكن الوصول إليه حتى يتم تمكينه مرة أخرى. ومع ذلك، إذا تمت إعادة تسميته، فاستخدم الاسم المستعار الجديد:

command_4

الخاتمة

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

حوسبة سعيدة!

author

Hark Labs

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.