Einführung
Security Enhanced Linux oder SELinux ist ein fortschrittlicher Zugriffskontrollmechanismus, der in die meisten modernen Linux-Distributionen integriert ist. Es wurde ursprünglich von der US-amerikanischen National Security Agency entwickelt, um Computersysteme vor böswilligem Eindringen und Manipulation zu schützen. Im Laufe der Zeit wurde SELinux gemeinfrei veröffentlicht und verschiedene Distributionen haben es seitdem in ihren Code integriert
Viele Systemadministratoren halten SELinux für ein etwas unbekanntes Gebiet. Das Thema kann entmutigend und manchmal ziemlich verwirrend erscheinen. Ein richtig konfiguriertes SELinux-System kann jedoch Sicherheitsrisiken erheblich reduzieren, und wenn Sie ein wenig darüber wissen, können Sie zugriffsbezogene Fehlermeldungen beheben. In diesem Tutorial lernen wir die Konzepte hinter SELinux kennen – seine Pakete, Befehle und Konfigurationsdateien
Installieren von SELinux-Paketen
In SELinux werden eine Reihe von Paketen verwendet. Einige werden standardmäßig installiert. Hier ist eine Liste für Red Hat-basierte Distributionen:
- policycoreutils (stellt Dienstprogramme zum Verwalten von SELinux bereit)
- policycoreutils-python (stellt Dienstprogramme zum Verwalten von SELinux bereit)
- selinux-richtlinie (stellt SELinux-Referenzrichtlinie bereit)
- selinux-policy-targeted (stellt eine SELinux-Zielrichtlinie bereit)
- libselinux-utils (bietet einige Tools zum Verwalten von SELinux)
- setroubleshoot-server (stellt Tools zum Entschlüsseln von Audit-Log-Meldungen bereit)
- settools (bietet Tools für die Überwachung von Prüfprotokollen, die Abfrage von Richtlinien und die Verwaltung von Dateikontexten)
- setools-console (bietet Tools für die Überwachung von Prüfprotokollen, die Abfrage von Richtlinien und die Verwaltung von Dateikontexten)
- mcstrans (Werkzeuge, um verschiedene Ebenen in ein leicht verständliches Format zu übersetzen)
Einige davon sind bereits installiert. Um zu überprüfen, welche SELinux-Pakete auf Ihrem CentOS 7-System installiert sind, können Sie einige Befehle wie den folgenden ausführen (mit unterschiedlichen Suchbegriffen nach grep
). ) als Root-Benutzer:
rpm -qa | grep selinux
Die Ausgabe sollte in etwa so aussehen:
libselinux-utils-2.2.2-6.el7.x86_64
libselinux-2.2.2-6.el7.x86_64
selinux-policy-targeted-3.12.1-153.el7.noarch
selinux-policy-3.12.1-153.el7.noarch
libselinux-python-2.2.2-6.el7.x86_64
Sie können fortfahren und alle Pakete mit dem folgenden Befehl installieren (yum aktualisiert nur alle, die Sie bereits haben), oder nur die, die auf Ihrem System fehlen:
yum install policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans
Jetzt sollten wir ein System haben, das mit allen SELinux-Paketen geladen ist.
SELinux-Modi
Es ist an der Zeit, mit SELinux herumzuspielen, also fangen wir mit den SELinux-Modi an. SELinux kann sich jederzeit in einem von drei möglichen Modi befinden:
- Durchsetzen
- Zulässig
- Deaktiviert
Im Erzwingungsmodus wird SELinux erzwingen seine Richtlinie auf dem Linux-System und stellen Sie sicher, dass alle unbefugten Zugriffsversuche von Benutzern und Prozessen verweigert werden. Die Zugriffsverweigerungen werden auch in entsprechende Protokolldateien geschrieben. Wir werden später über SELinux-Richtlinien und Prüfprotokolle sprechen.
Der zulässige Modus ist wie ein halb aktivierter Zustand. SELinux wendet seine Richtlinie nicht im zulässigen Modus an, sodass kein Zugriff verweigert wird. Jede Richtlinienverletzung wird jedoch weiterhin in den Überwachungsprotokollen protokolliert. Es ist eine großartige Möglichkeit, SELinux zu testen, bevor Sie es erzwingen.
Der deaktivierte Modus ist selbsterklärend – das System wird nicht mit erhöhter Sicherheit ausgeführt.
Überprüfen von SELinux-Modi und -Status
Wir können die getenforce
ausführen Befehl, um den aktuellen SELinux-Modus zu überprüfen.
getenforce
SELinux sollte derzeit deaktiviert sein, daher sieht die Ausgabe so aus:
Disabled
Wir können auch den sestatus
ausführen Befehl:
sestatus
Wenn SELinux deaktiviert ist, zeigt die Ausgabe:
SELinux status: disabled
SELinux-Konfigurationsdatei
Die Hauptkonfigurationsdatei für SELinux ist /etc/selinux/config. Wir können den folgenden Befehl ausführen, um seinen Inhalt anzuzeigen:
cat /etc/selinux/config
Die Ausgabe sieht in etwa so aus:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Es gibt zwei Direktiven in dieser Datei. Die SELINUX-Direktive bestimmt den SELinux-Modus und kann drei mögliche Werte haben, wie wir zuvor besprochen haben.
Aktivieren und Deaktivieren von SELinux
Das Aktivieren von SELinux ist ziemlich einfach; Im Gegensatz zur Deaktivierung sollte dies jedoch in einem zweistufigen Prozess erfolgen. Wir gehen davon aus, dass SELinux derzeit deaktiviert ist und dass Sie alle SELinux-Pakete aus dem vorherigen Abschnitt installiert haben.
Als ersten Schritt müssen wir die Datei /etc/selinux/config
bearbeiten Datei, um die SELINUX-Direktive in den zulässigen Modus zu ändern.
vi /etc/sysconfig/selinux
...
SELINUX=permissive
...
Setzen Sie den Status auf zulässig first ist notwendig, da jede Datei im System mit ihrem Kontext gekennzeichnet werden muss, bevor SELinux erzwungen werden kann. Wenn nicht alle Dateien ordnungsgemäß gekennzeichnet sind, können Prozesse, die in eingeschränkten Domänen ausgeführt werden, fehlschlagen, weil sie nicht auf Dateien mit den richtigen Kontexten zugreifen können. Dies kann dazu führen, dass der Startvorgang fehlschlägt oder mit Fehlern startet. Wir werden Kontexte einführen und Domains später im Tutorial.
Führen Sie nun einen Systemneustart durch:
reboot
Beim Neustartvorgang werden alle Dateien auf dem Server angezeigt, die mit einem SELinux-Kontext gekennzeichnet sind.
In der zweiten Phase müssen wir die Konfigurationsdatei bearbeiten, um die SELINUX-Anweisung von zulässig zu ändern zu erzwingen in der /etc/sysconfig/selinux
Datei:
...
SELINUX=enforcing
...
Als nächstes starten Sie den Server erneut neu.
reboot
Sobald der Server wieder online ist, können wir den sestatus
ausführen Befehl, um den SELinux-Status zu überprüfen. Es sollte jetzt mehr Details über den Server zeigen:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: error (Success)
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28