লিনাক্সে সম্ভবত ক্ষতিকারক প্রোগ্রাম কার্যকর করা


33

আমি একটি প্রোগ্রাম লিখছি যা শিক্ষার্থীদের দ্বারা লেখা প্রোগ্রামগুলি পরীক্ষা করবে test আমি আশঙ্কা করছি যে আমি তাদের উপর আস্থা রাখতে পারি না এবং আমার এটি নিশ্চিত করা দরকার যে এটি চালিত কম্পিউটারের জন্য এটি খারাপভাবে শেষ হবে না।

আমি সিস্টেমে রিসোর্সগুলিতে সীমিত অ্যাক্সেস সহ কিছু ক্র্যাশ পরীক্ষার ব্যবহারকারী এবং সেই ব্যবহারকারী হিসাবে প্রোগ্রাম চালানোর কথা ভাবছিলাম, তবে এখন পর্যন্ত নেট থেকে যা পেয়েছি তা থেকে ভার্চুয়াল সিস্টেম তৈরি করা সবচেয়ে নিরাপদ বিকল্প হবে ...

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


7
একটি ব্রাউজারে লিনাক্সে কেবল প্রোগ্রামটি চালান ( Bellard.org/jslinux )। এটি একটি খুব ভাল স্যান্ডবক্স। :)
ফিক্সি

বাহ, সত্যিই আকর্ষণীয়! তবে এটি ব্যবহার করার জন্য আমাকে একধরণের ইন্টারফেস লিখতে হবে (যেহেতু পুরো প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চলবে) ... আমার এটি পরীক্ষা করে নেওয়া দরকার। যদি দেখা যায় যে এই জাভাস্ক্রিপ্ট লিনাক্স গ্যাজেটের চেয়ে বেশি তবে আমি এটি ব্যবহার করতে পারি use
কর্ডা

আমি আমার মন্তব্যটিকে একটি রসিকতা হিসাবে চিহ্নিত করেছি, তবে আপনি যদি সত্যই এটি ব্যবহার করতে পারেন তবে তা আশ্চর্যজনক হবে। সত্য, লাইভসিডি উত্তর (র‌্যামডিস্ক সহ) একটি দুর্দান্ত সমাধান।
ফিক্সি

ঠিক আছে, আমি যদি এটি ব্যবহার করতে পরিচালিত করি তবে আমি এটি ওয়েবপৃষ্ঠাতেও ব্যবহার করব যার ফলস্বরূপ আমি অ্যাক্সেস করতে পারি - এটি সত্যিই দুর্দান্ত এবং আরামদায়ক হবে। জিক ফ্যাক্টর গণনা করা;) লাইভ ডিস্কের বিকল্পও নয় - যেমন আমি বলেছিলাম যে আমি প্রোগ্রাম তৈরি করছি এটি কিছু সার্ভারে চলবে তাই পুনরায় বুট করা আমার সাধ্যের মতো নয় ... আমার ধারণা আমি যাইহোক ভার্চুয়াল মেশিনের সাথে লেগে থাকব। ..
কর্ডা

উত্তর:


28
  • ভার্চুয়াল মেশিন আপনাকে রিবুট ছাড়াই সর্বোচ্চ সুরক্ষা দিতে পারে, তবে সবচেয়ে কম পারফরম্যান্স।

  • ভার্চুয়াল মেশিনের থেকেও উচ্চতর সুরক্ষার জন্য আরেকটি বিকল্প: হার্ড ড্রাইভ অ্যাক্সেস ছাড়াই একটি "লাইভ" সিডি / ডিভিডি / পেনড্রাইভ বুট করুন (অস্থায়ীভাবে BIOS এ এইচডিডি অক্ষম করুন; আপনি না পারলে, কমপক্ষে ড্রাইভ মাউন্ট করবেন না / এটি আনমাউন্ট করুন, যদি স্বয়ংক্রিয়ভাবে মাউন্ট হয় - তবে এটি অনেক কম সুরক্ষিত)

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

  • এমন বিচ্ছিন্নতার মতো প্রোগ্রাম রয়েছে যা একটি বিশেষ, সুরক্ষিত পরিবেশ তৈরি করবে - এগুলিকে সাধারণত একটি স্যান্ডবক্স বলা হয় - এগুলি সাধারণত ক্রওট-ভিত্তিক, অতিরিক্ত তদারকি সহ - আপনাকে ফিট করে এমন একটি সন্ধান করুন।

  • একটি সাধারণ ক্রুট কমপক্ষে সুরক্ষিত হবে (উদাহরণস্বরূপ প্রোগ্রামগুলি সম্পাদন করার ক্ষেত্রে), সম্ভবত কিছুটা দ্রুত হলেও, ... আপনাকে একটি সম্পূর্ণ পৃথক মূল গাছ তৈরি / অনুলিপি করতে হবে এবং /devইত্যাদির জন্য বাইন্ড মাউন্টগুলি ব্যবহার করতে হবে ( দ্রষ্টব্য দেখুন 1 নীচে!)। সুতরাং সাধারণভাবে, এই পদ্ধতির প্রস্তাব দেওয়া যায় না, বিশেষত যদি আপনি আরও বেশি সুরক্ষিত এবং প্রায়শই সেটআপ করা সহজ, sandboxপরিবেশ ব্যবহার করতে পারেন ।

