So verstehen Sie SELinux unter Linux

So verstehen Sie SELinux unter Linux

1. Einführung in SELinux

SELinux ist ein Sicherheitsmechanismus auf Kernel-Ebene. SELinux ist seit Linux 2.6 in den Kernel integriert. Da SELinux auf Kernel-Ebene ist, erfordern alle Änderungen an den Konfigurationsdateien einen Neustart des Betriebssystems, damit sie wirksam werden.

Der SELinux-Mechanismus ist jetzt in die gängigen Linux-Versionen integriert und CentOS/RHEL aktiviert den SELinux-Mechanismus standardmäßig.

Systemressourcen werden von Prozessen gelesen und geändert. Um die Sicherheit von Systemressourcen zu gewährleisten, verwendet traditionelles Linux die Konzepte von Benutzer- und Dateiberechtigungen, um den Zugriff auf Ressourcen einzuschränken. Dies geschieht, indem der initiierende Benutzer des Prozesses mit den Dateiberechtigungen verglichen wird, um die Sicherheit von Systemressourcen zu gewährleisten. Dies ist eine Methode der diskretionären Zugriffskontrolle (DAC). Da jedoch die Anforderungen an die Sicherheit von Systemressourcen steigen, ist unter Linux ein Mechanismus zur Verbesserung der Sicherheit (SELinux) entstanden. Dieser Mechanismus fügt zusätzlich zu den Berechtigungen weitere Beschränkungen für Prozesse und Dateien hinzu, um die Zugriffsbedingungen zu verbessern. Diese Methode ist die obligatorische Zugriffskontrolle (MAC). Der intuitivste Vergleich zwischen diesen beiden Methoden besteht darin, dass Root beim herkömmlichen DAC auf alle Dateien zugreifen kann, unter MAC jedoch selbst Root nur auf die Dateien zugreifen kann, die durch die Einstellungen zugelassen sind.

Das Funktionsprinzip ist wie folgt:

2. Grundkonzepte von SELinux

Wir wissen, dass der Sicherheitsmechanismus des Betriebssystems eigentlich zwei Dinge einschränkt: Prozesse und Systemressourcen (Dateien, Netzwerk-Sockets, Systemaufrufe usw.).

Wie wir bereits wissen, begrenzt das Linux-Betriebssystem unsere Systemressourcen durch die Konzepte von Benutzern und Gruppen. Wir wissen, dass jeder Prozess zur Ausführung einen Benutzer benötigt.

In SELinux sind für diese beiden Dinge zwei grundlegende Konzepte definiert: Domäne und Kontext.

2.1 Art der Arbeit

Unter SELinux gelten verschiedene Regeln. SELinux aktiviert oder deaktiviert diese Regeln je nach Arbeitstyp (on|off<Boolescher Wert 1|0>) und schränkt dann durch Aktivieren und Deaktivieren der Regeln gezielt das Lesen von Dateien für verschiedene Prozesse ein.

getsebool -a oder sestatus -b # Überprüfen Sie, ob jede Regel unter dem aktuellen Arbeitstyp aktiviert ist oder nicht

setsebool -P Regelname [0|1] # Ändert das Öffnen und Schließen der angegebenen Regel unter dem aktuellen Arbeitstyp. -P bedeutet, dass die Datei gleichzeitig geändert wird, um sie dauerhaft zu machen

Die Domäne wird verwendet, um den Prozess einzuschränken, und der Kontext wird verwendet, um die Systemressourcen einzuschränken.

2.2. Einführung in den Sicherheitskontext

Der Sicherheitskontext ist im Prozess und in der Datei vorhanden. Der Kontext wird zusammen mit dem Prozess im Speicher gespeichert, und der Kontext der Datei wird in ihrem entsprechenden Inode gespeichert. Wenn ein Prozess auf eine Datei zugreift, muss er daher zuerst den Inode lesen und dann bestimmen, ob er auf die Datei zugreifen kann.

ls -Z # Zeigt den Sicherheitskontext einer Datei an

