Frage:
Der sicherste Weg, um Linux zu partitionieren?
DCIndieDev
2013-07-12 01:18:16 UTC
view on stackexchange narkive permalink

Ich habe kürzlich ein Netbook zum Spielen erworben und möchte Kali Linux installieren, damit ich etwas über Netzwerksicherheit lernen und die Entwicklung ausnutzen kann. Ich möchte dies nutzen, um so viel wie möglich über Sicherheit zu lernen.

Wie lässt sich eine Linux-Box am besten so partitionieren, dass sie einem Sicherheitsrisiko am besten widersteht? Ist eine einzelne Partition, die alle Ordner unter Linux enthält, wirklich so schlecht?

Zusätzliche Punkte, wenn Sie auf Details zu den möglichen Bedrohungen eingehen können. Ich möchte so viel wie möglich lernen.

Ich kann es kaum erwarten zu sehen, wie Sie die versprochenen Extrapunkte verteilen möchten. Ich gebe Ihnen eine +1 und hoffe, dass dies zu einem Kopfgeld führt. Sie haben es geschafft, mindestens ein paar gute Antworten zu sammeln, die sich lohnen, auch wenn die Frage eher vage ist.
Nur eine Partition auf schreibgeschützten physischen Medien.
Sechs antworten:
Scott Pack
2013-07-12 05:21:17 UTC
view on stackexchange narkive permalink

Bitte beachten Sie 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 berücksichtigen, mit der Sie arbeiten, die zu schützenden Informationen, die Verwendung der Informationen innerhalb des Unternehmens und die Bedrohungen. Anhand dieser und möglicherweise anderer Antworten können Sie feststellen, 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 behandelt werden. Wie Sie jedoch Ihre Dateisysteme verlegen und wie Sie sie verwenden, sollte sicherstellen, dass die Informationen sowohl vertrauenswürdig als auch immer verfügbar sind, wenn sie benötigt werden.

Eine Sache, die Sie beim Layout Ihrer Partitionen beachten sollten, sind Fehlermodi. Normalerweise hat diese Frage die Form: "Was passiert, wenn die Partition x voll ist?"

Was passiert, wenn Ihre Partition, auf der das Betriebssystem gespeichert ist, voll ist? Seltsame Dinge passieren manchmal, wenn / voll ist. Manchmal hängt das System. Manchmal können keine neuen Anmeldesitzungen stattfinden. Manchmal weigert sich das System zu booten.

Von allen Fehlermodi ist dieser am schwierigsten zu charakterisieren, da sich seine Symptome je nach Betriebssystem, Kernelversion, Konfiguration usw. Am wahrscheinlichsten ändern Einige Dateisysteme, insbesondere die ext-Zeile, reservieren beim Erstellen des Dateisystems einen bestimmten Speicherplatz. Dieser reservierte Speicherplatz kann nur vom Root-Benutzer verwendet werden und soll es dem Systemadministrator ermöglichen, weiterhin Speicherplatz zu betreiben und zu bereinigen.

Was passiert, wenn Ihre Partitionsspeicherprotokolle voll sind? Sie verlieren Prüfungs- / Berichtsdaten und werden manchmal von Angreifern verwendet, um ihre Aktivitäten zu verbergen. In einigen Fällen authentifiziert Ihr System keine neuen Benutzer, wenn es ihr Anmeldeereignis nicht aufzeichnen kann.

Was passiert auf einem RPM-basierten System, wenn / var voll ist? Der Paketmanager installiert oder aktualisiert keine Pakete und kann dies je nach Konfiguration tun Fehler im Hintergrund.

Das Auffüllen einer Partition ist einfach, insbesondere wenn ein Benutzer in der Lage ist, darauf zu schreiben. Führen Sie diesen Befehl zum Spaß aus und sehen Sie, wie schnell Sie eine ziemlich große Datei erstellen können: cat / dev / zero > zerofile .

Es geht auch über das Auffüllen von Partitionen hinaus, wenn Wenn Sie Positionen an verschiedenen Einhängepunkten platzieren, können Sie auch deren Einhängeoptionen anpassen.

Was passiert, wenn / dev / nicht mit noexec eingehängt wird ? Da davon ausgegangen wird, dass / dev normalerweise vom Betriebssystem verwaltet wird und nur Geräte enthält, wurde es häufig (und manchmal immer noch) zum Ausblenden von Schadprogrammen verwendet. Wenn Sie noexec weglassen, können Sie dort gespeicherte Binärdateien starten.

