লিনাক্সে কীভাবে পিএএম কনফিগার এবং ব্যবহার করবেন


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

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

অনেকগুলি আধুনিক লিনাক্স ডিস্ট্রিবিউশন ডিফল্টরূপে লিনাক্স-প্যাম সমর্থন করে (এরপরে "পিএএম" হিসাবে পরিচিত)। এই নিবন্ধে, আমরা উবুন্টু এবং সেন্টোস সিস্টেমে কীভাবে উন্নত পিএএম কনফিগার করতে হবে তা ব্যাখ্যা করব।

আমরা আরও কিছু করার আগে, নোট করুন:

  • সিস্টেম অ্যাডমিনিস্ট্রেটর হিসাবে, সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল পিএএম কনফিগারেশন ফাইল (গুলি) কীভাবে অ্যাপ্লিকেশন (পরিষেবাদি) এবং প্লাগেবল প্রমাণীকরণ মডিউলগুলির (পিএএম) মধ্যে সংযোগ সংজ্ঞা দেয় যা প্রকৃত প্রমাণীকরণের কার্য সম্পাদন করে। আপনাকে অবশ্যই প্যামের অভ্যন্তরীণ কাজ বোঝার দরকার নেই
  • পিএএম আপনার লিনাক্স সিস্টেমের সুরক্ষা গুরুতরভাবে পরিবর্তন করার সম্ভাবনা রাখে। ত্রুটিযুক্ত কনফিগারেশন আপনার সিস্টেমে আংশিক বা সম্পূর্ণভাবে অ্যাক্সেস অক্ষম করতে পারে। উদাহরণস্বরূপ, /etc/pam.d/* এবং/অথবা /etc/pam.conf এর অধীনে একটি কনফিগারেশন ফাইল (গুলি) অপসারণযুক্ত মোছা আপনাকে নিজের সিস্টেম থেকে লক আউট করতে পারে!

একটি প্রোগ্রাম কীভাবে চেক করবেন তা প্যাম সচেতন

পিএএম নিয়োগের জন্য, একটি অ্যাপ্লিকেশন/প্রোগ্রামের "পিএএম সচেতন" হওয়া দরকার; প্যাম ব্যবহারের জন্য এটি বিশেষভাবে রচনা এবং সংকলন করা দরকার। কোনও প্রোগ্রাম "প্যাম-সচেতন" কিনা তা জানতে, এটি ldd কমান্ডটি ব্যবহার করে PAM লাইব্রেরিতে সংকলন করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।

উদাহরণস্বরূপ sshd:

$ sudo ldd /usr/sbin/sshd | grep libpam.so

	libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)

লিনাক্সে কীভাবে পিএএম কনফিগার করবেন

প্যামের প্রধান কনফিগারেশন ফাইল হ'ল /etc/pam.conf এবং /etc/pam.d/ ডিরেক্টরিতে প্রতিটি PAM- সচেতন অ্যাপ্লিকেশন/পরিষেবাদির জন্য PAM কনফিগারেশন ফাইল থাকে। ডিরেক্টরি উপস্থিত থাকলে পিএএম ফাইলটিকে উপেক্ষা করবে।

মূল কনফিগারেশন ফাইলের বাক্য গঠনটি নিম্নরূপ। ফাইলটি একটি একক লাইনে লিখিত বিধিগুলির একটি তালিকা নিয়ে গঠিত (আপনি "\" এস্কেপ অক্ষর ব্যবহার করে বিধিগুলি প্রসারিত করতে পারেন) এবং মন্তব্যগুলি "#" এর আগে রয়েছে চিহ্নিত করুন এবং লাইনের পরবর্তী প্রান্তে প্রসারিত করুন।

প্রতিটি নিয়মের বিন্যাস হ'ল টোকেনের স্থান পৃথকীকরণের সংগ্রহ (প্রথম তিনটি কেস-সংবেদনশীল)। আমরা এই টোকেনগুলি পরবর্তী বিভাগগুলিতে ব্যাখ্যা করব।

service type control-flag module module-arguments 

কোথায়:

  • পরিষেবা: প্রকৃত প্রয়োগের নাম
  • প্রকার: মডিউল টাইপ/প্রসঙ্গ/ইন্টারফেস
  • নিয়ন্ত্রণ-পতাকা: পাম-এপিআই-এর আচরণ নির্দেশ করে যে মডিউলটি তার প্রমাণীকরণ কার্যে ব্যর্থ হতে পারে
  • মডিউল: পামের পরম ফাইলের নাম বা আপেক্ষিক পথের নাম
  • মডিউল-যুক্তি: মডিউল আচরণ নিয়ন্ত্রণের জন্য টোকেনগুলির স্থান পৃথকীকরণের তালিকা

/Etc/pam.d/ এ প্রতিটি ফাইলের সিনট্যাক্স মূল ফাইলের অনুরূপ এবং নিম্নলিখিত ফর্মের লাইন দ্বারা গঠিত:

type control-flag module module-arguments

এটি /etc/pam.d/sshd ফাইলে পাওয়া একটি নিয়মের সংজ্ঞা (মডিউল-আর্গুমেন্ট ছাড়াই) উদাহরণ, যা/etc/nologin উপস্থিত থাকলে নন-রুট লগইনগুলি অস্বীকার করে:

account required pam_nologin.so

পিএএম পরিচালন গোষ্ঠী এবং নিয়ন্ত্রণ-পতাকাগুলি বোঝা

পিএএম অনুমোদনের কাজগুলি চারটি স্বতন্ত্র পরিচালন গোষ্ঠীতে বিভক্ত। এই গোষ্ঠীগুলি একটি সীমিত পরিষেবার জন্য একটি সাধারণ ব্যবহারকারীর অনুরোধের বিভিন্ন দিক পরিচালনা করে।

একটি মডিউল এই পরিচালনা গ্রুপ প্রকারের সাথে সম্পর্কিত:

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

পিএএম লোডেবল অবজেক্ট ফাইলগুলি (মডিউলগুলি) নিম্নলিখিত ডিরেক্টরিতে অবস্থিত:/lib/সুরক্ষা/অথবা/lib64/সুরক্ষা স্থাপত্যের উপর নির্ভর করে।

সমর্থিত নিয়ন্ত্রণ-পতাকাগুলি হ'ল:

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

উপরের কীওয়ার্ডগুলি ছাড়াও অন্য দুটি বৈধ নিয়ন্ত্রণ পতাকা রয়েছে:

  • অন্তর্ভুক্ত করুন: কনফিগারেশন ফাইল থেকে প্রদত্ত ধরণের সমস্ত লাইনকে এই নিয়ন্ত্রণের জন্য একটি আর্গুমেন্ট হিসাবে উল্লেখ করা হয়েছে include
  • সাবস্টাক: কনফিগারেশন ফাইল থেকে প্রদত্ত ধরণের সমস্ত লাইনকে এই নিয়ন্ত্রণের জন্য একটি আর্গুমেন্ট হিসাবে উল্লেখ করা হয়েছে।

কীভাবে পিএএম এর মাধ্যমে এসএসএইচ পরিষেবাতে রুট অ্যাক্সেসকে সীমাবদ্ধ করবেন

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

আমরা /lib/security/pam_listfile.so মডিউলটি ব্যবহার করতে পারি যা নির্দিষ্ট অ্যাকাউন্টগুলির সুবিধাগুলি সীমাবদ্ধ করার ক্ষেত্রে দুর্দান্ত নমনীয়তা সরবরাহ করে। /Etc/pam.d/ ডিরেক্টরিতে লক্ষ্য হিসাবে পরিষেবার জন্য ফাইলটি খুলুন এবং সম্পাদনা করুন।

$ sudo vim /etc/pam.d/sshd
OR
$ sudo vim /etc/pam.d/login

উভয় ফাইলে এই নিয়ম যুক্ত করুন।

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

উপরের নিয়মে টোকেনগুলি ব্যাখ্যা করা:

  • auth: মডিউল টাইপ (বা প্রসঙ্গ)
  • প্রয়োজনীয়: একটি নিয়ন্ত্রণ-পতাকা যা এর অর্থ মডিউলটি ব্যবহৃত হয়, এটি অবশ্যই পাস করতে হবে বা অন্যান্য ফলাফলের মডিউল নির্বিশেষে সামগ্রিক ফলাফলটি ব্যর্থ হবে
  • pam_listfile.so: একটি মডিউল যা একটি স্বেচ্ছাসেবী ফাইলের উপর ভিত্তি করে পরিষেবাগুলিকে অস্বীকার করার বা অনুমতি দেওয়ার একটি উপায় সরবরাহ করে
  • অনার = সফল: মডিউল যুক্তি
  • আইটেম = ব্যবহারকারী: মডিউল যুক্তি যা ফাইলটিতে তালিকাবদ্ধ রয়েছে তা নির্দিষ্ট করে এবং এর জন্য যাচাই করা উচিত
  • জ্ঞান = অস্বীকার করুন: মডিউল যুক্তি যা ফাইলটিতে পাওয়া গেলে ব্যবস্থা নিতে নির্দিষ্ট করে, যদি আইটেমটি ফাইলে পাওয়া যায় না, তবে বিপরীত ক্রিয়াটি অনুরোধ করা হয়েছে
  • ফাইল =/etc/ssh/অস্বীকারকারী: মডিউল যুক্তি যা প্রতি লাইনে একটি আইটেমযুক্ত ফাইল সুনির্দিষ্ট করে

এরপরে, আমাদের/etc/ssh/অস্বীকারকারী ফাইল তৈরি করতে হবে এবং এতে নাম রুট যুক্ত করতে হবে:

$ sudo vim /etc/ssh/deniedusers

পরিবর্তনগুলি সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন, তারপরে এটির প্রয়োজনীয় অনুমতিগুলি সেট করুন:

$ sudo chmod 600 /etc/ssh/deniedusers

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

লিনাক্সে কীভাবে অ্যাডভান্সড পিএএম কনফিগার করা যায়

আরও জটিল পিএএম নিয়মগুলি লিখতে, আপনি নিম্নলিখিত ফর্মটিতে বৈধ নিয়ন্ত্রণ-পতাকা ব্যবহার করতে পারেন:

type [value1=action1 value2=action2 …] module module-arguments

যেখানে মান এনডিউড ফাংশন থেকে রিটার্ন কোডটির সাথে মডিউলটিতে অনুরোধ করা হয়েছে যার জন্য লাইনটি সংজ্ঞায়িত করা হয়েছে। অন-লাইন পিএএম প্রশাসকের গাইড থেকে আপনি সমর্থিত মানগুলি খুঁজে পেতে পারেন। একটি বিশেষ মান হ'ল ডিফল্ট, যা স্পষ্টভাবে উল্লেখ করা হয়নি এমন সমস্ত ভ্যালনএনকে বোঝায়।

অ্যাকশনএন নিম্নলিখিত ফর্মগুলির একটি নিতে পারে:

  • উপেক্ষা করুন: যদি এই ক্রিয়াটি মডিউলগুলির একটি স্ট্যাকের সাথে ব্যবহৃত হয়, মডিউলটির রিটার্নের স্থিতি অ্যাপ্লিকেশন প্রাপ্ত রিটার্ন কোডে অবদান রাখবে না
  • খারাপ: ইঙ্গিত দেয় যে রিটার্ন কোডটি মডিউল ব্যর্থতার সূচক হিসাবে মনে করা উচিত। যদি এই মডিউলটি ব্যর্থ হয়ে স্ট্যাকের মধ্যে প্রথম হয় তবে এর স্ট্যাটাস মানটি পুরো স্ট্যাকের জন্য ব্যবহার করা হবে
  • ডাই: খারাপ এর সমতুল্য তবে মডিউল স্ট্যাক এবং PAM অবিলম্বে অ্যাপ্লিকেশনটিতে ফিরে আসতে পারে
  • ঠিক আছে: এটি পিএএমকে নির্দেশ দেয় যে সিস্টেম প্রশাসক মনে করেন যে এই রিটার্ন কোডটি মডিউলগুলির পুরো স্ট্যাকের রিটার্ন কোডে সরাসরি অবদান রাখতে হবে
  • সম্পন্ন হয়েছে: ঠিক আছে সমান তবে মডিউল স্ট্যাক এবং PAM অবিলম্বে অ্যাপ্লিকেশনটিতে ফিরে আসতে পারে returning
  • li
  • এন (একটি স্বাক্ষরযুক্ত স্বাক্ষর পূর্ণসংখ্যার): ঠিক আছে এর সমতুল্য তবে স্ট্যাকের পরবর্তী এন মডিউলগুলিতে ঝাঁপিয়ে পড়তে পারে
  • পুনরায় সেট করুন: এই ক্রিয়াটি মডিউল স্ট্যাকের অবস্থার সমস্ত স্মৃতি সাফ করে এবং পরবর্তী স্ট্যাকড মডিউলটির সাথে পুনরায় আরম্ভ করবে

চারটি কীওয়ার্ডের প্রতিটি: প্রয়োজনীয়; প্রয়োজনীয়; পর্যাপ্ত; এবং alচ্ছিক, [...] সিনট্যাক্সের ক্ষেত্রে একটি সমতুল্য ভাব প্রকাশ করুন, যা আপনাকে আরও জটিল নিয়ম লেখার অনুমতি দেয় এবং সেগুলি হ'ল:

  • প্রয়োজনীয়: [সাফল্য = ঠিক আছে new_authtok_reqd = ঠিক আছে উপেক্ষা করুন = ডিফল্ট অগ্রাহ্য করুন = খারাপ]
  • প্রয়োজনীয়: [সাফল্য = ঠিক আছে new_authtok_reqd = ঠিক আছে উপেক্ষা করুন = ডিফল্ট অগ্রাহ্য করুন = মারা যান]
  • পর্যাপ্ত: [সাফল্য = নতুন করা হয়েছে_আউথটোক_আরকিডি = সম্পন্ন ডিফল্ট = উপেক্ষা করুন]
  • alচ্ছিক: [সাফল্য = ঠিক আছে new_authtok_reqd = ঠিক আছে ডিফল্ট = উপেক্ষা করুন]

নিম্নলিখিতটি আধুনিক সেন্টোস 7 সিস্টেমের একটি উদাহরণ is আসুন /etc/pam.d/postlogin PAM ফাইল থেকে এই নিয়মগুলি বিবেচনা করা যাক:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
session     [success=1 default=ignore] pam_succeed_if.so service !~ gdm* service !~ su* quiet
session     [default=1]   pam_lastlog.so nowtmp showfailed
session     optional      pam_lastlog.so silent noupdate showfailed

এখানে /etc/pam.d/smarcard-auth পিএএম ফাইল থেকে অন্য একটি কনফিগারেশন রয়েছে:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        [success=done ignore=ignore default=die] pam_pkcs11.so nodebug wait_for_card
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    required      pam_pkcs11.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

আরও তথ্যের জন্য, pam.d ম্যান পৃষ্ঠাটি দেখুন:

$ man pam.d 

সর্বশেষে, লিনাক্স-প্যামের ডকুমেন্টেশনে কনফিগারেশন ফাইল সিনট্যাক্স এবং সমস্ত পিএএম মডিউলগুলির একটি বিস্তৃত বিবরণ পাওয়া যাবে।

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

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