Skip to content

Eine Defaultroute überschreiben, ohne sie zu überschreiben

Eine gängige Herausforderung, Fall 1: Ein mobiles Clientsystem soll mit HIlfe eines VPN-Clients mit einem geschützten Netzwerk verbunden werden. Dabei ist gewünscht, dass während der Tunnel aufgebaut ist der gesamte Netzwerktraffic des Clients über das VPN geht. Nach Abbau des Tunnels soll wieder alles so sein wie vorher.

Fall 2: Ein Dual-Homed Host in einem RZ (z.B. ein Proxy) soll im Wartungsbetrieb seine Defaultroute "nach innen" gesetzt haben, so wie sie auch aus dem Deployment-System herausfällt. Im Wirkbetrieb jedoch soll die Defaultroute "nach außen" gesetzt sein, damit die Kommunikation mit dem Internet möglich wird.

Beide Aufgaben erfordern ein temporäres Umsetzen der Defaultroute. Macht man das auf dem naiven Weg, muss man sich irgendwie merken, wohin die Defaultroute vor dem Umsetzen zeigte, um sie danach wieder herzustellen.

In diesem Artikel stelle ich einen einfachen und eleganten Weg vor, um sich die Zwischenspeicherung der "alten" Defaultroute zu sparen. Ich kenne ihn schon seit ein paar Jahren aus der OpenVPN-Welt und bin immer wieder über die Situation gestolpert, dass er an einer Stelle hilfreich ist und ich ihn den Leutern erklären muss, die ihn noch nicht kennen. Mit diesem Artikel möchte ich mir diese Erklärungen in der Zukunft etwas einfacher machen.

Continue reading "Eine Defaultroute überschreiben, ohne sie zu überschreiben"

IP-Routing für Anfänger

Als Systemadministrator hat man im Idealfall mit IP-Routing nur dann zu tun, wenn man seinen Systemen eine Defaultroute setzt und dann nie wieder. Mit Wissen auf diesem Niveau kann man jahrelang in unserem Handwerk arbeiten.

Bis es mal nicht tut, oder besondere Anforderungen auch besondere Maßnahmen erfordern. Dann sieht man sofort, wo das Grundwissen fehlt. In diesem Artikel möchte ich eine - hoffentlich minimale - Menge dieses Grundwissens vermitteln. Aufgrund meines fachlichen Fokus beschränke ich mich hier auf Linux; die Theorie dahinter ist aber für alle internettauglichen Betriebssysteme identisch, so dass man sich nur an die verwendeten Tools, ihre Parameter und ihre Ausgabeformate anpassen muss.

Continue reading "IP-Routing für Anfänger"

Privilege Escalation für Konfigurationsmanagement, Teil II

So, nachdem ich die letzte Woche mit "Voraussetzungen aufbauen" verbracht habe, und wegen Zeitmangel am Wochenende sogar einen vorbereiteten Füller-Artikel posten musste, kommen wir heute (endlich) zu dem, was ich eigentlich mit Euch diskutieren wollte. Zu diesem Artikel sind mir Eure Kommentare besonders wichtig; ich weiß aber, dass es nach dem Absenden eines Kommentars im Browser einen Timeout hagelt. Das ändert aber nichts dran, dass der Kommentar ordentlich gepostet wurde.

Heute soll es nun endlich darum gehen, wie man Konfigurationsarbeiten ermöglicht und unterstützt, bei denen sich derjenige, der die Arbeiten ausführt, aktiv auf den zu bearbeitenden Systemen einlogged. Dabei schließe ich ausdrücklich das manuelle Arbeiten mit ssh oder mehrfach-ssh wie mssh und cssh ein, meine aber auch semiautomatisierte Arbeiten wie xargs --max-procs oder parallel(1) bis hin zum vollautomatischen Prozess, z.B. mit Ansible.

Continue reading "Privilege Escalation für Konfigurationsmanagement, Teil II"

