Mit diesem Artikel möchte ich euch einen kurzen Überblick über die Tools und Programme geben, mit denen man inter Linux arbeitet, sich auf der Shell bewegt und das ein oder andere analysieren kann.
Linuxkommandos
ls # Mit "ls" kann man sich den Inhalt eines Verzeichnisses anzeigen lassen. # Wichtige Parameter für dieses Kommando: # -l listet den Inhalt untereinander auf # -a zeigt versteckte Dateien an # -tr sortiert die Files nach Schreibzugriffen Aktuellste Datei steht ganz unten # Diese Parameter lassen sich auch zusammen angeben. cd # Zum Wechseln des aktuellen Verzeichnisses du # Zeigt die "Disk Usage" eines Verzeichnisses an. df -h # Zeigt die Festplattenbelegung an. df -ih # Zeigt die belegten Inodes an. ps -auxw # Zeigt alle laufenden Prozesse an. # Um nach Prozessen zu suchen kann an den Befehl ein | grep "Suchbegriff" # angefügt werden. top # Top ist der Prozessmonitor (Ähnlich dem Taskmanager) # Dieser kann durch drücken von "q" verlassen werden. lsof # listet alle offenen Dateihandles # Wird am besten eingegrenzt durch ein | grep "Suchbegriff" grep # Durchsucht Dateien # grep "PATTERN" "FILE" find # Sucht nach einer Datei oder einem Verzeichnis # find "ORT" -name 'DATEINAME' -ls netstat # Zeigt, wie in Windows, alle TCP/UDP Verbindungen an # Sinnvolle Parameter -tulpen less # Öffnet eine Datei zum Lesen netcat # äquivalenz zu Telnet # netcat -vz "HOSTADRESSE" "PORT" # Gibt ein "open/connection refused/connection timed out" zurück free # zeigt die Auslastung des Arbeitspeichers und Swapbereiches an. # (SWAP ist die Auslagerungsdatei von Linux)
Analyse
Im folgenden Teil werden ein paar Möglichkeiten der Analyse auf einem Linuxsystem beschrieben.
Eventlogs
Unter Linux gibt es kein Tool wie den Event Viewer unter Windows. Die Informationen/Meldungen werden, je nach Distribution, in unterschiedlichen Logfiles abgelegt. In der Regel befinden sich diese Logs im Verzeichnis /var/log/
. Der Zweck eines Logfiles wird meist durch den Namen deutlich. Die interessanteste Logfile ist in der Regel die /var/log/messages
. In dieser stehen die wichtigsten System- und Kernel-Meldungen, sowie Nachrichten von vereinzelten Daemons (Diensten), sofern diese Meldungen nicht in separates Logfiles ausgelagert sind. Die Systemmeldungen können allerdings durchaus auch in syslog
oder im kern.log
landen. Das kann von Distribution zu Distribution unterschiedlich sein.
Prozesse
Die Analyse der Prozesse unter Linux wird über Befehle wie ps
oder pstree
durchgeführt. Hier werden sämtliche laufenden Dienste angezeigt. Je nach angegebenen Parameter wird die Ausgabe detaillierter. Über ps auxw | grep oracle
werden Nur Prozesse ausgegeben, welche den Suchbegriff oracle enthalten. Hier kann in erster Linie geprüft werden, ob ein Dienst läuft. Oft wird über die übergebenen Parameter am Dienst deutlich, welche Konfigurationsdateien oder Verzeichnisse genutzt werden. Dies ist nützlich, da viele Applikationen/Dienste/Prozesse die Logdateien auch in ihrem Konfigurationspfad ablegen können. Über lsof
lässt sich anzeigen, welcher Benutzer/Prozess welche Dateien im Zugriff hat.
Arbeitsspeicher
Wie unter Windows gibt es natürlich unter Linux ebenfalls eine Auslagerungsdatei (swap). Über top
oder free
lässt sich überprüfen, ob ein System auf den SWAP-Bereich zugreifen muss. Um Ressourcenfresser zu finden greift man auf top
oder ps
zurück. Hier wird die Arbeitspeichernutzung eines Prozesses sichtbar, weiterhin kann man Informationen zur CPU Nutzung, IOWait und weiteres ablesen.
Festplattenbelegung
Per df
listet man die Festplattennutzung auf. Der Befehl df -h
zeigt die Belegung jedes einzelnen Mountpoints (eingehangenes Dateisystem) an und der Parameter -h gibt dies human-readable aus. Per du
lässt sich die Speichernutzung eines Verzeichnisses oder Mounts anzeigen. Sinnvolle Parameter sind hier:
-h # human-readable, rechnet die Ausgabe in M/G/T um --max-depth=1 # zeigt in der Ausgabe nur das aktuelle Verzeichnis an
Inodes
Unter UNIX-basierten Betriebssystemen gilt:
Everything is a file // Alles ist eine Datei
Deshalb verwenden UNIX-Betriebssysteme die sogenannten Inodes, welche innerhalb der Dateisysteme in Listen geführt werden. Diese Inodes geben Auskunft über die Datei und sorgen für die Zuordnung von Datei und Datenblock auf der Festplatte. Eine ähnliche Methode gibt es auch unter Windows. In der Regel hat man mit Inodes wenig zu tun, allerdings können die Tabellen, in denen die Inodes und deren Infos abgelegt werden voll laufen und dann steht das System genauso, wie bei Festplatten die keinen Speicherplatz mehr haben. Ein Symptom wäre, das Schreibzugriffe den Hinweis geben, dass Sie keinen Platz mehr auf der Partition haben, aber ein df -h
noch freien Speicherplatz anzeigt. Man kann die Inode-Belegung über df -ih
anzeigen lassen. Da jede Datei eine eigene Inode bekommt, hat man oft Schwierigkeiten mit diesen, wenn viele kleine oder 0-byte Dateien erzeugt werden (Ein Dienst spielt verrückt oder ähnliches). Hier hilft nur löschen dieser überflüssigen Dateien.
Kommunikation (Ports)
Per netstat -tulpen
können sämtliche offene Ports / Verbindungen angezeigt werden. Hier wird eine Liste aller Ports angezeigt, auf die ein System lauscht. Die Parameter stehen für:
-t # TCP Verbindungen -u # UDP Verbindungen -l # „lauschende“ Verbindungen anzeigen -p # Die ProzessID mit anzeigen lassen -e # Zusätzliche/erweiterte Informationen anzeigen -n # Nummerische Anzeige von Adressen, Ports und Usern (Keine Namen)
Schreibe einen Kommentar