Dienstag, 24 Jan 2006

Warum sollte ich nach einer Kompromittierung meines Systems selbiges neu aufsetzen lassen?
Immer wieder sind Berichte erfolgreicher Angriffe zu lesen und immer wieder entspannt sich eine angeregte Diskussion über vernünftige Verhaltensweisen. Immer wieder gern genannt wird der Rat, “das komplette System neu aufsetzen” zu lassen. Allerdings erzeugt diese (vor allem im Zusammenhang mit root-Servern und den dazugehörigen Service-Prozessen) schwammige Formulierung immer wieder reichlich Verwirrung. Diese FAQ versucht, ein wenig Klarheit und Hintergrundwissen zu diesem Punkt zu vermitteln.

1. Was bedeutet “das komplette System neu aufsetzen”?
Das komplette System neu aufsetzen zu lassen bedeutet nichts weiter, als das System als solches neu zu installieren. Betroffen ist also zunächst einmal die Betriebssystemdistribution (Linux, BSD, Windows, etc.) und die installierten Anwendungen (phpBB, Apache, MySQL, etc.), nicht aber die eigentlichen Nutzdaten. Als Faustregel gilt, dass alles ausführbare frisch installiert werden muss.

Nicht betroffen sind also meistens die Nutzdaten wie etwa Kundendaten in einer Datenbank, Forenbeiträge, Bilddateien und dergleichen. Sehr wohl betroffen sind aber selbst erstellte Skripte, ohne Paktemanager (rpm, apt) installierte Tools, Utilities, usw. und alles, was durch einen direkten oder indirekten Aufruf Änderungen im Filesystem vornehmen kann.

In Bezug auf root-Server bedeutet das entweder, die Nutzdaten auf einem anderen System (zweiter Server, PC zu Hause o.ä.) zu sichern und dann entweder per Webinterface oder Kundendienst die Maschine neu aufsetzen zu lassen oder (wer’s kann) aus einem eventuell verfügbaren “Rescue-System” heraus die Kiste selber neu aufzusetzen (was u.U. die Prozedur wesentlich einfacher, aber auch langwieriger gestalten kann).

2. Warum sollte ich das machen, gibt es keinen einfacheren Weg?
Vorab: Nein, es gibt keinen einfacheren und dabei genauso zuverlässigen Weg.

Immer wieder wird auch gefragt, ob es denn ausreichen würde, einen entsprechenden “Scanner” über das System laufen zu lassen und die “infizierten” Dateien gegen “saubere” auszutauschen. Nun, das kann genügen, es muss aber nicht. Das Problem liegt darin, dass ein wie auch immer gearteter “Scanner” wissen muss, wonach er sucht. Neue oder dem “Scanner” unbekannte Angriffe bleiben unentdeckt, da verhält es sich genauso wie bei jedem Virenscanner.

Man müsste rein theoretisch jede einzelne Datei auf ihre Unversertheit überprüfen und dann auch noch erkennen, ob eventuell stattgefundene Manipulationen “rechtens” sind (geänderte, hinzugefügte Einträge in Konfigurationsdateien und so weiter) oder nicht. Das aber wäre derartig aufwändig, dass die Neuinstallation und die eventuell notwendige erneute Erstellung von Skripten u. dgl. drastisch aufwandsgünstiger ist.

3. Wie mache ich das, ich habe 200 TB an Daten und nur ein 9.6er Modem?
Für die Sicherung der Nutzdaten gibt es ein einfaches Prinzip. Die Nutzdaten “extern” speichern und nach der Neuinstallation von System und Anwendungen wieder einspielen. Wo die Nutzdaten abgelegt werden ist egal, sie dürfen nur nicht von der Neuinstallation gelöscht oder verändert werden! Hier ein paar Ideen:

PC zu Hause
Zweiter root-Server (ggf. schnell einen billigen dazunehmen, man braucht ja nur den Plattenplatz)
Plattenplatz auf einem oder mehreren “befreundeten” root-Servern
zweite Partition oder (wenn vorhanden) zweite Platte — ACHTUNG: hier darauf achten, dass die gesicherten Daten nicht durch die Neuinstallation gelöscht werden!

Es sollte also mit ein wenig Phantasie und notfalls etwas Fragen möglich sein, auch größere Datenbestände sicher “zwischenzulagern”, auch wenn die persönlichen Möglichkeiten es nur schwer oder garnicht ermöglichen sollten.

4. Wie kann ich diesen Aufwand zukünftig vermeiden?
Neben einer wirksamen (sic!) Absicherung des Systems bieten sich zunächst Vorgehensweisen wie etwa die Aufteilung von Partitionen nach Verwendungszweck (spezielle Partitionen nur für Nutzdaten, andere nur für Executables, weitere für die Systemdateien, usw.) an. So kann bei Beschädigungen des Systems selbiges neu aufgesetzt werden, ohne dass etwa die Nutzdaten davon betroffen wären. Bei der erweiterten Partitioinierung helfen so genannte Logical Volume Manager (LVM) wie etwa lvm oder evms2 für Linux oder vinum für BSD.

Außerdem bietet sich u.U. der Einsatz eines Host based Intrusion Detection System (HIDS; z.B. aide, tripwire, samhain, etc.) an. Derartige Systeme führen zur Erkennung von Datei-Manipulationen Datenbanken mit geeigneten Dateiinformationen (meist Prüfsummen) und können so sehr hilfreich bei der Wiederherstellung kompromittierter Systeme sein. Ein gut konfiguriertes und zuverlässig arbeitendes HIDS vorausgesetzt, kann dieses dabei helfen, hinreichend zuverlässig manipulierte Dateien zu ermitteln.

Allerdings ist ein gutes Verständnis der Arbeitsweise von HIDSen und weitreichende Kenntnisse der daraus entstehenden Konsequenzen unabdinglich für einen wirksamen Einsatz solcher Werkzeuge. Ein HIDS an sich stellt noch lange keine Garantie dar, wie alle anderen Werkzeuge dieser Art muss man Arbeitsweise und Wirkung sehr genau verstanden haben und dieses Wissen entsprechend in die jeweilige Konfiguration einfließen lassen.

Gruss Martin


Leave a Reply

»
«