พาร์ทิชันสำหรับบูตของฉันมีการเปลี่ยนแปลงอย่างไรและจะป้องกันได้อย่างไร


0

ในฐานะที่เป็นมาตรการตอบโต้ต่อภัยคุกคามความปลอดภัยฉันได้เขียนสคริปต์เล็ก ๆ น้อย ๆ ที่คำนวณ MBR และการตรวจสอบการบูตแล้วเปรียบเทียบกับสคริปต์เก่า ตราบใดที่คอมพิวเตอร์ยังทำงานอยู่นี่ก็โอเค แต่เมื่อฉันรีสตาร์ทมันเช็คซัมจะเปลี่ยนไป

คำถาม - อะไรคือสาเหตุของการเปลี่ยนแปลงและวิธีการป้องกัน?

รายละเอียด:

openSUSE 13.2, noatime สำหรับ/bootset, boot parition เป็นพาร์ติชั่นแยกต่างหาก (ไม่ใช่แค่ไดเร็กตอรี่ใน root filesystem), พาร์ติชั่นจะถูก unmount ทันทีหลังจากที่ฉันล็อกอินและมันเป็นขั้นตอนแรกก่อนการคำนวณ checsum

สคริปต์:

#!/bin/sh

sudo umount /boot
# MBR
sudo dd if=/dev/sda bs=512 status=noxfer count=1 | sha1sum | diff bootcheck_mbr.sha1 -
MBR_RES=$?
# boot partition
sudo dd if=/dev/sda1 bs=1M status=noxfer | sha1sum | diff bootcheck_boot.sha1 -
BOOT_RES=$?

if [[ $MBR_RES -ne 0 ]] || [[ $BOOT_RES -ne 0 ]]
then
  kdialog --sorry "WARNING:\nBoot disk is changed." --title "BOOT CHECK" --geometry 0x0++300+400
else
  kdialog --title "Boot check" --passivepopup "The disk is unchanged." 25 --geometry 0x0++300+400
fi

1
(บาง?) ระบบไฟล์จัดเก็บจำนวนการเมานต์และเวลาเมานต์ล่าสุดใน superblock (s) ซึ่งหนึ่งในนั้นมักจะใกล้เคียงกับการเริ่มพาร์ติชั่น
Mat

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

คำตอบ:


1
# tune2fs -l $(df -P /boot | awk 'NR==2 {print $1}') | grep Last
Last mounted on:          /boot
Last mount time:          Mon Mar 30 10:40:08 2015
Last write time:          Mon Mar 30 10:40:08 2015
Last checked:             Mon Mar 30 10:40:01 2015

ทุกครั้งที่คุณเมานต์พาร์ติชันอ่าน - เขียนเวลาการเมานต์ล่าสุดจะถูกอัพเดต (อย่างน้อยสำหรับระบบไฟล์ ext2 / ext3 / ext4) หากคุณไม่ต้องการให้เกิดขึ้นให้เมานต์แบบ/bootอ่านอย่างเดียวยกเว้นเมื่ออัปเกรด bootloader หรือเคอร์เนลของคุณ

MBR มักจะไม่ได้รับการอัปเดตยกเว้นในการอัปเกรด bootloader (และบ่อยครั้งที่ยังไม่ถึง) เหตุผลที่ใช้กันทั่วไปสำหรับการเปลี่ยนแปลง MBR คือถ้าคุณมีระบบดูอัลบูตและคุณได้กำหนดค่า bootloader ของคุณให้บันทึกระบบบูตล่าสุดเพื่อให้เป็นค่าเริ่มต้นในครั้งถัดไปหรือคุณได้รับคำสั่งให้รีบูตเครื่อง ระบบที่แตกต่าง (เช่นกับgrub-set-default)

จำนวนความปลอดภัยที่คุณได้รับจากการตรวจสอบเหล่านี้มีน้อย ผู้โจมตีที่มีความสามารถซึ่งปรับเปลี่ยนเคอร์เนลของคุณจะจัดเรียงเพื่อให้เคอร์เนลรายงานเนื้อหาที่คุณคาดหวัง/bootคุณจะสามารถบอกได้โดยดูจากระบบจากภายนอก


ขอขอบคุณ. ฉันรู้ว่าแฮ็กเกอร์ที่มีความสามารถสามารถทำอะไรได้หลายอย่างอย่างไรก็ตามฉันไม่เห็นอันตรายใด ๆ ในการทำให้ชีวิตนั้นยากขึ้นสำหรับคน ๆ นั้น สำหรับการปรับเปลี่ยนเคอร์เนล - คุณมีการสกัดกั้นการเรียกใช้ระบบไฟล์เพื่ออ่านพื้นที่เฉพาะและส่งคืนข้อมูลเดิมเหมือนเดิมหรือไม่? เป็นไปไม่ได้ แต่หากิน - คุณจะต้องดัมพ์พาร์ติชันสำหรับบูตทั้งหมดบีบอัดเก็บไว้ในบูทจากนั้นใช้มันกับคำขอการอ่าน proxied แต่ขอบคุณสำหรับคำใบ้เกี่ยวกับระบบภายนอก
greenoldman

เพิ่งรีบูทระบบด้วยro- พาร์ติชั่นจะเปลี่ยนอีกครั้ง
greenoldman

@greenoldman คุณแน่ใจหรือไม่ว่าจะเปรียบเทียบกับค่าอ้างอิงจากหลังจากเลิกเมานท์พาร์ติชันหรือไม่ นอกจากนี้ยังเป็นที่อาจไม่ปลอดภัยที่นี่dd ฉันคิดว่าบน Linux ที่ไม่ใช่โบราณมันก็โอเค แต่ลองcatแทน
Gilles

ฉันแน่ใจว่าพาร์ติชันสำหรับบู๊ตถูกถอดออก (ดูที่สคริปต์) :-) เกี่ยวกับddคิดว่าจริงๆแล้วมันปลอดภัยกว่าที่จะใช้เพราะฉันไม่ได้ระบุจำนวนการบู๊ตอันดับที่สองคือ Linux ใหม่ที่ค่อนข้างสามคุณได้รับข้อผิดพลาดโดยใช้ cat ในกรณีของ "data over-read" ยังไงก็ตามฉันก็ตกหลุมbsตรวจสอบผิด แต่ปัญหาอยู่ (IMHO) ในสถิติการติดตั้งตามที่คุณชี้ให้เห็น แม้จะมีการติดตั้งแบบอ่านอย่างเดียว แต่ก็ยังเปลี่ยนข้อมูลเกี่ยวกับการเมาท์
greenoldman

@greenoldman ฉันถูกขอให้ตรวจสอบว่ามีการใช้ค่าอ้างอิงหลังจากเลิกเมานท์แล้วหรือยัง ฉันเพิ่งทำการทดสอบฉันสามารถยืนยันได้ว่าmount -r /boot; umount /bootจะไม่แก้ไขไบต์เดียวของพาร์ติชัน ext4 ซึ่งไม่ได้ประกอบเข้าไป
Gilles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.