CentOS/RHEL-ൽ ഓഡിറ്റ് ടൂൾ ഉപയോഗിച്ച് Linux സിസ്റ്റം ഓഡിറ്റിംഗ് പഠിക്കുക


സിസ്റ്റം ഓഡിറ്റിംഗ് എന്നത് ഒരു നിർദ്ദിഷ്ട ടാർഗെറ്റഡ് സിസ്റ്റത്തിന്റെ ആഴത്തിലുള്ള വിശകലനത്തെ സൂചിപ്പിക്കുന്നു: ഒരു ഓഡിറ്റ് നിർമ്മിച്ചിരിക്കുന്നത് ആ സിസ്റ്റം ഉൾക്കൊള്ളുന്ന വിവിധ ഭാഗങ്ങളുടെ ഒരു പരിശോധനയാണ്, താൽപ്പര്യമുള്ള വ്യത്യസ്ത മേഖലകളിൽ നിർണായക വിലയിരുത്തൽ (ആവശ്യമെങ്കിൽ ടെസ്റ്റിംഗ്).

RHEL/CentOS-ലെ നിർണ്ണായക സബ്സിസ്റ്റങ്ങളിലൊന്നായ ലിനക്സ് ഓഡിറ്റ് സിസ്റ്റം ഓഡിറ്റ്ഡ് എന്നറിയപ്പെടുന്നു. ഒരു സിസ്റ്റത്തിൽ സുരക്ഷാ-ബന്ധപ്പെട്ട വിവരങ്ങൾ ട്രാക്ക് ചെയ്യുന്നതിനുള്ള ഒരു മാർഗം ഇത് നടപ്പിലാക്കുന്നു: സിസ്റ്റത്തിൽ നടക്കുന്ന സംഭവങ്ങളെക്കുറിച്ചുള്ള വലിയ അളവിലുള്ള വിവരങ്ങൾ ശേഖരിക്കുന്നതിന് മുൻകൂട്ടി ക്രമീകരിച്ച നിയമങ്ങൾ ഉപയോഗിക്കുന്നു, കൂടാതെ ഒരു ലോഗ് ഫയലിൽ രേഖപ്പെടുത്തുകയും അങ്ങനെ ഒരു ഓഡിറ്റ് ട്രയൽ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.

ഒരു ഇവന്റിന്റെ തീയതിയും സമയവും തരവും ഫലവും പോലുള്ള വിവരങ്ങൾ ഇതിന് റെക്കോർഡ് ചെയ്യാൻ കഴിയും; ഇവന്റിന് കാരണമായ ഉപയോക്താക്കൾ, ഫയലുകൾ/ഡാറ്റാബേസുകളിൽ വരുത്തിയ മാറ്റങ്ങൾ; PAM, LDAP, SSH എന്നിവയും മറ്റുള്ളവയും പോലുള്ള സിസ്റ്റം പ്രാമാണീകരണ സംവിധാനങ്ങളുടെ ഉപയോഗങ്ങൾ.

ഓഡിറ്റ് കോൺഫിഗറേഷൻ ഫയലുകളിൽ വരുത്തിയ മാറ്റങ്ങൾ അല്ലെങ്കിൽ ഓഡിറ്റ് ലോഗ് ഫയലുകൾ ആക്uസസ് ചെയ്യാനുള്ള ശ്രമങ്ങൾ, കൂടാതെ സിസ്റ്റത്തിലേക്കോ അതിൽ നിന്നോ ഉള്ള വിവരങ്ങൾ ഇറക്കുമതി ചെയ്യുന്നതിനോ കയറ്റുമതി ചെയ്യുന്നതിനോ ഉള്ള ശ്രമങ്ങളും കൂടാതെ സുരക്ഷയുമായി ബന്ധപ്പെട്ട മറ്റ് നിരവധി വിവരങ്ങളും ഓഡിറ്റ്ഡ് രജിസ്റ്റർ ചെയ്യുന്നു.

  1. അതിനെ സ്വയം ആശ്രയിക്കുന്ന ഒരു സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്നതിന് ബാഹ്യ പ്രോഗ്രാമുകളോ പ്രക്രിയകളോ ആവശ്യമില്ല.
  2. ഇത് വളരെ കോൺഫിഗർ ചെയ്യാവുന്നതിനാൽ നിങ്ങൾക്ക് ആവശ്യമുള്ള ഏത് സിസ്റ്റം ഓപ്പറേഷനും(കൾ) കാണാൻ നിങ്ങളെ പ്രാപ്തരാക്കുന്നു.
  3. ഒരു സിസ്റ്റത്തിന്റെ സാധ്യമായ വിട്ടുവീഴ്ചകൾ കണ്ടെത്തുന്നതിനോ വിശകലനം ചെയ്യുന്നതിനോ ഇത് സഹായിക്കുന്നു.
  4. ഇത് ഒരു സ്വതന്ത്ര ഡിറ്റക്ഷൻ സിസ്റ്റമായി പ്രവർത്തിക്കാൻ പ്രാപ്തമാണ്.
  5. നുഴഞ്ഞുകയറ്റം കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കാൻ ഇതിന് നുഴഞ്ഞുകയറ്റം കണ്ടെത്തൽ സംവിധാനങ്ങളുമായി പ്രവർത്തിക്കാനാകും.
  6. ഫോറൻസിക് അന്വേഷണങ്ങൾ ഓഡിറ്റ് ചെയ്യുന്നതിനുള്ള ഒരു സുപ്രധാന ഉപകരണമാണിത്.

