Boehrsi.de - IT und Gaming Blog

ShellCheck - Fehler in Shell Scripten erkennen und beheben

Erstellt am event Uhr von account_circle Boehrsi in label Development
ShellCheck - Fehler in Shell Scripten erkennen und beheben Bild

Linux hat auf für mich als Windowsnutzer einen Vorteil, eine gute Scripting Umgebung und das seit langer Zeit. Die Shell ist mächtig, die Syntax brauchbar und man kann quasi alles automatisieren was man möchte. Doch nur weil man ein Script schreibt und dieses vielleicht auch funktioniert, heißt dies nicht das es sicher oder fehlerfrei ist. Deswegen empfehlen sich Tools zum überprüfen des Codes, doch dies vernachlässige ich zumindest oft bei Shell-Scripten. Denn ich schreibe sie häufig direkt in nano open_in_new oder aber in Notepad++ open_in_new, wenn ich von einem Windows System aus Remote arbeite. Doch da kam mir ein guter Tipp eines Arbeitskollegen zu Hilfe, denn dieser empfahl mir ShellCheck. Ein simples online Tool, welches übersichtlich und schnell Fehler aufzeigt und bei Bedarf auch lokal installiert werden kann. Dabei wird nicht nur auf Fehler hingewiesen, auch Verbesserungsvorschläge werden gegeben. Ich habe basierend darauf einiges optimiert und kann nur sagen es funktioniert super. Allerdings sollte man alle “automatischen” Tools mit Vorsicht genießen und ihnen nicht komplett blind vertrauen. Im Zweifel lieber einmal zu viel testen und sich schlau machen, als einmal zu wenig.

Related Links

Server Talk To Me - Verfügbare Updates anzeigen

Erstellt am event Uhr von account_circle Boehrsi in label Hardware & Software
Server Talk To Me - Verfügbare Updates anzeigen Bild

Lange habe ich in dieser Sammlung schon nichts mehr geschrieben aber nun wurde es mal wieder Zeit. Denn vor einigen Tagen habe ich nun endlich mal umgesetzt, was ich schon ewig wollte und zwar die Benachrichtigung via Mail ob Updates für den Server vorhanden sind. Dabei war meine Anforderungen das ich sowohl die gesamte Anzahl der Updates möchte, wie auch eine Info wie viele davon Sicherheitsrelevant sind. Das ganze wollte ich gerne in meine nächtlichen Server Info Mails einbauen. Um dies zu erreichen musste ich nur einen minimalen Aufwand betreiben und wie genau ich dies umgesetzt habe könnt ihr im unteren Teil der News nachlesen.

Server talk to me - Viren und Zugriffe

Erstellt am event Uhr von account_circle Boehrsi in label Archiv
Server talk to me - Viren und Zugriffe Bild

Nachdem ich nun schon einige Beiträge über Server-Anliegen geschrieben habe komme ich nun zur Sicherheit. Diese zu gewährleisten oder es zumindest zu versuchen ist natürlich wichtig und ich möchte in diesem Beitrag auf die eine oder andere Kontrollmöglichkeit hinweisen, ob noch alles in Ordnung ist. Um dies zu erreichen nutze ich zum einen vorhandene Standard Tools aber auch zwei Tools welche ich nachinstallierte. Von den vorhandene nutze ich last um schnell und einfach zu prüfen welche Zugriffe und Nutzungen es gab.

last -n 10

Mit diesem Befehl lasse ich mir die letzten 10 Nutzersitzungen anzeigen und prüfe ob es dort komische Einträge gibt. Im weiteren nutze ich Chkrootkit open_in_new und Rkhunter open_in_new. Bezüglich dem Aufruf kann man bei beiden Tools diverse Parameter nutzen und diese sollte man sich zuvor auf jeden Fall selber ansehen und entsprechend den eigenen Bedürfnissen anpassen. Ich selber stelle euch gleich nur die simpelsten Formen der Aufrufe vor. Chkrootkit prüft wie der Name schon sagt auf Rootkits und nicht gewünschte Anwendungen. Dies passiert mittels Listen und mit diesen werden Dateivergleiche angestellt.

sudo chkrootkit

Rkhunter geht dort einen anderen Weg, denn dieses Tool gibt unter anderem aus ob bestimmte Systemdateien geändert wurden. Man sagt dem Tool also das die Ausgangsdaten in Ordnung sind, natürlich nachdem man dies geprüft hat und ab diesem Zeitpunkt warnt es vor Änderungen. Wichtig ist das man nach Paketupdates Rkhunter aktualisiert, denn bei diesen Updates ändern sich häufig Dateien. Tut ihr dies nicht erhaltet ihr beim nächsten Check sehr viele Meldungen und könnt nur mühsam herausfinden welche davon nun durch Updates und welche vielleicht durch unerwünschte Aktionen ausgelöst wurden.

sudo rkhunter -c

Die Aktualisierung führt man mittels des folgenden Befehls aus:

sudo rkhunter --propupd

Diese Befehle nutze ich mittels Cronjobs open_in_new täglich und erhalte so immer aktuelle Informationen ob alles in Ordnung ist.

Related Links

Server talk to me - Prozesse

