কীভাবে ব্যবহারকারীর শেলকে শেল প্রোগ্রামগুলি কার্যকর করতে দেয় তা সীমাবদ্ধ রাখবে


9

Ls, rm এবং অন্যান্য সিস্টেম কমান্ডের মতো কমান্ডগুলি ব্যবহার না করা যা কোনও ব্যবহারকারীর দ্বারা প্রতিরোধ করা সম্ভব যা সিস্টেমটির ক্ষতি করতে পারে। তবে ব্যবহারকারীদের শেল প্রোগ্রামগুলি কার্যকর করতে সক্ষম হওয়া উচিত।


তুমি কেন এটা করতে চাও? আপনি কি এমন কোনও প্রোগ্রাম লিখতে পারবেন না যার সাথে তারা যোগাযোগ করে?
জো

তাদের কোন ধরণের শেল প্রোগ্রাম চালানো উচিত?
মাইক 12

আপনার কী বোঝাতে
চাইছে

13
ওহ, না, বিপজ্জনক lsআদেশ না!
ওম্বল

উত্তর:


11

আপনার প্রশ্নটি হওয়া উচিত:

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

আমি কীভাবে আমার ব্যবহারকারীদের থেকে আমার সিস্টেম এবং ব্যবহারকারীদের সুরক্ষা করব?


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

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


9

আপনি যা জিজ্ঞাসা করছেন তা পুরোপুরি করার জন্য এখানে তিনটি জিনিস থাকা দরকার:

  1. একটি কাস্টম শেল যা আপনার আগ্রহী সেই আদেশগুলির অভাব রয়েছে । এটি পেতে একটি কঠিন জিনিস, তবে আপনি যদি সত্যিই ব্যবহারকারীদের কিছু শেল আদিতে প্রবেশাধিকার না চান তবে এগুলি সরানোর একমাত্র উপায়।
  2. সঠিকভাবে ফাইল অনুমতি সেট করুন । ব্যবহারকারীরা কি সিস্টেমের ক্ষতি করতে চান? অনুমতিগুলি সেট করুন যাতে তারা সঠিক সরঞ্জাম থাকলেও তারা সিস্টেমটিকে ক্ষতি করতে পারে না। এই তিনটি পদক্ষেপের মধ্যে এটি সবচেয়ে সহজ পদক্ষেপ।
  3. AppArmor এর মতো বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ টেকনোলয় ব্যবহার করুন । অ্যাপলআর্মার এবং সেলিনাক্সের মতো ম্যাকগুলি কার্নেলের মধ্যে এম্বেড অনুমোদনের অনুমতি দেয়। এটি ব্যবহারকারীদের কোথাও খুঁজে পাওয়া সত্ত্বেও সঠিক সরঞ্জামগুলি চালানো থেকে বাধা দেয় (এবং ফাইলের অনুমতিগুলির মতো, বাধাযুক্ত বাক্সের বাইরে তাদের ব্যবহার থেকে বিরত রাখে)।

ভাল পরিমাপের জন্য বেল্ট, সাসপেন্ডার এবং একটি প্রধান-বন্দুক। সেখানে ভুল করা শক্ত।

অ্যাপাকর্ম আকর্ষণীয় কারণ একটি নির্দিষ্ট কার্যকরকরণের জন্য ম্যাক তার সমস্ত শিশুদের দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত। কোনও ব্যবহারকারীর লগইন হতে /bin/bash-bobসেট করুন, সেই নির্দিষ্ট বাইনারি ডানদিকের জন্য অ্যাপআর্মার প্রোফাইল সেট করুন এবং কেবলমাত্র তারা সেই অনুমতি জেল থেকে বেরিয়ে আসছেন তা কর্নেল শোষণের মধ্য দিয়ে। যদি কিছু অলস ইনস্টল স্ক্রিপ্ট /var/opt/vendor/tmpকিছু বোকা কারণে বিশ্বব্যাপী- লেখার যোগ্য ছেড়ে যায় তবে/bin/bash-bob তাদের শেল হিসাবে ব্যবহারকারীরা সেখানে লিখতে পারবেন না । বাশ-বব প্রোফাইলটি কেবল তাদের হোম ডিরেক্টরিতে লেখার অনুমতি দেওয়ার জন্য সেট করুন /tmpএবং এ জাতীয় অনুমতি ভুলগুলি লাভ করা যায় না। এমনকি যদি তারা একরকম রুট পাসওয়ার্ড খুঁজে, জন্য AppArmor প্রফাইল /bin/bash-bobথাকা সত্বেও তারা পরে প্রয়োগ করা হবে suআপ থেকে suএবং bashপ্রক্রিয়া এটা spawns সন্তান /bin/bash-bob