ഓഡിറ്റ് സിസ്റ്റത്തിന് രണ്ട് പ്രധാന ഘടകങ്ങളുണ്ട്, അതായത്:

  • ഉപയോക്തൃ-സ്പേസ് ആപ്ലിക്കേഷനുകളും യൂട്ടിലിറ്റികളും/ഉപകരണങ്ങളും, ഒപ്പം
  • കേർണൽ-സൈഡ് സിസ്റ്റം കോൾ പ്രോസസ്സിംഗ് - ഇത് ഉപയോക്തൃ-സ്പേസ് ആപ്ലിക്കേഷനുകളിൽ നിന്നുള്ള സിസ്റ്റം കോളുകൾ സ്വീകരിക്കുകയും അവയെ മൂന്ന് തരം ഫിൽട്ടറുകളിലൂടെ കടന്നുപോകുകയും ചെയ്യുന്നു, അതായത്: ഉപയോക്താവ്, ടാസ്ക്, എക്സിറ്റ്, അല്ലെങ്കിൽ ഒഴിവാക്കുക.

ഏറ്റവും പ്രധാനപ്പെട്ട ഭാഗം യൂസർ-സ്പേസ് ഓഡിറ്റ് ഡെമൺ (ഓഡിറ്റ്) ആണ്, അത് കേർണലിൽ നിന്ന് മുൻകൂട്ടി ക്രമീകരിച്ച നിയമങ്ങളെ അടിസ്ഥാനമാക്കി വിവരങ്ങൾ ശേഖരിക്കുകയും ഒരു ലോഗ് ഫയലിൽ എൻട്രികൾ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു: ഡിഫോൾട്ട് ലോഗ് /var/log/audit/audit.log ആണ്.

കൂടാതെ, audispd (ഓഡിറ്റ് ഡിസ്പാച്ചർ ഡെമൺ) ഒരു ഇവന്റ് മൾട്ടിപ്ലക്സറാണ്, അത് ഓഡിറ്റുമായി സംവദിക്കുകയും തത്സമയ ഇവന്റ് പ്രോസസ്സിംഗ് നടത്താൻ ആഗ്രഹിക്കുന്ന മറ്റ് പ്രോഗ്രാമുകളിലേക്ക് ഇവന്റുകൾ അയയ്ക്കുകയും ചെയ്യുന്നു.

ഓഡിറ്റ് സിസ്റ്റത്തിൽ നിന്ന് വിവരങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനും വീണ്ടെടുക്കുന്നതിനുമായി നിരവധി യൂസർ-സ്പേസ് ടൂളുകൾ ഉണ്ട്:

  • auditctl - കേർണലിന്റെ ഓഡിറ്റ് സിസ്റ്റം നിയന്ത്രിക്കുന്നതിനുള്ള ഒരു യൂട്ടിലിറ്റി.
  • ausearch - നിർദ്ദിഷ്ട ഇവന്റുകൾക്കായി ഓഡിറ്റ് ലോഗ് ഫയലുകൾ തിരയുന്നതിനുള്ള ഒരു യൂട്ടിലിറ്റി.
  • aureport – റെക്കോർഡ് ചെയ്ത ഇവന്റുകളുടെ റിപ്പോർട്ടുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു യൂട്ടിലിറ്റി.

RHEL/CentOS/Fedora-ൽ ഓഡിറ്റ് ടൂൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം, കോൺഫിഗർ ചെയ്യാം

ഗ്രെപ്പ് യൂട്ടിലിറ്റി ഉപയോഗിച്ച് നിങ്ങളുടെ സിസ്റ്റത്തിൽ ഓഡിറ്റ് ടൂൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടോയെന്ന് ആദ്യം ഉറപ്പാക്കുക:

# rpm -qa | grep audit

മുകളിലുള്ള പാക്കേജുകൾ നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, അവ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനായി റൂട്ട് ഉപയോക്താവായി ഈ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# yum install audit

