Megvizsgálja a rendszeren található fájlok integritását a gyári telepítő lemezen található .deb csomagokban lévő md5 hash alapján.
Ezt így tehetjük meg:
1) Live CD-ről boot-oljunk
2) fel kell csatolnunk a Debian CD-t vagy DVD-t egy mappába
3) csatoljunk fel a vizsgálandó merevmelez partíciót is egy mappába
4) futtassuk a script-et megadva neki a cd és a partíció mappáját
5) ha végzett, akkor kiírja azoknak a fájloknak a neveit, amelyeknek nem egyezett a hash kódja egyetlen CD-n található debian-os csomagban sem
Egyébként a művelet nem nagyon időigényes, mivel a debian-os csomag archívumból mindösszesen a picike md5sums fájlt kell kivenni, majd pedig egy md5sum ellenőrzés egy ciklusban, kb. ennyi.
Annyit megjegyeznék, hogy az ISO telepítő készletek nem olyan ütemben frissűlnek, mint ahogy a biztonsági frissítések jönnek a rendszerhez, ezért amit kiír a script eredményként (hogy ezeknek nem stimmel az md5 ellenőrző összege), ezekt nézzük meg a dpkg és apt log-ban, hogy nem frissűltek-e pl. az utóbbi 1 hétben.
Ha más nem, akkor véleményem szerint elég letölteni az 1-es CD-t, mivel azon rajta van az összes core és fontos rész + kernel stb. Ha ezzel jól lefutott a rendszer ellenőrzése, akkor jó.
megj.: ha pongyolán vagy hülyén fogalmaztam valahol vagy hibát találtok a kódban, megköszönöm a javítást - folyamatosan teszteltem, elvileg jó eredményeket ad -kézzel egyenként ellenőriztem - egyébként egy átlagos rendszeren először futtatva pár perc alatt lefut
---------------------------------------------------------
#!/bin/sh
# THIS SCRIPT CHECKS SYSTEM INTEGRITY POSTERIORLY BASED ON OFFICIAL DEBIAN CD OR DVD
# (finds .deb files recursively in directory and
# checks md5sums of package files against the files on the system)
# ----------------------------------------------------------------------------------------------------------------
# first parameter must be directory name or file name
# second parameter must be the mounted root directory of the system disk
if [ "$#" == "0" ]
then
echo
echo USAGE: $0 [deb files dir] [system root dir]
echo
echo EXAMPLE:
echo mount /dev/cdrom /mnt/cdrom
echo mount /dev/sda1 /mnt/custom
echo $0 /mnt/cdrom /mnt/custom
echo
exit
fi
if [ "$#" != "2" ]
then
echo $0: two directory names must be given
exit
fi
# working directory
WORKDIR="$1"
# base directory to check binaries in
BASEDIR="$2"
# temporary directory
TEMPDIR="/tmp"
# temporary log file
TEMPLOG=`mktemp -t log1.XXXXXX`
TEMPLOG_OK=`mktemp -t log2.XXXXXX`
TEMPLOG_FAILED=`mktemp -t log3.XXXXXX`
cd "$TEMPDIR"
# find .deb files in work directory recursively
find "$WORKDIR" -type f -name "*.deb" | while read FILE
do
echo "$FILE"
ar x "$FILE" control.tar.gz 2>/dev/null
tar xf control.tar.gz ./md5sums 2>/dev/null
if [ -f md5sums ]
then
cd "$BASEDIR"
md5sum -c "$TEMPDIR/md5sums" 2>/dev/null 1>>"$TEMPLOG"
fi
cd "$TEMPDIR"
rm -f control.tar.gz
rm -f md5sums
done
# create a log file from OK files, and another from the FAILED ones
sort "$TEMPLOG" | grep "OK$" | grep -o ".*:" | grep -o ".*[^:]" > "$TEMPLOG_OK"
sort "$TEMPLOG" | grep "FAILED$" | grep -o ".*:" | grep -o ".*[^:]" > "$TEMPLOG_FAILED"
# print file names of the failed checksums
# compare FAILED file names to OK ones, if any matches, then file should be marked OK
# because several debian package can contain binary files for the same ones
COUNT=`cat "$TEMPLOG_FAILED" | wc -l`
LINE=1
if [ "$COUNT" -gt "0" ]
then
echo
echo "FAILED FILES:"
while [ "$LINE" -le "$COUNT" ]
do
NAME=`head -n "$LINE" "$TEMPLOG_FAILED" | tail -n 1`
if ! grep -q -x "$NAME" "$TEMPLOG_OK"
then
echo "$NAME"
fi
LINE=$(($LINE+1))
done
else
echo "ALL FILES ARE OK."
fi
# delete log files
rm -f "$TEMPLOG"
rm -f "$TEMPLOG_OK"
rm -f "$TEMPLOG_FAILED"
- log69 blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Az a gond ezzel a módszerrel, hogy nem minden csomagnak van md5sums file-ja, nem minden file-t ellenőrzöl ezzel a módszerrel (config scriptek, initscriptek), sőt lehetnek a rendszeren a dpkg által nem nyilvántartott file-ok is. A semminél mindenesetre több ez is, de nem pótol egy aide/tripwire jellegű megoldást.
- A hozzászóláshoz be kell jelentkezni
Egyetértek, de olyan rendszeren is szükségem van ellenőrzésre, amin nem volt telepítve eredetileg hasonló. És a core rész binárisok legalább megfelelően ellenőrizhetőek imho.
Szerk.: illetve a tripwire-el nem biztos hogy felfedezhető lenne egy kernel rootkit.
Ha meg talál egy korrupt fájlt, akkor lehetőség van a live rendszerről be-chroot-olni és felültelepíteni dpkg-vel. Illetve az ellenőrzés után chroot-ból még lehet futtatni anti-rootkit-eket.
- A hozzászóláshoz be kell jelentkezni