ฉันพยายามค้นหาจำนวนครั้งที่มีการเปิดไฟล์ (ตั้งแต่เริ่มระบบปฏิบัติการ) ฉันกำลังคิดที่จะทำสิ่งนี้ผ่านทางสถิติ แต่ค่าสถานะส่วนใหญ่จะคืนค่าความแตกต่างระหว่างเวลาที่เปิดไว้เท่านั้น
ฉันพยายามค้นหาจำนวนครั้งที่มีการเปิดไฟล์ (ตั้งแต่เริ่มระบบปฏิบัติการ) ฉันกำลังคิดที่จะทำสิ่งนี้ผ่านทางสถิติ แต่ค่าสถานะส่วนใหญ่จะคืนค่าความแตกต่างระหว่างเวลาที่เปิดไว้เท่านั้น
คำตอบ:
คำตอบนี้อธิบายถึงสิ่งที่ต้องทำ แต่เฉพาะของวิธีขึ้นอยู่กับการกระจายการตั้งค่าและวัตถุประสงค์ของคุณและเครื่องมือที่คุณเลือกที่จะแยกวิเคราะห์ข้อมูล:
สิ่งที่คุณกำลังมองหาคือAuditd daemon ภายใน Linux จาก manpage auditd (8) :
auditdเป็นส่วนประกอบ userspace ไปยัง Linux Auditing System มีหน้าที่เขียนบันทึกการตรวจสอบลงดิสก์ กำลังดูบันทึกจะทำกับausearchหรือaureportสาธารณูปโภค การกำหนดค่ากฎการตรวจสอบเสร็จสิ้นด้วยยูทิลิตี้auditctl ระหว่างการเริ่มต้นกฎใน
/etc/audit/audit.rules
จะถูกอ่านโดยauditctlและโหลดลงในเคอร์เนล ในท้ายที่สุดแล้วยังมีโปรแกรม augenrules ที่อ่านกฎที่อยู่ใน/etc/audit/rules.d/
และรวบรวมมันเป็นaudit.rules
ไฟล์ Audit daemon เองมีตัวเลือกการกำหนดค่าบางอย่างที่ผู้ดูแลระบบอาจต้องการกำหนดเอง พบได้ในauditd.conf
ไฟล์
การตรวจสอบใช้ฟังก์ชั่นที่สร้างขึ้นในเคอร์เนลเพื่อสร้างบันทึกทุกครั้งที่มีการเรียกระบบตามที่คุณต้องการ เมื่อตั้งค่าคุณจะพบบันทึกใน/var/log/audit
หรือที่อื่นที่คล้ายกันต่อการกระจายของคุณ
ในการตรวจสอบการเข้าถึงไฟล์คุณจะต้องใช้สิ่งที่คล้ายกับ:
auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits
โดยที่-w
ระบุพา ธ ไปยังไฟล์-p
ระบุว่าระบบจะตรวจสอบr eads w rites, e x ecutions และการเปลี่ยนแปลง ttribute หรือการอนุญาต ในที่สุด-k
ตัวเลือกที่ช่วยให้คุณระบุคีย์พลสำหรับการใช้งานเมื่อค้นหากฎนี้กับausearch
โปรดทราบว่าแม้ว่าauditdจะปิดการเรียกใช้ระบบ แต่-p r
จะไม่ติดตามฟังก์ชั่นการอ่านแต่จะเปิดเพื่อไม่ให้บันทึกถูกน้ำท่วมทุกครั้งที่อ่าน แต่มีการทำรายการทุกครั้งที่มีการเปิดไฟล์เพื่ออ่าน
เมื่อมีการเปิดใช้งานการตรวจสอบและมีการบันทึกไว้ ausearch สามารถใช้ในการแยกวิเคราะห์บันทึกเหล่านี้สำหรับการเข้าถึงไฟล์ที่ระบุทั้งหมดและเครื่องมือข้อความหรือสถิติมาตรฐานสามารถใช้ในการสร้างความสูง สิ่งเหล่านี้อาจแตกต่างกันไปจากgrep
และwc -l
นับรายการบันทึกหรือการรวมกันของการเขียนสคริปต์และGNU-Rหรือgnuplotเพื่อสร้างกราฟและรายงาน
อีกทางเลือกหนึ่งคือการใช้SELinux ในขณะที่ SELinux เป็นเครื่องมือสำหรับการควบคุมการเข้าถึงที่ปกติจะบันทึกการปฏิเสธการเข้าถึงเท่านั้น แต่สามารถตั้งค่าเพื่อบันทึกการเข้าถึงทั้งหมดและให้ข้อมูลที่คล้ายกันกับ auditd
แก้ไข:หากต้องการบันทึกการเข้าถึงตั้งแต่ต้น : ตัวอย่างเช่นระหว่างการติดตั้งระบบปฏิบัติการในระหว่างการบู๊ตก่อนเริ่มการตรวจสอบ Auditd หรือก่อนการติดตั้ง auditd จำเป็นต้องใช้มาตรการมากขึ้น initrd.img
อาจต้องสร้างตัวติดตั้งแบบกำหนดเองหรือไฟล์บูตแบบกำหนดเองเพื่อโหลดเครื่องมือดีบั๊กหรือการติดตามระดับเคอร์เนลที่ต้องการ เครื่องมือการติดตามเหล่านี้อาจรวมถึงdtrace , perf , SystemTap , ktapหรือเครื่องมือระดับดีบักเกอร์ที่คล้ายกันเพื่อจับการเข้าถึงระหว่างการบูต การอ้างอิงที่ดีคือhttp://www.brendangregg.com/linuxperf.htmlและตัวอย่างของประเภทของการวิเคราะห์สำหรับการทำงานของระบบนี้มากกว่าการตรวจสอบเป็นbootchart
อย่างไรก็ตามการตั้งค่านี้อยู่นอกเหนือขอบเขตประสบการณ์ของฉัน - หวังว่าข้อมูลอ้างอิงจะมีประโยชน์
i_*time
เวลาการโต้ตอบต่างๆ: การเข้าถึงการเปลี่ยนแปลง inode การปรับเปลี่ยนข้อมูลและการลบ