Aus all diesen und weiteren Gründen wird in vielen Härtungshandbüchern die Partitionierung als einer der ersten Schritte dazu erläutert durchgeführt werden. Wenn Sie einen neuen Server erstellen, ist die Partitionierung der Festplatte fast genau das erste , über das Sie entscheiden müssen und häufig das schwierigste, das Sie später ändern können . Es gibt eine Gruppe namens Center for Internet Security, die einfach zu lesende Konfigurationshandbücher 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, lautet das empfohlene Partitionierungsschema:

  # Einhängepunkt Einhängeoptionen / tmp nodev, nosuid, noexec / var / var / tmp bind (/ tmp) / var / log / var / log / audit / home knotenv / dev / shm knotenv, nosuid, noexec  

Das Prinzip all dieser Änderungen besteht darin, zu verhindern, dass sie sich gegenseitig beeinflussen, und / oder zu begrenzen, was auf einer bestimmten Partition getan werden kann. Nehmen Sie zum Beispiel die Optionen für / tmp . Das heißt, dass dort keine Geräteknoten erstellt werden können, keine Programme von dort ausgeführt werden können und das Set-UID-Bit für nichts gesetzt werden kann. / tmp ist naturgemäß fast immer weltweit beschreibbar und häufig eine spezielle Art von Dateisystem, das nur im Speicher vorhanden ist. Dies bedeutet, dass ein Angreifer es als einfachen Staging-Punkt verwenden kann, um schädlichen Code zu löschen und auszuführen. Wenn das System dann abstürzt (oder einfach neu startet), werden alle Beweise gelöscht. Da für die Funktionalität von / tmp keine dieser Funktionen erforderlich ist, können wir die Funktionen leicht deaktivieren und diese Situation verhindern.

Die Protokollspeicherorte / var / log und / var / log / audit werden herausgeschnitten, 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 der Protokollspeicher voll wird. Wenn Sie es auf seiner Partition platzieren, ist diese Ressourcenerkennung besser.

Um ausführlicher zu sein und mount (8) zu zitieren, sind dies genau die oben verwendeten Optionen:

noexec Erlaube keine direkte Ausführung von Binärdateien auf dem gemounteten 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 Interpretieren Sie keine Zeichen oder blockieren Sie keine speziellen Geräte im Dateisystem.

nosuid Lassen Sie nicht zu, dass Bits für Benutzerbenutzer oder Gruppenkennzeichen verwendet werden bewirken. (Dies scheint sicher zu sein, ist jedoch in der Tat ziemlich unsicher, wenn Sie suidperl (1) installiert haben.)

Aus Sicherheitsgründen sind dies sehr gute Optionen, da Sie damit das Dateisystem selbst schützen können. In einer hochsicheren Umgebung können Sie sogar die Option noexec zu / home hinzufügen. Dies erschwert es Ihrem Standardbenutzer, Shell-Skripte für die Datenverarbeitung zu schreiben, beispielsweise für die Analyse von Protokolldateien, verhindert jedoch auch, dass eine Binärdatei ausgeführt wird, die die Berechtigungen erhöht.

Beachten Sie dies auch dass das Standard-Ausgangsverzeichnis des Root-Benutzers / root ist. Dies bedeutet, dass es sich im Dateisystem / befindet, nicht in / home .

Genau wie viel Sie jedem geben Die Partition kann je nach Systemauslastung stark variieren. Ein typischer Server, den ich verwaltet habe, erfordert selten eine Personeninteraktion. Daher muss die Partition / home überhaupt nicht sehr groß sein. Gleiches gilt für / var , da hier eher kurzlebige Daten gespeichert werden, die häufig erstellt und gelöscht werden. Ein Webserver verwendet jedoch normalerweise / var / www als Spielplatz, was bedeutet, dass entweder entweder eine separate Partition vorhanden sein muss oder / var / erstellt werden muss groß.

In der Vergangenheit habe ich Folgendes als Basis empfohlen.

  # Mount Point Min. Größe (MB) Max. Größe (MB) / 4000 8000 / home 1000 4000 / tmp 1000 2000 / var 2000 4000swap 1000 2000 / var / log / audit 250  

Diese müssen überprüft und entsprechend dem Systemzweck und der 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 einfach erweitern oder hinzufügen, wenn solche Dinge erforderlich sind.

