কেন কন্টেইনাররা ডিফল্টভাবে রুট হিসেবে চলা উচিত নয়?
কন্টেইনাররা রুট হিসেবে চলা কেন বিপজ্জনক এবং উৎপাদন পরিবেশে কীভাবে least-privilege ব্যবহারকারী, ক্ষমতা এবং নীতি প্রয়োগ করতে হয় তা জানুন।
কন্টেইনাররা রুট হিসেবে চলা উৎপাদন পরিবেশে সবচেয়ে সাধারণ — এবং সবচেয়ে বিপজ্জনক — ভুল কনফিগারেশনগুলির মধ্যে একটি। এটি নীরবে প্রতিটি কর্মভারের আক্রমণের পৃষ্ঠকে প্রশস্ত করে, এবং বেশিরভাগ দল এটি বুঝতে পারে না যতক্ষণ না একটি ঘটনা বিষয়টি বাধ্য করে।
"রুট হিসেবে চলা" আসলে মানে কী
ডিফল্টরূপে, অনেক কন্টেইনার ইমেজ (বিশেষত ন্যূনতম বা লিগ্যাসি ইমেজগুলি) কন্টেইনারের ভিতরে তাদের মূল প্রক্রিয়াটি UID 0 হিসেবে চালায়। কন্টেইনাররা হোস্ট কার্নেলটি অন্যান্য কন্টেইনার এবং হোস্টের সাথে শেয়ার করার কারণে, কন্টেইনারের মধ্যে রুট সম্পূর্ণভাবে আলাদা ভার্চুয়াল মেশিনের উপর রুট হওয়া নয় — তবে এটি এখনও যা হওয়া উচিত তার চেয়ে অনেক বেশি শক্তিশালী। যদি একজন আক্রমণকারী রুট-মালিকানাধীন কন্টেইনারের মধ্যে কোড এক্সিকিউশন অর্জন করে, তারা উত্তরাধিকার পায়:
- কন্টেইনারে মাউন্ট করা যেকোনো ফাইলে সম্পূর্ণ পড়া/লেখার অ্যাক্সেস, নির্বিশেষে উদ্দিষ্ট অনুমতিগুলি
- প্যাকেজ ইনস্টল করতে, বাইনারি সংশোধন করতে বা অ্যাপ্লিকেশন অবস্থা নিয়ে হস্তক্ষেপ করতে সক্ষম
- যদি একটি কার্নেল বা রানটাইম দুর্বলতা কাজে লাগানোযোগ্য হয় তবে কন্টেইনার ব্রেকআউটের দিকে একটি অনেক সহজ পথ
- মিসকনফিগার করা ভলিউমের সাথে মিলিত হলে উন্নত প্রভাব, যেমন একটি মাউন্ট করা Docker সকেট বা হোস্ট ফাইলসিস্টেম পাথ
এমনকি একটি কার্নেল এক্সপ্লয়েট ছাড়াও, কন্টেইনারের মধ্যে রুট অ্যাক্সেস যেকোনো অ্যাপ্লিকেশন-স্তরের দুর্বলতার বিস্ফোরণ ব্যাসার্ধ নাটকীয়ভাবে বৃদ্ধি করে (SSRF, ডিসেরিয়ালাইজেশন বাগ, ইচ্ছাকৃত ফাইল লিখুন, ইত্যাদি)।
এটি সমন্বিত পরিবেশে কেন আরও গুরুত্বপূর্ণ
Kubernetes ক্লাস্টারে, অত্যধিক Linux ক্ষমতা বা একটি অনুমোদনশীল সিকিউরিটি প্রসঙ্গ সহ একটি রুট কন্টেইনার একটি আক্রমণকারীকে অনুমতি দিতে পারে:
/procবা/sysপরিবর্তন করতে এমনভাবে যা হোস্টকে প্রভাবিত করে- যদি
hostPID,hostNetwork, বাhostIPCসক্ষম করা হয় তবে বিশেষাধিকার বৃদ্ধি করতে - একটি মাউন্ট করা সেবা অ্যাকাউন্ট টোকেনকে ক্লাস্টার জুড়ে পার্শ্বভূমিকভাবে মুভ করতে অপব্যবহার করতে
- নোডে এস্কেপ করতে যদি
privileged: trueসেট করা হয় বা বিপজ্জনক ক্ষমতা যেমনSYS_ADMINদেওয়া হয়
রুট ব্যবহারকারী নিজেই সবসময় দুর্বলতা নয় — এটি রুট প্লাস অতিরিক্ত উদার কার্নেল ক্ষমতা, হোস্ট মাউন্ট বা namespace শেয়ারিংের সমন্বয় যা একটি সংগৃহীত আপস হতে ক্লাস্টার-ব্যাপী একটি কাজে পরিণত করে।
ব্যবহারিক শক্তিশালীকরণ পদক্ষেপ
1. ইমেজে একটি নন-রুট ব্যবহারকারী সেট করুন
ডিফল্টগুলির উপর নির্ভর করার পরিবর্তে আপনার Dockerfile-এ স্পষ্টভাবে একটি নন-রুট ব্যবহারকারী সংজ্ঞায়িত করুন:
FROM node:20-slim
RUN useradd --uid 10001 --shell /usr/sbin/nologin appuser
USER appuser
2. এটি অরকেস্ট্রেটর স্তরে প্রয়োগ করুন
ইমেজকে বিশ্বাস করবেন না — রানটাইমে নীতি প্রয়োগ করুন। Kubernetes-এ, একটি securityContext ব্যবহার করুন:
securityContext:
runAsNonRoot: true
runAsUser: 10001
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
runAsNonRoot: true ইমেজটি UID 0 হিসাবে চলার চেষ্টা করলে পড বিমিষ্টিতে ব্যর্থ হয়, আপনাকে একটি best-effort কনভেনশনের পরিবর্তে একটি কঠিন গ্যারান্টি দেয়।
3. অপ্রয়োজনীয় ক্ষমতা ড্রপ করুন
বেশিরভাগ অ্যাপ্লিকেশনের কন্টেইনারে দেওয়া ডিফল্ট Linux ক্ষমতাগুলির কোনটিই প্রয়োজন নেই। সবকিছু ড্রপ করুন এবং শুধুমাত্র কঠোরভাবে প্রয়োজনীয় বিষয়গুলি যোগ করুন (বিরল ক্ষেত্রে যেমন নিম্ন পোর্টগুলিতে বাঁধনের জন্য NET_BIND_SERVICE প্রয়োজন হতে পারে)।
4. প্রিভিলেজড মোড এবং হোস্ট namespace শেয়ারিং এড়িয়ে চলুন
privileged: true, hostNetwork: true, এবং hostPID: true খুব নির্দিষ্ট অবকাঠামো কর্মভারের জন্য সংরক্ষণ করা উচিত (যেমন নির্দিষ্ট CNI বা পর্যবেক্ষণ এজেন্ট) — সাধারণ অ্যাপ্লিকেশন কন্টেইনারের জন্য কখনও নয়।
5. নীতি সরঞ্জামগুলির সাথে স্ক্যান এবং প্রয়োগ করুন
ম্যানুয়াল কোড পর্যালোচনার উপর নির্ভর করার পরিবর্তে প্রবেশের নিয়ন্ত্রক বা নীতি ইঞ্জিনগুলি ব্যবহার করুন (উদাহরণস্বরূপ, Kyverno, OPA/Gatekeeper) স্বয়ংক্রিয়ভাবে এই নিয়মগুলি লঙ্ঘন করে এমন স্থাপনাগুলি প্রত্যাখ্যান করতে। এটি CI-তে ইমেজ স্ক্যানিংয়ের সাথে যুক্ত করুন যাতে রুট-ব্যবহারকারী ইমেজগুলি একটি ক্লাস্টারে পৌঁছানোর আগে ক্যাচ করুন।
একটি স্তরযুক্ত, পূর্ণ নয়, প্রতিরক্ষা
নন-রুট হিসেবে চালানো ঝুঁকিটিকে সম্পূর্ণভাবে দূর করে না — কার্নেল-স্তরের কন্টেইনার এস্কেপ কন্টেইনারের মধ্যে ব্যবহারকারী থেকে স্বাধীনভাবে বিদ্যমান — তবে এটি কম প্রচেষ্টার বিশেষাধিকার বৃদ্ধি এবং পার্শ্বভূমিক আন্দোলন কৌশলগুলির একটি বিশাল শ্রেণীকে সরিয়ে দেয়। পড়া-শুধু ফাইলসিস্টেম, ড্রপ করা ক্ষমতা এবং সীমাবদ্ধ নেটওয়ার্ক নীতিগুলির সাথে মিলিত, এটি একটি প্রতিরক্ষা-গভীরতা কন্টেইনার নিরাপত্তা কৌশলে সবচেয়ে সস্তা এবং সবচেয়ে কার্যকর স্তরগুলির মধ্যে একটি গঠন করে।
ক্লাউড-নেটিভ কর্মভারের শক্তিশালীকরণ সম্পর্কে আরও গভীর যেতে চান? আপনার প্রতিরক্ষা-গভীরতা কৌশলের বাকিটি তৈরি করতে ক্লাউড নিরাপত্তা এবং DevOps পাইপলাইন শক্তিশালীকরণের উপর সম্পর্কিত Korra Studio সেগমেন্টগুলি অন্বেষণ করুন।
AI সহায়তায় লেখা, পর্যালোচনা ও প্রকাশ করেছেন Michal Pilch (CISSP), Korra Studio।
এটি Korra Studio-র নলেজ বেস থেকে একটি নোট — প্ল্যাটফর্মটি প্রতিটি বিষয়কে ১-এর-সাথে-১ মেন্টরিংয়ের সাথে জুড়ে দেয়।
বিনামূল্যে শুরু করুনarrow_forward