Antipatterns

Felix von Leitner
An anti-pattern is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive.

Motto des Vortrags

[Denkt euch hier ein Foto von Mark Twain hin]

The man who does not read has no advantage over the man who cannot read.
--Mark Twain

Struktur des Vortrags

Problem

Wir haben ein Problem

Idee

Seal Team 6 hackt schnell was

Umsetzung

Java

Effekt

Jetzt haben wir eine ProblemFactory
[Denkt euch hier als Illustration einen Screenshot hiervon]

Mein Hacker-Weltbild

[Visuelle Folie, zeigte Charakter-Portraits aus der Disciples-Serie]

Squire - Knight - Imperial Knight - Paladin

Idee: Höheres Level = Stärkere Unit = Alte Figur, graue Haare.
Noch besser sieht man das bei den Zauberern:

Apprentice - Mage - Elementalist - Wizard - White Wizard

Woran erkennt man gute Hacker?

[Visuelle Folie, denkt euch ein tolles Foto von Dennis Ritchie, Ken Thompson und Brian Kernighan, z.B. von hier oder hier. Alle drei haben rauschende Bärte]

[Die nächste Folie hat dann Fotos von Richard Stallman und Alan Cox]

Mein erster Admin-Job

Meine Erwartungshaltung

[Denkt euch ein tolles Foto des turkmenischen Ältestenrats, von hier]
Ich komm so rein, ...
Niemand mit Bart weit und breit!
Der Dienstälteste wechselt bloß Tapes
Keine Prüfung, kein Test, nichts
Die gaben mir einfach so
das root-Passwort
[Visuelle Slide; Foto von Johnny Depp als Captain Jack Sparrow, sehr verwirrter Gesichtsausdruck]

Damals habe ich gelernt...

Admin wird man nicht am Ende, weil man Programmieren, Management, Integration, Risikobewertung, Krisenbewältigung und Psychologie gelernt hat

Admin wird man am Anfang, weil man mit wenig Gehalt zufrieden ist

Zwei Arten von Admin

  1. Will Probleme lösen
  2. Will Probleme verwalten

Zwei Arten von Admin

Der frische Admin: Der alte Admin:

Zwei Arten von Admin

[Gemeint ist Dienstalter, nicht biologisches Alter. Entweder der Job verändert einen und/oder die jungen Idealisten ziehen alle weiter und die konservativen Zyniker bleiben da]

Problem

Das müsste mal jemand automatisieren

Zu spät automatisiert

„Ach das geht manuell schnell genug“

Effekt

Wird jahrelang manuell gemacht
+ Tippfehler + Zeitverschwendung

Zu früh automatisiert

„Ich mach das mal schnell“

Effekt

Problem tritt nie wieder auf

(Quelle: XKCD 974)

Automatisierung: Normalfall

Idee

Hold my beer!

Umsetzung

Admin verschwindet für 6 Wochen
in der Versenkung

Effekt

Löst das Problem nicht

Effekt

Aber „löst“ 23 andere
hochinteressante Probleme!

Effekt

Setzt frühbabylonische Artefakte
aus /usr/ucb voraus

Effekt

Macht mehr Ärger als es einspart
(Quelle: XKCD 1319)

Effekt

Amortisiert sich ca. 2370
[Denkt euch hier ein Bild der USS Enterprise D hin]

Effekt

Bis dahin bleibt das Problem liegen
Und legt Eier
[Bild von Ripley in Aliens zwischen den Alien-Eiern]

Effekt

Wichtige Geschäftsprozesse stauen sich
[Bild: China National Highway 110 traffic jam,
z.B. von hier]

Problem

Software mit bekannten Problemen

Idee

Patches vom Hersteller!

Umsetzung

Praktikant klickt mal beim Hersteller

Effekt

Unübersichtliche Herstellerseiten

Effekt

Advisories hinter Paywall /
Nur gegen NDA /
Benchmarkverbot

