Bitte denken Sie an die Heilige Dreifaltigkeit der Informationssicherheit:C (Vertraulichkeit), I (Integrität) und A (Verfügbarkeit). Wenn wir also über Konfigurationshärtung sprechen, müssen Sie die Technologie, mit der Sie arbeiten, die zu schützenden Informationen, die Art und Weise, wie die Informationen innerhalb der Organisation verwendet werden, und die Bedrohungen berücksichtigen. Anhand dieser und möglicherweise anderer Antworten können Sie beginnen zu bestimmen, welche der Mandanten am wichtigsten sind und worauf Sie sich konzentrieren sollten.
Auf Dateisystemebene interessieren Sie sich normalerweise am meisten für Integrität und Verfügbarkeit. Die Vertraulichkeit der Informationen sollte wahrscheinlich auf einer anderen Ebene gehandhabt werden, aber wie Sie unsere Dateisysteme anlegen und wie Sie sie verwenden, sollte sicherstellen, dass die Informationen sowohl vertrauenswürdig sind als auch immer verfügbar sind, wenn sie benötigt werden.
Eine Sache, die Sie beim Anordnen Ihrer Partitionen beachten sollten, sind Fehlermodi. Typischerweise hat diese Frage die Form:„Was passiert, wenn die Partition x voll wird?"
Was passiert, wenn Ihre Partition, auf der das Betriebssystem gespeichert ist, voll ist? Manchmal passieren seltsame Dinge, wenn /
Füllt auf. Manchmal hängt sich das System auf. Manchmal können keine neuen Anmeldesitzungen stattfinden. Manchmal weigert sich das System zu booten.
Von allen Fehlermodi ist dieser am schwierigsten genau zu charakterisieren, da sich seine Symptome am ehesten je nach Betriebssystem, Kernelversion, Konfiguration usw. ändern. Einige Dateisysteme, insbesondere die ext-Zeile, reservieren eine bestimmte Menge an Speicherplatz, wenn das Dateisystem geschaffen. Dieser reservierte Speicherplatz kann nur vom Root-Benutzer verwendet werden und soll es dem Systemadministrator ermöglichen, weiterhin zu arbeiten und Speicherplatz zu bereinigen.
Was passiert, wenn Ihre Partition, die Protokolle speichert, voll ist? Sie verlieren Überwachungs-/Berichtsdaten und werden manchmal von Angreifern verwendet, um ihre Aktivitäten zu verbergen. In einigen Fällen wird Ihr System neue Benutzer nicht authentifizieren, wenn es ihr Anmeldeereignis nicht aufzeichnen kann.
Was passiert auf einem RPM-basierten System, wenn /var
ist voll? Der Paketmanager installiert oder aktualisiert keine Pakete und kann, abhängig von Ihrer Konfiguration, unbemerkt fehlschlagen.
Das Füllen einer Partition ist einfach, besonders wenn ein Benutzer in der Lage ist, darauf zu schreiben. Führen Sie zum Spaß diesen Befehl aus und sehen Sie, wie schnell Sie eine ziemlich große Datei erstellen können:cat /dev/zero > zerofile
.
Es geht auch über das Füllen von Partitionen hinaus, wenn Sie Speicherorte auf verschiedenen Einhängepunkten platzieren, können Sie auch ihre Einhängeoptionen anpassen.
Was passiert, wenn /dev/
ist nicht mit noexec
gemountet ? Seit /dev
Es wird normalerweise davon ausgegangen, dass es vom Betriebssystem verwaltet wird und nur Geräte enthält, die häufig (und manchmal immer noch) zum Verbergen bösartiger Programme verwendet wurden. Lassen Sie noexec
weg ermöglicht es Ihnen, dort gespeicherte Binärdateien zu starten.
Aus all diesen und weiteren Gründen wird die Partitionierung in vielen Hardening-Leitfäden als einer der ersten auszuführenden Schritte behandelt. Wenn Sie einen neuen Server bauen, ist die Partitionierung der Festplatte fast genau die erste was Sie haben zu entscheiden und oft am schwierigsten später zu ändern. Es gibt eine Gruppe namens Center for Internet Security, die haufenweise einfach zu lesende Konfigurationsanleitungen erstellt. Sie können wahrscheinlich eine Anleitung für Ihr spezifisches Betriebssystem finden und alle Einzelheiten sehen, die sie möglicherweise sagen.
Wenn wir uns RedHat Enterprise Linux 6 ansehen, ist das empfohlene Partitionierungsschema folgendes:
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
Das Prinzip hinter all diesen Änderungen besteht darin, zu verhindern, dass sie sich gegenseitig beeinflussen, und/oder einzuschränken, was auf einer bestimmten Partition getan werden kann. Nehmen Sie die Optionen für /tmp
zum Beispiel. Das bedeutet, dass dort keine Geräteknoten erstellt werden können, keine Programme von dort ausgeführt werden können und das set-uid-Bit auf nichts gesetzt werden kann. Von Natur aus /tmp
ist fast immer weltweit beschreibbar und ist oft eine spezielle Art von Dateisystem, das nur im Speicher existiert. Dies bedeutet, dass ein Angreifer es als einfachen Ausgangspunkt verwenden könnte, um bösartigen Code zu löschen und auszuführen, und dann durch einen Absturz (oder einfachen Neustart) des Systems alle Beweise zu löschen. Da die Funktionalität von /tmp
keine dieser Funktionen benötigt, können wir die Funktionen einfach deaktivieren und diese Situation verhindern.
Die Protokollspeicherplätze, /var/log
und /var/log/audit
werden abgeschnitten, um sie vor der Erschöpfung der Ressourcen zu schützen. Darüber hinaus kann auditd einige spezielle Dinge ausführen (normalerweise in Umgebungen mit höherer Sicherheit), wenn sein Protokollspeicher beginnt, sich zu füllen. Durch Platzieren auf seiner Partition funktioniert diese Ressourcenerkennung besser.
Um ausführlicher zu sein, zitieren Sie mount(8)
, das sind genau die oben verwendeten Optionen:
noexec Lassen Sie keine direkte Ausführung von Binärdateien auf dem gemounteten Dateisystem zu. (Bis vor kurzem war es trotzdem möglich, Binärdateien mit einem Befehl wie /lib/ld*.so/mnt/binary auszuführen. Dieser Trick schlägt seit Linux 2.4.25 / 2.6.0 fehl.)
nodev Interpretieren Sie keine Zeichen oder blockieren Sie keine speziellen Geräte im Dateisystem.
nosuid Set-User-Identifier- oder Set-Group-Identifier-Bits dürfen nicht wirksam werden. (Dies scheint sicher zu sein, ist aber tatsächlich ziemlich unsicher, wenn Sie suidperl(1) installiert haben.)
Aus Sicherheitssicht sind dies sehr gute Optionen, die Sie kennen sollten, da Sie damit das Dateisystem selbst schützen können. In einer hochsicheren Umgebung können Sie sogar den noexec
hinzufügen Option auf /home
. Es wird es Ihrem Standardbenutzer erschweren, Shell-Skripte zum Verarbeiten von Daten zu schreiben, beispielsweise zum Analysieren von Protokolldateien, aber es wird ihn auch daran hindern, eine Binärdatei auszuführen, die Berechtigungen erhöht.
Denken Sie auch daran, dass das standardmäßige Home-Verzeichnis des Root-Benutzers /root
ist . Das heißt, es wird in /
sein Dateisystem, nicht in /home
.
Wie viel Sie jeder Partition genau geben, kann je nach Systemauslastung stark variieren. Ein typischer Server, den ich verwaltet habe, erfordert selten eine persönliche Interaktion und als solche die /home
Die Partition muss überhaupt nicht sehr groß sein. Gleiches gilt für /var
da es dazu neigt, eher flüchtige Daten zu speichern, die häufig erstellt und gelöscht werden. Ein Webserver verwendet jedoch normalerweise /var/www
als seine Spielwiese, was bedeutet, dass sich das entweder ebenfalls auf einer separaten Partition befinden muss oder /var/
muss groß gemacht werden.
In der Vergangenheit habe ich Folgendes als Grundlage empfohlen.
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
Diese müssen entsprechend dem Zweck des Systems und dem Betrieb Ihrer Umgebung überprüft und angepasst werden. Ich würde auch empfehlen, LVM zu verwenden und die gesamte Festplatte nicht zuzuweisen. Dadurch können Sie problemlos Partitionen vergrößern oder hinzufügen, wenn solche Dinge erforderlich sind.
Die Aufteilung in eine oder mehrere Partitionen ist eigentlich kein Sicherheitsproblem sondern von Zuverlässigkeit . Die Idee ist, dass wenn eine Ihrer Partitionen abgestürzt ist, Sie den Inhalt dieser verlieren Partition, aber die anderen Partitionen sind in Ordnung. Auch wenn Sie diese Partition füllen, sind andere Partitionen nicht betroffen. Jede Partition kann ihr eigenes Dateisystem haben, und nicht alle Arten von Dateisystemen sind in Bezug auf die Leistung in verschiedenen Kontexten gleichwertig (obwohl die meisten Dateisysteme in den meisten Kontexten meistens so gut wie die anderen sind). Auf manchen PCs kann der Boot-Vorgang aufgrund historischer Besonderheiten dieser Architektur, die zu erschreckend sind, um sie hier in Erinnerung zu rufen, Schwierigkeiten beim Zugriff über die ersten paar Gigabyte der Festplatte haben; also /boot
ist oft besser als separate Partition mit begrenzter Größe eingerichtet und befindet sich zuerst auf der Festplatte.
Wenn Sie eine Verschlüsselung auf Partitionsebene anwenden möchten, kann es zu Problemen kommen, wenn Sie zu viel verschlüsseln – nämlich der Code, der die Entschlüsselung durchführt, muss sich außerhalb befinden der besagten Partition. Dies hängt stark vom tatsächlichen Verschlüsselungsprodukt ab (einige können den Entschlüsselungscode in den Bootloader einbetten).
Beachten Sie, dass das Ganze umso unflexibler wird, je mehr Sie Ihre Festplatte in Partitionen aufteilen. Wenn eine Partition voll ist, ist sie voll und bleibt es auch, selbst wenn andere Partitionen freien Speicherplatz haben (LVM kann helfen, damit umzugehen, also sollten Sie vielleicht "Ja" sagen, wenn das Installationsprogramm des Betriebssystems fragt, ob Sie LVM verwenden möchten) . Je mehr Partitionen Sie erstellen, desto wahrscheinlicher und schwerwiegender wird dieses Problem.
Der einfache und sichere Weg besteht darin, das Installationsprogramm des Betriebssystems die Partitionen nach eigenem Ermessen auswählen zu lassen. Ändern Sie die Partitionsgröße nicht weiter, bis Sie genaue Kenntnisse und Erfahrungen darüber haben, was dies mit sich bringt. Vergessen Sie nicht, regelmäßige Backups zu erstellen. Es wird erwartet, dass Sie nach ein paar Monaten Ihr Betriebssystem neu installieren möchten, um es „richtig zu machen“, und das ist nicht unbedingt eine schlechte Idee, also schwitzen Sie nicht. Dies ist ein Lerntool, kein Server, der in Produktion gehen wird.
Ich würde dies bisher anders sehen als die anderen Responder:Wenn Sie sich eine Reihe von Exploits ansehen, sind alle Bedrohungen möglich, und das System in einer Sandbox zu betreiben, wo Sie dies so weit wie möglich tun, scheint eine nützliche Vorsichtsmaßnahme zu sein. Xen ist eine einfache Möglichkeit, dies zu tun. Es kann Festplatten-Images auf einem anderen Dateisystem verwenden, aber wenn Sie wissen, dass Sie es verwenden werden, würde ich vorschlagen, separate Festplattenpartitionen zu belassen (und sicherzustellen, dass sie nicht automatisch auf Ihrem Dom0 gemountet werden).
Ich weiß nicht, wie gut Kali als Xen Dom0 funktioniert. Ubuntu scheint zumindest Probleme zu haben. Sie könnten erwägen, Platz für XenServer oder einen anderen spezialisierten Xen Dom0-Build zu lassen. [Bearbeiten:Ich bin mir nicht sicher, wie Netbooks heutzutage aussehen, aber ich vermute, dass XenServer nicht wirklich auf sie abzielt ... Vielleicht eine andere einfachere Distribution, die gut mit Xen funktioniert, wie Dom0. Sie können möglicherweise eine Kali-Installation einrichten, die entweder eigenständig oder als DomU ausgeführt wird, wenn das Ansehen von Exploits eine weniger häufige Aufgabe ist.]
Auf BSD-Systemen habe ich von Härtungsmethoden gehört, die eine Partitionierung beinhalten, um so viel wie möglich schreibgeschützt einzuhängen und unveränderliche Flags zu verwenden. Ich würde annehmen, dass es zumindest einige Linux-Systeme gibt, auf denen ein ähnliches Setup möglich ist, aber es sieht so aus, als ob Kali auf Debian basiert, und ich habe den Eindruck, dass Sie das unter Debian nicht wirklich tun können [Bearbeiten:Es sei denn, Sie mounten ein beschreibbares FS über es, was im Laufe der Zeit immer noch umständlich zu pflegen wäre]. Auf jeden Fall würde ich dies nicht für eine Allzweckmaschine vorschlagen und es nur dann ansprechen, wenn Sie allgemeiner an allen Möglichkeiten der Partitionierung interessiert sind. Platzieren Sie die Bedrohungen für Ihren Zweck auf einem System, das Sie leicht löschen und neu erstellen können.