सिद्धांत
लेखा परीक्षा के लिए, कर्नेल को AUDIT और AUDITSYSCALL विकल्पों के साथ संकलित किया जाना चाहिए
$ grep AUDIT /boot/config-`uname -r`
# CONFIG_AUDIT_ARCH is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_TREE=y
CONFIG_AUDIT_GENERIC=y
AUDIT लिनक्स कर्नेल में समग्र ऑडिटिंग सबसिस्टम के लिए जिम्मेदार है, जिसे SELinux भी उपयोग करता है। AUDITSYSCALL सिस्टम कॉल ऑडिट फ्रेमवर्क के लिए जिम्मेदार है, जिसका उपयोग SELinux द्वारा भी किया जाता है।
लिनक्स कर्नेल में ऑडिट सिस्टम की मुख्य विशेषताएं:
- न्यूनतम ओवरहेड, सक्रिय और अक्षम दोनों ऑडिटिंग के साथ
- न्यूनतम लागत सुनिश्चित करने के लिए कर्नेल स्तर पर फ़िल्टरिंग
- कस्टम एप्लिकेशन में नेटलिंक का उपयोग करना
स्थापना
Debian / Ubuntu के लिए ऑडिट स्थापित करना काफी सरल है:
$sudo apt-get install auditd
CentOS के लिए:
#yum install audit
प्रोजेक्ट मुखपृष्ठ: people.redhat.com/sgrubb/audit
समायोजन
कॉन्फ़िगरेशन फ़ाइल ऑडिट /etc/audit/auditd.conf। प्रत्येक पंक्ति में एक से अधिक निर्देशों को परिभाषित नहीं किया जा सकता है। निर्देश के नाम और मूल्य को एक समान चिह्न द्वारा अलग किया जाता है। अधिकांश निर्देश लॉगिंग सेट करने के लिए ज़िम्मेदार होते हैं और उनमें बदलाव की आवश्यकता नहीं होती है। एक विस्तृत समीक्षा के लिए, आप आदमी ऑडिट पढ़ सकते हैं ।conf।
ऑडिट नियम
ऑडिट नियम फ़ाइल /etc/audit/audit.rules में सम्मिलित हैं।
सभी नियमों को हटाने के लिए लेखा परीक्षा-नियमों की सूची और लेखा परीक्षा-डी देखें
फ़ाइल एक्सेस ऑडिट
फाइल एक्सेस ऑडिट नियमों के लिए मुख्य तर्क:
- -p [r | w | x | a] - पहुंच की प्रकृति द्वारा फ़िल्टर
- -w पथ - निगरानी फ़ाइलों के लिए पथ
/ Sys निर्देशिका के लिए रनटाइम के लिए नियम जोड़ें
sudo auditctl -w /sys/ -p ra
स्काइप चलाएं और परिणाम देखें:
sudo aureport -f
/sbin/audispd permissions should be 0750
File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 16.01.2011 22:42:04 /sys/class/video4linux/video0/dev 5 yes /usr/bin/skype -1 23
2. 16.01.2011 22:42:03 /sys/devices/system/cpu 5 yes /usr/bin/skype -1 22
3. 16.01.2011 22:42:04 /sys/class/video4linux/video0/device/modalias 5 yes /usr/bin/skype -1 24
4. 16.01.2011 22:42:04 /sys/class/dmi/id/sys_vendor 5 yes /usr/bin/skype -1 25
5. 16.01.2011 22:42:04 /sys/class/dmi/id/product_name 5 yes /usr/bin/skype -1 26
6. 16.01.2011 22:42:04 /sys/class/dmi/id/product_version 5 yes /usr/bin/skype -1 27
7. 16.01.2011 22:42:04 /sys/class/dmi/id/board_vendor 5 yes /usr/bin/skype -1 28
8. 16.01.2011 22:42:04 /sys/class/dmi/id/board_name 5 yes /usr/bin/skype -1 29
9. 16.01.2011 22:42:04 /sys/class/dmi/id/board_version 5 yes /usr/bin/skype -1 30
ऑडिट सिस्टम कॉल करता है
मुख्य विशेषताएं:
- -ए सूची, एक्शन और ए-सूची, एक्शन सूची सूची के अंत (-ए शुरू से) तक एक्शन नियम जोड़ता है। उपलब्ध सूचियाँ मैन ऑडिटक्ल में पाई जा सकती हैं। क्रियाएँ कभी भी एक घटना उत्पन्न नहीं करती हैं, लेकिन हमेशा एक घटना उत्पन्न करती हैं।
- -S [Syscall नाम या संख्या | सभी] - देखी गई कॉल
- -एफ [एन = वी | n! = v | एन <वी | एन> वी | n <= v | n> = वी | एन एंड वी | n & = v] विभिन्न फ़िल्टर
ऑडिटैक्ट-ए निकास, हमेशा -S ओपन -F सफलता = 0 सभी ओपन के ऑडिट को सक्रिय करता है () 0 से अधिक रिटर्न कोड के साथ कॉल करता है और सिस्टम कॉल आउट होने पर एक ईवेंट जनरेट करता है।
#auditctl -a exit,always -S open -F success=0
# touch /tmp/foo
# tail -1 /var/log/audit/audit.log
type=SYSCALL msg=audit(1295200915.069:14977): arch=c000003e syscall=2 success=no exit=-2 a0=7ff2f0ad4f60 a1=0 a2=7ff2f0d05010 a3=7fff56687650 items=1 ppid=1915 pid=16551 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="tail" exe="/usr/bin/tail" key=(null)
आप शामिल / linux / unistd.h से नंबर से सिस्टम कॉल का नाम पता कर सकते हैं।