লিনাক্সে সেলইনাক্স বা অ্যাপআর্মার দিয়ে বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ কার্যকর করা হচ্ছে


স্ট্যান্ডার্ড ugo/rwx অনুমতি এবং অ্যাক্সেস কন্ট্রোল তালিকার দ্বারা সরবরাহিত সুরক্ষা ব্যবস্থার সীমাবদ্ধতাগুলি অতিক্রম করতে এবং যুক্তরাষ্ট্রে জাতীয় সুরক্ষা সংস্থা (এনএসএ) একটি নমনীয় ম্যান্ডেটরি অ্যাক্সেস কন্ট্রোল (এমএসি) পদ্ধতিটি তৈরি করেছে SELinux (সুরক্ষা বর্ধিত লিনাক্সের জন্য সংক্ষিপ্ত) হিসাবে অন্যান্য বিষয়গুলির মধ্যে সীমাবদ্ধ করার জন্য, সিস্টেম অবজেক্টগুলিতে (যেমন ফাইল, ডিরেক্টরি, নেটওয়ার্ক পোর্ট ইত্যাদি) অ্যাক্সেস বা অন্যান্য ক্রিয়াকলাপগুলি অ্যাক্সেস করতে বা সঞ্চালনের প্রক্রিয়া সক্ষমতা যতটা সম্ভব সম্ভব, তবুও এই মডেলটি পরে পরিবর্তন করার অনুমতি দেয়।

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

CentOS 7-এ, সেলইনাক্স নিজেই কার্নেলের সাথে সংযুক্ত হয়ে ডিফল্টরূপে প্রয়োগকরণ মোডে সক্ষম করা হয়েছে (পরবর্তী বিভাগে আরও এটি), অ্যাপসর্ম ব্যবহার করে ওপেনসুএস এবং উবুন্টুর বিপরীতে।

এই নিবন্ধে আমরা সেলইনাক্স এবং অ্যাপআর্মারের প্রয়োজনীয়তা এবং আপনার নির্বাচিত বিতরণের উপর নির্ভর করে আপনার সুবিধার জন্য এই সরঞ্জামগুলির মধ্যে কীভাবে ব্যবহার করব তা ব্যাখ্যা করব।

সেলইনাক্সের পরিচিতি এবং এটি কীভাবে CentOS 7 এ ব্যবহার করবেন

সুরক্ষা বর্ধিত লিনাক্স দুটি ভিন্ন উপায়ে কাজ করতে পারে:

  1. প্রয়োগ করা হচ্ছে: সেলইনাক্স সিলিনাক্স নীতি বিধিগুলির ভিত্তিতে অ্যাক্সেস অস্বীকার করে, সুরক্ষা ইঞ্জিনকে নিয়ন্ত্রণ করে এমন গাইডলাইনগুলির একটি সেট
  2. অনুমতিপ্রাপ্ত: SELinux অ্যাক্সেস অস্বীকার করে না, তবে এমন কর্মের জন্য অস্বীকৃত লগইন করা হয় যেগুলি প্রয়োগকারী মোডে চলমান থাকলে অস্বীকার করা হত

সেলইনাক্সও অক্ষম করা যায়। যদিও এটি নিজেই অপারেশন মোড নয়, এটি এখনও একটি বিকল্প। যাইহোক, এই সরঞ্জামটি কীভাবে ব্যবহার করবেন তা শিখতে কেবল এড়িয়ে যাওয়া থেকে ভাল। ইহা মনে রেখো!

সেলইনাক্সের বর্তমান মোডটি প্রদর্শনের জন্য getenfor ব্যবহার করুন। আপনি যদি অপারেশন মোড টগল করতে চান তবে সেটেনফোর্স 0 (এটিকে অনুমতিতে সেট করতে) বা সেটেনফোর্স 1 (এনফোর্সিং) ব্যবহার করুন।

যেহেতু এই পরিবর্তনটি পুনরায় বুট থেকে বাঁচতে পারবেন না, আপনার/etc/সেলিনাক্স/কনফিগারেশন ফাইলটি সম্পাদনা করতে হবে এবং সেলিনাক্স ভেরিয়েবলটি প্রয়োগকারী , অনুমতিযুক্ত বা <কোডে সেট করতে হবে রিবুটগুলি জুড়ে অধ্যবসায় অর্জন করতে> অক্ষম

সাইড নোটে, জেনটেনফোর্স অক্ষম করে ফিরলে, আপনাকে কাঙ্ক্ষিত অপারেশন মোড এবং পুনরায় বুট করে/ইত্যাদি/সেলিনাক্স/কনফিগার করতে হবে। অন্যথায়, আপনি সেটিংফোর্স সাথে অপারেশন মোড সেট করতে (বা টগল) করতে পারবেন না।

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

দুটি ক্লাসিক ক্ষেত্রে যেখানে আমরা সম্ভবত সেলইনাক্সকে মোকাবেলা করব তা হ'ল:

  1. ডিমন শোনার ডিফল্ট পোর্ট পরিবর্তন করা
  2. ভার্চুয়াল হোস্টের জন্য/var/www/html এর বাইরে ডকুমেন্টরুট নির্দেশ সেট করা

আসুন নীচের উদাহরণগুলি ব্যবহার করে এই দুটি ক্ষেত্রে একবার দেখুন।