Max 8 GB für das Root-Dateisystem? Und maximal ~ 20 GB für Partitionen insgesamt, einschließlich / home? Ich stimme zu, diese müssen auf jeden Fall im Hinblick auf den Zweck des Systems überprüft werden. Mein Heimsystem folgt zwar nicht genau diesem Partitionierungsschema (insbesondere / var ist in / eingebrannt), aber ich verwende bisher ungefähr 12 GB, ohne dass zu viel überschüssige Cruft installiert ist. Eine maximale Größe von etwa 8 GB wäre für jedes Mehrzwecksystem fast definitiv eng. Ich würde sagen, geben Sie / ungefähr 20 GB, mehr, wenn Sie es sich leisten können, damit Sie Raum zum Wachsen haben. Die Wurzel fs ist die * letzte * fs, die Sie füllen möchten.
@MichaelKjörling: Das sind nur Ausgangspunkte. Auf einem Single-Purpose-Server, wie es die meisten Server * sollten *, haben Sie eigentlich nicht viel in `/`. Ich sehe selten, dass es auf einem ordnungsgemäß partitionierten Server über 2 GB hinausgeht, fast nie über 5 GB. Tatsächlich dachte ich, ich hätte das Auffüllen angesprochen, es sieht so aus, als hätte ich es vergessen. Das ist auch ein kleiner Teil des Verschiebens von `/ var` auf eine eigene Partition. Für einen Angreifer ist es ziemlich einfach, Ihre Protokolle zu füllen, was zu einem DoS führt.
Ja, ich weiß, dass Sie Baseline gesagt haben, aber ich war immer noch ein bisschen überrascht über die Zahlen. Und das OP sagte, dass es sich um "ein Netbook zum Spielen" handelt, nicht um einen Einzweck-Server. Ein Heimsystem ist den Gefahren des Internets nicht auf die gleiche Weise ausgesetzt wie ein öffentlich zugänglicher Server, selbst wenn dieser Server nur eines tut.
@MichaelKjörling: Genau deshalb sind sie Baselines mit Anleitung. Sie müssen an Ihre Umgebung angepasst werden. Er sagte auch, er wolle Kali verwenden, das zwar viel besser als Backtrack ist, die Dinge aber auch an seltsamen und nicht standardmäßigen Orten platziert. Soweit ich mich erinnere, endet ein Großteil davon in "/ opt", was erstellt werden müsste, da es nicht in der obigen Anleitung enthalten ist und ohnehin in "/" enden würde. Opt ist eine dieser seltsamen, die Teil des Standards ist, aber zufällig verwendet wird.
Tom Leek
2013-07-12 01:55:30 UTC
view on stackexchange narkive permalink

Die Aufteilung in eine oder mehrere Partitionen ist nicht wirklich ein Problem der Sicherheit , sondern der Zuverlässigkeit . Die Idee ist, dass Sie bei einem Absturz einer Ihrer Partitionen den Inhalt dieser dieser Partition verlieren, die anderen Partitionen jedoch in Ordnung sind. Wenn Sie diese Partition ausfüllen, sind andere Partitionen davon nicht betroffen. Jede Partition kann ein eigenes Dateisystem haben, und nicht alle Arten von Dateisystemen sind hinsichtlich der Leistung in verschiedenen Kontexten gleichwertig (obwohl die meisten Dateisysteme in den meisten Kontexten meistens so gut sind wie die anderen). Auf einigen PCs kann der Startvorgang aufgrund historischer Besonderheiten dieser Architektur, die zu schrecklich sind, um hier in Erinnerung gerufen zu werden, Probleme beim Zugriff haben, die weiter als die ersten Gigabyte der Festplatte reichen. Daher wird / boot häufig besser als separate Partition mit begrenzter Größe festgelegt und befindet sich zuerst auf der Festplatte.

Wenn Sie eine Verschlüsselung auf Partitionsebene anwenden möchten, können Sie diese ausführen Wenn Sie zu viel verschlüsseln, tritt der Code, der die Entschlüsselung durchführt, außerhalb der Partition auf. 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 weniger flexibel wird, je mehr Sie Ihre Festplatte in Partitionen aufteilen. Wenn eine Partition voll ist, ist sie voll und bleibt dies auch dann, wenn andere Partitionen über freien Speicherplatz verfügen ( LVM kann dabei helfen. Sie sollten daher möglicherweise "Ja" sagen, wenn Sie vom Betriebssysteminstallationsprogramm dazu aufgefordert werden ob Sie LVM verwenden möchten). Je mehr Partitionen Sie erstellen, desto wahrscheinlicher und schwieriger wird dieses Problem.