ps -eZ # Zeigt den Sicherheitskontext aller Prozesse an

Wir können den Befehl ps -Z verwenden, um die Domäneninformationen des aktuellen Prozesses anzuzeigen, dh die SELinux-Informationen des Prozesses:

[root@xiaoluo ~]# ps -Z

LABEL PID TTY ZEIT CMD

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2503 Punkte/0 00:00:00 So

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2511 Punkte/0 00:00:00 bash

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3503 Punkte/0 00:00:00 ps

Über den Befehl ls -Z können wir die Dateikontextinformationen anzeigen, d. h. die SELinux-Informationen der Datei:

[root@xiaoluo ~]# ls -Z

-rw------. root Wurzel system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop

-rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

Wir werden später untersuchen, was diese Felder darstellen.

3. Strategie

In SELinux steuern wir, indem wir Richtlinien definieren, welche Domänen auf welche Kontexte zugreifen können.

In SELinux gibt es viele voreingestellte Richtlinienmodi. Normalerweise müssen wir keine Richtlinien selbst definieren, es sei denn, wir müssen bestimmte Dienste oder Programme schützen.

In CentOS/RHEL wird standardmäßig die Zielstrategie verwendet. Was ist also die Zielstrategie?

Die Zielrichtlinie definiert, dass nur der Zielprozess durch SELinux eingeschränkt wird und Nichtzielprozesse nicht durch SELinux eingeschränkt werden. Normalerweise sind unsere Netzwerkanwendungen Zielprozesse wie httpd, mysqld, dhcpd usw.

Unsere CentOS SELinux-Konfigurationsdatei ist in der Datei selinux im Verzeichnis /etc/sysconfig/ gespeichert. Wir können den Inhalt darin überprüfen:

[root@xiaoluo ~]# cat /etc/sysconfig/selinux

# Diese Datei steuert den Status von SELinux auf dem System.

# SELINUX= kann einen dieser drei Werte annehmen:

# Erzwingen – Die SELinux-Sicherheitsrichtlinie wird erzwungen.

# permissiv – SELinux druckt Warnungen, anstatt sie zu erzwingen.

# deaktiviert – Es ist keine SELinux-Richtlinie geladen.

SELINUX=erzwingen

# SELINUXTYPE= kann einen dieser beiden Werte annehmen:

# gezielt - Gezielt werden Prozesse geschützt,

# mls – Mehrstufiger Sicherheitsschutz.

SELINUXTYPE=targeted // Die von unserem CentOS verwendete Strategie ist die Zielstrategie

4. SELinux-Modus

Es gibt drei Arbeitsmodi von SELinux: Erzwingen, Permissiv und Deaktiviert.

① Durchsetzungsmodus: Jede Aktion, die gegen die Richtlinie verstößt, wird verboten und als Kernel-Information aufgezeichnet

②Permissiver Modus: Aktionen, die gegen die Richtlinie verstoßen, werden nicht verboten, es wird jedoch eine Warnmeldung angezeigt

③ Deaktivierter Modus: Das Deaktivieren von SELinux ist dasselbe wie ein System ohne SELinux. Wenn wir nicht viel über SELinux wissen, setzen wir den Modus normalerweise auf „Deaktiviert“, damit beim Zugriff auf einige Netzwerkanwendungen keine Probleme auftreten.

Wie oben erwähnt, ist die Hauptkonfigurationsdatei von SELinux /etc/sysconfig/selinux

[root@xiaoluo ~]# cat /etc/sysconfig/selinux

# Diese Datei steuert den Status von SELinux auf dem System.

# SELINUX= kann einen dieser drei Werte annehmen:

# Erzwingen – Die SELinux-Sicherheitsrichtlinie wird erzwungen.

# permissiv – SELinux druckt Warnungen, anstatt sie zu erzwingen.

# deaktiviert – Es ist keine SELinux-Richtlinie geladen.

SELINUX=enforcing // Wir sehen, dass der Standardarbeitsmodus von SELinux das Erzwingen ist