Effekt

Unbrauchbare Patch-Beschreibungen

Umsetzung

Praktikant liest bugtraq/full-disclosure

Effekt

Komplettausfall des Praktikanten
Kommt zu nichts anderem mehr

Effekt

Praktikant wusste nicht,
was wir alles einsetzen

Problem

Praktikant findet Patch

Idee

Einspielen!

Umsetzung

Alter Admin steht im Weg rum

Umsetzung

„Erst ein paar Wochen warten,
ob der Patch gut ist!“

Effekt

Systeme haben alle bekannten
Sicherheitslücken der letzten Monate

Effekt

[Denkt euch hier Die Toy-Story-Szene mit Woody und Buzz Lightyear, Schriftzug „Ransomware! Ransomware Everywhere!“]

Problem

Überall Malware!

Idee

Schlangenöl!
[Visualisierung: Schlechte Schlangenabwehr]

Umsetzung

Je Bullshit-Markting, desto installieren!
[Visualisierung: hier oder hier]

Effekt

Core 1: 100% Symantec,
versucht McAfee auszuschalten

Effekt

Core 2: 100% McAfee,
loggt abgewehrte Angriffe

Effekt

Tab öffnen im Browser dauert 2 Minuten

Effekt

Task Manager starten dauert auch 2 Minuten

Effekt

Platte voll mit AV-Komponenten,
die sich gegenseitig in die
Quarantäne geschoben haben

Effekt

Riesige Monitoring-Systeme
Logs ungelesen nach /dev/null
Heizlüfter-Appliances

Problem

Frisches Service Pack draußen!

Idee

Einspielen!

Umsetzung

Wir spielen nur gerade Nummern ein

Effekt

[Visualisierung: Zerg rush]

Kurzes Intermezzo

„Wir spielen nur Patches ein,
die wir wirklich brauchen!“

1. Kannst du gar nicht beurteilen

2. „Silent Patches“

Hersteller verschweigt in den
Patch Notes selbst gefundene Lücken

3. Testet der Hersteller

… unter der Annahme,
dass alle vorherigen Patches
eingespielt wurden!

Problem

Neue Softwareversion ist draußen!

Idee

Einspielen!

Umsetzung

Nein. Wir trauen keinen .0-Versionen

Effekt

gcc überspringt jetzt .0
Erstes Release heißt .1

Problem

Auf dem Server läuft unsichere Antiquität

Idee

Updaten!

Umsetzung

Hochpatchen!

Effekt

Snowflake-Systeme!
Jedes subtil anders!

Problem

Auf dem Server läuft alter Scheiß

Idee

Updaten!

Umsetzung

Nein! Alter Admin steht im Weg!

Effekt

„Können wir nicht patchen“
„Sonst verlieren wir den Support“

Effekt

„Ist nicht alt, ist stable!“

Effekt

Debian "Hammurabi I"
Ubuntu "Recalcitrant Ramses" VLTS

Effekt

Wir können SSL2 nicht abschalten!
Auf RAMSVAX läuft noch OpenSSL 0.9.7g!

Anmerkung

Das ist nicht stable, das ist known bad!

Anmerkung

Neue Releases fallen nicht vom Himmel!
Es gab einen guten Grund

Problem

Umgebung zu restriktiv

Idee

User wollen BYOD!

Umsetzung

„Dein Tablet unterliegt nicht unserem
Device Management, also darfst du
es nicht benutzen“

Effekt

Chef forwarded seine Mail zu Yahoo

Problem

Das funktioniert hier alles nicht!

Idee

„$PRODUKT ist Scheiße!“

Idee

„$HERSTELLER ist Scheiße!!“

Idee

„Compilerbug!!!“

Idee

„Kernelbug!!!!“

Umsetzung

Kollege guckt kurz drauf

Effekt

„Hier fehlt ein Semikolon“

Problem

