Patrouillengang

So analysieren Sie Ihren Linux-Server

09.09.2015 von Hermann Apfelböck
Ein einmal eingerichteter Linux-Server läuft weitgehend wartungsfrei. Gelegentliche Kontrolle hinsichtlich Hardware und Sicherheit ist aber dennoch Pflicht: Wer hat sich alles angemeldet? Wann wurde was von wem installiert? Wie steht es um Festplattenkapazität und Speicherbedarf?

Linux hat zahlreiche Standard-Tools, Protokoll-und Infodateien an Bord, die über alle Systemzustände und Ereignisse berichten. Dieser Beitrag nennt die wichtigsten Infoquellen. Dabei steht die Server-Kontrolle via Terminal und Webserver im Vordergrund, weil diese auch per Fernwartung uneingeschränkt funktioniert.

Die wichtigsten Kommandos

Zur Kontrolle der Partitionsbelegung, des RAM-Verbrauchs, der CPU-Auslastung, der internen und externen IP, der Prozesse oder der Systemlaufzeit reichen Kommandozeilen-Tools meist völlig aus, die Sie per SSH-Verbindung nutzen. Empfehlenswerte Nachinstallationen sind das Infoprogramm inxi (Aufruf mit maximalen Infos: inxi -v7) und der Taskmanager htop, der sich flexibel konfigurieren lässt (Setup mit Taste F2). Mit w oder who erhalten Sie die derzeit am System angemeldeten User, nach uptime die Systemlaufzeit.

Bei Hardware-Fragen oder Problemen halten Sie sich an das Display-Message-Tool dmesg für Kernel-Nachrichten. Zur besseren Lesbarkeit ist immer Schalter „-T“ zu empfehlen, der die seriellen Zeitangaben in lesbare Datums-und Stundenformate übersetzt. Zusätzlich sollte das simple Format-Tool ccze nachinstalliert werden, das etwa mit

dmesg –T | ccze -A

die dmesg-Textwüste übersichtlicher macht.

Protokolle und Infos im Klartext

Da hat’s jemand versucht: Der Befehl lastb meldet sieben gescheiterte Anmeldungen als „root“ innerhalb einer Minute mit einer externen IP-Adresse.

Mit die wichtigsten Infos liefern die Dateien unter „/var/log“. Mit root-Rechten auf der Konsole können Sie diese mit den üblichen Kommando-Tools durchsuchen (cat, less odertail). Beachten Sie dabei die Möglichkeiten, gleich mehrere Dateien zu durchforsten und auf jüngste Einträge zu sichten (etwa mittail -n20 auth.log syslog dpkg.log).

auth.log protokolliert im Klartext und ausführlich alle Systemanmeldungen. Wer in aller Kürze die erfolgreichen und gescheiterten Log-ins kontrollieren will, kann sich zusätzlich an die Dateien „/var/log/wtmp“ (erfolgreich) und „/var/log/btmp“ (gescheitert) halten. Diese binären Dateien lassen sich am bequemsten mit last (erfolgreich) und lastb (gescheitert) auslesen:

last -200
lastb -200 root

Gezeigt werden hier jeweils die letzten 200 Anmeldungen, die sich – wie das zweite Beispiel zeigt – auch auf ein bestimmtes Konto filtern lassen.

syslog ist das Systemlogbuch und zeigt Ereignisse aller Art, die an den syslogd-Daemon berichten – vorwiegend Kernel-, Hardware-und Cron-Ereignisse.

dpkp.log vermerkt alle manuellen (De-)Installationen und automatischen Updates. Ergänzend und in mancher Hinsicht übersichtlicher lohnt sich in diesem Zusammenhang auch der Blick in die Datei „/var/log/apt/history.log“.

Im Unterverzeichnis „/var/log/samba“ finden Sie für jedes zugreifende Netzgerät ein eigenes Protokoll – entweder mit Host-Namen oder lokaler IP-Adresse. Infos zur Hardware liegen bekanntlich im Klartext im Verzeichnis „/proc“. Wo Ihnen die Detailschärfe eines Tools wie inxi nicht ausreicht, können Sie diese Dateien mit cat auslesen. Prominente Kandidaten sind cpuinfo, meminfo, mounts, partitions, version.

Server-Fernwartung mit SSH

Sicherheitsrelevante Recherchen

Bei konkreten Sicherheitsbedenken wird es nicht ausreichen, die aktuellen User und die Log-ins zu prüfen. Wichtige Hinweise liefert der Bash-Verlauf des root-Kontos („/root/.bash_history“) und eventuell weiterer Konten („/home/[user]/.bash_history“). Hier sollten keine Befehle auftauchen, die nicht von Ihnen selbst stammen. Beachten Sie, dass eine leere History oder andere leere Protokolldateien verdächtig sind: Angreifer machen sich kaum die Mühe, Protokolldateien von eigenen Einträgen zu säubern, löschen diese aber eventuell. Kontrollieren Sie ferner den Inhalt der Cron-Tabelle:

sudo crontab –l

Auch hier darf nichts stehen, was nicht von Ihnen selbst stammt. Gleiches gilt für die Konfigurationsdatei des SSH-Servers „/etc/ssh/sshd_config“, die Sie als Klartextdatei mit jedem Editor kontrollieren können. Besteht akuter Verdacht, dass ungebetene Gäste auf dem Server angemeldet sind, ist lsof (List Open Files): das geeignete Werkzeug, die aktuellen Dateizugriffe zu kontrollieren. lsof beherrscht zahlreiche Filtermöglichkeiten: So gibt der Befehl

lsof –i :22

eine auf den SSH-Standardport 22 gefilterte Liste zurück.

Zusätzliche grafische Tools

Seltene Vorteile eines grafischen Tools: Farbige Filter im gnomesystem- log („Systemprotokoll“) machen die Textwüsten der Protokolldateien wesentlich übersichtlicher.

Dank X11-Forwarding spricht auch bei der SSH-Fernwartung eines Servers nichts dagegen, grafische Programme zu verwenden: Das Tool gnome-system-log (mit gleichnamigem Paketnamen) erscheint auf deutschsprachigen Distributionen als „Systemprotokoll“ oder „Systemprotokollbetrachter“ . Es zeigt die Protokolle „auth.log“ (Anmeldungen), „syslog“ (Kernel und Hardware), „dpkp.log“ (Installationen) sowie „xorg.0.log“ (grafischer X-Server) aus dem Verzeichnis „/var/log“, für deren Anzeige im Prinzip jeder beliebiger Editor reicht. Allerdings bietet gnome-system-log bequemen Zugriff zu den komprimierten älteren Protokolldateien, und farbige Filter erlauben gute Übersicht: Dazu vergeben Sie unter „Filter > Filter verwalten > Hinzufügen“ einen Filternamen wie „Bad Logs“ und als „Regulärer Ausdruck“ etwa „Failed password“. Geeignete Suchausdrücke für die Filter ergeben sich schnell, wenn Sie die Protokolle genauer durchforsten. Wenn Sie für den Filter „Bad Logs“ kräftige Farben definieren, sind passende Einträge sofort erkennbar.

(PC-Welt/ad)