Butschek.de

Warnung: Diese Seite ist eine statische Kopie eines früher betriebenen Blogs. Es findet keine Aktualisierung mehr statt. Kommentare und die Suche funktionieren nicht.

Linux, Server & Co

Archive for the ‘LST’ Category

SSH-Keys erzeugen und benutzen

leave a comment

Ein SSH-Key erlaubt das Anmelden an einem Server, ohne das Passwort kennen zu müssen. Das ist nicht unüblich, denn in den meisten Firmen gibt es mehrere Server und mehrere Admins. Dafür zu sorgen, dass die Passwörter regelmäßig gewechselt werden, jeder Admin immer das richtige Passwort von jedem Host kennt, aber gleichzeitig darauf zu achten, dass kein Passwort in falsche Hände gerät, ist oft keine einfache Sache.

Mit dem SSH-Key ist es ganz einfach: Der Benutzer (z.B. der Admin) generiert sich einen SSH-Key welcher aus 2 Teilen besteht: Einem persönlichen Key, den er selbst behält und niemanden weitergibt. Und einem öffentlichen Key, der auf den Servern installiert wird, auf die er Zugriff hat.

So läßt sich sehr einfach regeln, welche Person auf welchen Server darf. Durch Entfernen eines Keys kann eine Person auch wieder ausgesperrt werden. Und der Admin braucht auch keine Kennwörter wissen. Der Besitz seines persönlichen Keys reicht aus, dass SSH den Zugang autorisiert.

Ein weiterer Vorteil ist die höhere Sicherheit: Übliche Passwörter (nehmen wir als Beispiel 8 Zeichen alphanumerisch) können nicht mehr als 2^10*14 Kombinationen haben, dies entspricht etwa 48 Bit. Ein SSH-Key kann problemlos 4096 Bit haben, ist also deutlich robuster gegen Angreifer.

Wie macht man das nun? Für Linux-User gibt es genug Anleitungen im Netz, daher zeige ich den Weg, den Windows-Menschen gehen müssen, um sich auf ihrem Linux Server anmelden zu können.

SSH-Key erstellen

Schritt 1: PuTTYgen und Pageant herunterladen. Die Tools gibt es auf der PuTTY Download Page: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Schritt 2: PuTTYgen starten und unten erstmal Typ und die Länge einstellen. Ich persönlich bevorzuge 4096 Bit RSA Schlüssel, um eine hohe Sicherheit zu erreichen. SSH1 Schlüssel oder Schlüssel unter 1024 Bit würde ich heute aus Sicherheitsgründen nicht mehr empfehlen.

Schritt 3: Auf „Generate“ klicken und die Maus lange genug im Programmfenster bewegen. Der Schlüssel wird nun erstellt. Danach erfolgt die Eingabe von Kommentar und Passwort:

Putty Key Generator (Screenshot)

Als Kommentar wird empfohlen, Name und E-Mail Adresse einzugeben, denn der Kommentar wird auf dem Server später zu sehen sein. So kann man die einzelnen Keys verschiedener Benutzer leicht unterscheiden und weiß auch sofort, wie man betreffende Inhaber schnell erreichen kann.

Das Passwort (Key Passphrase) ist kein Zwang, allerdings empfehlenswert. Es schützt den Key mit diesem Passwort, so dass er nicht so einfach gestohlen werden kann. Läßt man das Feld leer, so wird der Key nicht geschützt.

Schritt 4: Der öffentliche Key, der auf den Server gehört, ist oben im Feld „Public key for pasting…“ zu finden. Er kann per Copy&Paste übernommen werden. Am Besten erstmal in einer Textdatei speichern, damit er nicht verloren geht.

Schritt 5: Der private Schlüssel wird über das Menü „Key – Save private key“ gespeichert. Achtung, das File (z.B. dein_name.ppk) enthält den privaten Key, kein Dritter sollte diese Datei bekommen. Man sollte sich darüber im klaren sein, dass jeder, der den privaten Key hat, diesen auch nutzen könnte. Wird die Datei also weitergegeben, so wäre das, als würde man die Passwörter aller Server weitergeben, auf denen man mit diesem Key Zugang erhält.

Öffentlichen Key auf Linux-Server installieren

Zuerst mal per SSH mit dem Server verbinden. Im eigenen Home-Verzeichnis (~) muss ein Ordner namens .ssh existieren. Darin wird die Datei authorized_keys angelegt, in der alle öffentlichen Keys der Personen abgelegt werden, die Zugang zum System erhalten sollen. Jeder Key kommt dabei in eine Zeile, Kommentare mit # sind erlaubt.

Der Vorgang unter Linux könnte so aussehen:

# Verzeichnis und Datei anlegen
mkdir -m 0700 ~/.ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
# Schlüssel hinzufügen
cat >> .ssh/authorized_keys
ssh-rsa AAAAB3Nza...b30nk= Michael Butschek (2012) <michael@butschek.de>
[STRG-D]