শক্ত অংশটি সেই অ্যাপআর্মর প্রোফাইল তৈরি করছে।

  1. / Bin / bash-bob এর জন্য একটি AppArmor প্রোফাইল তৈরি করুন এবং এটি অডিট মোডে সেট করুন
  2. বোনের লগইন শেলটি / বিন / ব্যাশ-ববতে সেট করুন
  3. বব হিসাবে লগইন করুন। আপনি ববকে সক্ষম হতে চান এমন সমস্ত কিছু করুন।
  4. অ্যাপআর্মার প্রোফাইল তৈরি করতে অডিটলগটি ব্যবহার করুন (এসইউএসই এর জন্য সরঞ্জাম রয়েছে, অন্যান্য লিনাক্স ডিস্ট্রোস সম্পর্কে নিশ্চিত নয়)। এটি মারাত্মকভাবে ক্লান্তিকর, তবে আপনার যদি এই স্তরের সুরক্ষা প্রয়োজন হয় তবে তা হওয়া দরকার।
    1. আপনি যেমন কাজ করবেন:
      • বেশিরভাগ সিস্টেম লাইব্রেরিতে পঠিত অ্যাক্সেসের অনুমোদন দেওয়া হচ্ছে
      • নির্বাচিত কয়েকটি অনুমোদিত সিস্টেম কমান্ড পড়ার এবং সম্পাদনের অধিকারগুলি অনুমোদিত
      • অস্থায়ী জায়গাগুলিতে লেখার অ্যাক্সেস অনুমোদিত
      • প্রয়োজনে সকেট তৈরির অনুমোদন দেওয়া হচ্ছে
  5. প্রয়োগের জন্য নীতি সেট করুন।
  6. বব হিসাবে লগ ইন করুন, জিনিস।
  7. সামঞ্জস্য করুন।

আমার মতে, আপনার কেবলমাত্র 2 এবং 3 পদক্ষেপের প্রয়োজন, যেহেতু তারা উভয় পদক্ষেপেই আপনার সেট আপ করা সতর্কতার সাথে নির্মিত বাক্সের বাইরে কোনও ক্ষতিকারক কিছু করার ক্ষমতা রোধ করে।


4

ঠিক আছে, আপনি লিখেছেন এমন একটি প্রোগ্রামে আপনি ব্যবহারকারীর শেল সেট করতে পারেন যা কেবল তাদের নির্দিষ্ট শেল স্ক্রিপ্টগুলি চালাতে দেয়।

অবশ্যই এটি প্রোগ্রাম এবং শেল স্ক্রিপ্টগুলির মতোই নিরাপদ হবে; অনুশীলনে, এই ধরণের বিধিনিষেধযুক্ত শেল সাধারণত স্মার্ট আক্রমণকারীর বিরুদ্ধে নিরাপদ নয়।


3

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


2

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

কোনও ব্যবহারকারীকে সীমাবদ্ধ শেল সেটআপ করতে, /bin/rbash(বা অনুরূপ, বেশিরভাগ শেল ব্যবহারকারীদের শেল হিসাবে বাইনারি নামকরণ করা হলে r *** নাম *) সীমাবদ্ধ মোডে প্রবেশ করে তারপরে, ** বাশার্ক (বা সমতুল্য) সম্পাদনা করুন এবং $PATHএকটি ডিরেক্টরিতে সেট করুন যেখানে সমস্ত অনুমোদিত বাইনারি / স্ক্রিপ্ট সংরক্ষণ করা আছে।


1

হ্যাঁ, এটি সম্ভব, তবে বাস্তবে এটি অনেক কাজ এবং পরিকল্পনা গ্রহণ করবে। আপনি স্ক্রিপ্টগুলি তৈরি করতে পারেন এবং সেগুলি একটি সুবিধাযুক্ত ব্যবহার হিসাবে চালাতে পারেন, তারপরে প্রশ্নযুক্ত ব্যবহারকারী থেকে সমস্ত সুযোগ-সুবিধা সরান। অথবা, আপনি নিজের তৈরি কিছুতে ব্যবহারকারীর শেল সেট করতে পারেন যা কেবলমাত্র আপনি যা স্পষ্টভাবে অনুমতি দেন তা করতে দেয় do

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


আমি সম্ভাব্য কমান্ডগুলি যেমন rm -rf / bin, ls / home / *, rm -rf / usr / bin, ls / .................... রোধ করার চেষ্টা করছি .....