അടുത്തതായി, ഓഡിറ്റ് പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടോ എന്നും പ്രവർത്തിക്കുന്നുണ്ടോ എന്നും പരിശോധിക്കുക, ടെർമിനലിൽ താഴെയുള്ള systemctl കമാൻഡുകൾ നൽകുക.

--------------- 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

ചുവടെയുള്ള സാമ്പിൾ ഔട്ട്പുട്ടിൽ നിന്ന്, പാരാമീറ്ററുകൾ സ്വയം വിശദീകരിക്കുന്നതാണ്.

ഓഡിറ്റ് നിയമങ്ങൾ മനസ്സിലാക്കുന്നു

ഞങ്ങൾ നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, കേർണലിൽ നിന്ന് നിർദ്ദിഷ്ട വിവരങ്ങൾ ശേഖരിക്കുന്നതിന് ഓഡിറ്റ്ഡ് നിയമങ്ങൾ ഉപയോഗിക്കുന്നു. ഈ നിയമങ്ങൾ അടിസ്ഥാനപരമായി auditctl ഓപ്ഷനുകളാണ് (മാൻ പേജ് കാണുക), നിങ്ങൾക്ക് /etc/audit/rules.d/audit.rules ഫയലിൽ നിയമങ്ങൾ മുൻകൂട്ടി ക്രമീകരിക്കാൻ കഴിയും (CentOS 6-ൽ, /etc/audit/audit.rules ഫയൽ ഉപയോഗിക്കുക) , അങ്ങനെ അവ സ്റ്റാർട്ടപ്പിൽ ലോഡ് ചെയ്യപ്പെടും.

നിങ്ങൾക്ക് നിർവചിക്കാവുന്ന മൂന്ന് തരം ഓഡിറ്റ് നിയമങ്ങളുണ്ട്:

  • നിയന്ത്രണ നിയമങ്ങൾ - ഇവ ഓഡിറ്റ് സിസ്റ്റത്തിന്റെ സ്വഭാവവും അതിന്റെ ചില കോൺഫിഗറേഷനുകളും പരിഷ്ക്കരിക്കാൻ പ്രാപ്തമാക്കുന്നു.
  • ഫയൽ സിസ്റ്റം നിയമങ്ങൾ (ഫയൽ വാച്ചുകൾ എന്നും അറിയപ്പെടുന്നു) - ഒരു നിശ്ചിത ഫയലിലേക്കോ ഡയറക്ടറിയിലേക്കോ ഉള്ള ആക്uസസ് ഓഡിറ്റിംഗ് പ്രവർത്തനക്ഷമമാക്കുക.
  • സിസ്റ്റം കോൾ നിയമങ്ങൾ - ഏത് പ്രോഗ്രാമും ചെയ്ത സിസ്റ്റം കോളുകൾ ലോഗ് ചെയ്യാൻ അനുവദിക്കുന്നു.

ഇപ്പോൾ എഡിറ്റിംഗിനായി പ്രധാന കോൺഫിഗറേഷൻ ഫയൽ തുറക്കുക:

# 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

ഓപ്ഷൻ എവിടെ:

  • കാണാനുള്ള ഒരു ഫയലോ ഡയറക്ടറിയോ വ്യക്തമാക്കാൻ w - ഉപയോഗിക്കുന്നു.
  • p – ലോഗ് ചെയ്യാനുള്ള അനുമതികൾ, r – റീഡ് ആക്uസസ്, w – റൈറ്റ് ആക്uസസ്, x – എക്uസിക്യൂട്ട് ആക്uസസ്, a – ഫയലിന്റെയോ ഡയറക്uടർ ആട്രിബ്യൂട്ടിന്റെയോ മാറ്റത്തിന്.
  • -k - ഒരു നിർദ്ദിഷ്ട ലോഗ് എൻട്രി സൃഷ്ടിച്ചത് ഏത് റൂൾ (അല്ലെങ്കിൽ ഒരു കൂട്ടം നിയമങ്ങൾ) ആണെന്ന് തിരിച്ചറിയുന്നതിന് ഒരു ഓപ്ഷണൽ സ്ട്രിംഗ് സജ്ജമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

ഈ നിർണായക സിസ്റ്റം ഫയലുകളിൽ മാറ്റങ്ങൾ വരുത്തുന്ന ഇവന്റുകൾ കാണുന്നതിന് ഓഡിറ്റിംഗിനെ ഈ നിയമങ്ങൾ അനുവദിക്കുന്നു.

-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

