ไฟล์หายไปบนเซิร์ฟเวอร์ linux


13

ฉันมีไฟล์เฉพาะ 4 ไฟล์ที่ดูเหมือนว่าจะหายไปจากโฮมไดเร็กตอรี่ของผู้ใช้ เท่าที่เราทราบไม่มี cronjobs หรืองานอัตโนมัติอื่น ๆ ที่จะลบออก ฉันได้ตั้งค่า auditd ให้กับพวกเขาแล้ว แต่บันทึกไม่ได้แสดงอะไรที่น่าสนใจ ฉันเห็นอรรถประโยชน์การสำรองข้อมูลของเราเข้าถึงพวกเขาทุกคืนจนถึงจุดที่พวกเขาไม่ได้อยู่ที่นั่นอีกต่อไป แต่ไม่มีอะไรอื่น มีสิ่งใดบ้างที่จะทำให้ไฟล์เหล่านั้นถูกลบซึ่งจะทำให้เกิด auditd?

ไฟล์ที่เป็นปัญหาคือ:

/home/username/.bashrc
/home/username/.bash_profile

รวมถึงไฟล์บางไฟล์ในไดเรกทอรี. ssh ของผู้ใช้ สำเนาของไฟล์เหล่านี้ที่ถูกวางไว้ในโฟลเดอร์ย่อยที่เรียกว่า "เฝ้า" จะถูกลบในเวลาเดียวกันเช่นกัน การเปลี่ยนการอนุญาตในสิทธิ์เป็น 000 และการมีสิทธิ์เป็นเจ้าของโดย root ไม่ได้ช่วย

ขณะนี้ฉันได้รับการตั้งค่าแบบไม่แจ้งเตือนเพื่อเข้าสู่ระบบสร้างลบย้ายไปที่โฟลเดอร์ย่อยดังนั้นหวังว่าจะมีบางอย่างเกิดขึ้น


1
โปรดเพิ่มชื่อและเส้นทางของพวกเขาในโพสต์ของคุณมันอาจช่วยได้
Shadok

2
นอกจากนี้การโพสต์บันทึกการตรวจสอบอาจเป็นประโยชน์
Janne Pikkarainen

3
นอกจากนี้คุณอาจลองสร้างไฟล์ที่เป็นเจ้าของในฐานะ root และ chmod 000 เพื่อดูว่าไฟล์เหล่านั้นยังถูกลบทิ้งหรือไม่
พหุนาม

5
นอกเหนือจาก chmod 0000 แล้วคุณสามารถลอง chattr + i เพื่อพยายามป้องกันไม่ให้รูทเอาออกได้เลย
mer

1
พึงระวังว่า chattr ช่วยในระบบไฟล์ต่อ แต่ chattr ควรช่วย :-) คุณยังสามารถใช้ SELINUX แทน chattr เพื่อหยุดการแก้ไขไฟล์เหล่านั้น แต่ IMHO การลบจะต้องมาจากกระบวนการหรือผู้ใช้
JMW

คำตอบ:


20

โซลูชันที่ 1 : systemtap
คุณสามารถใช้systemtapเพื่อแสดง PID ทั้งหมดที่พยายามใช้unlink ()บน inode of .bashrcและ.bash_profileไฟล์

ติดตั้งsystemtapและสัญลักษณ์ debug สำหรับเคอร์เนลของคุณ

สร้างไฟล์ที่มีชื่อunlink.stapพร้อมเนื้อหาดังต่อไปนี้:

