সেন্টস/আরএইচইএলে অডিট সরঞ্জাম সহ লিনাক্স সিস্টেম অডিটিং শিখুন


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

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

এটি কোনও ইভেন্টের তারিখ এবং সময়, প্রকার এবং ফলাফলের মতো তথ্য রেকর্ড করতে পারে; ব্যবহারকারীরা ইভেন্টটি ঘটায়, ফাইল/ডাটাবেসগুলিতে যে কোনও পরিবর্তন ঘটে; সিস্টেম অনুমোদনের প্রক্রিয়াগুলির যেমন পিএএম, এলডিএপি, এসএসএইচ এবং অন্যান্য ব্যবহার করে।

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

  1. কোনও স্বাবলম্বী করে তোলে এমন কোনও সিস্টেম চালনার জন্য কোনও বাহ্যিক প্রোগ্রাম বা প্রক্রিয়াগুলির প্রয়োজন হয় না
  2. এটি অত্যন্ত কনফিগারযোগ্য যার ফলে আপনি যে কোনও সিস্টেম অপারেশন দেখতে চান তা সক্ষম করে li
  3. এটি কোনও সিস্টেমের সম্ভাব্য আপসগুলি সনাক্তকরণ বা বিশ্লেষণে সহায়তা করে
  4. এটি একটি স্বাধীন সনাক্তকরণ সিস্টেম হিসাবে কাজ করতে সক্ষম।
  5. এটি অনুপ্রবেশ সনাক্তকরণ সক্ষম করতে অনুপ্রবেশ সনাক্তকরণ সিস্টেমগুলির সাথে কাজ করতে পারে
  6. ফরেনসিক তদন্তের নিরীক্ষণের জন্য এটি একটি গুরুত্বপূর্ণ সরঞ্জাম

নিরীক্ষণ সিস্টেমের দুটি মূল উপাদান রয়েছে:

  • ব্যবহারকারী-স্পেস অ্যাপ্লিকেশন এবং ইউটিলিটিস/সরঞ্জামগুলি এবং
  • কার্নেল-সাইড সিস্টেম কল প্রসেসিং - এটি ব্যবহারকারী-স্পেস অ্যাপ্লিকেশন থেকে সিস্টেম কল গ্রহণ করে এবং তাদের তিন ধরণের ফিল্টারগুলির মধ্যে দিয়ে যায়: যথা: ব্যবহারকারী, টাস্ক, প্রস্থান এবং বাদ দিন

সর্বাধিক গুরুত্বপূর্ণ অংশটি হ'ল ইউজার-স্পেস অডিট ডিমন (অডিট) যা কার্নেল থেকে প্রাক-কনফিগার করা নিয়মের উপর ভিত্তি করে তথ্য সংগ্রহ করে এবং একটি লগ ফাইলে এন্ট্রি উত্পন্ন করে: ডিফল্ট লগটি হল /var/log/audit/audit.log log

অতিরিক্তভাবে, অডিএসপিডি (অডিট প্রেরণকারী ডেমন) একটি ইভেন্ট মাল্টিপ্লেক্সার যা নিরীক্ষণের সাথে ইন্টারঅ্যাক্ট করে এবং অন্যান্য প্রোগ্রামগুলিতে ইভেন্ট প্রেরণ করে যা রিয়েল টাইম ইভেন্ট প্রসেসিং করতে চায়।

নিরীক্ষণ সিস্টেম থেকে তথ্য পরিচালনা ও পুনরুদ্ধারের জন্য বেশ কয়েকটি ব্যবহারকারী-স্পেস সরঞ্জাম রয়েছে:

  • অডিটকল - কার্নেলের অডিট সিস্টেম নিয়ন্ত্রণের জন্য একটি উপযোগ।
  • ausearch - নির্দিষ্ট ইভেন্টগুলির জন্য অডিট লগ ফাইলগুলি অনুসন্ধান করার জন্য একটি ইউটিলিটি
  • অরপোর্ট - রেকর্ড হওয়া ইভেন্টগুলির রিপোর্ট তৈরির জন্য একটি ইউটিলিটি

কীভাবে আরএইচইএল/সেন্টোস/ফেডোরায় অডিট সরঞ্জামটি ইনস্টল ও কনফিগার করতে হয়

প্রথমে গ্রেপ ইউটিলিটিটি ব্যবহার করে আপনার সিস্টেমে নিরীক্ষণ সরঞ্জামটি ইনস্টল করা আছে তা যাচাই করে তা নিশ্চিত করুন:

# rpm -qa | grep audit

যদি আপনার উপরের প্যাকেজগুলি ইনস্টল না করা থাকে তবে এগুলি ইনস্টল করার জন্য এই কমান্ডটি মূল ব্যবহারকারী হিসাবে চালান।

# yum install audit

এরপরে, নিরীক্ষণ সক্ষম ও চলমান আছে কিনা তা পরীক্ষা করে দেখুন, টার্মিনালে নীচে সিস্টেস্টটিএল কমান্ড জারি করুন।

--------------- On CentOS/RHEL 7 --------------- 
# systemctl is-enabled auditd
# systemctl status auditd
# systemctl start auditd   [Start]
# systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
# service auditd status
# service auditd start     [Start]
# chkconfig auditd on      [Enable]

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

