সহজতম নিরাপদ স্যান্ডবক্সিং (সীমিত সংস্থার প্রয়োজন)


15

আমি এমন একটি প্রকল্পে কাজ করছি যা বিতরণকৃত সিমুলেশনগুলি কার্যকর করে: একাধিক নোডে স্বেচ্ছাসেবক কোড কার্যকর করা হয় এবং ফলাফলগুলি পরে সংগ্রহ এবং সংহত হয়।

প্রতিটি নোড একটি উবুন্টু লিনাক্স ভার্চুয়াল মেশিনের উদাহরণ এবং এটি একটি মাস্টার প্রক্রিয়া চালায় যা কোডটি ফরওয়ার্ড করার জন্য বেশ কয়েকটি কর্মী প্রসেসের (প্রতিটি কোরের জন্য 1) এক্সিকিউট করার ব্যবস্থা গ্রহণ করে।

এই প্রশ্নটি কীভাবে নিশ্চিত করা যায় যে প্রতিটি কর্মী তাদের প্রত্যেকের জন্য ভার্চুয়াল মেশিন উদাহরণ ব্যবহার না করে স্যান্ডবক্সযুক্ত পরিবেশে কাজ করে। শ্রমিকদের জন্য সঠিক প্রয়োজনীয়তাগুলি হ'ল:

  • fs : কোনও লেখার অনুমতি নেই, কেবলমাত্র একক ডিরেক্টরিতে (এবং উপ-ফোল্ডারগুলি) সীমাবদ্ধ কেবল পঠনের অনুমতি নেই
  • নেট : কেবল স্থানীয় যোগাযোগের অনুমতি রয়েছে (আইপিসি, টিসিপি, যাই হোক না কেন ...)
  • মেমো : মেমরির ব্যবহারের উপর ক্যাপ করুন (কোনও সোয়াপ মেমরি নেই) মেমো সীমা ছাড়িয়ে গেলে কিল করুন
  • সিপিইউ : মাত্র 1 টি মঞ্জুরিপ্রাপ্ত, সময় সীমা ছাড়িয়ে গেলে হত্যা করুন

অন্য কোনও সীমাবদ্ধতা আরোপ করা উচিত নয়: শ্রমিককে ডায়নামিক লাইব্রেরিগুলি (কেবল পঠনযোগ্য ফোল্ডার থেকে) লোড করতে, নতুন থ্রেড বা প্রক্রিয়াগুলি স্প্যান করতে, কল সিস্টেম ফাংশন, ইসি ই সি সি লাগাতে হবে তবে সীমাটি অবশ্যই স্পাড / লোড থাকা সত্তা দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হতে হবে এবং মোটামুটিভাবে প্রয়োগ করা উচিত (উদাহরণস্বরূপ আমরা কোনও শ্রমিকের দুটি থ্রেড রাখতে পারি না যা 800 এমবি ব্যবহার করে এমন প্রতিটি কর্মীর জন্য মেমরির সীমা 1 গিগাবাইট)।

শ্রমিকের অধিকার বাড়াতে কোনও উপায় থাকার কথা না বলে এটি যায় না।

আমার প্রয়োজনীয়তাগুলি পূরণ করে এমন সহজ সমাধানের জন্য উপলভ্য বিকল্পগুলি (সেলইনাক্স, অ্যাপআর্মার, সিগ্রুপস, উলিমিট, লিনাক্স নেমস্পেসস, এলএক্সসি, ডকার, ...) পর্যালোচনা করার জন্য আমি যথেষ্ট সময় ব্যয় করেছি তবে এই ক্ষেত্রে আমার অভিজ্ঞতা সীমাবদ্ধ।

বর্তমান বোঝাপড়া: এলএক্সসি এবং ডকার আমার ব্যবহারের ক্ষেত্রে ভারী দিক থেকে কিছুটা এবং পুরোপুরি সুরক্ষিত নয় 1 । অ্যাপলআমার সহজ কনফিগারেশনের কারণে সেলইনাক্সের চেয়ে পছন্দসই, এফএস এবং নেট বিধিনিষেধের জন্য এটি ব্যবহার করুন; সিগ্রুপগুলি ইউলিমিটের চেয়ে ভাল (যা একক প্রক্রিয়াতে পরিচালিত হয়), এটি মেম এবং সিপিইউ বিধিনিষেধের জন্য ব্যবহার করে।

এটি কি আমার লক্ষ্য অর্জনের সবচেয়ে সহজ উপায়? আমি কি একচেটিয়াভাবে অ্যাপআর্মার বা সিগ্রুপ ব্যবহার করতে পারি? আমার মডেলটিতে কিছু স্পষ্ট সুরক্ষা গর্ত আছে? গাইডলাইনটি "কর্মীকে নিজে নামিয়ে আনার অনুমতি দেওয়া উচিত তবে অন্য কিছুই নয়"