Der einfache und sichere Weg besteht darin, das Betriebssystem-Installationsprogramm die Partitionen so auswählen zu lassen, wie es am besten erscheint. Ändern Sie die Partitionsgrößen erst weiter, wenn Sie über genaue Kenntnisse und Erfahrungen verfügen. Vergessen Sie nicht, regelmäßige Backups zu erstellen. Es wird erwartet, dass Sie nach einigen 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 Lernwerkzeug, kein Server, der in Produktion gehen wird.

Früher ließ ich das Betriebssystem-Installationsprogramm immer Partitionsgrößen auswählen (außer zu Hause, wenn keine separate Partition erstellt wird), aber kürzlich habe ich Opensuse Tumbleweed installiert und nach nur wenigen Wochen konnte ich nicht einmal mehr die grafische Oberfläche starten, weil /war voll ... Hat nicht einmal so viele Programme installiert: /
joveian
2013-07-17 10:08:20 UTC
view on stackexchange narkive permalink

Ich würde dies anders sehen als die anderen Responder bisher: Wenn Sie sich eine Reihe von Exploits ansehen, sind alle Bedrohungen möglich, und das Sandboxing des Systems, in dem Sie dies so oft wie möglich tun, scheint ein Problem zu sein nützliche Vorsichtsmaßnahme. Xen ist eine einfache Möglichkeit, dies zu tun. Es kann Disk-Images in einem anderen Dateisystem verwenden, aber wenn Sie wissen, dass Sie es verwenden werden, würde ich empfehlen, separate Disk-Partitionen zu belassen (und sicherzustellen, dass sie auf Ihrem Dom0 nicht automatisch bereitgestellt werden).

Ich weiß nicht, wie gut Kali als Xen Dom0 funktioniert. Ubuntu scheint zumindest Probleme zu haben. Sie können Platz für XenServer oder einen anderen speziellen Xen Dom0-Build lassen. [Bearbeiten: Ich bin mir nicht sicher, wie Netbooks heutzutage aussehen, aber ich vermute, XenServer zielt nicht wirklich auf sie ab ... Vielleicht eine andere einfachere Distribution, die mit Xen als Dom0 gut funktioniert. Möglicherweise können Sie eine Kali-Installation einrichten, die entweder eigenständig oder als DomU ausgeführt wird, wenn das Betrachten von Exploits eine weniger häufige Aufgabe ist.]

Auf BSD-Systemen habe ich von Härtungsmethoden gehört, bei denen die Partitionierung zum Mounten verwendet wird so viel wie möglich schreibgeschützt und mit unveränderlichen Flags. 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 das Gefühl, dass Sie das auf Debian nicht wirklich tun können [Bearbeiten: es sei denn, Sie mounten einen beschreibbaren FS über es, was im Laufe der Zeit immer noch umständlich zu pflegen wäre]. In jedem Fall würde ich dies nicht für eine Allzweckmaschine vorschlagen und es nur dann ansprechen, wenn Sie allgemeiner an allen Möglichkeiten interessiert sind, wie Partitionierung verwendet werden könnte. Stellen Sie die Bedrohungen für Ihren Zweck auf ein System, das Sie einfach löschen und neu erstellen können.

Tim X
2013-07-19 03:30:54 UTC
view on stackexchange narkive permalink

Einige dieser Antworten enthalten viele gute Informationen, aber ich bin mir nicht sicher, ob sie wirklich Ihren spezifischen Anforderungen entsprechen. Angesichts der Tatsache, dass Ihr erklärtes Ziel das Lernen ist und Sie planen, dieses System zum Experimentieren und Spielen mit Kali Linux zu verwenden, um sicherheitsrelevante Fragen besser zu verstehen, würde ich ein System anstreben, das schnell und einfach neu installiert werden kann und nicht gehärtet ist oder sicher. Sobald Sie Kenntnisse und Erfahrungen mit dem System gesammelt haben, können Sie weitaus besser entscheiden, welche Konfiguration Ihren Anforderungen am besten entspricht und am besten zu Ihrem Arbeitsstil usw. passt.