# SELINUXTYPE= kann einen dieser beiden Werte annehmen:

# gezielt - Gezielt werden Prozesse geschützt,

# mls – Mehrstufiger Sicherheitsschutz.

SELINUXTYPE=zielgerichtet

Die Verwendung des Befehls zum Ändern des Arbeitsmodus ist nur im Moment gültig. Wenn Sie beim Booten wirksam werden möchten und zwischen deaktiviertem und den beiden anderen Modi wechseln möchten, können Sie nur die Parameter der Konfigurationsdatei ändern und dann neu starten. Die Konfigurationsdatei ist /etc/selinux/config. Sie können sie auch über die Datei /etc/sysconfig/selinux ändern. Tatsächlich ist diese Datei eine Softlink-Datei von /etc/selinux/config.

Der Standardarbeitsmodus unseres SELinux ist „enforcing“, wir können ihn auf „permissive“ oder „disabled“ ändern.

Wenn wir den aktuellen Arbeitsstatus von SELinux anzeigen möchten, können wir ihn mit dem Befehl getenforce anzeigen:

[root@xiaoluo ~]# getenforce

Durchsetzung

Der aktuelle Arbeitsmodus ist „erzwingend“. Wenn wir den aktuellen SELinux-Arbeitszustand festlegen möchten, können wir ihn mit dem Befehl setenforce [0|1] ändern. setenforce 0 bedeutet, ihn auf „permissiv“ zu setzen, und 1 bedeutet „erzwingend“.

[Hinweis:] Das Einstellen von SELinux über setenforce ist nur eine vorübergehende Änderung und wird ungültig, wenn das System neu gestartet wird. Wenn Sie also eine dauerhafte Änderung vornehmen möchten, ändern Sie die SELinux-Hauptkonfigurationsdatei

[root@xiaoluo ~]# setenforce 0

[root@xiaoluo ~]# getenforce

Permissiv

[root@xiaoluo ~]# setenforce 1

[root@xiaoluo ~]# getenforce

Durchsetzung

Mit dem Befehl ls -Z können wir die Kontextinformationen unserer Datei, also SELinux-Informationen, anzeigen.

[root@xiaoluo ~]# ls -Z

-rw------. root Wurzel system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop

-rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

Wir haben festgestellt, dass es im Vergleich zum herkömmlichen ls-Befehl ein zusätzliches system_u:object_r:admin_home_t:s0 hat. Lassen Sie uns die Bedeutung dieser Anweisung analysieren.

system_u:object_r:admin_home_t:s0

Diese Anweisung ist in vier Abschnitte unterteilt: Der erste Abschnitt „system_u“ stellt den Benutzer dar, der zweite Abschnitt „object_r“ stellt die Rolle dar, der dritte Abschnitt enthält die wichtigsten Informationen in SELinux, „admin_home“ stellt den Typ dar und der letzte Abschnitt „s0“ bezieht sich auf MLS und MCS, um die Sie sich im Moment nicht kümmern müssen.

①system_u: bezieht sich auf SElinux-Benutzer, root stellt die Root-Kontoidentität dar, user_u stellt normale Benutzer ohne Berechtigungen dar und system_u stellt Systemprozesse dar. Der Identitätstyp kann über den Benutzer bestätigt werden und wird im Allgemeinen mit Rollen verwendet. Unterschiedliche Identitäten haben unterschiedliche Berechtigungen, wenn sie mit unterschiedlichen Rollen verwendet werden. Obwohl Sie den Befehl su verwenden können, um Benutzer zu wechseln, ändert sich der SElinux-Benutzer nicht. Die Benutzeridentität bleibt beim Wechsel zwischen Konten unverändert. Die Benutzeridentität hat in einer gezielten Richtlinienumgebung keine wesentlichen Auswirkungen.