2
তাহলে সীমা [ing] সম্পদ আপনার লক্ষ্য হয়, তাহলে আপনি কাজ করতে পারে অনেক বেশি ভালো একটি উবুন্টু অতিথি চেয়ে (অথবা যে বিষয়টি জন্য সত্যিই কোন ডেবিয়ান-অমৌলিক) । যাই হোক, আপনি সম্ভবত চান ব্যবহারকারী-মোড লিনাক্স এবং / অথবা (সাম্প্রতিক কার্নেলের সাথে) ব্যবহারকারী নামস্থান
mikeserv

2
আপনার যা প্রয়োজন ঠিক এলএক্সসি শোনাচ্ছে। আপনি কেন এটি ভারী দিক এবং নিরাপত্তাহীন বলে মনে করেন? (অবশ্যই, এতে বাগ রয়েছে, তবে এতে আপনার ব্যবহারযোগ্য কিছু রয়েছে))
গিলস 'দুষ্ট হওয়া বন্ধ করুন'

সংযুক্ত উপস্থাপনা (স্বীকারোক্তি ২০১১ থেকে) এবং উবুন্টু এলএক্সসি ডকুমেন্টেশনের সিকিউরিটি বিভাগ 'নেমস্পেসস ফাঁস' সম্পর্কে কথা বলার বিষয়টি খুব আশ্বাস দেয় না। বেশিরভাগ নেমস্পেস এবং সিগ্রুপের উপর ভিত্তি করে এলএক্সসির মতো মনে হচ্ছে, এখনই সেরা বিকল্প হতে পারে। আমি লিনাক্স-স্যান্ডবক্সিং , আকর্ষণীয়
পঠনও পেয়েছি

এর জন্য কিছুটা পুনর্নির্মাণের প্রয়োজন হতে পারে তবে আপনি কী বিএসডি জেলগুলিতে ছুটে যাওয়ার কথা বিবেচনা করেছেন?
রাইডার

যদিও এলএক্সসি 'ভারী' হতে পারে এটি ভিএম এর একগুচ্ছের মতো, এগুলি তৈরি করা সত্যিই সহজ। এর মধ্যে কয়েকটি সমাধান, যদিও 'লাইটার' এর জন্য অনেকগুলি কনফিগারেশন লাগতে পারে। এলএক্সসির সাহায্যে আপনার লেখার মতো জিনিসগুলি কনফিগার করার দরকার নেই, কারণ একটি অ্যাপ্লিকেশনটিতে পুরো ধারক থাকবে।
মাইকেপ

উত্তর:


1

হ্যাঁ, আপনি নির্ধারণ করবেন এমন স্বেচ্ছাসেবক কোড নিরীক্ষণ এবং নিয়ন্ত্রণের জন্য আপনি cgroups এবং SELinux / AppArmor একচেটিয়াভাবে ব্যবহার করতে পারেন ।

সিগ্রুপের সাহায্যে আপনি নিম্নলিখিতটি করতে পারেন:

  1. cpusetসাবসিস্টেমের সাথে সিপিইউ কোর ব্যবহার 1 সিপিইউতে সীমাবদ্ধ করুন
  2. memoryএমনকি কাঁটাচামচগুলি অনুসরণ করে, সাবসিস্টেমের সাথে মেমরির ব্যবহার সীমা নির্ধারণ করুন। উদাহরণের জন্য https://github.com/gsauthof/cgmemtime দেখুন ।
  3. সাবসিস্টেমের loসাথে নেই এমন যে কোনও কিছুতে নেটওয়ার্ক অ্যাক্সেস প্রতিরোধ করুন net_prio

এবং সেলিনাক্স / অ্যাপআর্মার দিয়ে আপনি প্রক্রিয়াটির পঠন / লেখার অ্যাক্সেসকে সীমাবদ্ধ করতে পারেন।

দ্রষ্টব্য: আমি অ্যাপআর্মারের সাথে অপরিচিত, তবে এটি একটি বাধ্যতামূলক অ্যাক্সেস কন্ট্রোল (ম্যাক) সিস্টেম, যার অর্থ রাইডিং রাইটিং এবং পড়া এটির কাজ।

এই সিস্টেমগুলি ব্যবহার করে সঠিক কনফিগারেশন লেখার বিষয়টি। অবশ্যই, এই সব করা চেয়ে অনেক সহজ। আপনাকে শুরু করতে এখানে কয়েকটি রেফারেন্স লিঙ্ক রয়েছে:

শুভকামনা!


1

আমি পরিত্যাগ করবে SELinux- র জন্য AppArmor শুধুমাত্র যদি আমি ব্যবহার করা হয়েছে উবুন্টু । (সত্যিই বেশ কঠিন)

LXC নিজেই সুরক্ষিত নয় আপনার যদি সুরক্ষা প্রয়োজন হয় তবে আপনাকে অবশ্যই সেগুলি libvirt ( SELinux MLS এর উপর ভিত্তি করে ) এর মাধ্যমে ব্যবহার করতে হবে ।

