Mit Pluggable Authentication Modules (PAM) herum spielen. Wie in einem phrack 56 Artikel geschrieben wurde, ist das Schöne an PAM, dass »Ihrer Fantasie keine Grenzen gesetzt sind.« Das stimmt. Stellen Sie sich vor, Root kann sich nur mit einen Fingerabdruck oder Abtastung des Auges oder einer Kryptokarte einloggen (warum habe ich hier nur »oder« und nicht »und« gesagt?).
Faschistisches Protokollieren. Ich würde sagen, dass alles, was wir bisher über Protokollieren besprochen haben, unter »weiches Loggen« fällt. Wenn Sie echtes Protokollieren betreiben wollen, besorgen Sie sich einen Drucker mit Endlos-Papier und schicken ihm alle Protokolle. Hört sich lustig an, ist aber zuverlässig und kann nicht manipuliert oder entfernt werden.
CD-Distribution. Diese Idee ist sehr leicht zu realisieren und bewirkt ganz gute Sicherheit. Erstellen Sie eine abgesicherte Debian-Distribution mit passenden Firewall-Regeln. Erstellen Sie davon ein bootbares ISO-Image und brennen Sie es auf eine CD-ROM. Jetzt haben Sie eine nur lesbare Distribution mit etwa 600 MB Speicherplatz für Dienste. Stellen Sie lediglich sicher, dass alle Daten, die geschrieben werden sollen, übers Netz geschrieben werden. Für einen Eindringling ist es unmöglich, Schreibzugriff auf diesem System zu erhalten. Alle Änderungen, die ein Eindringling vornimmt, werden mit einem Neustart des Systems rückgängig gemacht.
Schalten Sie die Modul-Fähigkeiten des Kernels ab. Wenn Sie die Nutzung von Kernel-Modulen während der Kernel-Kompilierung abschalten, werden viele kernelbasierte Hintertüren nicht einsetzbar, da die meisten von ihnen darauf beruhen, modifizierte Kernel-Module zu installieren (siehe oben).
Protokollieren über ein serielles Kabel (von Gaby Schilders). So lange Server immer noch serielle Schnittstellen haben: Stellen Sie sich ein Protokollsystem für eine Anzahl von Servern vor. Es ist vom Netz abgeschnitten und mit den Servern über einen Multiplexer für serielle Schnittstellen (Cyclades oder ähnliches) verbunden. Jetzt sollen alle Ihre Server die Protokolle an ihre serielle Schnittstelle schicken, einfach nur hinschreiben. Die Protokollmaschine akzeptiert nur einfachen Text als Eingabe auf ihrer seriellen Schnittstelle und schreibt ihn lediglich in eine Protokolldatei. Schließen Sie einen CD- oder DVD-Brenner an. Brennen Sie die Protokolldatei, wenn sie die Größe des Mediums erreicht hat. Wenn es jetzt nur noch CD-Brenner mit automatischem Medien-Wechsel gäbe ... Nicht so dauerhaft gespeichert wie ein Ausdruck, aber mit dieser Methode kann man größere Mengen handhaben und die CD-ROMs nehmen nicht so viel Platz weg.
Ändern Sie die Dateiattribute mit chattr
(dem Tipps-HOWTO von Jim Dennis entnommen). Nachdem Sie Ihr System sauber installiert und konfiguriert haben, verwenden Sie das Programm chattr
mit dem Attribut +i
, um Dateien unveränderbar zu machen (die Datei kann nicht gelöscht, umbenannt, verlinkt oder beschrieben werden). Sie sollten dieses Attribut für alle Dateien in /bin
, /sbin/
, /usr/bin
, /usr/sbin
, /usr/lib
und den Kerneldateien in root. Sie können auch eine Kopie aller Dateien in /etc/
mit tar
oder dergleichen erstellen und das Archiv als unveränderbar kennzeichnen.
Mit dieser Vorgehensweise können Sie den Schaden zu begrenzen, den Sie anrichten können, wenn Sie als Root eingeloggt sind. Sie können nicht mehr Dateien mit einer fehlgeleiteten Umleitung überschreiben oder Ihr System durch ein fehlplatziertes Leerzeichen im Kommando rm -fr
unbenutzbar machen (Sie können aber Ihren Daten immer noch einigen Schaden zufügen – aber Ihre Bibliotheken und Programme sind sicherer).
Dies macht auch verschiedene Sicherheits- und Denial-of-Service (DoS) Exploits entweder unmöglich oder weitaus schwieriger (da viele von ihnen darauf beruhen, Dateien durch Aktionen eines SETUID-Programms zu überschreiben, das keinen frei wählbaren Shellbefehl zur Verfügung stellt.
Eine Unbequemlichkeit dieser Vorgehensweise macht sich bemerkbar, wenn Sie verschiedene Systemprogramme bauen und installieren. Auf der anderen Seite verhindert dies auch, dass make install
die Dateien überschreibt. Wenn Sie vergessen, das Makefile zu lesen, und die Dateien, die überschrieben werden sollen, mit chattr -i behandelt haben (und die Verzeichnisse, in denen Sie neue Dateien erstellen wollen), schlägt der make-Befehl fehl. Sie müssen nur das Kommando chattr
ausführen und make neu aufrufen. Sie können diese Gelegenheit gleich dazu benutzen, Ihre alten bin's und libs auszumisten und sie z.B. in ein .old/-Verzeichnis oder Tar-Archiv zu verschieben.
Beachten Sie, dass dies Sie auch daran hindert, die Pakete Ihres Systems zu aktualisieren, da die Dateien aus den Paketen nicht überschrieben werden können. Also sollten Sie vielleicht ein Skript oder einen anderen Mechanismus haben, der das immutable-Flag auf allen Dateien deaktiviert, bevor Sie ein apt-get update
ausführen.
Spielen Sie mit der UTP-Verkabelung herum. Schneiden Sie dazu zwei oder vier Kabel durch und stellen ein Kabel her, das nur Verkehr in eine Richtung zulässt. Verwenden Sie dann UDP-Pakete, um Informationen an die Zielmaschine zu schicken, die ein sicherer Protokollserver oder ein System zur Speicherung von Kreditkartennummern sein kann.