বেশিরভাগ সিস্টেম অ্যাডমিনিস্ট্রেটররা তাদের সার্ভারগুলি সুরক্ষিত করার জন্য প্রথমে যে কাজটি করেন তা হ'ল এসএসএইচ ডেমন যে পোর্টটি শোনেন, বেশিরভাগ বন্দর স্ক্যানার এবং বহিরাগত আক্রমণকারীদের নিরুৎসাহিত করার জন্য the এটি করার জন্য, আমরা নিম্নলিখিত বন্দর নম্বরটি অনুসরণ করে/etc/ssh/sshd_config এ পোর্ট নির্দেশিকা ব্যবহার করি (আমরা এই ক্ষেত্রে 9999 পোর্টটি ব্যবহার করব):

Port 9999

পরিষেবাটি পুনঃসূচনা করার চেষ্টা করার পরে এবং এর স্থিতি পরীক্ষা করার পরে আমরা দেখতে পাব যে এটি শুরু করতে ব্যর্থ হয়েছে:

# systemctl restart sshd
# systemctl status sshd

আমরা যদি /var/log/audit/audit.log একবার দেখে নিই, আমরা দেখতে পাবো যে এসএইচডিটি সেলুনাক্স দ্বারা 9999 পোর্টটি শুরু করতে বাধা দেওয়া হয়েছিল কারণ এটি জেবস ম্যানেজমেন্ট সার্ভিসের জন্য সংরক্ষিত বন্দর (সেলইনাক্স লগ বার্তাগুলিতে শব্দটি অন্তর্ভুক্ত করে “ এভিসি ”যাতে তারা অন্যান্য বার্তাগুলি থেকে সহজেই সনাক্ত করা যায়):

# cat /var/log/audit/audit.log | grep AVC | tail -1

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

# yum install policycoreutils-python

SELinux sshd- কে শুনতে দেয় এমন পোর্টগুলির একটি তালিকা দেখতে। নিম্নলিখিত চিত্রটিতে আমরা দেখতে পাচ্ছি যে 9999 পোর্টটি অন্য পরিষেবার জন্য সংরক্ষিত ছিল এবং তাই আমরা আপাতত অন্য পরিষেবা চালাতে এটি ব্যবহার করতে পারি না:

# semanage port -l | grep ssh

অবশ্যই আমরা এসএসএইচের জন্য অন্য একটি বন্দর বেছে নিতে পারি, তবে আমরা যদি নিশ্চিত হয়ে থাকি যে আমাদের কোনও জেবিস-সম্পর্কিত পরিষেবার জন্য এই নির্দিষ্ট মেশিনটি ব্যবহার করার দরকার নেই, তবে আমরা বিদ্যমান এসইএলিনাক্স নিয়মটি সংশোধন করতে পারি এবং পরিবর্তে সেই বন্দরটি এসএসএইচে অর্পণ করতে পারি:

# semanage port -m -t ssh_port_t -p tcp 9999

এর পরে, আমরা পোর্টটি সঠিকভাবে নির্ধারিত হয়েছে কিনা তা পরীক্ষা করার জন্য প্রথম সেমেনেজ কমান্ডটি ব্যবহার করতে পারি, বা -lC বিকল্পগুলি (তালিকা কাস্টমটির জন্য সংক্ষিপ্ত):

# semanage port -lC
# semanage port -l | grep ssh

আমরা এখন এসএসএইচ পুনরায় চালু করতে পারি এবং 9999 পোর্টটি ব্যবহার করে পরিষেবাতে সংযোগ করতে পারি Note নোট করুন যে এই পরিবর্তনটি পুনরায় বুট থেকে বাঁচবে।

ডকুমেন্টরুট হিসাবে/var/www/html ব্যতীত অন্য কোনও ডিরেক্টরি ব্যবহার করে যদি আপনাকে অ্যাপাচি ভার্চুয়াল হোস্ট সেট আপ করতে হয় তবে (উদাহরণস্বরূপ,/ওয়েবসরভি/সাইটগুলি/গ্যাব্রিয়েল/পাবলিক_এইচটিএমএল) বলুন:

DocumentRoot “/websrv/sites/gabriel/public_html”

অ্যাপাচি বিষয়বস্তু পরিবেশন করতে অস্বীকার করবে কারণ সূচিপত্রের HTML.tml কে ডিফল্ট_টেল সেলিনাক্স টাইপের সাথে লেবেল করা হয়েছে, যা অ্যাপাচি অ্যাক্সেস করতে পারে না:

# wget http://localhost/index.html
# ls -lZ /websrv/sites/gabriel/public_html/index.html

পূর্ববর্তী উদাহরণের মতো, আপনি নিচের কমান্ডটি যাচাই করতে ব্যবহার করতে পারেন এটি সত্যই সেলইনাক্স সম্পর্কিত সমস্যা:

# cat /var/log/audit/audit.log | grep AVC | tail -1

/ ওয়েবএসআরভি/সাইটগুলি/গ্যাব্রিয়েল/পাবলিক_এইচটিএমএলের লেবেল পুনরাবৃত্তভাবে httpd_sys_content_t এ পরিবর্তন করতে, করুন:

# semanage fcontext -a -t httpd_sys_content_t "/websrv/sites/gabriel/public_html(/.*)?"

উপরের কমান্ডটি অ্যাপাচি-কে কেবল সেই ডিরেক্টরি এবং এর সামগ্রীগুলিতে পঠনযোগ্য অ্যাক্সেসের অনুমতি দেবে।

অবশেষে, নীতিটি প্রয়োগ করতে (এবং অবিলম্বে লেবেল পরিবর্তন কার্যকর করার জন্য) করুন:

# restorecon -R -v /websrv/sites/gabriel/public_html

এখন আপনি ডিরেক্টরি অ্যাক্সেস করতে সক্ষম হওয়া উচিত:

# wget http://localhost/index.html

SELinux সম্পর্কিত আরও তথ্যের জন্য, ফেডোরা 22 SELinux এবং প্রশাসক গাইড দেখুন Administ