Meine Best Practice für Shell-Accounts und ihre Absicherung (mit ssh)

Auf meinen Systemen bin ich im wesentlichen der einzige Shell-Benutzer. Die hier vorgeschlagenen Methoden können natürlich auch auf eine größere Menge von Accounts angewendet werden, wobei ab einer gewissen Grenze manche Verfahren nicht mehr skalieren.

lokaler Login

Lokaler Login auf der Konsole ist bei meiner Arbeitsweise die Ausnahme. Das passiert im Wesentlichen nur bei Störungen, wenn Netz und/oder ssh nicht mehr funktionieren. Die bei weitem häufigste Methode des Zugriffs auf die Shell erfolgt via ssh über das Netz. Da ich auf meinen Systemen natürlich sudo-berechtigt bin, benötige ich das zum Account gehörende Passwort (außer zum Konsolen-Login im Störungsfall) nur, um mich bei sudo zu authentifizieren um root werden zu können.

Continue reading "Meine Best Practice für Shell-Accounts und ihre Absicherung (mit ssh)"

ssh proxycommand, ssh -W, ssh proxyjump

Es war vor einigen Jahren, auf einem Treffen der SAGE Karlsruhe, wo im Rahmen eines Lightning Talks ssh proxycommand vorgestellt wurde. Ich hatte mich bisher immer mit einzelnen ssh-Aufrufen von Host zu Host weitergehangelt, und ssh proxycommand war für mich damals der erste Weg, direkt mit einem "natürlich" erscheindenen ssh-Aufruf trotz Sprunghost-Zwang auf dem Zielsystemen zu landen.

Das Verfahren wurde in neueren OpenSSH-Versionen noch zweimal vereinfacht, und in diesem Artikel möchte ich die Unterschiede herausstellen.

Continue reading "ssh proxycommand, ssh -W, ssh proxyjump"

Privilege Escalation für Konfigurationsmanagement, Teil I

Wenn man sich die Konfiguration seiner Systeme (managed systems) von einem Automaten (Konfigurationsmanagement-System, KMS) abnehmen lassen möchte, muss man ihm dazu die notwendigen Rechte geben. Da beißt die Maus keinen Faden ab.

Aber was sind die notwendigen Rechte, wie gibt man sie dem Automaten, und welche Implikationen für die Systemsicherheit (im Sinne von security) haben sie?

In diesem Artikel und seinen weiteren Teilen stelle ich ein paar Methoden vor, versuche ihre Vor- und Nachteile herauszuarbeiten und bitte euch um Kommentare und eure Meinung dazu. Dieser Teil 1 beschäftigt sich mit dem, dem ich eigentlich nur einen Absatz widmen wollte, und aus dem dann ein eigener Artikel geworden ist: Dem Pull-Prinzip mit einem Agenten.

Continue reading "Privilege Escalation für Konfigurationsmanagement, Teil I"

Note to Self: LWN über Namespaces

Linux Weekly News hat vor ein paar Jahren eine Artikelreihe über Namespaces im Linux-Kernel veröffentlicht. Inzwischen gibt es da zwar eine gewisse Überdeckung zu den Manpages (z.B. man 7 namespaces), aber etwas ausführlicher ist LWN dennoch. Ich verblogge das hier, damit ich nicht immer wieder suchen muss.

Und ja, ich bin noch da. Im Moment leider wieder etwas seltener, da ich aufgrund familärer Verpflichtungen höchster Wichtigkeit tausende von Kilometern im ICE herunterreißen muss.

nifty shell prompt dings

Über seinen Shellprompt hat wohl jeder Unix-Geek schon geschrieben. In diesem Artikel mache ich das auch mal.

Meiner sieht im Default so aus:

[1/4998]mh@swivel:~ $ 