# vi /etc/audit/auditd.conf

নীচের নমুনা আউটপুট থেকে, পরামিতিগুলি স্ব-বর্ণনামূলক।

অডিট বিধিগুলি বোঝা

যেমনটি আমরা আগে উল্লেখ করেছি, অডিট কর্নেল থেকে নির্দিষ্ট তথ্য সংগ্রহের জন্য নিয়ম ব্যবহার করে। এই নিয়মগুলি মূলত অডিটকল বিকল্পগুলি (ম্যান পৃষ্ঠা দেখুন) যা আপনি /etc/audit/rules.d/audit.rules ফাইলের নিয়মগুলি কনফিগার করতে পারেন (CentOS 6 এ, /etc/audit/audit.rules ফাইলটি ব্যবহার করুন) , যাতে তারা শুরুতে লোড হয়।

এখানে আপনি তিন ধরণের নিরীক্ষণের নিয়ম নির্ধারণ করতে পারেন:

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

সম্পাদনার জন্য এখন মূল কনফিগারেশন ফাইলটি খুলুন:

# vi /etc/audit/rules.d/audit.rules

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

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

আপনি এই সিনট্যাক্সটি ব্যবহার করে ফাইল ঘড়িগুলি সংজ্ঞায়িত করতে পারেন:

-w /path/to/file/or/directory -p permissions -k key_name

যেখানে বিকল্প:

  • ডাব্লু - উপর নজর রাখতে কোনও ফাইল বা ডিরেক্টরি নির্দিষ্ট করতে ব্যবহৃত হয়
  • পি - লগড করার অনুমতি, আর - পড়ার অ্যাক্সেসের জন্য, ডাব্লু - লেখার অ্যাক্সেসের জন্য এক্স - এক্সিকিউট এক্সেস এক্সিকিউটি এবং এ - ফাইল বা ডিরেক্টর অ্যাট্রিবিউট পরিবর্তনের জন্য
  • -k - আপনাকে কোন নিয়ম (বা নিয়মের একটি সেট) নির্দিষ্ট লগ এন্ট্রি তৈরি করেছে তা সনাক্ত করার জন্য anচ্ছিক স্ট্রিং সেট করার অনুমতি দেয়

এই নিয়মগুলি অডিটকে এই সমালোচনামূলক সিস্টেম ফাইলগুলিতে পরিবর্তন করে ইভেন্টগুলি দেখার অনুমতি দেয়।

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

আপনি নীচের ফর্মটি ব্যবহার করে একটি সিস্টেম কল বিধি সেট করতে পারেন:

-a action,filter -S system_call -F field=value -k key_name

কোথায়:

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

এখানে আপনি কিছু বিধি সংজ্ঞা দিতে পারেন।

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

তারপরে সর্বশেষে ফাইলের শেষে অপরিবর্তনীয়তা সেটিংস যুক্ত করুন, উদাহরণস্বরূপ:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules

অডিটেক্টল ইউটিলিটি ব্যবহার করে অডিট বিধিগুলি কীভাবে সেট করবেন

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

বর্তমানে লোড হওয়া সমস্ত নিরীক্ষণের নিয়মগুলি তালিকা করতে -l পতাকাটি পাস করুন:

# auditctl -l

এর পরে, কয়েকটি বিধি যুক্ত করার চেষ্টা করুন:

# auditctl -w /etc/passwd -p wa -k passwd_changes
# auditctl -w /etc/group -p wa -k group_changes
# auditctl -w /etc/sudoers -p wa -k sudoers_changes
# auditctl -l

সমস্ত নিরীক্ষণ বার্তা ডিফল্টরূপে /var/log/audit/audit.log ফাইলে রেকর্ড করা হয়। লগ এন্ট্রি ফর্ম্যাটটি বুঝতে, আমরা একটি নিয়ম লোড করব এবং নিয়মের সাথে মেলে এমন কোনও ইভেন্টের পরে উত্পন্ন লগ এন্ট্রি চেক করব।

ধরে নিলাম আমাদের একটি গোপন ব্যাকআপ ডিরেক্টরি রয়েছে, এই নিরীক্ষার নিয়মটি এই ডিরেক্টরিটি অ্যাক্সেস বা সংশোধন করার যে কোনও প্রচেষ্টা লগ করবে:

# auditctl -w /backups/secret_files/ -p rwa -k secret_backup

এখন, অন্য একটি সিস্টেম অ্যাকাউন্ট ব্যবহার করে উপরের ডিরেক্টরিতে স্থানান্তরিত করে ls কমান্ড চালানোর চেষ্টা করুন:

$ cd /backups/secret_files/
$ ls

লগ এন্ট্রি তাই দেখতে হবে।

উপরোক্ত ইভেন্টটি তিন ধরণের অডিট রেকর্ড নিয়ে গঠিত। প্রথমটি টাইপ = SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

দ্বিতীয়টি টাইপ = সিডাব্লুডি।

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

এবং শেষটি হল টাইপ = PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

অডিট সিস্টেম রেফারেন্সে আপনি ইভেন্টের সমস্ত ক্ষেত্রের সম্পূর্ণ তালিকা (যেমন _, আর্চ, সেজ ইত্যাদি।) এবং এর অর্থগুলি খুঁজে পেতে পারেন।

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