②object_r: object_r hat im Allgemeinen die Rolle eines Dateiverzeichnisses, system_r hat im Allgemeinen die Rolle eines Prozesses und in einer gezielten Richtlinienumgebung hat der Benutzer im Allgemeinen die Rolle system_r. Die Benutzerrolle ähnelt dem Konzept der Benutzergruppe. Unterschiedliche Rollen haben unterschiedliche Identitätsberechtigungen. Ein Benutzer kann mehrere Rollen haben, aber immer nur eine Rolle gleichzeitig verwenden. In der Zielrichtlinienumgebung haben Rollen keine wirkliche Auswirkung. In der Zielrichtlinienumgebung ist die Rolle aller Prozessdateien die Rolle system_r.

③admin_home: Dateien und Prozesse haben einen Typ, und SElinux schränkt die Zugriffsberechtigungen basierend auf der jeweiligen Typkombination ein.

5. Beispiele

Schauen wir uns den Kontextwert und die SELinux-Zugriffskontrolle anhand eines Beispiels an

Wenn ich beispielsweise einen Webserver erstellt habe, wissen wir, dass der Standardspeicherort für Webseiten des WWW-Servers im Verzeichnis /var/www/html liegt. Wenn wir hier eine neue index.html-Testseite erstellen, unseren WWW-Server starten und aktualisieren, können wir ihren Inhalt sehen. Wenn wir zu diesem Zeitpunkt eine index.html-Seite in unserem /home-Verzeichnis erstellen, sie dann in das Verzeichnis /var/www/html verschieben und die Seite dann aktualisieren, wird sie dann immer noch normal angezeigt?

Zuerst starten wir unseren httpd-Dienst:

[root@xiaoluo ~]# Dienst httpd neu starten

httpd wird gestoppt: [ OK ]

httpd wird gestartet: httpd: apr_sockaddr_info_get() ist für xiaoluo fehlgeschlagen

httpd: Der vollqualifizierte Domänenname des Servers konnte nicht zuverlässig ermittelt werden. Für ServerName wurde 127.0.0.1 verwendet.

[ OK ]

Öffnen Sie dann den Browser und geben Sie unsere 127.0.0.1 ein, um darauf zuzugreifen. Die Schnittstelle, die Sie jetzt sehen, ist die Apache-Testschnittstelle:

Da sich derzeit keine Seite unter /var/www/html befindet:

[root@xiaoluo-Startseite]# ll /var/www/html/

gesamt 0

Als nächstes erstellen wir eine index.html-Seite im /home-Verzeichnis und verschieben sie dann in unser /var/www/html-Verzeichnis

[root@xiaoluo-Startseite]# vi index.html

Dies ist ein Test über SELinux

[root@xiaoluo-Startseite]# mv index.html /var/www/html/

[root@xiaoluo html]# cd /var/www/html/

[root@xiaoluo html]# ls

Hauptseite

Zu diesem Zeitpunkt sollten wir unter normalen Umständen zur Seite index.html springen, da sich im HTML-Verzeichnis eine Seite index.html befindet. Wenn wir die Browserseite zu diesem Zeitpunkt aktualisieren, sollten wir zur Seite index.html springen.

Tatsächlich haben wir jedoch festgestellt, dass sich die Seite immer noch auf dieser Testseite befindet. Warum ist das so? Dies hängt mit unserer SELinux-Sicherheitsrichtlinie zusammen. Wir können in das Verzeichnis /var/log/audit gehen, um die Datei audit.log anzuzeigen und die Fehlerinformationen zu finden.

[[email protected]]# tail /var/log/audit/audit.log

Typ=CRED_DISP, Nachricht=Audit(1369575601.957:289): Benutzer-PID=3637, UID=0, Auid=0, SES=44, Betreff=System_u:System_r:crond_t:s0-s0:c0.c1023, Nachricht='op=PAM:setcred, Acct="root", Exe="/usr/sbin/crond" Hostname=?, Adresse=?, Terminal=cron, Res=Erfolg'

Typ=USER_END msg=audit(1369575601.957:290): Benutzer pid=3637 uid=0 auid=0 ses=44 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_close acct="root" exe="/usr/sbin/crond" Hostname=? Adresse=? Terminal=cron res=erfolgreich'

