Redis مفيد لأشياء كثيرة، واحدة منها هي التخزين المؤقت. يمكنك أيضًا استخدام Redis كمتجر بيانات أساسي أو حتى كبديل لقاعدة بيانات. ولكن كيف يمكنك تنفيذ تثبيت آمن لـ Redis؟ قد يكون تثبيت Redis مؤلمًا، وإذا لم تكن حذرًا، قد تواجه العديد من الأخطاء. محظوظًا بالنسبة لك، يغطي هذا البرنامج التعليمي كل شيء تقريبًا.
في هذا البرنامج التعليمي، ستتعلم كيفية تثبيت Redis بشكل آمن على نظام Linux الخاص بك، بالإضافة إلى بعض النصائح لتجنب الأخطاء الشائعة.
استمر في القراءة وتجنب الصداع الناتج عن مشاكل تثبيت Redis!
المتطلبات المسبقة
سيكون هذا البرنامج التعليمي عرضًا تطبيقيًا عمليًا. إذا كنت ترغب في متابعة الدروس، تأكد من أن لديك ما يلي:
- جهاز Ubuntu 20.04 LTS – يستخدم هذا البرنامج التعليمي Ubuntu 20.04 LTS، ولكن التعليمات مماثلة لمعظم توزيعات Linux.
- صلاحيات الجذر أو مستخدم غير جذري مع صلاحيات
sudo
تثبيت Redis باستخدام مدير الحزم APT
هناك بعض الطرق لتثبيت Redis على أوبونتو، ولكن في هذا البرنامج التعليمي، ستختار استخدام مدير الحزم APT لتثبيت Redis.
Redis مكتوب بلغة C، لذلك ستحتاج إلى تجميع Redis من مصدره يدوياً. سيتطلب ذلك تثبيت عدة تبعيات، وعملية البناء ليست مضمونة بالكامل.
تجميع Redis من المصدر ليس مستحسناً، ولكن الجانب الإيجابي هو أنه يمكنك تخصيص التثبيت حسب رغبتك. تقوم بتنزيل مصدر الشفرة، ثم تقوم بتكوينه يدوياً.
افتح الطرفية الخاصة بك وقم بتشغيل الأمر apt update
أدناه لـ ضمان أن لديك أحدث قوائم الحزم.

الآن، قم بتشغيل الأمر apt install
أدناه لتثبيت Redis على جهازك.
الأمر أدناه يستخدم مدير الحزم apt
لتنزيل وتثبيت حزمة redis-server
من مستودعات أوبونتو على جهازك. علامة -y
تخبر apt
بقبول النوافذ المنبثقة أثناء عملية التثبيت تلقائياً.

تكوين ملف Redis.conf لتشغيل Redis كخدمة
لقد قمت للتو بتثبيت Redis، ولكنه ليس جاهزًا للاستخدام بعد. قبل أن تتمكن من بدء استخدام Redis، ستحتاج أولاً إلى تكوين ملف redis.conf.
ملف التكوين redis.conf مضمن مع حزمة Redis التي قمت بتثبيتها ويتم تخزينه في الدليل /etc/redis/ افتراضيًا. يحتوي هذا الملف على جميع خيارات التكوين لـ Redis.
امتداد الملف .conf منطقي، حيث يتبع نمطًا تقليديًا. تستخدم العديد من البرامج نفس النمط. على سبيل المثال، يستخدم خادم الويب Apache امتداد ملف .conf لملف التكوين الرئيسي الخاص به.
1. قم بتشغيل الأمر systemctl
التالي لـ إيقاف
خدمة redis-server
. إيقاف تشغيل خدمة Redis هو ممارسة موصى بها عند بدء الاستخدام مع Redis للمرة الأولى.
2. بعد ذلك، افتح ملف /etc/redis/redis.conf في محرر النص المفضل لديك.
ابحث عن التوجيه supervised ثم قم بتعيينه إلى systemd، كما هو موضح أدناه، واحفظ التغييرات. من خلال ذلك، يخبر النظام التشغيل بتشغيل Redis كخدمة.

3. الآن، قم بتشغيل الأمر systemctl restart
أدناه لإعادة تشغيل خدمة Redis (redis.service
) حيث أن الخدمة Redis لا تعلم بالتغييرات بعد.
4. في النهاية، قم بتشغيل الأمر systemctl status
أدناه لمعرفة ما إذا كان Redis قيد التشغيل.
كما يمكنك رؤية أدناه، يُظهر الإخراج أن خدمة Redis قيد التشغيل.

اختبار ما إذا كان خادم Redis يعمل بشكل صحيح
لقد قمت بتكوين والتحقق من أن خدمة Redis قيد التشغيل بنشاط، لكن ذلك لا يعني أن خادم Redis يعمل. كيفية اختبار ما إذا كان خادم Redis يعمل بشكل صحيح؟ قم بالاتصال بخادم Redis وإرسال الأوامر لرؤية ما إذا كان الخادم يستجيب.
1. قم بتشغيل الأمر redis-cli
أدناه للاتصال بخادم Redis. redis-cli
هو واجهة سطر الأوامر لـ Redis، والتي تسمح لك بإرسال الأوامر إلى الخادم وفحص حالته.
يمكنك ملاحظة أنك الآن في موجه خادم Redis (127.0.0.1:6379>). يحاول الأمر redis-cli
الاتصال بخادم Redis على 127.0.0.1:6379
افتراضيًا.