2
যারা স্ট্যান্ডার্ড লিনাক্স ফাইল অনুমতি ব্যবহার করছেন তাদের প্রতিরোধ করতে পারেন ...
ক্রিস্টোফিড

1

আপনি [lshell] [1] (সীমিত শেল) চেষ্টা করতে চাইতে পারেন।

lshell হল পাইথনে কোডেল একটি শেল, যা আপনাকে ব্যবহারকারীর পরিবেশকে সীমিত কমান্ডের মধ্যে সীমাবদ্ধ করতে দেয়, এসএসএইচ (যেমন এসসিপি, এসএফটিপি, আরএসএনসি, ইত্যাদি) কোনও কমান্ড সক্ষম / অক্ষম করতে পছন্দ করে, লগ ব্যবহারকারীর কমান্ড, সময় সীমাবদ্ধতা প্রয়োগ করে, এবং আরও।

[1]: http://lshell.ghantoos.org/ ওভারভিউ এল শেল


1

আমি সাধারণত যেভাবে এই জাতীয় বিধিনিষেধগুলি প্রয়োগ করি তার জন্য বেশ কয়েকটি শর্ত পূরণ করা প্রয়োজন, অন্যথায় এই সীমাবদ্ধতাটি সহজেই নিষিদ্ধ করা যেতে পারে:

  • ব্যবহারকারী wheelগোষ্ঠীভুক্ত নয়, কেবলমাত্র একমাত্র ব্যবহারের জন্য অনুমোদিত su(পিএএম এর মাধ্যমে প্রয়োগ করা হয়েছে)।
  • কেবলমাত্র একটি প্রাইভেটের কাছে কেবল পঠন- পয়েন্টকে নির্দেশ করে ব্যবহারকারীকে সঠিকভাবে সুরক্ষিত দেওয়া হয়েছে , এই ডিরেক্টরিটিতে সাধারণ ইউটিলিটিগুলির লিঙ্ক রয়েছে:rbashPATH~/bin~/bin/

    $ ll ~/bin
    total 0
    lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
    lrwxrwxrwx. 1 root dawud  7 Sep 17 08:58 df -> /bin/df*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
    lrwxrwxrwx. 1 root dawud  8 Sep 17 08:58 env -> /bin/env*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
    lrwxrwxrwx. 1 root dawud  9 Sep 17 08:58 grep -> /bin/grep*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
    lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
    lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
    
  • ব্যবহারকারী একটি সীমাবদ্ধ, শুধুমাত্র পাঠযোগ্য পরিবেশ দেওয়া হয় (যেমন কাপড় মনে LESSSECURE, TMOUT, HISTFILEভেরিয়েবল)।

  • ব্যবহারকারী SELinux ব্যবহারকারীতে ম্যাপ করা হয় staff_uএবং এর মাধ্যমে প্রয়োজনীয় অন্যান্য ব্যবহারকারী হিসাবে কমান্ডগুলো করার অধিকার দেওয়া sudo
  • ব্যবহারকারী এর /home, /tmpএবং সম্ভবত /var/tmpমাধ্যমে polyinstantiated হয় /etc/security/namespace.conf:

    /tmp       /tmp/.inst/tmp.inst-$USER-     tmpdir:create   root
    /var/tmp   /tmp/.inst/var-tmp.inst-$USER- tmpdir:create   root
    $HOME      $HOME/$USER.inst/              tmpdir:create   root
    

    এছাড়াও, /etc/security/namespace.initসমস্ত কঙ্কালের ফাইলগুলি ব্যবহারকারীর জন্য পঠনযোগ্য এবং মালিকানাধীন করে তোলে root

এই পদ্ধতিতে আপনি $USERনিজের পক্ষ থেকে কোনও কমান্ড কার্যকর করতে পারবেন কিনা (ব্যক্তিগত ~/binডিরেক্টরিতে একটি লিঙ্কের মাধ্যমে /etc/skel, উপরে বর্ণিত হিসাবে সরবরাহ করা হয়েছে), অন্য ব্যবহারকারীর পক্ষে (মাধ্যমে sudo) বা মোটেও নয় none


0

হ্যাঁ, কেবলমাত্র এই আদেশগুলি থেকে অনুমতিগুলি পরিবর্তন করুন।

আপনার প্রয়োজনীয়তা অনুযায়ী আচরণ করে এমন শেল কমান্ড লিখে আপনার পক্ষে আরও ভাল লড়াইয়ের সুযোগ থাকতে পারে।

লিনাক্সে সাধারণ ব্যবহারকারীদের জন্য ডিফল্ট অনুমতিগুলির উপযুক্ত কি নয়?

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