Langweilig, nicht? Das habe ich absichtlich so gemacht, denn von Zeit zu Zeit muss ich mir einen Account mit anderen Leuten teilen, und da hat man sowieso nicht die Möglichkeit, zu individualisieren. Deswegen weiche ich hier wie auch in anderen Bereichen so wenig wie möglich vom Default ab. Das ist auch der Grund, warum ich die bash als Shell verwende und keine luxuriöseren Dinge wie z.B. die zsh: Die hat man im Zweifel dort, wo man unter Streß arbeiten muss, nicht zur Verfügung und hat genau dort dann einen ganzen Sack von Features, an deren Vorhandensein man sich selbstverständlich gewöhnt hat, nicht zur Verfügung.

Continue reading "nifty shell prompt dings"

Schöne Verbindungen mit Keystones

In meinem Seminarraum habe ich die Multimedia- und auch die Netzwerkverbindungen teilweise mit Keystone-Modulen realisiert. Keystones haben den Vorteil, dass es sie für fast alle physikalisch in den 14x16-mm-Formfaktor passenden Verbinder verfügbar sind und es eine breite Auswahl an "Frontblenden" gibt, in die man die Keystone-Module einrasten kann.

"Frontblenden" gibt es sowohl in verschiedenen "Lochanzahlen" als Aufputz-Gehäuse und 19-Zoll-Einbaublenden sowie in Einzel- und Doppelvarianten für normale Unterputzdosen und BR-Kanäle. Ich habe in meiner Umgebung Keystones für RJ45, Cinch, Toslink und (bald, ist bestellt) USB im Einsatz.

Continue reading "Schöne Verbindungen mit Keystones"

"Was, antwortet auf pings? Der ist gar nicht an!"

Zugschlus plaudert aus dem Nähkästchen.

Es ist schon eine Weile her. Bei einem langjährigen Kunden, der mich immer mal wieder mit haarigen Debuggingaufgaben oder komplexen Planungen inklusive Migration beauftragt hat. Einem so langjährigen Kunden, dass ich dort nahezu alle Leute duzen durfte und ein- und ausgehen durfte wie mir gerade zumute war.

Ich komme also im Office des Kunden an und suche mir einen freien Schreibtisch in einer Ecke des Großraumbüros mit für mein Tagewerk genug freien Netzwerkports. Zwei Tischreihen weiter stehen drei Mitarbeiter des Kunden aus dem Bereich Clientmanagement ratlos um einen PC herum. ich schnappe Unterhaltungsbrocken auf, und bekomme mit, dass das Softwareverteilungssystem für Windows-Clients sich nicht in der Lage sieht, das Redmond-Betriebssystem auf diesem Rechner zu installieren. Ich werde neugierig.

Continue reading ""Was, antwortet auf pings? Der ist gar nicht an!""

Debian blind installieren

Ich habe mir nach langer Abstinenz mal wieder einen Server bei Hetzner gemietet. In der Serverbörse verschachert der Anbieter ältere Geräte als Einzelstücke, die von ihrem bisherigen Mieter zurückgegeben wurden und die teilweise aufgrund individueller Ausstattung nicht in den Mainstream hineinpassen. Dabei kann man als Kunde auch richtige Schnäppchen machen.

So bin ich seit zwei Wochen stolzer Mieter eines Hetzner-Servers mit Core i7-Vierkerner der Bloomfield-Generation mit Hyperthreading mit stolzen 48 GB RAM. Die Miete liegt bei unter 40 Euro im Monat und lässt den ähnlich alten, zum Mai gekündigten 1&1 Rootserver, der mit nur 4 GB RAM ähnlich viel Geld kostet, ziemlich alt aussehen.

