2080188

So analysieren Sie Ihren Linux-Server

18.09.2016 | 08:38 Uhr |

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.

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

Protokolle und Infos im Klartext

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.

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

Zusätzliche grafische Tools

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.

Weitere grafische Kandidaten wie hardinfo („System Profiler and Benchmark“) oder gnome-system-monitor („Systemüberwachung“) sind zwar klickfreundlich, aber durch Kommando-Tools und Infodateien mindestens gleichwertig im Terminal zu ersetzen.

Linux-Dash Kleiner Webmonitor

Für einen kleinen Daten-Server im Heimnetz wären Monitoring-Tools wie Nagios oder Conky Overkill. Im Allgemeinen werden die Möglichkeiten der SSH-Kommandozeile ausreichen. Wer es unbedingt schicker haben will, findet mit dem kleinen PHP-Tool Linux Dash einen guten Kompromiss: Es ist schnell eingerichtet und bietet hübsch aufbereitet Daten zur Hardware-Auslastung, Partitionsbelegung, Uptime, ferner Netzwerkinfos, Cronjobs und vieles mehr. Die Infos sind allerdings ohne Eingriff in den Quellcode nicht konfigurierbar, außerdem setzt einen laufenden Apache-oder Nginx-Server voraus. Zur Vorbereitung einer Installation unter Debian/Ubuntu installieren oder aktualisieren Sie folgende Pakete:

apt-get install apache2 apache2-utils apt-get install php5 curl php5-curl php5-json apt-get install git 

Danach starten Sie den Apache-Server neu (service apache2 start) und wechseln dann in das Verzeichnis „/var/www/html“. Mit

git clone https://github.com/afaqurk/linux-dash.git

richten Sie dort das Linux-Dash ein, das danach sofort in jedem Browser mit seiner IP erreichbar ist. Die vollständige Adresse bei Installation laut obiger Beschreibung lautet „ http://[IP-Adresse]/ linux-dash “. Einen optischen Eindruck von Linux-Dash bietet das Aufmacherbild dieses Artikels.

Dieser Artikel stammt aus der LinuxWelt 3/2015

In der neuen LinuxWelt erklären wir Schritt für Schritt, wie Sie Linux als Server einrichten. In einem weiteren Special erfahren Sie alles über ein effizientes Power-Management bei Notebooks und PCs.

0 Kommentare zu diesem Artikel
2080188