Einige Dinge, die Sie beachten sollten und die von anderen nicht erwähnt wurden.

  • Viele Ratschläge zur Partitionierung sind teilweise veraltet und können mit einigen modernen Techniken in Konflikt stehen, die zur Beschleunigung des Startvorgangs verwendet werden, z als Prelinking und Preloading oder Caching.

  • Bis Sie eine wirklich gute Vorstellung davon haben, wie Sie ein System verwenden und wie dieses System konfiguriert ist, ist es fast unmöglich, die Partitionsgrößen korrekt zu bestimmen. Wie von einem anderen Benutzer hervorgehoben, müssen Sie, wenn Kali beispielsweise / opt verwendet, entweder eine opt-Partition erstellen oder / opt verwendet den für / zugewiesenen Speicherplatz. Wenn Sie nicht wissen, ob dies der Fall ist oder nicht, wofür es verwendet wird, können Sie nicht beurteilen, wie groß die Partition sein soll.

  • Die Anforderungen, die Sie an das Lernen stellen, unterscheiden sich stark von den Anforderungen, die Sie an ein Produktionsstift-Test- oder Sicherheitsprüfungs- / Untersuchungssystem stellen würden. Wenn Sie lernen, müssen Sie das System häufig schnell und einfach in einen bekannten, guten Zustand (Werkseinstellung) zurückversetzen. Aus diesem Grund würde ich oft ein virtuelles Image verwenden, aber dies ist auf einem Netbook nicht wirklich machbar. Für ein Produktions-, Stifttest-, Sicherheitsüberprüfungs- usw. System möchte ich etwas ziemlich Geschütztes. Ich würde Kali wahrscheinlich auf einem schreibgeschützten Medium mit dedizierter (und löschbarer) Speicherunterstützung einrichten. Dies würde mein Vertrauen erhöhen, dass mein System nicht geändert oder verändert wird, wenn es in einer feindlichen Umgebung verwendet wird, und ich kann das Vertrauen erhöhen, dass es beim Neustart des Systems zu einer bekannten Konfiguration usw. zurückkehrt.

Ich denke, Sie werden Kali Linux zunächst als eine ziemliche Herausforderung empfinden. Zu sagen, dass Sie mit Kali Sicherheit lernen werden, ist ein bisschen so, als würden Sie lernen, mit einem Kampfjet zu fliegen. Wie einfach Sie dies finden, hängt von Ihrer Linux-Erfahrung und Ihrer Vertrautheit mit Debian-basierten Systemen ab. Ich würde einfach eine Standardinstallation mit nur einer einzigen Partition durchführen, die leicht gelöscht und neu installiert werden kann. Je nachdem, was Sie finden und entscheiden, können Sie später robustere und sicherere Setups in Betracht ziehen. Denken Sie auch daran, dass Kali eigentlich relativ neu ist und immer noch seine eigenen Kinderkrankheiten hat. Das Festhalten an einer Standardinstallation verringert die Wahrscheinlichkeit, Fehler im Kali-Setup auszulösen, was beim Lernen sehr verwirrend sein kann. Fazit: Halten Sie es zunächst einfach.

jrwren
2013-07-30 00:08:14 UTC
view on stackexchange narkive permalink

Alle anderen Antworten sind gute Ausgangspunkte.

In den alten Tagen (Anfang der 90er Jahre) waren die Festplatten klein genug, dass wir tatsächlich die Möglichkeit hatten, das Unix zu installieren und das / usr selbst zu platzieren physische Festplatte. Nach der Installation konnten wir einen schreibgeschützten Jumper auf der physischen Festplatte setzen. In jenen Tagen mit weit offenem Klartext im Internet war es üblich, sich zu verwurzeln. Das Schöne an dieser Konfiguration ist, dass Sie selbst nach dem Rooten vor Dateien in / usr-Änderungen geschützt waren.

Sie könnten möglicherweise etwas Ähnliches tun, indem Sie / bin, / sbin und / usr auf Dateisystemen erstellen Das sind ro, exec und mit allen anderen Dateisystemen noexec.

Steve Rosiak
2013-07-12 02:00:31 UTC
view on stackexchange narkive permalink

Ich trenne Boot usr vat var / tmp tmp var / service (wie ldap und www) var / lib / mysql home und einzelne Verzeichnisse auf einer eigenen Partition. Damit können Sie spezielle Mount-Optionen und grsec-Kernel-Funktionen verwenden. Vielleicht möchten Sie einige Partitionen entschlüsseln. Und vielleicht verwenden Sie Ihren eigenen kleinen Kernel.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...