ok....ich weiß net recht ob das hier richtig gepostet ist, aber irgendwie gehört es ja auch so n bisschen in die ecke "intrusion detection".
es geht um md5-checks....folgende scripts hab ich mir mal zusammengebastelt und wollte mal eure meinung dazu hören....äh lesen...
hier das "hauptscript" /etc/scripts/check_md5.sh:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#!/bin/sh
### /etc/scripts/check_md5.sh ###
# Einhaengen des Floppy-Laufwerks
mount /dev/fd0 /floppy
# Einlesen der momentanen MD5-Summen in /etc
find /etc -type f ! -name mtab ! -name blkid.tab ! -name blkid.tab.old | xargs md5sum > /var/tmp/md5check.tmp
# Vergleich der momentanen MD5-Summen mit den gespeicherten auf der Floppy
diff /var/tmp/md5check.tmp /floppy/etc.sigs > /dev/null
# diff-Status = 0 -> Keine Abweichungen zwischen Original-MD5-Summen und den momentanen
if [ $? -ne "0" ];
then
/etc/scripts/search_file.pl;
cat /var/tmp/mail.tmp | mailx -s "Inkonsistenz bei MD5-Check" root@localhost;
logger -t "md5-check" -p syslog.alert "Inkonsistenzen bei MD5-Check aufgetreten";
else
logger -t "md5-check" -p syslog.info "MD5-Check ok";
fi
# Entfernen der Temp-Files
rm -f /var/tmp/md5check.tmp /var/tmp/mail.tmp
# Aushaengen des Floppy-Laufwerks
umount /floppy
exit $?
### EOF ###
|
und hier das perl-script in das gesprungen wird, wenn "diff" unterschiede bemerkt:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/usr/bin/perl -w
### /etc/scripts/search_file.pl ###
# Einlesen der aktuellen MD5-Summen in ein Array
open(FH, "/var/tmp/md5check.tmp");
@testdatei=<FH>;
close(FH);
# Oeffnen der Datei mit den gespeicherten MD5-Summen
open(FH, "/floppy/etc.sigs");
while(<FH>) {
# Aufsplitten in MD5-Hash und Dateiname (Original)
($hash, $datei) = split /\s+/, $_;
# Fuer jeden Wert im Array @testdatei....
foreach $zeile(@testdatei) {
# Aufsplitten in MD5-Hash und Dateiname (momentan)
($testhash, $testdatei) = split /\s+/, $zeile;
# Wenn der Dateiname in beiden Listen uebereinstimmt...
if ($testdatei eq $datei) {
# ...pruefe, ob der Original-Hash vom momentanen Hash abweicht...
if ($hash ne $testhash) {
# falls dies so ist: Schreibe den Name der Datei in das "Ausgabe-Array"
push @ausgabe, $testdatei;
}
}
}
}
close(FH);
# Oeffnen der Datei, welche an die Mail angehaengt wird.
open(FH, ">/var/tmp/mail.tmp");
print FH "MD5-Summen fuer folgende Dateien stimmen nicht mit den gesicherten MD5-Summen ueberein:\n\n";
# Fuer jedes Element im "Ausgabe-Array"....
foreach $element(@ausgabe) {
# ...schreibe das Element in die geoeffnete Mail-Datei
print FH "$element\n";
}
close(FH);
### EOF ###
|
da ich nun noch net so ganz doll bin bzgl. der erkennung von - ich sag mal "logischen fehlern" - würd ich gerne wissen, ob ich das so machen kann. also funktionieren tut es ganz gut, es wird per cronjob alle 30 minuten gecheckt, ob die md5-summen noch stimmen, und wenn nicht, wird ne mail und ein logeintrag abgeschickt. ich stell mir nur selber die frage, ob ich die scripts nicht auch besser auf die schreibgeschützte floppy packen sollte.....
und vor allem: hätte es da nicht ne einfachere lösung gegeben?