দ্রষ্টব্য 0:nobody অ্যাকাউন্টেরমতো একটি "বিশেষ ব্যবহারকারী" এর দিকটি: এটি কোনও সুরক্ষা খুব কমই দেয় যা সাধারণের চেয়ে অনেক কমchroot। একটিnobodyব্যবহারকারী এখনও ফাইল এবং প্রোগ্রামগুলি অ্যাক্সেস করতে পারে যা পড়ে এবং অন্যের জন্য সেটগুলি কার্যকর করে । আপনি এটি দিয়ে পরীক্ষা করতে পারেন su -s /bin/sh -c 'some command' nobody। এবং যদি আপনার কাছে কোনও কনফিগারেশন / ইতিহাস / ক্যাশে ফাইল কারও কাছে অ্যাক্সেসযোগ্য (কোনও ভুল বা ছোটখাটো সুরক্ষা গর্ত দ্বারা) থাকে তবে কোনও প্রোগ্রামের nobodyঅনুমতি নিয়ে চলমান একটি প্রোগ্রাম এটি অ্যাক্সেস করতে পারে, গোপনীয় ডেটার জন্য গ্রেপ (যেমন "পাস =" ইত্যাদি) এবং এতে অনেক উপায়ে এটি নেট বা যে কোনও কিছুতে প্রেরণ করে।

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


উত্তর করার জন্য ধন্যবাদ. আমি যখন সত্যিকারের বিষয়বস্তু নিয়ে আসি তখন আপনি কি আমাকে একটি বিষয় ব্যাখ্যা করতে পারেন: সিস্টেমে ফাইল পড়া থেকে প্রোগ্রামকে বাধা দেওয়ার দরকার কেন (উদাহরণস্বরূপ ক্রোট দ্বারা)? (যদি প্রোগ্রাম এগুলিকে সংশোধন করতে না পারে)।
কর্ডা

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

কেন আমরা এটি: ব্যবহারকারীকে ইন্টারনেট সংযোগ ব্যবহার থেকে বিরত করার কোনও উপায় আছে?
কর্ডা

1
আমি অবাক হই যে nobodyইন্টারনেট অ্যাক্সেস আছে কিনা ।
কর্ডা

1
@ ক্রোয়েট্রিজেভিয়াকজ কোনও সুরক্ষা দেওয়ার জন্য ক্রোটের একটি গুরুত্বপূর্ণ প্রয়োজন হ'ল ক্রুটের বাইরে একটি প্রোগ্রামও চালাচ্ছেন এমন একজন ব্যবহারকারী হিসাবে ক্রোটযুক্ত প্রোগ্রামটি চালানো নয়। অন্যথায় ক্রোটযুক্ত প্রক্রিয়া একটি অ-ক্রোটযুক্ত প্রক্রিয়া ptrace করতে পারে এবং সেভাবে কিছু করতে পারে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

10

ভার্চুয়াল মেশিন ব্যবহার করুন। যে কোনও কিছুই কম বেশি নিরাপত্তা দেয় না।

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

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

ভার্চুয়াল মেশিনের ভিতরে, প্রতিটি শিক্ষার্থী জন্য একটি ব্যবহারকারী তৈরি করুন।

¹ আপনি NAT ইন্টারফেসটি ব্যবহারকারীদের একটি শ্বেত তালিকাতে সীমাবদ্ধ করতে পারেন তবে এটি সাধারণ, টু দ্য পয়েন্ট সেটআপে আপনার প্রয়োজনের চেয়ে আরও উন্নত।


2

