PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cronjob für das Löschen unerwünschter Dateien



arturdent70
01.06.10, 16:08
Hallo,

ich betreue eine Schulnetz mit einem Linux-Server. Nachdem ich jetzt eine Woche mit einer Conficker-Clone-Variante auf den Windows-Clients gekämpft habe, muss ich ausführbare Dateien auf dem Server löschen.

find /../home/ -name "*.exe" -exec rm -r {}\; // funktioniert - aber :

Folgendes Problem: Mehrere Klassen verwenden ein xampplite in den Homeverzeichnissen, mit ca. 50 exe-Dateien, die ich nicht so ohne weiteres löschen kann. Wie kann ich die Liste - praktisch als Ausnahme - in das find-Statement basteln? Ich möchte das Kommando dann als Cronjob einmal täglich ablaufen lassen.

Vielen Dank für die Hilfe.

niXLike
01.06.10, 16:17
grep -v


-v, --invert-match
Invertiert das Suchmuster, so dass alle Zeilen ausgewählt werden,
die nicht auf MUSTER passen.

Aqualung
01.06.10, 16:20
In welcher Form hast Du die Ausnahmeliste?

arturdent70
01.06.10, 16:24
In welcher Form hast Du die Ausnahmeliste?

Als ganz normale Textdatei, also:
filezilla.exe
xampp_start.exe

Es geht darum, dass ich halt eine Liste pflegen möchte, von Dateien, die auch in den Homes verwendet werden dürfen. Andere sollen einmal täglich gelöscht werden. Z.B. gta2.exe etc.

Aqualung
01.06.10, 17:04
find /../home/ -name "*.exe" | while read f; do bf="`basename "$f"`"; grep -q "$bf" "<ausnahmedatei>" || echo "$f zu loeschen" ;done

Wenn der Code sauber über die Verz. läuft und sinnnvolle Ausgaben ergibt, dann echo raus und "scharf schalten" mit


rm -f "$f"

statt echo... .

Schalter "-r" beim löschen von Einzeldateien ist nicht sinnvoll, bzw. kann sogar gefährlich sein.

BTW: direktes Ausführen von "rm" in find ist auch nicht ungefährlich.

arturdent70
01.06.10, 21:08
Danke, ich werde es mal ausprobieren.

oziris
01.06.10, 21:43
Ich würde ein Script machen und die Ausnahmen direkt da rein tun. Etwa so:
#! /bin/bash
exec find ... \
\! -name ausname1.exe \
\! -name ausnahme2.exe \
-exec rm -f {} +

Iluminat23
01.06.10, 23:59
naja, zu meiner schulzeit wahren wir immer sehr findig wie unsere sachen nicht verschwinden sollten. eventuell statt nur nach den dateien suchen auch eine md5sum prüfung der exe dateien machen. dazu muss natürlich die md5sum vorhanden sein.

gruß iluminat23

HBtux
02.06.10, 14:47
hier eine Variante mit md5-Prüfung

Du musst dafür von jeder erlaubten Exe-Datei eine md5-Summe bilden und diese mit dem Dateinamen wie folgt in der md5-Datei speichern.
In der md5-Datei bitte alle Dateinamen klein schreiben....

md5-Datei: md5-pruefen.md5


a58e07fcc0fbac560fde97ddb1e3b055 filezilla.exe
d330d64484e1d99d665afdc5f2efdecb filezilla.exe
99032145d99a026b5d9cc6fd3cd67803 xampp_start.exe

In diesem Beispiel ist die "filezilla.exe" sogar mit zwei verschiedenen gültigen md5-Summen eingetragen.


Script: md5-pruefen.sh


#!/bin/bash
#Script ist create by HBtux - linuxforen.de"

SUCHPFAD="/home"
MD5FILE="md5-pruefen.md5"

find $SUCHPFAD -type f -name "*.[eE][xX][eE]" | while read AKT_FILE; do

