セキュリティの脅威に対する別の対策として、MBRとブートチェックサムを計算した後、以前のスクリプトと比較する小さなスクリプトを作成しました。コンピュータの実行中は正常に動作しますが、コンピュータを再起動するとチェックサムが変わります。
質問- 変化の原因は何であり、これを防ぐ方法は何ですか?
詳細:
openSUSE 13.2、noatime for /boot
setでは、ブートパーティションはログインするとすぐにアンマウントされる別のパーティション(ルートファイルシステムのディレクトリではありません)で、これはチェックサムが計算される前の最初のステップです。
スクリプト:
#!/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
# 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
ブートローダまたはカーネルをアップグレードしない限り、読み取り専用でマウントしてください。
MBRは通常、ブートローダがアップグレードされない限り更新されません(しばしば更新されません)。 MBR変更の一般的な原因は、デュアルブートシステムがあり、最後のブートシステムを記録して次回デフォルトに設定するようにブートローダを設定した場合、または別のシステムで再起動するように指示されている場合です(例grub-set-default
:)。
これらの検査によって得られるセキュリティは最小限に抑えられます。カーネルを修正する有能な攻撃者は、カーネルがユーザーが期待していることを報告するように準備します/boot
。