Aber so ein Schnäppchen hat natürlich auch Nachteile. So gibt es nur eine einzige IPv4-Adresse, und IPv6-Adressraum, der über das standardmäßig dazugehörende einzelne /64 hinausgeht, lässt sich der Anbieter mit einer Einrichtungsgebühr in der Größenordnung von zwei Monatsmieten relativ fürstlich bezahlen. Und es gibt keine serielle Konsole. Man kann sich für einen bestimmten Zeitraum ein KVM-over-IP-Gerät anschließen lassen und die ersten x Stunden sind sogar inklusive, aber das ist natürlich nur ein magerer Ersatz. Die vom Anbieter angepriesene vnc-Installation funktioniert freilich nur für die von ihm vorbereiteten Systeme; bei näherer Betrachtung liegt das aber auch auf der Hand: Wie soll das sonst ohne Spezialhardware gehen.

In diesem Artikel soll es darum gehen, wie ich mein zgserver-Debian "blind" auf die Maschine bekommen habe.

Continue reading "Debian blind installieren"

SMTP client-to-server, oder wie man seine Mail los wird

Die gute alte Dame SMTP, das Simple Mail Transfer Protocol, hätte sich zu Zeiten seiner Definition 1982 kaum vorstellen können, wie häufig es in den 35 Jahren erweitert und für neue Anwendungen missbraucht werden würde.

In diesem Artikel geht es darum, SMTP dazu zu benutzen, um von einem Mailclient ohne eigene Serverfunktionalität Mail bei einem Smarthost einzuliefern. Eigentlich ein gelöstes und alltägliches Problem, möchte man meinen.

Continue reading "SMTP client-to-server, oder wie man seine Mail los wird"

git workflow trial environment

git is an unbelievably powerful tool which is unfortunately rather picky in choosing its friends. Documentation is available in copious amounts and this blog article adds to the mountain.

Unfortunately, the documentation out there always assumes the ideal case: A small project, a handful of colleagues who are motivated and doing the right thing, a workflow agreement that matches the work to be done and no mistakes. Reality is different, and so you might find yourself wedged in broken workflows, surrounded by unwilling or incompetent cow-orkers and/or a git repository that has grown historically and still is carrying the burden of misguided work of decades.

In this blog article, I'd like to introduce you to my way of trying things with git. It allows you to easily do things in the right and in the wrong way while immediately seeing the results of your actions. Let me know whether it's of any help for you to grok git (which I have not fully managed yet).

Continue reading "git workflow trial environment"

Login als technischer User mit ssh forced commands

Oftmals hat man die Aufgabe, einen maschinenübergreifenden Zugriff automatisiert stattfinden zu lassen, ohne dass man der einen Seite gleich "vollwertige" Credentials für einen interaktiven Login auf der anderen Seite geben möchte. Wenn der Zugriff automatisiert stattfinden soll, fällt auch noch die Sicherheitsstufe eines ssh passphrases weg, da niemand da ist um diesen einzugeben.

ssh forced commands bieten eine Möglichkeit, einen solchen Zugriff zu erlauben, ohne gleich die Büchse der Pandora zu öffnen. Selbst ein automatischer Zugriff mit root-Rechten ist auf diese Weise "reasonably secure" realisierbar.

Continue reading "Login als technischer User mit ssh forced commands"

insecssh

Yes, You Should Not discard cached ssh host keys without looking. An unexpected change of an ssh host key is always a reason to step back from the keyboard and think. However, there are situations when you know that a systems' ssh host key has changed, for example when the system reachable under this host name has been redeployed, which happens increasingly often proportionally to the devopsness of your environment, or for example in test environments.

Later versions of ssh offer you the ssh-keygen -R command line to paste from the error message, so that you can abort the connection attempt, paste the command and reconnect again. This will still ask for confirmation of the new host key though.

Almost every sysadmin has an alias or wrapper to make handling of this situation easier. Solutions range from using "StrictHostKeyChecking no" and/or "UserKnownHostsFile /dev/null", turning off this layer of securit altogether either globally or usually too broadly, to more-or-less sophisticated solutions that involve turning off know-host file hashing, parsing client output and/or grep-sed-awk magic. grml even comes with an insecssh script that is rather neat and that I used until I developed my own.

Continue reading "insecssh"