EXE_FILENAME="`basename $AKT_FILE | tr 'A-Z' 'a-z'`"
MD5SUM="`md5sum ${AKT_FILE} | cut -d' ' -f1`"

grep "^$MD5SUM $EXE_FILENAME$" $MD5FILE >/dev/null 2>&1
if [ "$?" = "0" ]; then
echo "MD5SUM OK - $AKT_FILE ($EXE_FILENAME)"
else
EXE_VERGLEICH="`grep "$MD5SUM" $MD5FILE | cut -d" " -f3`"
if [ "$EXE_VERGLEICH" != "" ]; then
echo "MD5SUM $AKT_FILE ($EXE_FILENAME) ist identisch mit $EXE_VERGLEICH - Datei bitte manuell prüfen!"
else
echo "MD5SUM unbekannt - $AKT_FILE ($EXE_FILENAME)"
fi
fi

done


Bitte zuerst ein Backup von Deinen Daten machen.... :)
Dann das Script ausführlich testen...

Das Script erkennt auch die Dateien, wenn die Exe-Datei in Großbuchstaben geschrieben ist... (filezilla.exe / filezilla.EXE / Filezilla.Exe / usw...)

Wenn das Script OK ist, kannst Du bei den einzelnen "echo"-Befehlen die jeweilige Aktion wie z.B. "rm" eintragen....

HBtux
04.06.10, 23:38
Ich hoffe Du hast Dir mein Script wenigstens mal angeschaut.
Nicht das die ganze Mühe umsonst war..... ;)

MannOhMann
05.06.10, 08:16
Verstehe nicht ganz den Sinn, dieser md5 Prüfung. Wenn das Programm geändert wird und sich die Summe ändert wird es dann gelöscht.

?

Ansonsten nettes Skript :)

tomes
05.06.10, 10:02
Bei einem täglichen cron ist das Kind doch schon lange lange ins Wasser gefallen.
Man muss das ganze bei der Wurzel bekämpfen. Entweder surven und damit dowloads nur über Proxy, der dann schon auf Maleware scannt. Aber zumindest einen Echtzeitvirenscanner auf den Fileserver.
->
http://www.linux-magazin.de/Heft-Abo/Ausgaben/2006/10/Samba-ABC-im-Freien

mfg
tomes
P.S.: der link ist nur als Beispiel gedacht, hat sich in den letzten Jahren bestimmt einiges geändert.

HBtux
06.06.10, 01:01
Verstehe nicht ganz den Sinn, dieser md5 Prüfung. Wenn das Programm geändert wird und sich die Summe ändert wird es dann gelöscht.
?
Ansonsten nettes Skript :)
Andere Frage....
Was machst Du, wenn jemand im Homeverzeichnis eine X-Beliebige EXE-Datei z.B. "HackerCrackerVirusWurm.EXE" z.B. einfach nach "filezilla.exe" umbenennt.
Wenn Du dann nur nach dem Dateinamen suchst, wird diese EXE-Datei nicht erkannt bzw. gelöscht....
Anhand der MD5-Summe kannst Du aber sagen, dass es sich um keine bekannte Version von filezilla.exe handelt - und die EXE-Datei dann z.B. löscht oder ggf. per Mail eine Nachricht darüber absetz...

Wenn natürlich z.B. Filezilla upgedatet wird, musst Du natürlich rechtzeitig die MD5-Liste aktualisieren, damit die EXE-Datei nicht als unbekannt gelöscht wird.
Das Script lässt es aber zu, dass es für einen Namen einer EXE-Datei mehrere gültige MD5-Summen gibt.


Diese Lösung sollte doch am ehsten Deiner ursprünglichen Aufgabenstellung entsprechen - oder?

MannOhMann
06.06.10, 07:48
und wenn die Files schon HackerCrackerVirusWurm.EXE SIND und nur anders heißen, hast mit der md5 Prüfung ne gute Sicherheit drumherum gezogen ^^