PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiattibut-Cecker?



nobody0
22.12.02, 13:08
Hat mal jemand eine Kommandozeile parat mit der Dateien gemeldet werden, bei denen der Eigentümer weniger Rechte hat als andere, Verzeichnisse die mehr als 1000 Einträge haben, und Dateien von root mit gestztem SUID-Bit, die in user-Verzeichnissen sind? :confused:

dauni
22.12.02, 13:31
Hmm, "ls -l | grep Suchbegriff", z.B. "ls -l | grep drwxr" - mußt du dir halt noch anpassen.

Das wär mal die simple Lösung; vielleicht hat ja jemand etwas komfortableres?

tomes
22.12.02, 13:35
http://www.linuxinfoserver.de/forums/showthread.php?s=&threadid=28872&highlight=SUID+AND+find
:D

T;o)Mes

nobody0
22.12.02, 16:27
Aha, mit

find / -user root -perm +7000 -print

habe ich schon ein Drittel, aber was ist mit den anderen beiden, also Verzeichnisse mit über 1000 Dateien (ich habe eines mit über 45.000) und Dateien bei denen der User weniger Rechte als andere hat? :confused:
Weil ich per DSL-Flat und DNS2GO fast immer ohline bin reicht mir nämlich Tripwire nicht aus, aber ich will auch nicht allzuviel Zeit für Sicherheits-Checks aufwenden.

RapidMax
23.12.02, 02:03
suid/sgid-bit:


find / -type f \( -perm -04000 -o -perm -02000 \) -ls > suid_sgid-files
find / -type f \( -perm -2 -o -perm -20 \) -ls > ww-files
find / -type d \( -perm -2 -o -perm -20 \) -ls > ww-dirs
find / \( -name "..." -o -name "..*" -o -name ".rhost" \) -ls > suspect-files

MAXCOUNT=1000
find . -type d > /tmp/files-03645
for e in `cat /tmp/files-03645`; do
if [ $((`ls $e | wc -l`)) -ge $(($MAXCOUNT)) ]; then
ls -ld $e 2> /dev/null
fi
done¨
rm /tmp/files-03645


Das mit dem Eigentümer muss ich mir erst noch überlegen. Wenn du sie sgid/suid auf root beschränken willst, verwende "-uid 0 als weitere Option für find. Ich würde aber alle auflisten.

Gruss, Andy

nobody0
23.12.02, 07:53
Aha, danke, aber kannst Du dazu nicht noch ein paar Worte schreiben wofür die oberen Sachen sind? :confused:
Ich meine es muss geprüft werden ober ein r-, w- oder x-Bit beim user nicht gesetzt ist das aber, aber bei group u. others gesetzt ist und das sieht mir nicht danacht aus.

RapidMax
23.12.02, 22:48
Deine Forderung nach dem Suchen von Dateien, bei denen der user weniger Rechte hat als die Gruppe/alle habe ich noch nicht erfüllt. Es ist zwar möglich mit find das zu tun, allerdings würde das ein Mehrzeiler geben, da du alle möglichen Kombinationen die du suchen willst explizit angeben musst: Haupsächlich Fleissarbeit.

Zu der Funktion meines Posts oben:
find kann nach mehreren Attributen (Grösse, Name, Rechte, Datum, usw.) suchen. Normalerweise verknüpft es die einzelnen Suchelemente mit logisch UND. Mit der Schreibweise: \( a -o b \) kannst du die Bedinung a ODER b verwenden. Der Parameter -perm sucht entweder genau nach einem Rechtemuster (0755), nach mindestens vorhandenen Rechten (-0066) oder nach einem der angegebenen Rechten (+0011). Weitere Info: man find

Die erste Zeile sucht nach Files mit gesetztem suid oder sgid-Bit (potentielles Risiko).
Die zweite Zeile sucht nach Files, in die jeder schreiben kann (ebenfalls ein potentielles Risiko).
Die dritte Zeile such entsprechend nach Verzeichnissen mit Schreibrechten für alle.
Die vierte Zeile sucht nach einigen Speziellen Files, wie sie mögliche Angreifer anlegen um ihre Daten zu verstecken.

Das Script weiter unten schlussendlich sucht nach Verzeichnissen mit mehr als MAXCOUNT Einträgen.

Gruss, Andy

nobody0
30.12.02, 02:01
Danke :)
Dann werde ich mal eine Liste der betreffenden Bitmasken erstellen und ein Skript damit schreiben.

keiner_1
30.12.02, 07:43
MAXCOUNT=1000
find . -type d > /tmp/files-03645
for e in `cat /tmp/files-03645`; do
if [ $((`ls $e | wc -l`)) -ge $(($MAXCOUNT)) ]; then
ls -ld $e 2> /dev/null
fi
done¨
rm /tmp/files-03645


hi,

was bitte soll das bringen? so wie ich das verstehe suchst du nach Verzeichnissen die mehr als 1000 Files haben?

cu
adme

nobody0
30.12.02, 08:01
Original geschrieben von adme
hi,

was bitte soll das bringen? so wie ich das verstehe suchst du nach Verzeichnissen die mehr als 1000 Files haben?

cu
adme

Der Fachman Tanenbaum (Buch Moderne Betriebssysteme) meint, dass die verdächtig sind.
Vermutlich ist das bei root-Kits so. Jedenfalls sollte es selten vorkommen.

RapidMax
30.12.02, 13:31
Ich kapier den Sinn auch nicht... 1000 Files gibt es schnell einmal auf einem grösseren System. Ok, es könnte ja sein, dass jemand illegales auf den Server schaufelt, aber ob er dass alles in ein Verzeichnis schaufelt?

Gruss, Andy

nobody0
30.12.02, 23:56
Wenn es Dich interessiert kannst Du den Autor ja mal anmailen.
Jedenfalls sollte es in einem üblichen Linux-Rechner nur wenige Verzeichnisse mit sehr vielen Dateien geben und die melden zu lassen ist ja kein großer Aufwand, auch weil sich das nur selten ändern sollte u. leicht überprüfbar ist (z. B. meine 50.000 Wertpapier-Kursdateien in einem User-Verzeichnis).

RapidMax
31.12.02, 00:19
ACK

Gruss, Andy

nobody0
05.01.03, 22:45
Ähm, nun habe ich das Problem, dass Dateien/Verzeichnisse mit Leerzeichen im Namen die Suche mit MAXCOUNT verhindern.
Wie werden auch Leerzeichen bei der Suche richtig berücksichtigt? :confused:

keiner_1
05.01.03, 22:53
einfach doublequoten (" ")

cu
adme

nobody0
06.01.03, 14:24
Ja, aber wie mache ich das beim pipen in die temporäre Datei?