Desaster Recovery, Ansible, Reduziere die Komplexität.

By | 30. Mai 2017

Ich habe nun eine ganze Weile darüber nachgedacht, wie man Linux-Server halbwegs sicher betreiben kann. Alle faseln von Virtualisierung, Containern und Hipster-Framework X.

Hmm.

Inzwischen glaube ich einen Weg gefunden zu haben, der mir sinvoller scheint:

Reduziere die Komplexität.

Vor einem Monat passierten eine Menge komischer Dinge (Beispiel) auf einmal.
Eines davon war, dass am Ende mein Server ausfiel.

Sollte ich nun den ausgefallenen Server langwierig forensisch untersuchen?
Pah!

Den alten Raspberry Pi will ich nicht zurück. Wenn ich Fenster offen lasse, interessiert mich eigentlich nicht, durch welches genau davon hier jemand Mist veranstaltet hat.
Vielleicht war ja auch nur die SD von Raspi endlich abgeraucht.

Jeder Gedanke daran wäre verschwendete Energie, denn ich könnte nur mir Annahmen hantieren.

Und das, woran ich am wenigsten gedacht habe, ist Desaster Recovery.
Wie biege ich nach dem potentiellen Worst Case die ganze Krypto wieder sicher hin?

Ich habe mich also eher darauf konzentriert, wenn ich eine Kiste sicher machen und halten will, wie stelle ich das an?

Meine Erkenntnis klingt leider erschütternd: Generell unmöglich.

Sobald ein Angreifer ein konkretes Ziel im Visier hat, müsste der Administrator auf der Gegenseite die Sicherheitslücke jedesmal *sofort* schließen.
Nachdem mir klar wurde, wie man Metasploit automatisiert, bilde mir nicht mehr ein, meine Systeme bei mir zu Hause mit täglichen Update-Zyklen sicher zu betreiben.
Für den Angreifer reicht es, wenn die Lücke auch nur für eine Minute offen ist. Und nach dieser Minute popelt der Angreifer schon an den nächsten Interfaces weiter!

Und was ist proportional zur Anzahl der Sicherheitslücken?
Die Komplexität.

Je komplexer ein System, desto mehr Fehler beinhaltet es. Bekannt.
Stimmt aber auch noch, wenn man Fehler durch Sicherheitslücken ersetzt.

So.
Da bin ich auch sicher nicht zu einer besonders neuen Erkenntnis gelangt, sonst würden auf all unseren Plaste-Routern keine superschlanken Linux-Varianten laufen.

Als ich das so richtig verinnerlicht habe, habe ich mir mal die ganzen Linux-Distributionen angeguckt.
Alter.

Die sind fast alle vollkommen irre!

Zum Glück gibt es Ausnahmen, aber gucke ich mir eine „moderne“ Linux-Distrubution an, sehe ich überall nur fette Klumpen Software, deren Programmierer in einem Anfall von Größenwahn pausenlos versuchen, ein Linux zu bauen, das so überladen ist wie Photoshop!

Und dort denkt anscheinend niemand mehr darüber nach, ob das auf einem schlanken Produktions-Server vielleicht doch überflüssig ist. Früher habe ich über die vergeudete Rechenzeit geschimpft, heute schüttele ich den Kopf ǘber den Aufwand, dieses System im Hinblick auf Sicherheitslücken zu pflegen.

Diesen Server hier betrachte ich gerade als temporären Notbehelf.

Ich arbeite gerade daran, den Mainline-Kernel mit grsecurity-Patch und das Mainline u-boot auf dem Odroid C2 zum Laufen zu bringen, dann läuft auch hier endlich Alpine Linux mit grsecurity Patch. Es läuft eigentlich schon, aber ich kann mangels USB-2-Serial Adapter u-boot noch nicht richtig debuggen.

Der Server wurde auch physisch von fremden Personen transportiert, also muss ich davon ausgehen, dass die Kiste kompromittiert ans Netz geht.
Also habe ich takeover.sh, anscheinend gerade der Renner bei github, so modifiziert, dass man damit das Ubuntu vom laufenden Odroid übernimmt, auch wenn er kompromittiert ist, alle Prozesse abwürgt, einen neuen fakeinit startet, einen neuen sshd mit neuen Keys, alles unmounted und remote neu alle Datenträger komplett neu flasht.

Hat gut funktioniert, da ihr das hier lesen könnt, das Playbook veröffentliche ich in den nächsten Tagen.

Achja:
Die Kosten für jede Überwachung steigen exponentiell mit der Diversität von Software und Hardware.
Der beste Garant für freie Kommunikation ist tatsächlich gerade die Vielfalt des Angebots.

Und für mich persönlich ist wegen meinem ADHS Ansible die wichtigste Neuerung in der IT seit fünfzehn Jahren. Ich muss alles nur noch einmal machen und kann mich auf Neues konzentrieren.
Ansible kompensiert so komplett meine Defizite!

Die ganze Hosting-Umgebung, also nginx mit php-fpm in chroots, ufw, sshd-hardening, postfix mit dovecot, Spamassassin, openvpn, wordpress, gnusocial, die Cert-Geschichte, DNSSEC, alle diese Dinge sind nun roles eines einziges Ansible-Playbooks, welches alle Domains und Konten einrichtet, den Sever vorher installiert, auch Software oder Eistellungen updatet, User hinzufügt oder löscht, genau wie E-Mail-Konten. Alle Backends, die ich früher über ein Jahrzehnt für einen ganzen Webhoster mühevoll von Hand gebaut habe, habe ich damit in zwei Wochen komplett nachgebaut.

Ansible ist der Wahnsinn.
Es erlaubt mir, *meine* Komplexität hoch zu drehen. Ich hatte noch nie eine so geile IT für mich. Der Aufwand wäre auf Dauer gar nicht zu bewältigen gewesen.
Die Krauter-Jobs für Sysadmins werden dadurch auch nach und nach verschwinden.

Mal angenommen, Du wuerdest das hier teilen wollen...

Related posts:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.