Implementierung der obligatorischen Zugriffskontrolle mit Selinux oder Apparmor unter Linux

Implementierung der obligatorischen Zugriffskontrolle mit Selinux oder Apparmor unter Linux

Um die Einschränkungen von und zu erhöhen und die vom Standard bereitgestellten Sicherheitsmechanismen zu erhöhen Ugo/rwx Berechtigungen und Zugriffskontrolllisten, die, die Nationale Sicherheitsbehörde der Vereinigten Staaten (NSA) entwickelte einen flexiblen Obligatorische Zugangskontrolle (MAC) Methode bekannt als als Selinux (kurz für Sicherheitsverbesserte Linux) Um unter anderem die Fähigkeit von Prozessen einzuschränken, auf Systemobjekte (z. B. Dateien, Verzeichnisse, Netzwerkports usw.) auf die geringste Erlaubnis zuzugreifen oder andere Vorgänge auszuführen, und gleichzeitig spätere Änderungen an diesem Modell zulässt.

Selinux
und Pararmor Security Härtung Linux

Ein weiterer beliebter und weit verbreiteter Mac ist Apparmor, welche zusätzlich zu den Funktionen von zur Verfügung gestellten von Selinux, Enthält einen Lernmodus, der es dem System ermöglicht, “lernenWie sich eine bestimmte Anwendung verhält und Grenzwerte durch Konfigurieren von Profilen für eine sichere Anwendungsnutzung festlegen.

In Centos 7, Selinux wird in den Kernel selbst eingebaut und in aktiviert Strikt Modus standardmäßig (mehr dazu im nächsten Abschnitt) im Gegensatz zu OpenSuse Und Ubuntu welche verwenden Apparmor.

In diesem Artikel erläutern wir das Wesentliche von Selinux und Apparmor und wie Sie eines dieser Tools zu Ihrem Vorteil verwenden, je nach Ihrer gewählten Verteilung.

Einführung in Selinux und wie man es auf CentOS 7 verwendet

Sicherheitsverbesserte Linux kann auf zwei verschiedene Arten funktionieren:

  1. Strikt: Selinux verweigert den Zugriff auf der Grundlage von Selinux -Richtlinienregeln, einer Reihe von Richtlinien, die die Sicherheitsmotor steuern.
  2. Zulässt: Selinux verweigert keinen Zugriff, aber Ablehnungen werden für Aktionen angemeldet.

Selinux kann auch deaktiviert werden. Obwohl es sich nicht um einen Betriebsmodus handelt, ist es immer noch eine Option. Es ist jedoch besser zu lernen, wie man dieses Tool benutzt, als nur zu ignorieren. Denk daran!

Um den aktuellen Modus von anzuzeigen Selinux, verwenden Getenforce. Wenn Sie den Betriebsmodus umschalten möchten, verwenden Sie SetEnforce 0 (um es auf einzustellen Zulässt) oder SetEnforce 1 (Strikt).

Da diese Änderung nicht überleben wird a Neustart, Sie müssen die bearbeiten /etc/selinux/config Datei und festlegen und die festlegen Selinux Variable zu beiden Strikt, zulässt, oder Behinderte Um die Ausdauer bei den Neustarts zu erreichen:

So aktivieren und deaktivieren Sie den Selinux -Modus

Nebenbei bemerkt, wenn Getenforce Gibt deaktiviert zurück, Sie müssen bearbeiten /etc/selinux/config mit dem gewünschten Betriebsmodus und Neustart. Andernfalls können Sie den Betriebsmodus nicht einstellen (oder umschalten) SetEnforce.

Eine der typischen Verwendungen von SetEnforce besteht aus dem Umschalten zwischen Selinux -Modi (von Strikt Zu zulässt oder umgekehrt), um eine Anwendung zu beheben, die sich schlecht benimmt oder nicht wie erwartet funktioniert. Wenn es funktioniert, nachdem Sie Selinux auf eingestellt haben Zulässt Modus können Sie zuversichtlich sein, dass Sie sich ein Problem mit Selinux -Berechtigungen ansehen.

Zwei klassische Fälle, in denen wir höchstwahrscheinlich mit Selinux zu tun haben, sind:

  1. Ändern des Standardports, an dem ein Daemon hört.
  2. Einstellen des Dokument Root Richtlinie für einen virtuellen Gastgeber außerhalb von /var/www/html.

Schauen wir uns diese beiden Fälle anhand der folgenden Beispiele an.

Beispiel 1: Ändern des Standardports für den SSHD -Daemon