Typ=AVC, msg=audit(1369575729.534:291): avc: verweigert { getattr } für pid=3619 comm="httpd" path="/var/www/html/index.html" dev=sda2 ino=538738 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file

Typ=SYSCALL msg=audit(1369575729.534:291): arch=c000003e syscall=4 Erfolg=nein exit=-13 a0=7f34198634f8 a1=7fffbc87bee0 a2=7fffbc87bee0 a3=7f341985ff60 items=0 ppid=3612 pid=3619 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(keine) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

Typ=AVC, msg=audit(1369575729.535:292): avc: verweigert { getattr } für pid=3619 comm="httpd" path="/var/www/html/index.html" dev=sda2 ino=538738 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file

Typ=SYSCALL msg=audit(1369575729.535:292): arch=c000003e syscall=6 Erfolg=nein exit=-13 a0=7f34198635c8 a1=7fffbc87bee0 a2=7fffbc87bee0 a3=1 items=0 ppid=3612 pid=3619 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(keine) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

Typ=AVC, msg=audit(1369575736.549:293): avc: verweigert { getattr } für pid=3618 comm="httpd" path="/var/www/html/index.html" dev=sda2 ino=538738 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file

Typ=SYSCALL msg=audit(1369575736.549:293): arch=c000003e syscall=4 Erfolg=nein exit=-13 a0=7f34198634f8 a1=7fffbc87bee0 a2=7fffbc87bee0 a3=7f341985ff60 items=0 ppid=3612 pid=3618 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(keine) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

Typ=AVC, msg=audit(1369575736.549:294): avc: verweigert { getattr } für pid=3618 comm="httpd" path="/var/www/html/index.html" dev=sda2 ino=538738 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file

Typ=SYSCALL msg=audit(1369575736.549:294): arch=c000003e syscall=6 Erfolg=nein exit=-13 a0=7f34198635c8 a1=7fffbc87bee0 a2=7fffbc87bee0 a3=1 items=0 ppid=3612 pid=3618 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(keine) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

Aus dieser Protokolldatei können wir ersehen, dass der Grund, warum die Seite index.html beim Aktualisieren nicht angezeigt wird, in unserer SELinux-Sicherheitsrichtlinie liegt.

Verwenden wir den Befehl ls -Z, um uns die Kontextinformationen der gerade verschobenen Datei index.html anzusehen.

[root@xiaoluo html]# ls -Z

-rw-r--r--. root root unbeschränkt_u:Objekt_r:Home_root_t:s0 index.html

Wir haben festgestellt, dass der Typ des dritten Felds home_root_t ist. Warum ist das so? Da wir diese Datei index.html gerade im Verzeichnis /home erstellt haben, erbt sie standardmäßig die SELinux-Typinformationen des übergeordneten Verzeichnisses. Wir können die Kontextinformationen des Verzeichnisses /home überprüfen:

[[email protected]]# ls -Z -d /home/

drwxr-xr-x. root Wurzel system_u:Objekt_r:home_root_t:s0 /home/

Wir können sehen, dass sein drittes Feld mit dem von index.html identisch ist, das wir gerade gesehen haben. Dies zeigt, dass der Kontextwert der Datei vom übergeordneten Verzeichnis beeinflusst wird. Normalerweise erben sie den Kontextwert des übergeordneten Verzeichnisses. Einige durch die Installation von Diensten generierte Dateikontextwerte sind jedoch Ausnahmen und erben nicht den Kontextwert des übergeordneten Verzeichnisses. Der Dienst erstellt ihre Kontextwerte automatisch. Wenn beispielsweise der http-Dienst nicht installiert ist, gibt es unter dem Verzeichnis /var/ kein www-Verzeichnis. Nach der Installation des httpd-Dienstes erstellt der Dienst automatisch das erforderliche Verzeichnis und definiert die Kontextwerte der mit dem Dienst verbundenen Verzeichnisse und Dateien. Sie erben nicht den Kontextwert des übergeordneten Verzeichnisses.