probe syscall.unlink
{
    printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

จากนั้นรันด้วย sudo stap unlink.stap

โซลูชันที่ 2 : inotify
คุณยังสามารถใช้inotifyเพื่อดูเมื่อไฟล์ถูกลบ

โซลูชันที่ 3 : ftrace
โซลูชันอื่นคือใช้ftrace :

trace-cmd record -e \*unlink\*

รอไฟล์ที่จะลบกด CTRL + C เพื่อหยุดtrace-cmd record ...จากนั้นเรียกใช้:

trace-cmd report

โซลูชันที่ 4 : การ
ติดตั้งbpftrace bpftraceจากนั้นเรียกใช้:

bpftrace -e 'tracepoint:syscalls:sys_enter_unlink* { printf("%s %s\n", comm, str(args->pathname)); }'

5

นอกเหนือจากคำตอบของ micea คุณสามารถ chattr + i ไฟล์เป็น root และดูว่ามีอะไรบันทึกข้อผิดพลาดเมื่อพยายามลบ


4

คุณแน่ใจหรือไม่ว่าผู้ใช้เองไม่ได้ลบ (โดยไม่ตั้งใจ)?

ฉันมีผู้ใช้ clueless (Windows) ที่มีปัญหาเดียวกัน ปรากฎว่าพวกเขาลบไฟล์เหล่านั้นด้วยตนเองทุกครั้งที่พวกเขาเยี่ยมชมบ้านของพวกเขาด้วยไคลเอนต์ ftp พวกเขาสังเกตเห็นไฟล์. xxxxx (ไคลเอนต์ ftp ไม่ได้ซ่อนไว้) และลบ "ความยุ่งเหยิง"

มันไม่เคยเกิดขึ้นกับฉันพวกเขาทำมันเองจนกว่าจะมีหนึ่งในนั้นบ่นเกี่ยวกับไฟล์ที่ปรากฏขึ้นเองอีกครั้งที่เขาลบไปหลายวันก่อนหน้านี้


2
เชื่อฉันฉันจะรักมันง่าย
ชาด P

นี้เป็นเรื่องตลก :)
สแน็ป

3
มันตลกตอนนี้ .... ไม่มากนักเมื่อมันเกิดขึ้นและฉันไม่สามารถเข้าใจได้ว่าเกิดอะไรขึ้น @Chad P: โปรดแจ้งให้เราทราบสิ่งที่คุณค้นหา ฉันพบว่าคนนี้ค่อนข้างอยากรู้อยากเห็น
Tonny

3

เราใช้สคริปต์ทุบตี bash (~ / .bash_logout) เพื่อล้างไฟล์บางไฟล์เมื่อออกจากระบบ - คุณอาจตรวจสอบเพื่อดูว่าคุณมีการตั้งค่าดังกล่าวหรือไม่ด้วย glob แบบนิ้วอ้วน


2

ดูเหมือนผู้บุกรุกที่กำลังค้นหาชื่อไฟล์ / home / user -name -exec rm -f {} \; หลังจากเขาด้อม ๆ มอง ๆ :) เพียงแค่เดาเพราะคุณบอกว่าไฟล์สำรองถูกลบเช่นกัน


1

เพื่อป้องกันการสูญเสียไฟล์และเนื้อหาของไฟล์คุณสามารถตั้งค่าlibtrashผ่าน LD_PRELOAD การใช้ libtrash คุณสามารถทำได้หลายอย่าง แต่สิ่งที่น่าสนใจสำหรับคุณคือ

INTERCEPT_UNLINK
INTERCEPT_RENAME
INTERCEPT_FOPEN
INTERCEPT_OPEN

บทความดีๆเกี่ยวกับ libtrash สามารถอ่านได้ที่นี่

สิ่งอื่น ๆ ที่คุณพูดถึงคือไฟล์ที่คุณส่งเสียงดังไปถึงรูท เป็นเพราะ / home / ชื่อผู้ใช้เป็นเจ้าของโดยชื่อผู้ใช้; และถ้า dir ได้พูด mod 755; จากนั้นไฟล์หรือ dir ใด ๆ ใน dir นั้นไม่ว่าใครจะถูกลบโดยผู้ใช้ แม้ว่าจะเป็นไฟล์ root หรือ dir โดยพื้นฐานแล้วเนื่องจากการลบไฟล์ใน dir หมายถึงการเปลี่ยนเนื้อหา dir และผู้ใช้มี 7 (ใน 755) ของ dir นั้นเพื่อให้เขาสามารถทำสิ่งที่เขาต้องการ

มีวิธีในการบล็อกสิ่งนี้ตามที่คนอื่นแนะนำผ่านทาง chattr บนระบบไฟล์ ext เพื่อตั้งค่าไฟล์เป็นไม่เปลี่ยนรูป (+ i) จากนั้นจะต้องยกเลิกการตั้งค่าสถานะไม่เปลี่ยนรูปก่อนที่จะทำการเปลี่ยนแปลงใด ๆ กับไฟล์ / dir ซึ่งมีธง + i รูท / แชททีไม่น่าเชื่อถือสามารถใช้ได้โดยรูทเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.