Eine Sache, die Sie beim Layout Ihrer Partitionen beachten sollten, sind Fehlermodi. In der Regel lautet diese Frage wie folgt: "Was passiert, wenn Partition x voll ist?" Liebste voretaq7 brachte die Situation mit einer vollen /
Anzahl von schwer zu diagnostizierenden Problemen. Schauen wir uns einige spezifischere Situationen an.
Was passiert, wenn Ihre Partition, in der Protokolle gespeichert sind, voll ist? Sie verlieren Überwachungs- / Berichtsdaten und werden manchmal von Angreifern verwendet, um ihre Aktivitäten zu verbergen. In einigen Fällen authentifiziert Ihr System neue Benutzer nicht, wenn es ihr Anmeldeereignis nicht aufzeichnen kann.
Was passiert auf einem RPM-basierten System, wenn /var
es voll ist? Der Paketmanager installiert oder aktualisiert keine Pakete und schlägt je nach Konfiguration möglicherweise unbeaufsichtigt fehl.
Das Auffüllen einer Partition ist besonders dann einfach, wenn ein Benutzer in der Lage ist, darauf zu schreiben. Für Spaß, führen Sie diesen Befehl und sehen , wie schnell man eine ziemlich große Datei machen: cat /dev/zero > zerofile
.
Es geht auch über das Auffüllen von Partitionen hinaus. Wenn Sie Positionen an verschiedenen Einhängepunkten platzieren, können Sie auch deren Einhängeoptionen anpassen.
Was passiert, wenn /dev/
nicht mit gemountet wird noexec
? Da /dev
davon ausgegangen wird, dass es normalerweise vom Betriebssystem verwaltet wird und nur Geräte enthält, wurde es häufig (und wird manchmal immer noch verwendet), um schädliche Programme auszublenden. Wenn noexec
Sie diese Option deaktivieren, können Sie die dort gespeicherten Binärdateien starten.
Aus all diesen und weiteren Gründen wird in vielen Härtungsanleitungen die Partitionierung als einer der ersten auszuführenden Schritte erörtert. Wenn Sie einen neuen Server erstellen, ist die Partitionierung der Festplatte fast genau das erste, worüber Sie sich entscheiden müssen, und oftmals das schwierigste, das Sie später ändern können. Es gibt eine Gruppe mit dem Namen " Center for Internet Security" , die zahlreiche leicht lesbare Konfigurationshandbücher erstellt. Sie können wahrscheinlich eine Anleitung für Ihr bestimmtes Betriebssystem finden und alle Details sehen, die dort stehen.
Wenn wir uns RedHat Enterprise Linux 6 ansehen, lautet das empfohlene Partitionsschema wie folgt:
# 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 zu begrenzen, was auf einer bestimmten Partition getan werden kann. Nehmen Sie /tmp
zum Beispiel die Optionen . Das heißt, dass dort keine Geräteknoten erstellt werden können, von dort aus keine Programme ausgeführt werden können und das set-uid-Bit für nichts gesetzt werden kann. Es ist von Natur aus /tmp
fast immer von der Welt beschreibbar und oft eine spezielle Art von Dateisystem, das nur im Speicher vorhanden ist. Dies bedeutet, dass ein Angreifer es als einfachen Staging-Punkt verwenden könnte, um bösartigen Code zu löschen und auszuführen. Wenn das System dann abstürzt (oder einfach neu startet), werden alle Beweise gelöscht. Da die Funktionalität von /tmp
keine dieser Funktionen erfordert, können wir die Funktionen leicht deaktivieren und diese Situation verhindern.
Die Protokollspeicherorte /var/log
und /var/log/audit
-bereiche sind abgetrennt, um sie vor Erschöpfung der Ressourcen zu schützen. Darüber hinaus kann auditd einige spezielle Aufgaben ausführen (normalerweise in Umgebungen mit höherer Sicherheit), wenn sich der Protokollspeicher zu füllen beginnt. Durch Platzieren auf der Partition wird die Ressourcenerkennung verbessert.
Um genauer zu sein und zu zitieren mount(8)
, genau das sind die oben verwendeten Optionen:
noexec Ermöglicht keine direkte Ausführung von Binärdateien auf dem bereitgestellten Dateisystem. (Bis vor kurzem war es ohnehin 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 Interpretiert keine Zeichen oder blockiert keine speziellen Geräte im Dateisystem.
nosuid Lassen Sie nicht zu, dass die Bits set-user-identifier oder set-group-identifier wirksam werden. (Dies scheint sicher zu sein, ist aber in der Tat ziemlich unsicher, wenn Sie suidperl (1) installiert haben.)
Unter Sicherheitsaspekten sind dies sehr gute Optionen, da Sie damit Schutzmaßnahmen für das Dateisystem selbst durchführen können. In einer hochsicheren Umgebung können Sie sogar die noexec
Option hinzufügen /home
. Dies erschwert Ihrem Standardbenutzer das Schreiben von Shell-Skripten zur Datenverarbeitung, beispielsweise zum Analysieren von Protokolldateien, verhindert jedoch auch, dass er eine Binärdatei ausführt, die die Berechtigungen erhöht.
Beachten Sie auch, dass das Standard-Ausgangsverzeichnis des Root-Benutzers lautet /root
. Dies bedeutet, dass es sich im /
Dateisystem befindet, nicht in /home
.
Wie viel Sie genau für jede Partition vergeben, hängt stark von der Systemauslastung ab. Ein typischer Server, den ich verwaltet habe, erfordert selten eine Interaktion mit einer Person. /home
Daher muss die Partition überhaupt nicht sehr groß sein. Dies gilt auch, /var
da darin eher kurzlebige Daten gespeichert werden, die häufig erstellt und gelöscht werden. Ein Webserver wird jedoch in der Regel /var/www
als Spielwiese verwendet. Dies bedeutet, dass sich dieser entweder auch auf einer separaten Partition befinden muss oder /var/
dass er groß sein muss.
In der Vergangenheit habe ich Folgendes als Basis 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 überprüft und an den Zweck des Systems und die Funktionsweise Ihrer Umgebung angepasst werden. Ich würde auch empfehlen, LVM zu verwenden und nicht die gesamte Festplatte zuzuweisen. Auf diese Weise können Sie Partitionen problemlos erweitern oder hinzufügen, wenn dies erforderlich ist.