এখানে একটি খুব বিশদ ব্যাখ্যা উপর কেন Chroot ব্যবহার এখনও একটি খুব টেকসই বিকল্প, এবং কেন পূর্ণ অপারেটিং সিস্টেম বা পূর্ণ হার্ডওয়্যার ভার্চুয়ালাইজেশন বিশেষত Overkill হয় নির্দিষ্ট পরিস্থিতিতে।

এটি একটি কল্পকাহিনী ছাড়া আর কিছুই নয়ক্রুট কোনও সুরক্ষা বৈশিষ্ট্য নয় এটি নয়। এমন সরঞ্জাম রয়েছে যা আপনার জন্য ক্রুট ফাইল সিস্টেমটি স্বয়ংক্রিয়ভাবে তৈরি করবে এবং ক্রুট উদ্দেশ্যমূলক সুরক্ষা বৈশিষ্ট্য হিসাবে অনেকগুলি মূলধারার অ্যাপ্লিকেশনগুলিতে তৈরি করা হবে।

জনপ্রিয় বিশ্বাসের বিপরীতে, প্রতিটি পরিস্থিতিতে অপারেটিং সিস্টেমের সম্পূর্ণ ভার্চুয়ালাইজেশন বা হার্ডওয়্যারের সম্পূর্ণ সিমুলেশন প্রয়োজন হয় না। এর অর্থ আসলে চেষ্টা এবং কভার করার জন্য আরও আক্রমণের পৃষ্ঠ থাকা can পরিবর্তে, একটি কম সুরক্ষিত সিস্টেম মানে । (কম জ্ঞাত সিস্টেম সিস্টেম প্রশাসকদের উদ্দেশ্যে)

নিয়মগুলি মোটামুটি সহজ: ক্রুটের ভিতরে এমন কোনও জিনিস রাখবেন না যা প্রয়োজনীয় নয়। ডিমনকে মূল হিসাবে চালাবেন না। কোনও ব্যবহারকারী ক্রুটের বাইরে ডেমন চালাচ্ছেন বলে ডেমনটি চালাবেন না।

যে কোনও অনিরাপদ অ্যাপ্লিকেশন, সেটুইড বাইনারি, ঝুলন্ত মালিকহীন সিমলিংক / হার্ডলিঙ্কগুলি সরান। nosuid, noexec এবং নোডেভ ব্যবহার করে অপ্রয়োজনীয় ফোল্ডারগুলি পুনরায় গণনা করুন। উত্স থেকে চলমান ডিমনটির সর্বশেষতম স্থিতিশীল সংস্করণটি তৈরি করুন। এবং সর্বোপরি, বেস সিস্টেমটি সুরক্ষিত করুন!


2

আমি এটি যুক্ত করতে যাচ্ছি, প্রশ্নের আনুষ্ঠানিকভাবে উত্তর দেওয়ার পরে: ম্যাজিক: সার্কিট / কোরগুলিতে ম্যালিসিয়াস এজিং , যা দুর্ভাগ্যক্রমে ACM এর পেওয়ালের পিছনে লক হয়ে গেছে। কাগজটির উপরের অংশটি হ'ল সার্কিটগুলির মধ্যে খুব সামান্য প্রস্থের ব্যবহারের সময় বয়সের যুগে যুগে ব্যবহার করা হয় এবং অবশেষে ভেঙে যায়। সঠিক নির্দেশ (গুলি) খুঁজে বার করে এবং বারবার পুনরাবৃত্তি করে, একজন আক্রমণকারী আইসিকে দ্রুত ব্যর্থ হওয়ার জন্য বয়স করতে পারে।

ভিএম, স্যান্ডবক্স বা ধারক বা ক্রুট জেল কেউই এই ধরণের ক্ষতিকারক হার্ডওয়্যারটিকে আটকাতে পারে না। কাগজের লেখকরা এই ধরনের নির্দেশের ক্রমগুলি এবং পরীক্ষামূলকভাবে বয়স্ক হার্ডওয়্যারকে ব্যর্থ হওয়ার জন্য খুঁজে পেয়েছিলেন তবে তারা নির্দেশাবলীটি দেয়নি, তাই এটি কিছুক্ষণের জন্য সত্যিকারের হুমকি নাও হতে পারে।


1

বিএসডি থেকে উদ্ভূত ইউনিক্সগুলিতে (ম্যাক ওএস এক্স সহ) একটি সুবিধা বলা হয় sandbox । ম্যানপেজটি বলে

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

এটি যে chrootসুবিধা থেকে পাওয়া যায় তার থেকে এটি পৃথক ।

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