എവിടെ:

  • പ്രവർത്തനം - രണ്ട് സാധ്യമായ മൂല്യങ്ങളുണ്ട്: എപ്പോഴും അല്ലെങ്കിൽ ഒരിക്കലും.
  • ഫിൽട്ടർ - കേർണൽ റൂൾ-മാച്ചിംഗ് ഫിൽട്ടർ വ്യക്തമാക്കുന്നു (ടാസ്ക്, എക്സിറ്റ്, യൂസർ, ഒഴിവാക്കൽ) ഇവന്റിൽ പ്രയോഗിക്കുന്നു.
  • സിസ്റ്റം കോൾ - സിസ്റ്റം കോളിന്റെ പേര്.
  • ഫീൽഡ് - റൂൾ പരിഷ്uക്കരിക്കുന്നതിന് ആർക്കിടെക്ചർ, PID, GID മുതലായവ പോലുള്ള അധിക ഓപ്uഷനുകൾ വ്യക്തമാക്കുന്നു.

നിങ്ങൾക്ക് നിർവചിക്കാവുന്ന ചില നിയമങ്ങൾ ഇതാ.

-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

auditctl യൂട്ടിലിറ്റി ഉപയോഗിച്ച് ഓഡിറ്റ് നിയമങ്ങൾ എങ്ങനെ സജ്ജീകരിക്കാം

പകരമായി, ഓപ്uഷനുകൾ ഓഡിറ്റ് ചെയ്യാനുള്ള ഓപ്uഷനുകൾ പ്രവർത്തിപ്പിക്കുമ്പോൾ, ഇനിപ്പറയുന്ന ഉദാഹരണങ്ങളിലെ പോലെ auditctl ഉപയോഗിച്ച് അയയ്ക്കുക. ഈ കമാൻഡുകൾക്ക് കോൺഫിഗറേഷൻ ഫയലിലെ നിയമങ്ങളെ മറികടക്കാൻ കഴിയും.

നിലവിൽ ലോഡ് ചെയ്uതിരിക്കുന്ന എല്ലാ ഓഡിറ്റ് നിയമങ്ങളും ലിസ്റ്റുചെയ്യുന്നതിന്, -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 ഫയലിൽ രേഖപ്പെടുത്തുന്നു. ലോഗ് എൻട്രി ഫോർമാറ്റ് മനസിലാക്കാൻ, ഞങ്ങൾ ഒരു റൂൾ ലോഡ് ചെയ്യുകയും റൂളുമായി പൊരുത്തപ്പെടുന്ന ഒരു ഇവന്റിന് ശേഷം ജനറേറ്റ് ചെയ്ത ലോഗ് എൻട്രി പരിശോധിക്കുകയും ചെയ്യും.

ഞങ്ങൾക്ക് ഒരു രഹസ്യ ബാക്കപ്പ് ഡയറക്uടറി ഉണ്ടെന്ന് കരുതുക, ഈ ഡയറക്uടറി ആക്uസസ് ചെയ്യാനോ പരിഷ്uക്കരിക്കാനോ ഉള്ള ഏതൊരു ശ്രമവും ഈ ഓഡിറ്റ് റൂൾ ലോഗ് ചെയ്യും:

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

ഇപ്പോൾ, മറ്റൊരു സിസ്റ്റം അക്കൗണ്ട് ഉപയോഗിച്ച്, മുകളിലുള്ള ഡയറക്ടറിയിലേക്ക് പോയി ls കമാൻഡ് പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കുക:

$ cd /backups/secret_files/
$ ls

ലോഗ് എൻട്രി ഇതുപോലെ കാണപ്പെടും.

മുകളിൽ പറഞ്ഞ ഇവന്റ് മൂന്ന് തരം ഓഡിറ്റ് റെക്കോർഡുകൾ കൊണ്ടാണ് നിർമ്മിച്ചിരിക്കുന്നത്. ആദ്യത്തേത് type=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 ആണ്.

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

അവസാനത്തേത് ടൈപ്പ്=പാത്ത്:

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

ഓഡിറ്റ് സിസ്റ്റം റഫറൻസിൽ നിങ്ങൾക്ക് എല്ലാ ഇവന്റ് ഫീൽഡുകളുടെയും (msg, arch, ses മുതലായവ) പൂർണ്ണമായ ലിസ്റ്റും അവയുടെ അർത്ഥങ്ങളും കണ്ടെത്താനാകും.

ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം. അടുത്ത ലേഖനത്തിൽ, ഓഡിറ്റ് ലോഗ് ഫയലുകൾ അന്വേഷിക്കാൻ ausearch എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഞങ്ങൾ നോക്കും: ഓഡിറ്റ് ലോഗുകളിൽ നിന്ന് നിർദ്ദിഷ്ട വിവരങ്ങൾ എങ്ങനെ തിരയാമെന്ന് ഞങ്ങൾ വിശദീകരിക്കും. നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ, ചുവടെയുള്ള അഭിപ്രായ വിഭാഗം വഴി ഞങ്ങളെ ബന്ധപ്പെടുക.