[root@xiaoluo html]# ls -Z -d /var

drwxr-xr-x. root Wurzel system_u:object_r:var_t:s0 /var

[root@xiaoluo html]# ls -Z -d /var/www/html/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Zu diesem Zeitpunkt stellen wir fest, dass der Kontexttyp unseres Verzeichnisses /var/www/html httpd_sys_content_t ist, während der Typ der gerade verschobenen index.html home_root_t ist. Da unser SELinux-Arbeitsmodus zu diesem Zeitpunkt erzwungen wird, sind Aktionen, die gegen die Richtlinie verstoßen, verboten. Daher werden die Informationen in unserer index.html nicht angezeigt, wenn wir die Seite aktualisieren. Wie sollten wir dieses Problem also zu diesem Zeitpunkt lösen?

Normalerweise gibt es zwei Lösungen:

① Stellen Sie den SELinux-Arbeitsmodus direkt auf „Deaktiviert“, damit kein Problem beim Abfangen von Richtlinien auftritt. In diesem Fall verfügt unser System jedoch nicht über den SELinux-Sicherheitsschutz.

②Stellen Sie unsere Dateikontextinformationen mit dem Befehl restorecon oder chcon wieder her

Mit dem Befehl restorecon kann der Standardkontext einer Datei wiederhergestellt werden:

restorecon -R -v /var/www/html/index.html //-R bedeutet Rekursion. Wenn es sich um ein Verzeichnis handelt, werden alle Unterverzeichnisse und Dateien unter dem Verzeichnis wiederhergestellt.

Mit dem Befehl chcon können die Kontextinformationen einer Datei geändert werden. Normalerweise verwenden wir eine Referenzdatei, um Änderungen vorzunehmen:

chcon --reference=/var/www/html/index.html /var/www/html/test.html

Hier stellen wir den Standardkontext unserer Datei mit dem Befehl restorecon wieder her:

[root@xiaoluo html]# restorecon -v index.html

restorecon reset /var/www/html/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

[root@xiaoluo html]# ls -Z

-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Wir können sehen, dass nach Verwendung des Befehls restorecon die Kontextinformationen von index.html die Kontextinformationen des übergeordneten Verzeichnisses html erben. Zu diesem Zeitpunkt können wir den Inhalt unserer index.html sehen, indem wir die Seite aktualisieren.

Durch dieses Beispiel verstehen wir die Beziehung zwischen den Kontextinformationen der Datei und SELinux und wissen, wie wir den Fehler finden, indem wir die Informationen der Protokolldatei /var/log/audit/audit.log anzeigen und die Kontextinformationen unserer Datei mit dem Befehl restorecon reparieren.

6. SELinux-Protokollverwaltung

Die Protokolldatensätze der von SELinux blockierten Prozesse werden in der Datei /var/log/audit/audit.log gespeichert. Der Inhalt dieser Datei lässt sich für den Benutzer jedoch nur sehr schlecht lesen. Sie können unter cat /var/log/audit/audit.log nachsehen. Daher stellt uns das System das Tool Sealert zur Verfügung, das uns beim Organisieren der Protokolldatei hilft. Das Tool Sealert benötigt etwas Zeit, um die Protokolldatei zu verarbeiten. Bitte haben Sie etwas Geduld.

Darüber hinaus erfordert die Protokollierungsfunktion von SELinux die Aktivierung des Dienstes auditd.service.

Lernen wir das Tool Sealert anhand eines Beispiels kennen (Apache SELinux-Konfiguration):

1. Stellen Sie sicher, dass der httpd-Dienst auf diesem Computer konfiguriert und eingeschaltet ist

2. Der Befehl /usr/sbin/httpd startet einen Prozess zum Lesen von Dateien mit der Endung .html im Verzeichnis /var/www/html/. Erstellen Sie nun eine Datei ~/index.html in Ihrem Home-Verzeichnis, schreiben Sie beliebigen Inhalt hinein und verschieben Sie die neu erstellte Datei nach /var/www/html/.