Welche Hosts sind online?

Idee

Monitoring! Statistik!

Umsetzung

Liste: Die Hosts, die gerade mit Datenbank reden!

Effekt

Überraschung! 100% der Hosts anwesend!

Problem

Was, wenn was kaputt geht?

Idee

Backup!

Umsetzung

Tarball in die Cloud

Effekt

Tarball enthält Configs mit Credentials

Effekt

und die persönlichen Daten aller User

Effekt

und die TLS-Keys

Effekt

und die Plattenkrypto-Recovery-Keys

Effekt

World Readable unverschlüsselt in der Cloud

Effekt

Jemand findet es mit Shodan
Geht völlig in der Masse unter
[Visualisierung: Get out of jail free-Karte von Monopoly]

Problem

Telefonie ist zu teuer!

Idee

VoIP!

Umsetzung

Am Switch sind noch Ports frei

Effekt

Über VoIP-Buchse kommt man
in alle Netze der Firma rein

Problem

Integration benötigt

Idee

Skript-Sprachen!

Umsetzung

Admin hackt schnell was
[Visualisierung: XKCD 208]

Effekt

Keinerlei Qualitätsansprüche

Effekt

Integration viel schlimmer als Komponenten

Effekt

„Works for me“

Effekt

Verliert sofort Interesse,
tut andere Dinge
[Visualisierung: Obama Mike Drop]

Problem

Alles reagiert furchtbar zäh

Idee

Monitoring, wieso das so lahm ist!

Umsetzung

[Visualisierung: dieses tolle Bild]

Umsetzung

Plus 7 Agenten, ein NIDS und ein SIEM!
Diagnose-Tool in Java
*swap*

Effekt

Jetzt noch viel langsamer

Problem

Outgesourcetes RZ macht nur Ärger

Idee

Wir gehen in die Cloud!

Umsetzung

„Wenn du deine Daten in die Cloud tust,
sind es nicht mehr deine Daten!“

Effekt

„Schlimmer kann es nicht werden“
„Die reagieren wenigstens auf unsere Tickets“

Problem

Fefe macht Pentest

Idee

„Nimm das Staging-System“

Umsetzung

Dev loggt sich in Produktion ein,
editiert in Dateien herum

Effekt

„Konnten nicht im Staging testen“
„Da ist die nächste Version drauf“
„Für den Pentest“

Problem

Security von Grund auf verkackt

Idee

Wir brauchen ein Security-Team!

Umsetzung

Security-Team, CERT, 24/7 Ops
[Visualisierung: Armageddon-Heldenteam]

Effekt

„Oh gut, nicht mehr mein Problem“
*weiter verkack*

Problem

Update ausrollen!

Umsetzung

for i in $HOSTS; do ssh $i …

Problem

„Hat mal jemand ne aktuelle Host-Liste?“

Idee

Steht bestimmt im Wiki

Umsetzung

$ firefox wiki

Problem

wiki: Connection refused

Umsetzung

$ ssh wiki

Problem

Drei Seiten Perl-Fehlermeldung.
Freidrehener Watchdog-Auto-Restart frisst 100% CPU

Umsetzung

$ sudo CPAN -i CGI::Carp

Effekt

Wiki ist wieder da!

Problem

Hostliste: Stand 8/1997

Idee

Ich pinge einfach alle!

Umsetzung

$ for i in `seq 1 254`; do
if ping -c1 10.0.0.$i ; then
echo 10.0.0.$i >> hosts; fi; done

Effekt

seq: command not found
(seq ist Linux-spezifisch)

Umsetzung

$ for i in {1..254}; do
if ping -c1 10.0.0.$i ; then
echo 10.0.0.$i >> hosts; fi; done

Anmerkung

ETA: 30 Minuten *spinnenweb*

Anmerkung

Ich habe mir daher mal ein pingnet(1) gehackt

# pingnet -c1 127.0.0.1 127.0.0.10

