Verfahren müssen die Sicherheit zu minimieren Privilegien, um den Fehler in der Möglichkeit, Sicherheitslücken zu reduzieren. Dieser Artikel beschreibt, wie die privilegierte Module, die Vorrechte und Privilegien gewährt, um die effektive Zeit zu minimieren, um Privilegien zu minimieren.
Artikel nicht nur diskutiert einige der traditionellen UNIX privilegierte Klasse von Mechanismen, diskutierte auch über die relativ neue Mechanismen, wie beispielsweise FreeBSD's jail (), Linux Security Module (Linux Security Modules, LSM) Rahmen und dem Security-Enhanced Linux (SELinux).
3. März 2003, Internet Security Systems auf Sendmail ist ein ernsthafter Fehler in einer Warnung. Alle E-Mail durch den Message Transfer Agent (Mail Transfer Agent, MTA) zu übertragen, ist die beliebteste Sendmail MTA, so berührt diese Warnung viele Organisationen weltweit. Das Problem ist, nach den üblichen Konfiguration, sorgfältig die "from", "zu" oder "CC"-Feld der E-Mails festlegen können den Absender vollständig (root) Kontrolle von einem Rechner mit Sendmail. Ernsthaft, das allgemeine Firewall nicht vor solchen Angriffen im Inneren der Maschine zu schützen.
Die unmittelbare Ursache für dieses Schlupfloch, weil Sendmail hat eine Sicherheitslücke Detektion können Pufferüberlauf auftreten. Jedoch eine wichtige Rolle bei Faktor ist Sendmail oft als ein einziges "setuid root" installiert, rufen Sie es auf dem System hat die volle Kontrolle Berechtigungen. Diese, Sendmail Fehler in jeder von denen, die ein Angreifer direkten Steuerung des gesamten Systems erlauben können.
Diese Konstruktion ist notwendig? Nein, Wietse Venema Postfix ist ein gemeinsames Match kann es MTA. Wie Sendmail, Postfix wird eine Menge Sicherheitstests zu tun, aber um Privilegien zu minimieren, Postfix als eine Reihe von Modulen entwickelt. Die Ergebnisse, Postfix ist allgemein als sicherer als Sendmail-Programm. Dieser Artikel beschreibt, wie Berechtigungen minimieren, können Sie das gleiche denken, Ihr Programm bewerben.
Minimieren der Grundlage von Privileg
Praktische Anwendung der Verfahren haben Nachteile. Wollen wir wirklich, aber eigentlich ist es. Komplexen Anforderungen, Belastungen und Zeitplan Veränderungen in der Umwelt ist es unwahrscheinlich, praktisch zu sein, so makellos Prozess. Selbst diejenigen, die bestanden komplexe und ausgereifte Technik ist die förmliche beweisen die richtige Vorgehensweise, wird es Fehler geben. Warum? Einer der Gründe ist, dass die Prüfung muss eine Reihe von Annahmen gemacht werden, und oft sind diese Annahmen nicht ganz korrekt. In jedem Fall, die aus verschiedenen Gründen hatten die meisten der Verfahren nicht eine strenge Prüfung gewesen. Selbst heute gibt es keinen Defekt (unwahrscheinlich), sind die Zukunft der Pflege ändern oder Veränderungen in der Umwelt wahrscheinlich Mängel einzuführen. Also, um mit praktischen Problemen beschäftigen, hatten wir einiges zu Sicherheitsverfahren zu entwickeln, trotz der Mängel unseres Programms.
Trotz dieser Mängel ist das Programm für die Sicherheit das wichtigste Mittel ist, um das Privileg zu minimieren. Privilege nicht nur erlauben kann jeder tun. UNIX-Systeme in der Klasse, mit "root", andere Nutzer oder Mitglieder einer Gruppe von Privilegien ist die häufigste Art von Privilegien. Einige Systeme ermöglichen es Ihnen, zu gewähren lesen oder schreiben Privilegien für bestimmte Dateien. Aber trotzdem, Privilegien zu minimieren:
Nur ein Teil des Programms benötigen Sie den Privilegien und Vorrechte
Nur ein Teil ist es unbedingt notwendig, besondere Privilegien gewährt
Die Privilegien der effektiven Zeit oder können zur Zeit das absolute Minimum beschränkt werden
Die Tatsache, ist das Ziel, nicht absolut. Die Basis Ihres Unternehmens (z. B. Ihr Betriebssystem oder virtuelle Maschine) können Sie strengen Abschluss dieser ist nicht einfach, oder die strikte Erfüllung dieser kann sehr kompliziert sein, die bis zur Fertigstellung zu versuchen, strengere 缺陷 einzuführen geführt. Allerdings, je näher Sie von diesen Zielen entfernt, die Möglichkeit von Fehlern bei niedrigeren Sicherheitseinstellungen führen. Selbst wenn der Mangel hatte Sicherheitsprobleme, die das Sicherheitsproblem geführt werden könnten sogar noch niedriger. Und wenn man sicherstellen kann, dass nur ein kleiner Teil des Programms besondere Privilegien hat, können Sie viel mehr Zeit auf den Teil, dass Angriffe aushalten zu gewährleisten. Diese Idee ist nicht neu; Saltzer und Schroeder 1975 ausgezeichnete Papier diskutiert die Prinzipien der Sicherheit, die ausdrücklich als ein Prinzip der minimalen Berechtigung (siehe Resources). Einige Ideen sind zeitlos, wie die Minimierung der Privileg.
Die folgenden drei Abschnitten werden diese Ziele wiederum zu diskutieren, darunter, wie sie ihre Klasse UNIX-Systeme zu erreichen. Dann werden wir die FreeBSD und Linux in einigen speziellen Mechanismen zur Verfügung, einschließlich der NSA Security-Enhanced Linux (SELinux) Diskussion zu erörtern.
Minimieren privilegierten Module
Wie bereits erwähnt, nur um einen privilegierten Teil des Programms werden nur dann angewandt privilegiert. Das heißt, wenn Sie Ihr Programm-Design, versuchen, sich in einzelne Teile zerlegt Prozess, um nur ein kleiner und unabhängiger Teil der Bedürfnisse bestimmter Privilegien zu machen.
Wenn verschiedene Teile ausgeführt werden muss, dann verwenden Sie die UNIX-System-Prozesse (nicht Threads). Threads teilen ihre Sicherheit Privilegien, kann der Thread in Frage mit dem Prozess der alle anderen Threads einmischen. Privilegierter Teil der Vorbereitung, auf der anderen Programme, da es angegriffen wird: ein Tag sein wird! Sie sicher, dass privilegierte Teil der nur Dinge zu tun, so wenig wie möglich; eingeschränkte Funktionalität bedeutet weniger wahrscheinlich werden.
Ein gemeinsamer Ansatz ist es, über eine sehr begrenzte Funktion zu schaffen, hat besondere Privilegien (wie ein setuid oder setgid) Kommandozeilen-Tool. UNIX ist passwd Befehl ist ein Beispiel, es ist ein besonderes Privileg Kommandozeilen-Tools zum Ändern des Kennworts (setuid root), aber sie tun können, ist Ihr Kennwort ändern. So kann eine Vielzahl von GUI-Tools Antrag an die tatsächliche Veränderung zu tun passwd. Wenn möglich, versuchen Sie, ganz vermeiden setuid oder setgid-Programm, ist es schwierig, sicherzustellen, dass Sie wirklich alle Eingaben zu schützen. Aber manchmal müssen Sie eine setuid / setgid-Programme zu erstellen, so dass, wenn nötig, so weit wie möglich zu verarbeiten die kleinste und begrenzt.
Es gibt viele andere Möglichkeiten. Zum Beispiel können Sie ein spezielles Privileg einer kleinen "Server (Server)"-Prozess; dass der Server lässt nur einen besonderen Antrag hin, sondern nur bestätigt, dass der Antragsteller berechtigt ist, den Antrag auszustellen. Ein weiteres gemeinsames Konzept zu starten ist mit den Rechten eines Programms, das Programm dann abgeleitet aufgeben all die Privilegien der zweite Prozess, den Prozess, indem Sie die meiste Arbeit.
Seien Sie vorsichtig, wie diese Module miteinander kommunizieren. In vielen UNIX-Systeme, Command-Line-Wert und der Umwelt können von anderen Nutzern gesehen werden, so dass es nicht in den Prozess der Übermittlung der Daten zwischen dem Geheimnis eines guten Weg. Pipeline kann kompetent, sondern sorgfältig vermeiden Deadlock (zwei Enden einer einfachen Anfrage / Antwort-Protokoll können zuständigen erfrischen können).
Minimieren Privilegien
Um sicherzustellen, dass Sie brauchen nur die Privilegien des Verfahrens - nicht einräumen halten hier. UNIX wichtigste Weg, um Rechte zu erlangen, zu denen sie laufen, wie ein Benutzer oder eine Gruppe. Typischerweise ist der Prozess, um sie als Benutzer und Gruppe laufen lassen, aber "setuid" oder "setgid"-Programm wird das Programm Benutzer oder Gruppe Berechtigungen.
Leider gibt es einige unfreiwillige Art und Weise zu programmieren "setuid root"-Rechte auf UNIX-Systeme zu entwickeln. Die Entwickler glauben, sie machen die Dinge für sich selbst zu werden "easy", weil sie nicht gehen eingehende Berücksichtigung ihrer Verfahren ist ein deutlicher Bedarf über spezielle Privilegien. Das Problem ist, da die meisten dieser Programme gemacht class UNIX-Systemen fast alles tun werden, damit etwaige Mängel können schnell eine Sicherheit Katastrophe geworden.
Nicht nur, weil Sie eine einfache Aufgabe durchführen müssen, um alle möglichen Privilegien zu geben. Das Verfahren sollte nur die Privilegien, die sie benötigen werden. Wenn Sie können, um setgid, um sie auszuführen, nicht zu verwenden setuid - setgid Privilegien weniger. Erstellen Sie einen bestimmten Benutzer und Gruppen (keine root), und verwenden Sie sie nach Ihren Bedürfnissen. Um sicherzustellen, dass diese im Besitz von root ausführbare Datei nur von root zu schreiben, so dass andere sie nicht ändern. Dateirechte gesetzt sehr streng - wenn nicht unbedingt nötig, lassen Sie sich nicht jeder kann lesen und schreiben Dateien und die Verwendung dieser bestimmten Benutzern und Gruppen. Erklären können all diese Spiele kann ein Beispiel sein "Top Ten" Partituren der gängigen Praxis. Viele Verfahren sind "setgid games", um nur die Spiel-Programm können "Top Ten" Noten, Partituren und Dokumente in der Master-Gruppe gespeichert sind Spiele geändert werden (und nur diese Gruppe schreiben kann). Selbst wenn der Angreifer attackieren und trat in ein Spiel-Programm, alles, was er zu tun, wäre die Bewertung der Dokumente ändern könnte. In jedem Fall, Spiele-Entwickler müssen ihre Programme, um schädliche Datei zu verhindern Gäste schreiben.
chroot () system call ist ein nützliches Tool - leider gibt es einige schwer zu handhaben. Wenn der Prozess-Sicht das Dateisystem "root", wird dieses System ändern, rufen Sie den Prozess, um den Inhalt zu sehen. Wenn Sie planen, es zu benutzen - und es kann nützlich sein - bereit sein, einige Zeit in Anspruch nehmen zu guten Gebrauch davon machen. Müssen sorgfältig vorbereitet werden "neuen root", die kompliziert, weil die genaue Anwendung hängt von der Plattform und anwendungstechnischen Eigenschaften ist. Sie müssen root sein, um sein chroot ()-Aufruf, und man sollte sich schnell ändern den Status von Nicht-Root-(Root-Benutzer aus dem Chroot-Umgebung, so dass, wenn es wirksam ist, müssen Sie das Privileg Lift). Und chroot wird sich nicht ändern Netzzugang. Dies kann ein nützliches System fordert, alle brauchen manchmal, ihn zu prüfen, aber der Aufwand zu tun, gut vorbereitet.
Begrenzte Ressourcen ist ein oft vergessenes Instrument, das sowohl den Prozess der Storage-Ressourcen, einschließlich Ressourcen beinhaltet. Diese Beschränkungen Denial of Service-Attacken sind besonders nützlich:
Storage für den, können Sie für jeden Benutzer oder Gruppe für jede bereitgestellte Dateisystem oder das Aktenzeichen Speicherkontingent (Limit gesetzt). In GNU / Linux-System, siehe quota (1), quotactl (2) und quotaon (8) in ein tiefes Verständnis für diese Funktion, wenn es jedoch, obwohl sie nicht in der Lage sind, die meisten aus der Klasse der UNIX-Systeme verwenden auch die Quotenregelung. In GNU / Linux und vielen anderen Systemen, können Sie "harte" Grenzen (nicht überschreiten) und "weichen" Grenzen (die vorübergehenden Überhang werden können).
Der Prozess ist, können Sie viele Grenzen wie die Anzahl der geöffneten Dateien, die Anzahl der Prozesse, und so weiter. Diese Fähigkeit ist tatsächlich Teil der Norm (wie ein Single Unix Specification (Single UNIX Specification)), alle von ihnen in der Klasse UNIX-Systemen fast allgegenwärtig; zu verstehen, zu sehen getrlimit (2), setrlimit (2) und getrusage ( 2), sysconf (3) und ulimit (1). Prozess kann nie mehr als die "aktuelle Zeile", aber sie können den ganzen Weg auf die aktuelle "Cap Anstieg zu begrenzen." Leider gibt es eine Anomalie langfristige Probleme kann bei Ihnen zu verwechseln. "Current line" ist auch als "weiche" Grenzen, zu begrenzen, die auch als "harte" Grenzen, bekannt. Auf diese Weise werden Sie in einer ungewöhnlichen Situation, der Prozess kann niemals überschreiten die Grenzen des Prozesses der weichen (aktuellen) Grenzen - und Sie können die Soft-Limit überschritten wird. Ich schlage vor, den Prozess der Verwendung des Begriffs "aktuelle Zeile" und "GAP" (niemals Grenze der Begriff "Soft" und "hard"), so gäbe es keine Verwirrung.
Minimieren Sie die Zeit Privileg
Aber nur, wenn erforderlich, um Privilegien zu geben - geben Sie nicht einen Augenblick.
Wann immer möglich, verwenden egal was Ihre unmittelbare Notwendigkeit, Privilegien, und sie dann endgültig aufgeben. Sobald sie wurden endgültig aufgegeben, dann kann der Angreifer nicht anderweitig nutzen diese Privilegien. Zum Beispiel die Notwendigkeit individueller Root-Privilegien zu Wurzel, das Verfahren beginnen kann (z. B. durch ein setuid root) und dann zu den weniger privilegierten Benutzer laufen zu wechseln. Dies ist die Anzahl der Internet-Server (einschließlich des Apache Web-Server) die verwendeten Methoden. Klasse UNIX-Systeme erlauben nicht jedes Programm auf 0 到 1024 TCP / IP-Port zu öffnen, Sie müssen root-Rechte haben. Aber die meisten Server müssen nur offene Ports Boot-Zeit, nach dem Privileg war nicht mehr benötigen. Eine Möglichkeit ist es, als root laufen, so schnell wie möglich zu privilegierten Ports benötigt öffnen und dann dauerhaft entfernen Sie die Root-Rechte (einschließlich der Prozess gehört zur privilegierten Gruppe). Werde versuchen, alle anderen erblichen Privilegien zu entfernen, zum Beispiel heruntergefahren so bald wie möglich benötigen bestimmte Berechtigungen, um die Datei zu öffnen.
Wenn Sie nicht dauerhaft verzichten können Privilegien, dann kann man zumindest vorübergehende Entfernung von Privilegien so oft wie möglich. Das ist besser als dauerhaft Beseitigung der Privilegien, denn wenn ein Angreifer das Programm steuern kann, kann der Angreifer wieder aktivieren, das Privileg und nutzen. Dennoch ist es sinnvoll.
Viele Angriffe nur, wenn sie das Privileg, das Verfahren zu täuschen, um einige Dinge außerhalb des Programms zu tun, und das Programm-Privilegien verfügen, um erfolgreich sein (z. B. durch einen symbolischen Link Anomalie und Hard Links) haben. Wenn das Programm in der Regel nicht damit seine Privilegien, dann der Angreifer möchte Vorteil dieses Programms wird es schwieriger werden.
Relativ neuen Mechanismus
Bisher haben wir die Grundsätze erörtert eigentlich für fast alle Betriebssysteme gilt, und seit dem 19. Jahrhundert, 70s, fast alle aus der Klasse der UNIX-Systeme sind ähnlich zu den herkömmlichen Verfahren. Das bedeutet nicht, dass sie nutzlos sind, einfache und den Test der Zeit ist, ihren eigenen Vorteil. Doch einige relativ neue Klasse von UNIX-Systemen zur Unterstützung hat zugenommen "Least Privilege"-Mechanismus, ist es wert zu wissen. Zwar ist es leicht zu bewährten Verfahren zu finden, aber auf dem relativ neuen Mechanismus für den Informationsaustausch noch nicht bekannt. So, hier werde ich einige wertvolle Mechanismus gewählt: FreeBSD Jail () zu diskutieren, Linux Security Module (LSM) Rahmen und die Security-Enhanced Linux (SELinux).
FreeBSD Jail ()
chroot () system call hat eine Menge Probleme, wie oben erwähnt. Zum Beispiel ist es schwierig zu bedienen zutreffend sind, können Benutzer root noch lernen, aber sie kontrolliert nicht den Netzzugang. FreeBSD-Entwickler beschlossen, ein neues System anrufen um diese Probleme zu lösen hinzuzufügen, rufen Sie das neue System namens jail (). Dieser Aufruf ist vergleichbar mit chroot (), sondern versuchen, zu verwenden einfacher und effizienter zu bedienen. In einem Gefängnis sind alle Zugriffe (auch root) Gefängnis beschränkt, und Gefängnis in den Prozess kann nur mit anderen Prozessen zu kommunizieren, und das System blockiert das Root-Benutzer versucht, auf dem Weg ins Gefängnis von den typischen. Gefängnis wird eine bestimmte IP-Adresse zugewiesen werden, können nicht an jede andere Adresse als seine eigene Adresse.
jail ()-Aufruf ist einzigartig auf FreeBSD, dessen Nützlichkeit Grenzen. Doch alle OSS / FS viel Crossover zwischen den Auswirkungen der Kernel (Kreuzbestäubung hat). Zum Beispiel hat mit Hilfe der Linux Security-Framework für die Linux-Version von einem Gefängnis entwickelt worden. Darüber hinaus hat FreeBSD 5 hat einen flexiblen Rahmen MAC (ab TrustedBSD Projekt), einschließlich der grundlegenden Funktionen eines Moduls ähnlich wie SELinux. Alle, die in die Zukunft sehen, mehr von dieser Situation nicht überrascht.
Linux Security Module (LSM)
In dem 2001 Linux Kernel Summit on, hat Linus Torvalds ein Problem. Eine Reihe von verschiedenen Projekten im Sicherheitsbereich, einschließlich der Security-Enhanced Linux (SELinux)-Projekt, und bat ihn um ihre Sicherheit zu Methoden, um Linux-Kernel hinzu. Das Problem ist, dass diese verschiedenen Methoden oft nicht kompatibel sind. Torvalds gibt keine einfache Möglichkeit festzustellen, welche die beste ist, so fragte er die Projekte zu einem gemeinsamen Sicherheit unter Linux Rahmen zu schaffen. So kann der Administrator ihnen keine spezielle Installation Methode sie wollen Sicherheit. Nach mehreren Gesprächen mit Torvalds, Crispin Cowan, eine Gruppe für die gemeinsame Sicherheits-Framework zu erstellen. Dieser Rahmen ist benannt Linux Security Module (LSM) Rahmen, es ist jetzt Teil des Standard Linux Kernel (wie die Version 2.6 des Kernels).
Konzeptionell ist LSM Rahmen besonders einfach. Linux-Kernel ist immer noch dabei ihre Routine Sicherheitsprüfung; Beispiel, wenn Sie eine Datei zu schreiben, müssen Sie noch haben, schreiben Sie Zugang zu seinen.
Doch wann immer erforderlich, wenn der Linux-Kernel-Zugriff gestattet werden sollte, entscheiden, ob sie kontrolliert werden sollte - von einem "Buch" zu einem Security-Modul Nachfrage durchzuführen - um festzustellen, ob die Genehmigung Aktion. Auf diese Weise können Administratoren einfach wählen, dass er den Security-Modul verwenden will, und wie andere Linux-Kernel-Modul einfügen. Seitdem wird das Security-Modul zu bestimmen, was erlaubt ist.
LSM Framework entwickelt, um so flexibel, dass es viele verschiedene Arten von Sicherheits-Policies zu erreichen. In der Tat, eine Reihe von verschiedenen Projekten gemeinsam dafür Sorge tragen, dass ausreichende zuständigen LSM Rahmen der eigentlichen Arbeit. Zum Beispiel, wenn die interne Objekt erstellt oder gelöscht wird, wenn die LSM in eine Anzahl von Anrufen - nicht, weil diese Vorgänge ausgesetzt werden kann, sondern um die Sicherheit Modul kann den Überblick über wichtige Daten zu behalten. Mit einer Reihe von verschiedenen analytischen Werkzeuge, um sicherzustellen, dass die LSM Rahmen nicht verpassen keine wichtigen Veränderungen ihres Ziels Zweig. Die Ergebnisse zeigen, dass das Projekt als viele Menschen denken, härter, und sein Erfolg ist hart erkämpft.
LSM ist notwendig, um die grundlegenden Design-Entscheidungen zu verstehen. Grundsätzlich LSM Rahmen wurde für nahezu alle Branchen ausgelegt sind begrenzte Ausnahmen, nicht zuverlässig (autoritativen). Branch, um eine glaubwürdige abnorme absolute endgültige Entscheidung: Wenn die Ausnahme ist der Zweig, der einen Antrag zugelassen werden sollte, wird es bedingungslos zulässig. Im Gegenteil, kann nur die Glaubwürdigkeit der abnormen Zweig der andere Einschränkungen, es kann nicht neue Rechte zu gewähren. Theoretisch, wenn alle Zweige glaubwürdig sind abnorme LSM LSM Rahmenbedingungen werden flexibler. Man nannte der Lage () Niederlassung Ausnahme vertrauenswürdig ist - aber nur, weil sie den regulären POSIX-Kapazitäten zu unterstützen hatten. Doch das Schreiben können alle abnormalen Zweige machen es notwendig, den Linux-Kernel ist, dass viele grundlegende Veränderungen, sagt der Änderung nicht erlaubt ist, akzeptiert werden.
Viele Menschen befürchten, dass, wenn die meisten der abnormen Zweig glauben kann, selbst den kleinsten Defekt wird eine Katastrophe geworden, und laß die Ausnahme Zweig ist begrenzt bedeutet, dass Benutzer nicht überrascht sein werden (in jedem Fall die Original-UNIX-Berechtigungen noch funktionieren) . LSM Rahmen, so dass Entwickler, die die Methode zu begrenzen, und wünschen die meisten seiner Entwickler zuversichtlich, dass sie im Rahmen der Arbeit.
LSM Rahmen für das Verständnis anderer Beschränkungen ist auch wichtig. LSM Rahmen ist so konzipiert, Zugangskontrolle, Überwachung und andere sicherheitsrelevante Fragen werden nicht unterstützt. LSM-Modul selbst wird nicht aufgezeichnet, alle Anfragen oder deren Ergebnisse, weil sie nicht sehen können, alle. Warum? Ein Grund dafür ist, dass der Kernel möglicherweise nicht nennen sich die LSM-Modul lehnte diesen Antrag, wenn Sie möchten, dass diese Verweigerung wird ein Problem sein Revision. Auch wegen der Performance-Gründen ist ein Teil der vorgeschlagenen Zweig für Netzwerk-Anomalien und LSM Datenfeld nicht vom Kernel-Threads verwendet. Es kann eine Reihe von Netzwerk-Zugang, Kontrolle, aber nicht genug, um die "Bezeichnung" Netzwerk-Datenstrom (in diesem Fall zu unterstützen, haben verschiedene Datenpakete unterschiedlicher Sicherheit Etiketten vom Betriebssystem übernommen). Diese Beschränkungen sind unangebracht, im Widerspruch zu den Grundprinzipien des allgemeinen Ideen; LSM Framework wurde erweitert und hoffe eines Tages loswerden diesen Einschränkungen.
Doch selbst mit diesen Einschränkungen, LSM Rahmen zur Begrenzung der Privilegien hinzufügen, dass es immer noch sehr nützlich. Torvalds LSM Rahmens durch das grundlegende Ziel ist klar: "Ich weiß nicht wie die Auseinandersetzung zwischen verschiedenen Gruppen der Sicherheit. Ich hoffe, dass ist eine indirekte, lass mich von diesem Kampf, dann der Markt unter Umständen Kampf zu entscheiden, welche Strategie und Anwendung zu erreichen, die ultimative . "
Also, wenn Sie Linux einschränken wollen gewährt das Privileg des Programms, können Sie durchaus Ihre eigenen Security-Modul. Wenn Sie eine echte externe Zwänge, müssen dies tun können verwendet - zum Glück ist dies möglich. Allerdings ist dies sehr wichtig, trotzdem haben Sie immer noch zu den Kernel-Code schreiben. Wenn möglich, das Ihnen am besten nicht zu benutzen die vorhandenen Linux-Security-Modul, sondern versuchen, eigene Security-Modul zu schreiben. Einige LSM-Modul zur Verfügung, sondern, Security-Enhanced Linux (SELinux) ist das reifste eine Linux-Security-Modul, so lasst uns prüfen, dieses Modul.
Security-Enhanced Linux (SELinux) Geschichte
Ein wenig Geschichte hilft Ihnen helfen, die Security-Enhanced Linux (SELinux) - und sie selbst ist eine lustige Geschichte. U. S. National Security Agency (National Security Agency, NSA) seit langem mit der Sicherheit von den meisten Betriebssystemen begrenzten Kapazitäten bisher nicht betroffen. Immerhin ist einer von ihnen, um sicherzustellen, dass die US Department of Defense, den Computer in das Gesicht des endlosen Angriffe nutzen, um Sicherheit zu gewährleisten. NSA festgestellt, dass die meisten Betriebssystem-Sicherheitsmechanismen, einschließlich Windows und die meisten UNIX-und Linux-Systemen, nur eine "selektive Zutrittskontrolle (Discretionary Access Control)" (DAC)-Mechanismus erreicht. DAC-System ist, das Programm unter der Identität des Benutzers und Dokumente ausführen, um die Eigentümer des Objekts Programm kann ermitteln. NSA denke, das ist ein ernstes Problem, weil die DAC selbst gefährdet oder bösartiges Programm ist ein Versagen des Schutzes sind. Stattdessen hat NSA schon lange gehofft, dass das Betriebssystem auch unterstützen "Mandatory Access Control (Mandatory Access Control)" (MAC)-Mechanismus.
MAC-Mechanismus erlaubt dem Systemadministrator kann Sicherheitsrichtlinien im gesamten System zu definieren, kann diese Strategie auf der Grundlage anderer Faktoren, wie die Rolle des Benutzers, dem Programm die Glaubwürdigkeit und die zu erwartenden Nutzen sein, wird das Programm verwenden Sie die Art der Daten, etc., um das Programm zu begrenzen können Welche Dinge zu tun. Ein kleines Beispiel, mit dem MAC, nachdem der Benutzer kann nicht einfach "geheim (Secret)" Daten in "nicht-vertrauliche (nicht klassifiziert)" Daten. Allerdings kann MAC tatsächlich viel mehr als das..
NSA hat mit dem Betriebssystem-Anbieter seit vielen Jahren, aber viele von den größten Marktanteil Anbieter von Integration für den MAC ist nicht im kommenden interessiert. Selbst die Anbieter integriert, dass MAC ist in der Regel auch als "getrennte Erzeugnisse", sondern als herkömmliche Produkte verwendet werden. Teilweise, weil das alte Mac ist nicht flexibel genug.
So zum NSA Forschungsanstrengungen versuchen und flexibler zu gestalten MAC und einfach in das Betriebssystem aufgenommen werden. Sie nutzen die Mach-Betriebssystem entwickelt Prototypen von ihren Ideen, und später erweitert die begonnene Arbeit von "Fluke" des Betriebssystems.
Allerdings ist es schwierig, die Menschen, dass diese Ideen angewandt werden können "echte" Betriebssystem, weil alle diese auf winzigen "Spielzeug-class"-Forschungsprojekts beruhen überzeugen. Sehr wenige außerhalb des Prototyps können versuchen, diese Ideen in einer realen Anwendung zu sehen, wie die Arbeit. NSA kann nicht überzeugen, ein Anbieter von Titel, um diese Ideen hinzuzufügen und NSA hatte kein Recht, das proprietäre Betriebssystem ändern. Dies ist kein neues Problem; Jahren versuchte DARPA ihre proprietären Betriebssystem, können gebrauchte Forscher das Betriebssystem Windows, aber viele Probleme aufgetreten (siehe Referenzen unten).
Also kam NSA über ein Gedanke im Rückblick scheint klar: ein Spielzeug Nutzung ist nicht Open-Source-Betriebssystem, und Umsetzung ihrer Ideen Sicherheit zu zeigen, dass (1) es funktionieren kann, (2) Es ist speziell auf die Arbeit (durch für alle Source-Code). Sie wählten den marktbeherrschenden, Open-Source-Kernel (Linux) und in denen die Verwirklichung ihrer Idee, dass "Security-Enhanced Linux (SELinux). Nicht überraschend, verwenden Sie das reale System (Linux) für NSA Forscher können mit ihnen in der Spielzeugindustrie begegnen, können nicht mit umzugehen. Zum Beispiel, in den meisten Linux-basierten Systemen, die fast alle dynamisch miteinander verknüpft sind, so hatten sie sich ein wenig darüber, wie eingehende Analyse Verfahren durchführen (Zugang zu ihnen auf der "Einstiegspunkt" und "execute" permission-Dokumentation für mehr tun Informationen). Dies ist ein viel erfolgreicher Weg, Menschen, die mit SELinux Prototyp älter sind als diejenigen, die viel mehr zu verwenden.
SELinux funktioniert
Also, für SELinux? SELinux-Methode eigentlich sehr die gemeinsame Arbeit. Ein wichtiger Kern jedes Objekt, wie jedes Dateisystem-Objekt, und jeder Prozess hat eine Korrelation zu ihrer "Security Context (security context)". Security Zusammenhang kann auf militärische Sicherheit Ebene gestützt werden (wenn nicht vertraulich, vertraulich und streng vertraulich), basierend auf Benutzerrollen,-basierte Anwendung (so ein Web-Server kann seine eigene Sicherheit Kontext), oder auf viele andere Elemente. Wenn es ein anderes Programm ausführt, kann der Prozess um den Sicherheitscode Kontext. Selbst, je nach dem Verfahren nennen, ein bestimmtes Programm kann in verschiedenen Kontexten Sicherheit laufen, auch wenn ein Benutzer mit allen Verfahren beginnt.
Dann kann der Systemadministrator festlegen, welche Rechte, um einen Sicherheitskontext zu erstellen gewährt, mit denen die "Sicherheitspolitik (Security Policy)." Wenn das System nennen tritt auf, wenn SELinux zu überprüfen, ob alle erforderlichen Privilegien gewährt wurden - und wenn nicht, lehnte es den Antrag ab.
Zum Beispiel, eine Datei zu erstellen, den Sicherheitskontext des aktuellen Prozesses auf das übergeordnete Verzeichnis der Sicherheit Zusammenhang auf den "Search (Suche)" und "add_name" Privileg, und es muss (zu schaffen) Dateien im Sicherheitskontext des "Create ( erstellen) "Privileg. Ähnlich dem Sicherheitskontext der Datei mit der Datei-System muss das Privileg haben, "damit verbundenen (assoziierten)" (so zum Beispiel "streng vertrauliche" Dokumente können nicht schreiben "kein Vertrauen" in der Platte). Auch für die Steckdosen, Netzwerk-Schnittstellen, Host und Port der Network Access Control. Wenn die Sicherheitsrichtlinie für diejenigen, dann sind alle Berechtigungen erteilt dem Antrag wird von SELinux zugelassen werden. Andernfalls werden sie verboten werden. Wenn Sie es Schritt für Schritt tun, alle diese Kontrollen wird langsamer sein, aber es gibt viele Optimierungsprogramm (basierend auf jahrelanger Forschung), um es sehr schnell zu machen.
Die Prüfung wurde unabhängig von der Klassen-System in der üblichen UNIX-Berechtigungen Bits; in der SELinux-System, müssen Sie sowohl die Standard-UNIX-Berechtigungen gibt SELinux Erlaubnis, etwas zu tun. Allerdings SELinux Kontrollen kann eine Menge von den traditionellen UNIX-Berechtigungen für die Klasse zu tun ist schwer zu erreichen.
Mit SELinux, können Sie einfach ein bestimmtes Programm kann nur laufen und nur im Kontext einer bestimmten Web-Server, um Dateien zu schreiben. Noch interessanter ist, dass, wenn ein Angreifer einen Web-Server erzielt und sich als root an, wird ein Angreifer nicht die Kontrolle über das gesamte System gegeben werden - wenn es eine gute Sicherheitspolitik, dann.
Es war schwierig: Um SELinux tatsächlich, müssen Sie einen guten Grund für SELinux Sicherheitspolitik Umsetzung haben. Die meisten Benutzer benötigen einen praktischen einfach zu ihrer ursprünglichen Strategie zu ändern. Ein paar Jahren habe ich die Erfahrung SELinux begann; jener Zeit, die ursprüngliche Strategie noch nicht reif ist, gibt es viele Probleme. Zum Beispiel, in jenen Tagen, bevor ich fand den ersten Probe Politik nicht erlauben dem System aktualisiert die Hardware-Uhr (die letzte habe ich eine Patch zur Lösung dieses Problems). Gute erste Sicherheitspolitik Design ähnelt der Produktkategorie, hofft NSA von der Wirtschaft zu tun, und schauen, dies zu tun. Red Hat eine Reihe von Debian-Entwickler, Gentoo und andere, die den grundlegenden Rahmen SELinux und die anfängliche Sicherheitspolitik geschaffen wird, so dass Benutzer sofort benutzen können. Tatsächlich plant Red Hat, um allen Nutzern in ihrem Betrieb in beiden Fedora Core SELinux und bieten einfache Werkzeuge für nicht-professionelle Anwender ermöglichen, können einige der gängigen Optionen wählen, um ihre Sicherheitspolitik zu ändern. Es ist eine bootfähige Gentoo LiveCD SELinux. Minimieren Sie diese Gruppen wird es einfacher zu verarbeiten Privileg, ohne viel Code.
Hier sind wir wieder in die ursprüngliche Position. SELinux nur zulässig, wenn die Durchführung des Programms erfolgt nur, wenn die sichere Übertragung, die den Prozess der Kompetenzentwicklung (nicht Teil der Prozess-Kontrollen). Deshalb, um das volle Potenzial von SELinux, müssen Sie Ihre Anwendung nach unten werden in separate Prozesse und Verfahren gebrochen werden, nur einige von Xiao's haben das Privileg von Komponenten - und das ist genau Rutong kein SELinux in der Qing-Kuang, wie man sichere Verfahren zu entwickeln. Wie SELinux De-Tool erlaubt Ihnen mehr Kontrolle über die Privilegien vergeben und schafft so eine energischere Verteidigung, 但是, müssen Sie dennoch Jiangnin Programm split den kleineren Komponenten, zu denen, die Neng Hui Shi De Fa-Steuerung maximale Wirksamkeit.
Abschluss
Minimieren Sie das Privileg Sicherheitsfragen ist die wichtigste Verteidigung. Als der Fehler unvermeidbar ist, werden Sie wollen, erheblich reduziert die Möglichkeit von Fehlern zu Sicherheitsproblemen führen. Jedoch mindestens ein Sicherheitsprogramm, um die Sicherheit von einigen Teilen des Codes verbunden sein müssen, so können Sie nicht nur minimiert die Kosten aller anderen Privilegien. Selbst wenn Sie zu minimieren einige von denen in Sicherheit nach dem Teil beteiligt oder diejenigen, die richtig sein muss. Auf der rechten Seite, müssen Sie sich häufige Fehler vermeiden.