Erstellt am event Uhr von account_circle Boehrsi in label Archiv
Server talk to me - Prozesse Bild

Nachdem nun schon Ports und das Dateisystem abgearbeitet wurden geht es heute um die auf dem Server laufenden Prozesse. Um Informationen über diese zu bekommen braucht man eigentlich keine umfangreichen Scripte, denn fast alles liefert Linux schon direkt mit. Somit gibt es mit den Tools pstree und top meiner Meinung nach genug Möglichkeiten Informationen zu erhalten.

pstree -u

Mittels diesem Befehl erhält man eine Baumstruktur aller Prozesse und durch den Parameter -u erhaltet ihr zusätzlich noch die Info welcher Nutzer das jeweilige Programm ausführt.

top -b | head -n 4

Mittels diesem Code erhalte ich Informationen zur Auslastung des Systems. Der -b Parameter sorgt lediglich dafür, dass man die Ausgabe gut in eine Datei umleiten kann. Es wird mir die Anzahl der Prozesse und deren Status mitgeteilt, außerdem die CPU- und die Speicher-Auslastung. Die Weiterleitung an den head Befehl wird vorgenommen um die umfangreiche Ausgabe aller Prozesse zu unterdrücken, denn dies habe ich mittels pstree schon übersichtlicher zuvor erledigt.

Server talk to me - Dateisystem

Erstellt am event Uhr von account_circle Boehrsi in label Archiv
Server talk to me - Dateisystem Bild

Meine kleine Serie zum Thema Linux Server geht weiter. Heute geht es darum eurem Dateisystem ein paar Informationen zu entlocken. Dafür habe ich ein paar kleine Shell Befehle rausgesucht, die mir die benötigten Informationen zur Verfügung stellen. Es gilt wie immer, Verwendung auf eigene Gefahr und ihr solltet nur anwenden was ihr versteht!

df -h

Dieser kleine aber feine Befehl, welcher eine Abkürzung für Disk Free (Weitere Informationen open_in_new via Ubuntu Manpage) ist, gibt euch den vorhandenen Speicherplatz aus. Dabei wird sowohl der belegte wie auch der insgesamt verfügbare Speicher pro Partition angezeigt. Der Schalter -h sorgt für eine bessere Lesbarkeit, denn es wird nicht mehr alles in Bytes angezeigt, sondern entsprechend auch in MB, GB, TB und so weiter. Dadurch hat man also einen schnellen Überblick über den verfügbaren Platz. Nun wird es etwas komplizierter, denn eine meiner Anforderungen ist es die größten Dateien des Servers zu kennen und dies habe ich wie folgt gelöst:

ls -lahSG $(find / -ignore_readdir_race -type f -size +50000k) | awk '{ print $3,$4,$5,$6,$7,$8}'

Der Befehl ls (Weitere Informationen open_in_new via Ubuntu Manpage) listet verschiedene Informationen zu Dateien aus. Die Schalter haben die folgende Bedeutung:

  • l - Langes Listenformat verwenden.
  • a - Zeigt alle Dateien, auch wenn sie mit . beginnen, an.
  • h - Wie schon oben beschrieben erfolgt durch diesen Schalter die Ausgabe in einer besser lesbaren Version.
  • S - Nach Dateigröße sortieren.
  • G - Keine Gruppeninformationen anzeigen.
Verknüpft wird der ls Befehl mit dem find (Weitere Informationen open_in_new via Ubuntu Manpage) Befehl. Dieser wird durch den Slash open_in_new ab dem Root Ordner ausgeführt. Die Parameter können wie folgt erklärt werden:
  • ignore_readdir_race - Fehler beim scannen umgehen.
  • type f - Normale Dateien anzeigen.
  • size +50000k - Nur Dateien die größer sind als ~50MB anzeigen.
Final erfolgt eine Filterung durch awk (Weitere Informationen open_in_new via Ubuntu Manpage). Dieser Befehl sorgt dafür das entsprechend den zu sehenden Zahlen nur selbige Spalten der auszugebenden Tabelle angezeigt und gegebenenfalls anders sortiert werden.

Server talk to me - Ports

Erstellt am event Uhr von account_circle Boehrsi in label Archiv
Server talk to me - Ports Bild

Heute möchte ich eine kleine neue Serie beginnen, die sich um Linux Server und deren Verwaltung dreht. Es geht konkret darum, dass sich der Server bei euch meldet wie es “ihm geht”. Er soll euch also z.B. sagen welche Ports offen sind, wer sich in der letzten Zeit angemeldet hat und so weiter. Um dies zu erreichen habe ich mir ein paar kleine Scripte geschrieben und diese will ich jetzt mit euch teilen. Sie sind zum Teil sicherlich nicht optimal und der eine oder andere Linux Scripter wird die Hände über dem Kopf zusammenschlagen aber ich bitte um Nachsicht, denn sie tun was sie sollen. Trotzdem gilt natürlich Verwendung auf eigene Gefahr und ihr solltet nur anwenden was ihr versteht! Ich beginne heute mit den Ports, denn zu wissen welche offen sind und ob sich dort etwas nicht gewünschtes eingeschlichen hat ist ziemlich wichtig.