10 أفضل الممارسات لتأمين صور عامل الميناء. الجزء 1

تم إعداد ترجمة للمقال خصيصًا لطلاب دورة Linux Security .




في هذه المقالة ، نود التركيز على Docker ومناقشة النصائح والحيل التي توفر عملية أكثر أمانًا وعالية الجودة لمعالجة صور Docker.

لذلك ، لنبدأ بقائمتنا التي تتضمن أفضل 10 ممارسات لأمان صور Docker.

1. تفضل الحد الأدنى من الصور الأساسية


غالبًا ما يمكنك البدء في المشروعات باستخدام صورة حاوية Docker أساسية ، على سبيل المثال ، عن طريق كتابة Dockerfile مع FROM node "افتراضيًا". ومع ذلك ، عند تحديد صورة العقدة ، ضع في اعتبارك أن توزيع Debian Stretch المثبت بالكامل هو الصورة الأساسية المستخدمة في بنائها. إذا كان مشروعك لا يحتاج إلى أي مكتبات أو أدوات مساعدة للنظام ، فمن الأفضل تجنب استخدام نظام تشغيل كامل الوظائف (OS) كصورة أساسية.

في تقرير حالة الأمان Snyk مفتوح المصدر لعام 2019 ، وجدنا أن العديد من حاويات Docker الشهيرة الموجودة على موقع Docker Hub تحتوي على صور تحتوي على العديد من نقاط الضعف المعروفة. على سبيل المثال ، عند استخدام صورة docker pull node العالمية المشهورة ، فأنت تدخل نظام التشغيل فعليًا في تطبيقك ، والذي ، كما تعلم ، لديه 580 نقطة ضعف في مكتبات نظامه.



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

تعلم المزيد عن سلامة صورك

2. مستخدم متميز الأقل


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

لتقليل التعرض ، قم بتمكين إنشاء مستخدم مخصص ومجموعة في صورة Docker للتطبيق ؛ استخدم توجيه USER في Dockerfile للتحقق من أن الحاوية تبدأ تشغيل التطبيق بوصول أقل امتياز.

قد لا يوجد مستخدم مخصص في الصورة ؛ قم بإنشاء هذا المستخدم باستخدام الإرشادات الموجودة في Dockerfile .

فيما يلي مثال كامل عن كيفية القيام بذلك لصورة Ubuntu عالمية:

 FROM ubuntu RUN mkdir /app RUN groupadd -r lirantal && useradd -r -s /bin/false -g lirantal lirantal WORKDIR /app COPY . /app RUN chown -R lirantal:lirantal /app USER lirantal CMD node index.js 

مثال أعلاه:

  • ينشئ مستخدم نظام (-r) بدون كلمة مرور ، دون تثبيت دليل رئيسي وبدون shell
  • يضيف المستخدم الذي أنشأناه إلى المجموعة الحالية التي أنشأناها مسبقًا (باستخدام groupadd)
  • يضيف الوسيطة الأخيرة إلى اسم المستخدم الذي نريد إنشاؤه ، بالاقتران مع المجموعة التي أنشأناها

Node.js والصور الألبية ، وتشمل بالفعل مستخدم عام يسمى node . فيما يلي مثال Node.js باستخدام عقدة المستخدم العامة:

 FROM node:10-alpine RUN mkdir /app COPY . /app RUN chown -R node:node /app USER node CMD [“node”, “index.js”] 

إذا كنت تقوم بتطوير تطبيقات Node.js ، فيمكنك الرجوع إلى أفضل ممارسات Docker و Node.js الرسمية.

3. التوقيع والتحقق من الصور لتجنب هجمات MITM


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

التحقق من صحة صورة عامل الميناء


تتيح لك إعدادات Docker الافتراضية استرداد صور Docker دون التحقق من صحتها ، مما قد يؤدي إلى استخدام صور Docker التي لم يتم التحقق من أصلها ومؤلفها.

يوصى بالتحقق دائمًا من الصور قبل استخدامها ، بغض النظر عن السياسة. لتجربة التحقق من الصحة ، قم بتمكين Docker Content Trust مؤقتًا باستخدام الأمر التالي:

 export DOCKER_CONTENT_TRUST=1 

حاول الآن سحب الصورة التي تعرف أنها غير موقعة - سيتم رفض الطلب ولن يتم استلام الصورة.

توقيع عامل الميناء الصور


تفضيل الصور المعتمدة من Docker من الشركاء الموثوق بهم الذين تم التحقق منهم والإشراف عليهم من قِبل Docker Hub ، بدلاً من الصور التي لا يمكن التحقق من مصدرها وأصالتها.

يتيح لك عامل الميناء توقيع الصور وبالتالي توفير مستوى آخر من الحماية. لتوقيع الصور ، استخدم Docker Notary . يقوم كاتب العدل بالتحقق من توقيع الصورة لك ويمنع بدء تشغيل الصورة إذا كان توقيع الصورة غير صالح.

عند تمكين Docker Content Trust ، كما أوضحنا أعلاه ، فإن تجميع صورة Docker يوقع على الصورة. عندما يتم تسجيل الصورة لأول مرة ، يقوم Docker بإنشاء وتخزين المفتاح الخاص في ~/docker/trust للمستخدم الخاص بك. ثم يتم استخدام هذا المفتاح الخاص لتوقيع أي صور إضافية عند إنشائها.

للحصول على إرشادات مفصلة حول إعداد الصور الموقعة ، راجع وثائق Docker الرسمية .

4. البحث عن وإصلاح وتتبع نقاط الضعف في مكونات مفتوحة المصدر


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

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

لذلك ، تتمثل إحدى طرق الحماية من الثغرات الأمنية في البرامج مفتوحة المصدر في استخدام أدوات مثل Snyk لإضافة مسح ضوئي مستمر وتتبع الثغرات الأمنية التي قد توجد في جميع طبقات صور Docker المستخدمة.



يتم مسح صورة Docker بحثًا عن نقاط الضعف المعروفة باستخدام هذه الأوامر:

 # fetch the image to be tested so it exists locally $ docker pull node:10 # scan the image with snyk $ snyk test --docker node:10 --file=path/to/Dockerfile 

تتم مراقبة صورة Docker بحثًا عن نقاط الضعف المعروفة ، بحيث بعد اكتشاف ثغرات جديدة في صورة Snyk ، يمكنها إخطار وتقديم توصيات بشأن كيفية إصلاحها ، على النحو التالي:

 $ snyk monitor --docker node:10 

استنادًا إلى الفحص الذي أجراه مستخدمو Snyk ، وجدنا أن 44٪ من عمليات مسح صور Docker كشفت عن نقاط ضعف معروفة وأي صور أساسية أحدث وأكثر أمانًا كانت متوفرة. تعتبر استشارة الإصلاح هذه ، حيث يمكن للمطورين اتخاذ الإجراءات وتحديث صور Docker الخاصة بهم ، فريدة بالنسبة إلى Snyk.
وجد Snyk أيضًا أنه بالنسبة إلى 20٪ من جميع عمليات مسح صور Docker ، فإن إعادة إنشاء صورة Docker فقط كافية لتقليل نقاط الضعف . تعرف على المزيد حول عدد تقارير الأمان المفتوحة 2019 على مدونة Snyk.

نهاية الجزء الاول.

تابع في الجزء الثاني ، والآن ندعو الجميع لحضور ندوة عبر الإنترنت مجانًا حول هذا الموضوع: "نقاط ضعف Docker. الهروب من الحاوية إلى المضيف مع تصاعد الامتيازات " .

Source: https://habr.com/ru/post/ar480970/


All Articles