Eines der ersten, was die meisten Systemadministratoren tun, um ihre Server zu sichern. Dazu verwenden wir die Portrichtlinie in /etc/ssh/sshd_config gefolgt von der neuen Portnummer wie folgt (wir werden Port verwenden 9999 in diesem Fall):

Port 9999 

Nach dem Versuch, den Service neu zu starten und seinen Status zu überprüfen, werden wir feststellen, dass er nicht begonnen hat:

# SystemCTL Neustart SSHD # Systemctl Status SSHD neu 
Überprüfen Sie den SSH -Service -Status

Wenn wir uns ansehen /var/log/pdit/prüfung.Protokoll, wir werden sehen sshd wurde verhindert, am Hafen zu beginnen 9999 von Selinux Denn das ist ein reservierter Port für die JBoss Management Dienst (Selinux -Protokollnachrichten enthalten das Wort "AVC" damit sie leicht aus anderen Nachrichten identifiziert werden können):

# CAT/VAR/LOG/AUDIT/AUDIT.Protokoll | grep avc | Schwanz -1 
Überprüfen Sie Linux Audit -Protokolle

Zu diesem Zeitpunkt würden die meisten Menschen wahrscheinlich deaktivieren Selinux Aber wir werden nicht. Wir werden sehen, dass es eine Möglichkeit für Selinux und SSHD gibt, einen anderen Hafen zu hören, um gemeinsam in Harmonie zu leben. Stellen Sie sicher, dass Sie die haben PolicyCoreutils-Python Paket installiert und ausführen:

# Yum Installation PolicyCoreutils-Python 

Um eine Liste der Ports anzuzeigen, in denen Selinux SSHD anhören kann. Im folgenden Bild können wir diesen Port auch sehen 9999 war für einen anderen Service reserviert und wir können ihn daher nicht nutzen, um einen weiteren Dienst vorerst ausführen zu können:

# Semanage Port -l | Grep Ssh 

Natürlich könnten wir einen anderen Port für SSH auswählen, aber wenn wir sicher sind, dass wir diesen speziellen Computer nicht für JBOSS-bezogene Dienste verwenden müssen, können wir die vorhandene Selinux-Regel ändern und diesen Port stattdessen SSH zuweisen:

# Semanage Port -m -t SSH_PORT_T -P TCP 9999 

Danach können wir den ersten verwenden Semanage Befehl, um zu überprüfen, ob der Port korrekt zugewiesen wurde, oder der -LC Optionen (kurz für die Liste der Liste):

# Semanage Port -lc # Semanage Port -l | Grep Ssh 
Zuweisen Sie SSH Port Port

Wir können jetzt SSH neu starten und mit Port mit dem Dienst eine Verbindung zum Dienst herstellen 9999. Beachten Sie, dass diese Änderung einen Neustart überleben wird.

Beispiel 2: Auswählen eines Documentroot Outside/var/www/HTML für einen virtuellen Host

Wenn Sie einen virtuellen Apache -Host mit einem anderen Verzeichnis einrichten müssen /var/www/html als Dokument Root (Zum Beispiel zum Beispiel, /webrv/seiten/gabriel/public_html):

DocumentRoot "/webrv/sites/gabriel/public_html" 

Apache lehnt es ab, den Inhalt zu bedienen, weil die Index.html wurde mit dem gekennzeichnet default_t selinux Geben Sie auf, auf welche Apache nicht zugreifen kann:

# WGet http: // localhost/Index.html # ls -lz/webrv/sites/gabriel/public_html/index.html 
Als Standard -Selinux -Typ gekennzeichnet

Wie beim vorherigen Beispiel können Sie den folgenden Befehl verwenden, um zu überprüfen, ob dies tatsächlich ein Selinux-bezogenes Problem ist:

# CAT/VAR/LOG/AUDIT/AUDIT.Protokoll | grep avc | Schwanz -1 
Überprüfen Sie die Protokolle auf Selinux -Probleme

Das Etikett von zu ändern /webrv/seiten/gabriel/public_html rekursiv zu httpd_sys_content_t, Tun:

# semanage fcontext -a -t httpd_sys_content_t "/webrv/sites/gabriel/public_html (/.*)?" 

Der obige Befehl gewährt Apache schreibgeschützte Zugriff auf dieses Verzeichnis und seinen Inhalt.

Schließlich tun Sie:

# restorecon -r -v/webrv/seiten/gabriel/public_html 

Jetzt sollten Sie in der Lage sein, auf das Verzeichnis zugreifen zu können:

# WGet http: // localhost/Index.html 
Zugriff auf das Verzeichnis von Apache

Weitere Informationen zu Selinux finden Sie im Fedora 22 Selinux- und Administratorhandbuch.

Seiten: 1 2