2. بعد ذلك، قم بتشغيل الأمر ping
أدناه للتحقق مما إذا كان خادم Redis قابلًا للوصول.
كما ترى، استجاب الخادم بـ PONG، مما يشير إلى أن خادم Redis قابل للوصول ويمكنه الآن التواصل بنجاح مع الخدمة.

ربما تكون لا تزال متشككًا؛ قم بتشغيل الأمر set
أدناه. الأمر set
هو أمر Redis يضع زوجًا من المفتاح والقيمة في قاعدة البيانات.
كما يمكنك رؤية، يعيد الأمر set “OK”، مما يشير إلى أن خدمة Redis تعمل بشكل صحيح.

3. قم بتشغيل الأمر exit
أدناه للخروج من redis-cli
. وبذلك يتم إغلاق الاتصال بخادم Redis.
ربط خادم Redis بـ Localhost
لقد قمت للتو بفحص عمل خادم Redis بشكل صحيح، ولكن قد يكون متاحًا أيضًا لأجهزة أخرى على شبكتك. هذا السلوك غير مرغوب فيه، وعادةً ما ترغب في حماية خادم Redis الخاص بك من الغرباء.
ربط خادم Redis بـ localhost يضبط سلوكًا يتيح فقط للجهاز الذي قمت بتثبيت Redis عليه الوصول إلى خادم Redis.
1. افتح الملف /etc/redis/redis.conf في محرر النص الخاص بك.
2. ابحث عن السطر الذي يقول bind 127.0.0.1 ::1
وألغِ تعليق السطر عن طريق حذف علامة العدد (#) في بداية السطر.

3. الآن، قم بتشغيل الأمر أدناه لإعادة تشغيل خدمة redis-server
.
4. في النهاية، قم بتشغيل الأمر التالي للتحقق مما إذا كان خادم Redis مرتبطًا بـ localhost. يقوم الأمر netstat -lnp
بعرض قائمة بجميع الاتصالات الشبكية النشطة، وجزء grep redis
يقوم بتصفية النتائج للأسطر التي تحتوي على “redis”.
-lnp
يعني بروتوكول الاسم المحلي، وهو بروتوكول للشبكات يستخدمه أنظمة UNIX مشابهة لحل أسماء المضيفين إلى عناوين IP.
يمكنك أن ترى أدناه أن خادم Redis يستمع الآن فقط على واجهة المضيف المحلية (127.0.0.1:6379
). مع انعكاس التغيير في ملف التكوين، يمكنك أن ترى أن واجهة المضيف المحلية فقط هي المُدرجة تحت اتصالاتك الإنترنت النشطة (tcp
).
الآن، لا يمكن لأي أجهزة أخرى في شبكتك الاتصال بخادم Redis الخاص بك.

تأمين اتصال خادم Redis بكلمة مرور
في هذه النقطة، لم يتم ضبط Redis ليطلب من المستخدمين المصادقة بكلمة مرور. أي شخص يعرف عنوان IP أو اسم المضيف الخاص بخادم Redis الخاص بك يمكنه الاتصال به وتغيير بياناته.
كيف يمكنك حماية خادم Redis الخاص بك؟ قم بتعيين كلمة مرور لطلب المصادقة من المستخدمين عند الاتصال بخادم Redis الخاص بك.
1. أعد فتح ملف التكوين redis.conf في محرر نصوص/كود الخاص بك.
2. بعد ذلك، قم بتعيين كلمة مرور قوية باستخدام الخطوات التالية:
- ابحث عن
requirepass foobared
تحت القسمSECURITY
- احذف علامة النجمة (
#
) من بداية السطر. - استبدل
foobared
بكلمة مرور قوية من اختيارك واحفظ التغييرات.

3. قم بتشغيل الأوامر التالية لإعادة تشغيل والاتصال بخادم Redis الخاص بك.
4. الآن، قم بتشغيل الأمر ping
لمعرفة ما إذا كان ستحصل على استجابة من الخادم.
أدناه، يمكنك رؤية رسالة خطأ تقول NOAUTH يتطلب المصادقة. تشير هذه الرسالة إلى أنه يجب عليك استخدام كلمة مرور المصادقة للوصول إلى خادم Redis الخاص بك عن بعد.

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

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

تعطيل الأوامر الخطرة لحماية خادم Redis الخاص بك
تعيين كلمة مرور للمصادقة على الاتصال بخادم Redis الخاص بك لا يعني أنه يتمتع بحماية بنسبة 100%. بشكل افتراضي، يتضمن Redis العديد من الأوامر الخطرة التي تسمح للمستخدمين بتغيير البيانات في قاعدة البيانات الخاصة بك.
عند تشغيلها بواسطة مستخدمين غير مصرح لهم، تسمح هذه الأوامر للمتسللين بقراءة، وتعديل، وتدمير، وحتى محو بيانات قاعدة بيانات Redis الخاصة بك.
فيما يلي قائمة غير شاملة حيث قد تحتوي خادم Redis الخاص بك على أوامر خطرة إضافية، ولكن في معظم الحالات، هذه هي الأوامر الخطرة:
لتأمين خادم Redis الخاص بك بشكل أكبر، قم بتغيير أسماء هذه الأوامر الخطرة في ملف redis.conf:
1. قم بفتح ملف redis.conf في محرر النصوص الخاص بك وابحث عن قسم إعادة تسمية الأوامر.
أعد تسمية الأوامر إلى سلسلة فارغة لتعطيلها وفقًا للصيغة التالية. استبدل الأمر
بالأمر الفعلي للتعطيل.
على سبيل المثال، قم بتعطيل الأمر CONFIG
بإعادة تسمية CONFIG
إلى سلسلة فارغة، كما هو موضح أدناه، ثم احفظ التغييرات. العلامات التعريفية (“”) تشير إلى سلسلة فارغة تعني تعطيل أمر.

CONFIG
command 2. اخرج من محرر النصوص وقم بتشغيل الأمر التالي لإعادة تشغيل خادم Redis.
3. الآن قم بتشغيل الأوامر التالية للاتصال بخادم Redis الخاص بك.
4. في النهاية، قم بتشغيل الأمر config get
لاختبار تعطيل الأمر CONFIG
.
ستحصل على استجابة ERR unknown command config
كما هو موضح أدناه، مما يشير إلى تعطيل الأمر CONFIG
.

CONFIG
command إذا نجح الأمر config get requirepass
، يطلب كلمة مرور خادم Redis الخاص بك لمصادقة الاتصال بخادم Redis الخاص بك.
لقد قمت الآن بنجاح بإعادة تسمية أمر خطير في Redis لحماية خادم Redis الخاص بك. الآن قم بتعطيل الأوامر الخطيرة الأخرى في ملف redis.conf.
حجب طلبات الاتصال بخادم Redis باستخدام جدار ناري
طريقة أخرى لتأمين خادم Redis الخاص بك هي إعداد جدار ناري. يتطلب إعداد جدار ناري منك السماح بالسماح بالمنفذ المطلوب فقط لكل الخدمات الجاري تشغيلها على خادمك.
على سبيل المثال، إذا كنت تقوم بتشغيل Redis على الخادم الخاص بك على المنفذ 6379
، فإن هذا المنفذ هو كل ما تحتاج إلى فتحه. إذا كنت بحاجة إلى السماح بالوصول من عنوان IP معين أو مجموعة من العناوين، يمكنك إضافة تلك العناوين إلى قواعد جدار الحماية.
لإعداد جدار حماية، ستقوم أولاً بتثبيت أداة تكوين جدار الحماية. يستخدم هذا المثال أداة UFW، وهي أداة تكوين جدار حماية شائعة الاستخدام على نظام Linux. ولكن يمكنك أيضًا استخدام أداة أخرى مثل iptables لإعداد جدار حماية.
1. قم بتشغيل الأمر التالي لتثبيت UFW على جهازك.
2. بعد ذلك، قم بتشغيل الأمر أدناه لتمكين UFW.
أدخل “Y” عندما تحصل على الرسالة المبينة أدناه لمتابعة تشغيل الأمر.

3. قم بتشغيل الأمر ufw
أدناه لإضافة قاعدة، تسمح (allow
) بحركة المرور على المنفذ 6379
لخادم Redis الخاص بك. قم بتبديل عنوان الـ IP 11.22.33.44
بعناوين IP للمستخدمين المعنيين لديك.

6379
4. أخيرًا، قم بتشغيل الأمر أدناه للتحقق من أنك قمت بإضافة قاعدة جدار الحماية بنجاح. يتحقق الأمر من status
جدار الحماية الخاص بك.
يمكنك رؤية في الناتج أدناه أن جدار الحماية نشط ولديه قاعدة للسماح بحركة المرور على المنفذ 6379
لـ Redis من عنوان الـ IP 11.22.33.44
.

الآن ، يمكن للمستخدمين الذين يمتلكون عنوان IP 11.22.33.44
الاتصال بـ Redis عبر البوابة 6379
وسيحتاجون إلى المصادقة بكلمة مرور. يمكنك إضافة منافذ إضافية لخدمات أخرى بنفس الطريقة.
الاستنتاج
خلال هذا البرنامج التعليمي ، تعلمت كيفية تثبيت وتأمين خادم Redis الخاص بك عن طريق تغيير الأوامر الخطرة إلى سلاسل فارغة وإعداد جدار ناري.
بهذه المعرفة الجديدة ، يمكنك الاستمتاع بفوائد Redis بالكامل دون القلق بشأن تعريض خادمك لمخاطر غير ضرورية.
تود تعلم المزيد؟ لماذا لا تبدأ بـ تأمين خادم Redis في Kubernetes؟