3. Wir verwenden den Browser, um die lokale IP in die Adressleiste einzugeben und zu prüfen, ob der Zugriff erfolgreich war oder nicht. Wenn die folgende Schnittstelle angezeigt wird, bedeutet dies, dass der Zugriff fehlgeschlagen ist.

4. Wir haben sichergestellt, dass es bei der Konfiguration des Dienstes keine Probleme gab. Zu diesem Zeitpunkt sollten wir davon ausgehen, dass SELinux unseren Zugriff möglicherweise blockiert. Wir übergeben den Befehl

sealert -a /var/log/audit/audit.log

Überprüfen Sie das SELinux-Protokoll und suchen Sie das Schlüsselwort httpd. Lesen Sie den Inhalt. Der Inhalt in der folgenden Abbildung ist das, was uns hauptsächlich interessiert. Der Rest ist der Inhalt von /var/log/audit/audit.log, den wir ignorieren können. Schließlich haben wir der Lösung Priorität eingeräumt, die die wenigsten Änderungen erforderte, nämlich die Änderung des SELinux-Labels.

5. Befehle ausführen

restorecon -v /var/www/html/index.html

Ändern Sie einfach die Datei in die Standardbezeichnung, auf die httpd zugreifen kann

6. Rufen Sie die Ergebnisse erneut über den Browser auf und zeigen Sie sie an. Diesmal ist es erfolgreich.

Oben finden Sie Einzelheiten zum Verständnis von SELinux unter Linux. Weitere Informationen zu Linux SELinux finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des SELINUX-Arbeitsprinzips
  • Erste Schritte mit SELinux
  • Detaillierte Erläuterung des Selinux-Grundkonfigurationstutorials unter Linux
  • Beschreiben Sie kurz SELinux TE in Android
  • Detaillierte Erklärung der Android Selinux-Berechtigungen und -Probleme
  • Detaillierte Erläuterung des Problems, dass SELinux den Start von MongoDB unter dem CentOS 7-System verhindert
  • SELinux führt dazu, dass PHP sich nicht normal mit MySQL verbindet. Lösung für „Verbindung zum MySQL-Server nicht möglich“
  • So deaktivieren Sie Selinux (Firewall)

<<:  Border-Radius IE8-kompatible Verarbeitungsmethode

>>:  Zusammenfassung zur Anwendung dekorativer Elemente im Webdesign

Artikel empfehlen

Implementierung des Element-UI-Layouts (Zeilen- und Spaltenkomponenten)

Inhaltsverzeichnis Grundlegende Anweisungen und V...

JavaScript zum Erzielen eines Dropdown-Menüeffekts

Verwenden Sie Javascript, um ein Dropdown-Menü zu...

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...

Detailliertes Tutorial zur Installation von mysql8.0 mit dem Linux-Befehl yum

1. Reinigen Sie vor der Installation gründlich rp...

Schritte zum Aktivieren des MySQL-Datenbanküberwachungs-Binlogs

Vorwort Wir müssen häufig etwas basierend auf bes...

MySQL-Cursorfunktionen und -Verwendung

Inhaltsverzeichnis Definition Die Rolle des Curso...

Border-Radius IE8-kompatible Verarbeitungsmethode

Laut canisue (http://caniuse.com/#search=border-r...

Vue.js verwendet Element-ui, um das Navigationsmenü zu implementieren

In diesem Artikel wird der spezifische Code zur I...

Der Unterschied zwischen VOLUME und docker -v in Dockerfile

Es gibt offensichtliche Unterschiede zwischen der...

React erhält den Eingabewert und übermittelt 2 Methodenbeispiele

Methode 1: Verwenden Sie das Zielereignisattribut...

Unbekannte Verwendung von Object.entries in JavaScript

Inhaltsverzeichnis Vorwort 1. Verwenden Sie for.....