PING 127.0.0.1 till 127.0.0.10 (127.0.0.1 till 127.0.0.10): 24 octets
44 octets from 127.0.0.1: icmp_seq=0 ttl=64 time=1.3 ms
44 octets from 127.0.0.2: icmp_seq=0 ttl=64 time=1.7 ms
44 octets from 127.0.0.3: icmp_seq=0 ttl=64 time=2.1 ms
44 octets from 127.0.0.4: icmp_seq=0 ttl=64 time=2.5 ms
44 octets from 127.0.0.5: icmp_seq=0 ttl=64 time=2.9 ms
[...]

--- 127.0.0.1 till 127.0.0.10 ping statistics ---
1x10 packets sent, 10 hosts replied.
    

Problem

Wie kriegen wir die IPs da raus?

Idee

| grep octet | sed
's/.*from \([0-9]*.[0-9]*.[0-9]*.[0-9]*\):.*/\1/'

Idee

| awk -F'[: ]' '/octet/ { print $4 }'

Idee

Kann das nicht unser HP Openview?
[Visualisierung: Skelett vor Terminal]

Antipattern 1: Monster-Truck Modus

-> Desolate Zustände bleiben erhalten, Flickschusterei.
[Visualisierung: Monster Truck fährt über Autos drüber]

Antipattern 1a: Not My Job

-> Fast alles bleibt kaputt. [Visualisierung: Not My Job Award]

Antipattern 1b: Organisches Wachstum

[Visualisierung: Lösungsorientierte Elektrotechnik]

Antipattern 2: Ewiger Feuerwehrmodus

[Visualisierung: Kosteneffiziente Fernmeldetechnik]

Antipattern 3: Keine Toolbeherrschung

Antipattern 3: Keine Toolbeherrschung

Antipattern: „gemanaged“ vs „gelöst“

[Visualisierung: Lemmings-Screenshot]

Antipattern: Zuständigkeiten-Pingpong

6 Monate später:

Antipattern: Zuständigkeiten-Monopoly

Niemand hat genug Daten für Korrelationen.

Außerdem sind die Uhrzeiten nicht synchron.

Antipattern: Cloud

Keiner hat auch nur einen der Schritte gesehen oder geprüft!

„Was rollen wir da eigentlich gerade aus?“

Antipattern: Security-Theater

[Visualisierung: TSA-Regelung zu Snow Globes]

Antipattern: Security-Theater

[Visualisierung: Irrer mit Kettensäge]

Anekdote

Eines der Highlights meiner Karriere:
Monitoring für ein SIEM bauen

Antipattern: „Hold my beer“

Oder: Admin tut Binary aufs System, verlegt Quellcode.

[Visualisierung: Navajo Code Talkers]

Antipattern: „Ich war's nicht“

[Visualisierung: Harrison Ford in 'Who? Me?!'-Pose]

Antipattern: Ist doch noch gut!

Egal! Weiterhumpeln statt Neuinstallation!

[Visualisierung: Dieses tolle Video]

Antipattern: Da gibt es eine App!

Da gibt es doch bestimmt ein Tool für!

[Visualisierung: Lauter Screenshots von schattigen „Systemoptimierern“ und „Malware-Entfernern“]

[Visualisierung: diese Forums-Anfrage für Leute, die glauben, das beträfe nur Windows]

Ein paar allgemeine Ratschläge

Ratschläge fürs Management

Angemessen bezahlen!

Ratschläge fürs Management

Gebt vor, was getan wird, nicht wie!

Ratschläge für Admins

Dann nutzt die Zeit, um coole Dinge zu lernen!

Ratschläge für Alle

Tor 1: Anderer ist gleich gut. Alles super. Motivation weg.

Tor 2: Anderer ist schlechter. Alles super. Motivation weg.

Tor 3: Anderer ist besser. Selbstzweifel. Motivation weg.

Danke! Fragen?