আপনার সমস্যা অসীম তাই শেল্ফের বাইরে এবং অসীম সময় ছাড়াই কোনও সমাধানের সন্ধান করার চেষ্টা করবেন না, মনে রাখবেন যে এমনকি কার্নেল.আর.ও অবিরাম ছিল এবং খুব সম্প্রতি এফবিআই ঘোষণা করেছিল যে এখন পর্যন্ত কেউ সনাক্ত না করে কয়েক বছর ধরে তাদের সিস্টেমগুলি ব্যবহার করে চলেছে ।

আমি বেশ ভাল সুরক্ষার জন্য এলএক্সসি / লিবিভার্টের সাথে যাব বা আমি "নতুন" ইন্টেল ক্লিয়ার পাত্রে চেষ্টা করব , যা আপনার ধারকটির জন্য খুব হালকা ভিএম ব্যবহার করবে যা ডেক্স / কেএসএমের স্পষ্ট ব্যবহারের সাথে রয়েছে (আমি সেগুলি পরীক্ষা করে দেখিনি তবে তারা দেখতে খুব সুন্দর সত্যিই প্রতিশ্রুতিবদ্ধ)।

যদি আপনি কার্নেল শোষণ সম্পর্কে উদ্বিগ্ন হন তবে grsecurity আপনার সমাধান তবে আপনাকে এটি আপনার ধারক সমাধানের সাথে একীভূত করতে হবে (নিশ্চিতভাবে মাথাব্যথা)।

নিশ্চিত করার জন্য এত সহজ কাজ নয়, LXC / libvirt সত্যিই ঝরঝরে তবে সম্ভবত পরিষ্কার পাত্রে যাওয়ার উপায়।

ডক-শ্রমিক? স্থানীয় পরীক্ষার চেয়ে আমি ডকার ব্যবহার / ব্যবহার করিনি যখন সেখানে কোনও ভিজাগর বক্স পাওয়া যায় না, তাদের আরও কাজ এবং উপায়ের জন্য আরও ভাল সম্প্রদায় প্রয়োজন।

অবশ্যই সিস্টেমযুক্ত পাত্রে খুব ভাল তবে আমি ধরে নিই যে আপনি পছন্দ করেন না / চান তাদের কারণ আপনি তাদের উল্লেখও করেন নি এবং সেগুলি কোনও বিক্রেতার অজোনস্টিক সমাধান নয়।

আপনি যদি কিছু "সহজ" এবং আরও অপেশাদার চান তবে আপনি ফায়ারজেলটি পরীক্ষা করে দেখতে পারেন , আমি এটি কিছু ডেস্কটপ "অ্যাপস" এর জন্য ব্যবহার করছি এবং এটি কাজ করে (আপনার কাস্টম অ্যাপের জন্য টেমপ্লেট তৈরি করা বেশ সহজ, "ব্যক্তিগত" ব্যবহার করুন আপনার ডায়ারের শীর্ষে মাউন্ট করে এবং কেবল স্থানীয় ব্যবহারের জন্য নেটওয়ার্ককে সীমাবদ্ধ করে, স্প্যানড প্রক্রিয়াগুলি পিতামাতার উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং চলতে থাকে ...)।

চিয়ার্স এবং পাগল না হয়ে মজা করুন। ;)


0

সেকম্পম্প-বিপিএফ হ'ল অপশন যা ওপেনএসএসএইচ, ভার্সফ্টপিডি এবং ক্রোমিয়ামের জন্য ভাল কাজ করে এটি কেবল প্রস্থান (), সিগ্রেটন (), পড়ুন () এটি রাইট () ব্যবহার করে না যদিও এটি কনফিগারযোগ্য বার্কলে প্যাকেট ফিল্টার নিয়ম ব্যবহার করে সিস্টেম কলগুলি ফিল্টারিংয়ের অনুমতি দেয়। এটি মেমরি, সিপিইউ ইত্যাদির জন্য সিগ্রুপের সাথে একত্রে ব্যবহৃত হতে পারে ...

https://wiki.mozilla.org/Security/Sandbox/Seccomp


0

আপনি গ্রিড কম্পিউটিং সিস্টেমগুলি সন্ধান করতে পারেন। বিশেষত, BOINC ( http://boinc.berkeley.edu ) আপনার প্রায় সমস্ত বাক্স পরীক্ষা করে।

আমি বিশ্বাস করি এটি আপনার পরামিতিগুলিতে যেমন পরিচালনা করে:

fs: তার নিজস্ব ডিরেক্টরিতে পড়তে / লিখতে পারে, অন্য কোথাও নেই

নেট: আপনার BOINC সার্ভারে কেবল নেটওয়ার্ক অ্যাক্সেসের অনুমতি দেওয়ার জন্য কনফিগার করা যেতে পারে, তবে আইআইআরসি বক্সের বাইরে ডিফল্ট নয় isn't

মেম: হ্যাঁ, অলস ও অ-নিষ্ক্রিয় মেশিনের জন্য পৃথক মেমরি সীমা

সিপিইউ: হ্যাঁ, এমনকি "কম্পিউটার নিষ্ক্রিয় না হলে চলবে না" এমনকি বলতে পারেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.