Fertig. Ab jetzt läßt dieser Host Benutzer ohne Passwort rein, die den zum öffentlichen Key passenden privaten Key besitzen.

Benutzung des Keys in Putty

In Putty im Menü „Connection – SSH – Auth“ kann ein „Private Key file“ angegeben werden. Hier den privaten Key benutzen (pkk-Datei). Der Zugang zum Host, auf dem der öffentliche Key liegt, ist nun ohne Passwort möglich. Die Auth-Einstellung läßt sich natürlich auch direkt im Profil eines Hosts speichern, so ist es nicht nötig, jedesmal den Key neu anzugeben.

Was vielleicht störend bei der täglichen Arbeit wird: PuTTY möchte das Passwort des Keys jedesmal wissen, wenn er benutzt wird. Wenn man auf vielen Maschinen unterwegs ist, kann das ganz schön aufhalten. Dafür gibt es SSH-Agents, die den Key einmal beim Start laden (und auch nur einmal das Passwort abfragen). Putty kann dann auf den Agent zugreifen und sich den Key von dort holen. So kann man sich beliebig oft ohne Passwort anmelden, ohne auf den Schutz eines Passwortes im Key zu verzichten.

Installation Putty Agent

Der für Putty passende SSH Agent heißt Putty Agent. Das passende Tool Pageant haben wir weiter oben schon heruntergeladen. Es wird denkbar einfach bedient: Man startet die .exe Datei und übergibt den Pfad zum privaten Schlüssel als Parameter. Das Tool fragt nun einmal nach dem Passwort. Danach verschwindet das Tool im System Tray und Putty kann den Key ohne weitere Passwortabfrage nutzen.

Da das Starten von Programmen mit Kommandozeilenparametern unter Windows nicht so einfach ist, empfiehlt sich folgende Methode: Zuerst erzeugt man eine Verknüpfung zu Pageant.exe und öffnet dann die Eigenschaften dieser Verknüpfung.

Im Tab „Verknüpfung“ findet man das Feld „Ziel“, in der der Pfad zur Exe-Datei steht. Dahinter setzt man dann (mit einem Leerzeichen getrennt) noch den vollständigen Pfad zu seinem privaten Key.

Putty Agent (Screenshot der Verknüpfung)

Durch einen Doppelklick auf die Verknüpfung wird der Agent nun gestartet und fragt das Passwort ab. Hat alles geklappt, findet sich der Agent danach im System Tray.

Möchte man den Agent gleich beim Systemstart öffnen, kann man zuletzt einfach noch die eben erstellte Verknüpfung in den Autostart-Ordner schieben. Damit wird man sofort beim Systemstart nach dem Passwort für den Agent gefragt und kann dann Zugriff per SSH auf jedes seiner Systeme nehmen, ohne erneut ein Passwort zu benötigen.

Viel Spaß beim Nutzen der SSH-Keys.

Written by Michael Butschek

Dezember 2nd, 2012 at 2:30 pm

Posted in IT,LST

Tagged with , , , , ,

Das farbige Bash Prompt

leave a comment

Beispiel meines PromptsEin ehemaliger Arbeitskollege hat mich auf die Idee gebracht, mein geliebtes Prompt mal zu veröffentlichen.

Vor langer Zeit störte mich auf der Shell oft, dass man beim Arbeiten mit langen Ausgaben oft den Anfang der Ausgabe suchen mußte. Das war teilweise gar nicht so nicht einfach, wenn man mehrere ähnlich aussehende Config-Files nacheinander anzeigt, muss man schon genau schauen, wo dazwischen das Prompt steht.

Die Lösung war einfach: Ein farbiges Prompt. So erkennt man sehr schnell die Trennung und wenn das Prompt dann noch eine Leerzeile einbaut, wird es richtig schnell übersichtlich.

Folgende Informationen wollte ich noch im Prompt sehen:

  • Benutzername
  • Hostname
  • Aktuelles Arbeitsverzeichnis
  • Exitcode des letzten Kommandos

Der Exitcode (in Spitzen Klammern, hier im Beispiel ‚0‘) ist für’s Scripten sehr hilfreich, da man direkt beim Ausprobieren eines Kommandos an der Shell sieht, welcher Exitcode vom Programm zurückgegeben wird. So weiß ich gleich, ob es klappt und welchen Exitcode mein Script beim Ausführen des Kommandos erwarten darf.

Zusätzlich zum Prompt setze ich auf meinem System auch gleich noch einen Alias für ‚ls‘, damit dort immer die lange Ausgabe ausgegeben wird und die Einträge auch gleich in passenden Farben erscheinen.

In Summe sieht das dann bei mir so aus:

export PS1='\n\[\033[1;32m\]\u@\h: \w\n<$?> $ \[\033[0m\]'
alias ls='ls -AlFh --color=auto'
export LS_OPTIONS='--color=auto'
export LS_COLORS='no=00;37:fi=00;37:di=01;37:ln=01;33:pi=00;36:so=00;36:do=00;36:bd=00;36:cd=00;36:or=00;33:ex=01;36:';

Um das Prompt (Umgebungsvariable PS1) kurz zu erklären:

  • \n ist ein Enter
  • \[\033[{code}m\] = Ansi Escape Farbcode (siehe dazu Linupedia und Wikipedia)
  • \u ist der aktuell angemeldete Benutzer
  • \h ist der Hostname
  • \w ist das aktuelle Verzeichnis (working directory)
  • $? ist der Exitcode des letzten Programms
  • $ ist das Prompt-Zeichen (abhängig davon, ob man Benuter oder Root ist)

Die ‚1;32m‘ in der ersten Zeile ist der Farbcode:

  • 0;30m – Schwarz
  • 1;30m – Dunkelgrau
  • 0;31m – Rot
  • 1;31m – Hellrot
  • 0;32m – Grün
  • 1;32m – Hellgrün
  • 0;33m – Braun
  • 1;33m – Gelb
  • 0;34m – Blau
  • 1;34m – Hellblau
  • 0;35m – Violett
  • 1;35m – Hellviolett
  • 0;36m – Türkis
  • 1;36m – Helltürkis
  • 0;37m – Hellgrau
  • 1;37m – Weiß

Das ganze läßt sich dann z.B. in der ~/.bashrc eintragen, so dass es bei jedem Login gleich verfügbar ist.

Ich mache dies meist aber nicht so. Es gab in meinem Job schon Diskussionen mit anderen Admins, die mein Prompt nicht sinnvoll fanden oder ihr eigenes lieber hatten. So haben wir uns darauf geeinigt, keine Farben in der .bashrc zu speichern und stattdessen im Home-Verzeichnis eine Datei mit dem eigenen Prompt anzulegen.

Bei mir heißt die Datei ~/prompt_mbutschek und enthält obige Zeilen. Nach dem Login gebe ich ein ‚. pr[tab]‘, was dann zu ‚. prompt_mbutschek‘ wird. Damit importiere ich die Einstellungen in die aktuelle Bash-Sitzung. Andere Admins haben dagegen das Standardprompt und werden durch meine Liebe zum bunten Prompt nicht gestört.

Written by Michael Butschek

November 19th, 2012 at 8:15 pm

Posted in IT,LST

Tagged with , , ,

Source based Routing

3 comments

Mit 2 IP-Adressen in 2 Netzen unterwegs: Source based Routing

In größeren Download-Clustern hat der Administrator häufig den Wunsch, über einen zweite Uplink auch dann administrativen Zugriff auf die Rechner zu erhalten, wenn der erste Uplink gerade mal voll gelaufen ist.

So trivial der Wunsch klingt, es genügt nicht, einfach eine zweite Netzwerkkarte zu kaufen, diese mit dem Router zu verbinden und eine IP-Adresse zu vergeben. Denn hier spielt das Routing des Servers eine große Rolle.

Üblicherweise entscheidet ein System anhand der ZIEL-Adresse wohin ein Paket geschickt wird. Wird also auf dem zweiten Interface eine IP-Adresse konfiguriert werden zwar eingehende Pakete dort empfangen, sofern der Absender aber nicht im gleichen Netz sitzt wird die Antwort über den Default-Gateway – und damit den vollen Link – zugestellt.

Um das zu verhindern gibt es unter Linux die Möglichkeit, eine weitere Routing-Table mit einem Default-Gateway im zweiten Netz einzurichten.


ip route add table 6 default via ${GATEWAY-AUF-ETH1}

Die Table 6 benutze ich weil sie frei ist, könnte hierfür aber jede andere freie Table benutzt werden. Notfalls mit ‚ip route show table 6‘ vorher prüfen, ob die Table benutzt wird. Nun muss per Regel noch festgelegt werden, dass die Source-Adresse von eth1 auch durch diese Routing-Table geschickt wird:


ip rule add table 6 from ${IP-AUF-ETH1}

Gehen wir also davon aus, dass wir auf der zweiten Netzwerkkarte das Netz 203.0.113.0/30 konfiguriert haben (Gateway: .1, unser System: .2). Dann würden die Kommandos wie folgt lauten:


ip route add table 6 default via 203.0.113.1
ip rule add table 6 from 203.0.113.2

Und schon werden alle Pakete, die von 203.0.113.1 kommen an das Gateway 203.0.113.2 (also die 2. Netzwerkkarte) geschickt.

 

Written by Michael Butschek

Mai 23rd, 2010 at 10:00 am

Posted in IT,LST

Tagged with , ,