Hinweis:

SELinux bei Oracle Linux verwenden

Einführung

SELinux ist eine Reihe von Kernelmods und User Space Tools, die eine weitere Schicht aus Systemsicherheit, präziser Zugriffskontrolle, systemweit definierten Admin-Richtlinien und verbesserter Schutz vor Angriffen auf Berechtigungserweiterung bieten.

Dieses Tutorial führt Sie durch die Verwendung dieser Tools für den Benutzerbereich, damit Ihr System im Enforcing-Modus ausgeführt werden kann.

Ziele

In dieser Übung lernen Sie Folgendes:

Voraussetzungen

Laborumgebung einrichten

Hinweis: Wenn Sie die kostenlose Übungsumgebung verwenden, finden Sie unter Oracle Linux Lab - Grundlagen Informationen zu Verbindungen und anderen Nutzungsanweisungen.

Benutzer erstellen

Ein zusätzlicher Benutzer kann die Zuweisung eines SELinux-Benutzers später in dieser Übung testen.

  1. Wenn noch nicht geschehen, öffnen Sie ein Terminal, und stellen Sie eine Verbindung über SSH zum ol8-server-System her.

    ssh oracle@<ip_address_of_ol8-server>
    
  2. Erstellen Sie einen Benutzer, und legen Sie ein Kennwort fest.

    sudo useradd -u 8000 ralph
    echo "ralph:oracle" | sudo chpasswd
    
  3. SSH-Verbindungen zulassen.

    Kopieren Sie den SSH-Schlüssel aus dem Benutzeraccount oracle.

    sudo mkdir /home/ralph/.ssh
    sudo cp /home/oracle/.ssh/authorized_keys /home/ralph/.ssh/authorized_keys
    sudo chown -R ralph:ralph /home/ralph/.ssh
    sudo chmod 700 /home/ralph/.ssh
    sudo chmod 600 /home/ralph/.ssh/authorized_keys
    
  4. Öffnen Sie ein neues Terminal, und prüfen Sie, ob die SSH-Verbindung funktioniert.

    ssh ralph@<ip_address_of_ol8-server>
    

    Danach exit Sie die Session, und schließen Sie das Terminalfenster.

SELinux-Modus und -Status

Oracle Linux installiert SELinux standardmäßig und wird im Enforcing-Modus ausgeführt.

  1. Bestätigen Sie den SELinux-Modus, indem Sie ihn prüfen.

    Er muss auf Enforcing gesetzt werden.

    getenforce
    
  2. Prüfen Sie die SELinux-Status und -Modi.

    sestatus
    

    Die Ausgabe des Befehls sestatus zeigt den SELinux-Status, die Policy und den Modus an.

    Beispielausgabe:

    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Memory protection checking:     actual (secure)
    Max kernel policy version:      31
    

SELinux-Sicherheitslabels

Jede Prozess- und Systemressource unter SELinux hat ein Sicherheitslabel, das als SELinux-Kontext bezeichnet wird. Der SELinux-Kontext, auch als SELinux-Label bezeichnet, konzentriert sich auf die Sicherheitseigenschaften und stellt eine konsistente Möglichkeit sicher, Objekte in der SELinux-Policy zu referenzieren.

  1. Zeigen Sie das SELinux-Sicherheitslabel für eine Datei an.

    ls -ldZ /etc/passwd
    

    Beispielausgabe:

    -rw-r--r--. 1 root root system_u:object_r:passwd_file_t:s0 1892 Apr 13 14:39 /etc/passwd
    

    Die Ausgabe ls mit der Option -Z zeigt die vier SELinux-Attributfelder an:

    • Benutzer: system_u
    • Rolle: object_r
    • Typ: passwd_file_t
    • Sicherheit: s0

    Das Wichtigste ist der SELinux-Typ, da die meisten SELinux targeted-Policy-Regeln SELinux-Typen verwenden, um die zulässige Interaktion zwischen einem Objekt (z.B. Prozess) und einem anderen Objekt (z.B. Datei) zu definieren.

  2. Hier finden Sie eine Liste der verfügbaren SELinux-Typen.

    seinfo --type | head
    
    • Der Befehl head begrenzt die Ausgabe auf nur die ersten zehn Ausgabezeilen.

    Die vollständige Ausgabe zeigt, dass SELinux-Typen für viele verschiedene Befehle und Services vorhanden sind, wie ssh und sshd.

  3. Hier finden Sie eine Liste bestimmter SELinux-Typen.

    Mit grep wird die Ausgabe auf die Typen begrenzt, die das Wort ssh enthalten.

    seinfo -t | grep ssh
    
  4. Listen Sie die Sicherheitslables für bestimmte Prozesse und Konfigurationsdateien auf.

    Wenn Sie ps verwenden, werden die Sicherheitslabels für die Prozesse abgerufen.

    ps -efZ | grep sshd
    

    Beispielausgabe:

    system_u:system_r:sshd_t:s0-s0:c0.c1023 root 2535      1  0 14:37 ?        00:00:00 /usr/sbin/sshd -D
    system_u:system_r:sshd_t:s0-s0:c0.c1023 root 18514  2535  0 15:21 ?        00:00:00 sshd: oracle [priv]
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 18528 18514  0 15:21 ? 00:00:00 sshd: oracle@pts/0
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 23611 18529  0 15:41 pts/0 00:00:00 grep --color=auto sshd
    

    Wenn Sie ls verwenden, werden die Sicherheitslabels für die Konfigurationsdateien abgerufen.

    ls -lZ /etc/ssh/
    

    Beispielausgabe:

    total 600
    -rw-r--r--. 1 root root     system_u:object_r:etc_t:s0      577388 Oct  9  2021 moduli
    -rw-r--r--. 1 root root     system_u:object_r:etc_t:s0        1770 Oct  9  2021 ssh_config
    drwxr-xr-x. 2 root root     system_u:object_r:etc_t:s0          28 Feb 18 08:51 ssh_config.d
    -rw-------. 1 root root     system_u:object_r:etc_t:s0        4268 Apr 13 14:37 sshd_config
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0    537 Apr 13 14:37 ssh_host_ecdsa_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    197 Apr 13 14:37 ssh_host_ecdsa_key.pub
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0    432 Apr 13 14:37 ssh_host_ed25519_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    117 Apr 13 14:37 ssh_host_ed25519_key.pub
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0   2635 Apr 13 14:37 ssh_host_rsa_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    589 Apr 13 14:37 ssh_host_rsa_key.pub
    

    Der Daemon-Prozess sshd verwendet den Typ sshd_t. Daher wird in der Policy targeted eine Regel für das SELinux-Attribut sshd_t erwartet, mit der Objekte mit sshd_t auf Objekte mit dem folgenden Sicherheitsattribut zugreifen können:

    • etc_t
    • sshd_key_t
    • ...

    Wenn der Befehl ssh geprüft werden soll, können wir eine ähnliche Zuordnung zwischen ssh_home_t und ssh_exec_t ermitteln.

    ls -lZ /usr/bin/ssh
    

    Beispielausgabe:

    -rwxr-xr-x. 1 root root system_u:object_r:ssh_exec_t:s0 775720 Oct  9  2021 /usr/bin/ssh
    
    ls -lZ ~/.ssh
    

    Beispielausgabe:

    total 4
    -rw-------. 1 oracle oracle unconfined_u:object_r:ssh_home_t:s0 404 Apr 13 14:39 authorized_keys
    
  5. Sicherheitskontext eines Benutzers abrufen.

    Der andere Kontexttyp ist unconfined_t. Objekte mit diesem SELinux-Typ, wie Benutzer, haben uneingeschränkten Zugriff. Durch diese Zugriffsebene schränkt SELinux nicht die möglichen Aktionen der Benutzer ein und hemmt sie nur durch DAC-Berechtigungen. DAC (Individual Access Control) ist die Sicherheitsrichtlinie, die von traditionellen Benutzern, Gruppen und anderen Berechtigungen verarbeitet wird.

    Beispiel: Zeigen Sie die Sicherheitsattribute für den Benutzer oracle an.

    whoami
    
    id -Z
    

    Beispielausgabe:

    [oracle@ol-selinux ~]$ whoami
    oracle
    [oracle@ol-selinux ~]$ id -Z
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

SELinux- und Netzwerkdienste

SELinux verfolgt die Konfigurationen für die am häufigsten verwendeten netzwerkbasierten Softwarepackages innerhalb der internen Datenbank. Mit diesem Tracking kann SELinux das System vor extern zugänglichen Services schützen, die anfällig für Angriffe sind.

Aus diesem Grund kann SELinux verhindern, dass ein Service funktioniert, wenn Sie die Software so konfigurieren, dass ein nicht standardmäßiges Verzeichnis oder Port verwendet wird.

Um zu zeigen, was SELinux über die Standardports eines Systems weiß, müssen Sie das SELinux-Utility semanage verwenden. Oracle Linux installiert das Utility nicht standardmäßig. Installieren Sie es also.

  1. Stellen Sie fest, welches Paket das Dienstprogramm bereitstellt.

    sudo dnf whatprovides semanage
    

    Die Ergebnisse zeigen, dass /usr/sbin/semanage Teil des policycoreutils-python-utils-Packages ist.

  2. Installieren Sie das Package und alle Abhängigkeiten.

    sudo dnf install -y policycoreutils-python-utils
    
  3. Prüfen Sie, welche Ports SELinux für sshd zulassen.

    sudo semanage port -l | grep ssh
    

    Beispielausgabe:

    ssh_port_t                     tcp      22
    
  4. Fügen Sie der SELinux-Policy einen neuen Port hinzu.

    Wenn Sie den Port ändern möchten, den der SSH-Daemon auf 2222 empfängt, oder die Standardkonfiguration dort ändern, wo er gespeichert wird. Dann müssen Sie SELinux darüber informieren, dass diese Änderungen gewünscht werden. Sie können semanage erneut verwenden, um einen benutzerdefinierten Port zuzulassen, indem Sie eine neue Policy-Regel hinzufügen.

    sudo sudo semanage port -a -t ssh_port_t -p tcp 2222
    
    • Mit der Option -a wird eine neue Policy-Regel vom Typ -t hinzugefügt.
  5. Prüfen Sie, welche Ports SELinux jetzt zulässt.

    sudo semanage port -l | grep ssh
    

    Beispielausgabe:

    ssh_port_t                     tcp      2222, 22
    
  6. Ändern Sie einen Port in der SELinux-Policy.

    Angenommen, Sie möchten den SSH-Daemon Port 443 zuordnen. Wiederholen Sie denselben Befehl, aber mit einer Meldung, dass der Port bereits verwendet wird, wird ein Fehler ausgegeben.

    sudo semanage port -a -t ssh_port_t -p tcp 443
    

    Beispielausgabe:

    ValueError: Port tcp/443 already defined
    

    Der Fehler ist aufgetreten, weil wir versuchen, Port 443 vom Typ http_port_t in den Typ ssh_port_t zu wechseln. Dazu verwenden Sie die Option -m, mit der der der Portobjektdatensatz geändert wird.

    sudo semanage port -m -t ssh_port_t -p tcp 443
    

SELinux-Benutzer

Jeder Linux-Benutzer wird mit einer SELinux-Policy einem SELinux-Benutzer zugeordnet. Dadurch können Linux-Benutzer basierend auf ihrer SELinux-Benutzerzuordnung Einschränkungen erben. Die Standardzuordnung in Oracle Linux ist die __default__-Anmeldung, die dem SELinux-Benutzer unconfined_u zugeordnet ist.

  1. Hier finden Sie eine Liste aller aktuellen Linux-Benutzerzuordnungen.

    sudo semanage login -l
    
    • Beachten Sie, dass der Benutzer oracle nicht aufgeführt und somit dem Benutzer unconfined_u zugeordnet wird.
  2. Hier erhalten Sie eine Liste der SELinux-Benutzer.

    seinfo -u
    
  3. Schränken Sie die Aktionen eines Benutzers ein.

    Auch wenn ein Linux-Standardbenutzer uneingeschränkt ausgeführt wird, können durch die Aktionen des Benutzers Beschränkungen basierend auf einer Anwendung domain verursacht werden. domain ist eine Reihe von Objekten mit demselben SELinux-Typ.

    Was geschieht, wenn Benutzer das X Window-System, sudo und das Netzwerk blockieren möchten?

    SELinux hat dafür einen Benutzer.

    Um dies zu überprüfen, benötigen wir einen anderen Linux-Benutzer. Wir verwenden den Benutzer "ralph".

    1. Erstellen Sie die neue Zuordnung zu guest_u.

      sudo semanage login -a -s guest_u ralph
      
    2. Prüfen Sie die Zuordnung.

      sudo semanage login -l
      
    3. Testen Sie, ob ralph nicht auf das Netzwerk zugreifen kann.

      Die von guest_u geerbten Einschränkungen treten erst nach der Anmeldung auf und nicht durch sudo oder su.

      Öffnen Sie ein neues Terminal, und stellen Sie als ralph-Benutzer eine SSH-Verbindung zum System ol8-server her.

      ssh ralph@<ip_address_of_ol8-server>
      
    4. Prüfen Sie den Kontext des Benutzers.

      id; id -Z
      

      Beispielausgabe:

      uid=8000(ralph) gid=8000(ralph) groups=8000(ralph) context=guest_u:guest_r:guest_t:s0
      guest_u:guest_r:guest_t:s0
      
    5. Zeigen Sie den Sicherheitskontext der aktuellen Prozesse des Benutzers an:

      ps axZ
      

      Die Ausgabe zeigt den Benutzer ralph, der guest_u zugeordnet ist, und kann sich anmelden. ralph sollte jedoch nicht auf das Netzwerk zugreifen können.

    6. Testen Sie die Netzwerkkonnektivität mit ping.

      ping localhost
      

      Beispielausgabe:

      ping: socket: Permission denied
      
    7. Testen Sie das Netzwerk außerdem mit curl.

      curl ifconfig.me
      

      Beispielausgabe:

      curl: (6) Could not resolve host: ifconfig.me
      

      Die Nachricht gibt an, dass curl den DNS-Namen ifconfig.me nicht in eine IP-Adresse auflösen kann. DNS, ein Linux-Netzwerkservice, erfordert das Öffnen eines Sockets, damit der SELinux-Benutzer guest_u es blockiert.

    8. Schließen Sie das aktuelle Terminalfenster.

      Das Testen wurde mit dem Benutzer ralph abgeschlossen. Schließen Sie dieses Terminalfenster.

      exit
      

SELinux-Booleans

SELinux-Booleans ermöglichen bestimmte Policy-Änderungen zur Laufzeit, ohne zu wissen, wie SELinux-Policys geschrieben werden. Oracle Linux stellt viele integrierte Booleans bereit, oder Administratoren, die mit SELinux-Policys vertraut sind, können ihre eigenen erstellen. Administratoren wird empfohlen, Policys als Booleans zu schreiben, wenn die implementierte Policy optional ist.

  1. Holen Sie sich eine Liste von Booleans zusammen mit ihrer Bedeutung.

    Wechseln Sie zurück zum Terminal, bei dem Sie als oracle angemeldet sind, und führen Sie den folgenden Befehl aus.

    sudo semanage boolean -l
    

    Beispielausgabe:

    SELinux boolean                State  Default Description
    
    abrt_anon_write                (off  ,  off)  Allow abrt to anon write
    abrt_handle_event              (off  ,  off)  Allow abrt to handle event
    abrt_upload_watch_anon_write   (on   ,   on)  Allow abrt to upload watch anon write
    antivirus_can_scan_system      (off  ,  off)  Allow antivirus to can scan system
    antivirus_use_jit              (off  ,  off)  Allow antivirus to use jit
    auditadm_exec_content          (on   ,   on)  Allow auditadm to exec content
    authlogin_nsswitch_use_ldap    (off  ,  off)  Allow authlogin to nsswitch use ldap
    authlogin_radius               (off  ,  off)  Allow authlogin to radius
    ...
    
    • Die Ausgabe erklärt, was jeder boolesche Wert tut und ob er aktiviert (on) oder deaktiviert ist (off).
  2. Holen Sie sich eine Liste der Booleans und deren Status.

    sudo getsebool -a
    

    Beispielausgabe:

    abrt_anon_write --> off
    abrt_handle_event --> off
    abrt_upload_watch_anon_write --> on
    antivirus_can_scan_system --> off
    antivirus_use_jit --> off
    auditadm_exec_content --> on
    authlogin_nsswitch_use_ldap --> off
    authlogin_radius --> off
    authlogin_yubikey --> off
    ...
    
  3. Rufen Sie den Status eines einzelnen booleschen Wertes ab.

    Wenn der boolesche Name bekannt ist, übergeben Sie den Namen als Argument, um nur diesen Booleans-Status zu erhalten.

    sudo getsebool virt_use_nfs
    
  4. Fragen Sie die SELinux-Policy für einen booleschen Wert ab.

    Haben Sie sich jemals gefragt, was ein boolescher Wert innerhalb der SELinux-Policy auslöst? SELinux stellt ein Utility zur Abfrage dieser Regeln bereit.

    sesearch -b virt_use_nfs -A
    

    Beispielausgabe:

    allow fsdaemon_t autofs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:file { getattr ioctl lock open read }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:lnk_file { getattr read }; [ virt_use_nfs ]:True
    ...
    
  5. Abfrage, wenn ein boolescher Wert Zugriff zulässt

    Wie wäre es, wenn ein bestimmter Zugriff basierend auf einem bedingten booleschen Wert zulässig ist? Beantworten Sie die Frage: Erlaubt der Benutzer-Ping den Übergang von einer Benutzerdomain (user_t) zur Ping-Domain (ping_t)?

    sesearch -s user_t -t ping_t -c process -p transition -AT
    

    Beispielausgabe:

    allow user_t ping_t:process transition; [ selinuxuser_ping ]:True
    
    • Der Übergang ist zulässig, wenn der boolesche Wert user_ping SELinux aktiviert ist.
  6. Aktivieren Sie einen booleschen Wert.

    Angenommen, wir möchten KVM erlauben, Bilder auf einer Samba-Freigabe zu speichern? Dafür gibt es auch einen booleschen Wert.

    1. Suchen Sie den booleschen Wert.

      sudo semanage boolean -l | grep virt | grep samba
      

      Beispielausgabe:

      virt_use_samba                 (off  ,  off)  Allow virt to use samba
      
    2. Ändern Sie den booleschen Wert in "Aktiviert".

      sudo setsebool virt_use_samba on
      

      oder

      sudo semanage boolean -m --on virt_use_samba
      
    3. Prüfen Sie den aktuellen Status.

      getsebool virt_use_samba
      
    4. Stellen Sie sicher, dass die Änderung einen Neustart erhält.

      sudo setsebool -P virt_use_samba on
      
  7. Lokale SELinux-Policy-Anpassungen anzeigen.

    Da die Standardeinstellungen geändert wurden, können diese lokalen Anpassungen angezeigt werden.

    sudo semanage boolean -l -C
    

    Beispielausgabe:

    SELinux boolean                State  Default Description
    
    virt_use_samba                 (on   ,   on)  Allow virt to use samba
    
    • Die Ausgabe zeigt, dass der Standardwert jetzt on lautet. Der Standardwert wurde geändert, nachdem der Switch dauerhaft gemacht und die ausstehenden Werte in die Policy-Datei auf dem Datenträger geschrieben wurden.

SELinux-Dateikontext

Alle Dateien und Verzeichnisse werden beim Ausführen von SELinux mit einem SELinux-Kontext beschriftet. Es werden einige Befehle zur Verwaltung der Dateisystembeschriftung untersucht.

Ein bekanntes Beispiel ist das Erstellen eines neuen Verzeichnisses für die Nginx-Dokument-Root.

  1. Erstellen Sie das neue Verzeichnis zusammen mit drei Dateien.

    sudo mkdir -p /web
    sudo touch /web/file{1,2,3}
    
  2. Prüfen Sie das neue Verzeichnis und die Dateibeschriftung.

    ls -lZ /web
    

    Beispielausgabe:

    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    
    • Der Kontexttyp des neuen Verzeichnisses und die Dateien sind default_t.

    Hinweis: Neu erstellte Dateien und Verzeichnisse erben den SELinux-Typ ihrer übergeordneten Verzeichnisse.

  3. Nehmen Sie temporäre Labeländerungen vor.

    Im Rahmen von Fehlerbehebung oder Tests können wir den Kontext vorübergehend ändern.

    sudo chcon -R -t httpd_sys_content_t /web/
    
    ls -lZ /web
    
  4. Setzen Sie Labels auf die Standardeinstellungen zurück.

    Wechseln Sie zum Standardkontexttyp zurück.

    sudo restorecon -R -v /web/
    

    Beispielausgabe:

    [oracle@ol-selinux ~]$ sudo restorecon -R -v /web/
    Relabeled /web from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file1 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file2 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file3 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    [oracle@ol-selinux ~]$ ls -lZ /web
    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    
  5. Ändern Sie die Beschriftung dauerhaft.

    Um die Änderungen dauerhaft zu speichern und einen Neustart zu überstehen, verwenden Sie den Befehl semanage fcontext. Die -a fügt der Datei /etc/selinux/targeted/contexts/files/file_contexts.local einen Datensatz hinzu, und -t definiert den Typ.

    sudo semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
    

    Hinweis: Wenn Sie den SELinux-Kontext in semanage fcontext ändern, wird empfohlen, den vollständigen Pfad zu der Datei oder dem Verzeichnis zu verwenden, um ein falsches Labeling von Dateien nach einer Neubezeichnung eines Dateisystems oder nach der Ausführung von restorecon zu vermeiden.

  6. Prüfen Sie den Kontext.

    ls -ldZ /web; ls -lZ /web
    

    Beispielausgabe:

    [oracle@ol-selinux ~]$ ls -ldZ /web; ls -lZ /web
    drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 45 Apr 14 19:00 /web
    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    

    Beachten Sie, dass sich der Kontext nicht geändert hat, was wir erwartet haben.

  7. Zeigen Sie den Kontext der neu erstellten Dateien und Verzeichnisse an.

    sudo semanage fcontext -C -l
    

    Beispielausgabe:

    [oracle@ol-selinux ~]$ sudo semanage fcontext -C -l
    SELinux fcontext                                   type               Context
    
    /web(/.*)?                                         all files          system_u:object_r:httpd_sys_content_t:s0 
    
  8. Wenden Sie die Änderungen auf den Kontext an.

    sudo restorecon -R -v /web
    

    Beispielausgabe:

    [oracle@ol-selinux ~]$ sudo restorecon -R -v /web
    Relabeled /web from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file1 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file2 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file3 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    
  9. Entfernen Sie den neuen SELinux-Kontext.

    sudo semanage fcontext -d "/web(/.*)?"
    
    • Dieses Beispiel übergibt den regulären Ausdruck, der beim Erstellen des Kontexts verwendet wird, und platziert ihn am Anfang des Kontextdatensatzes in einer Datei. Da es sich um einen regulären Ausdruck handelt, setzen Sie ihn in Anführungszeichen.
  10. Wenden Sie die Änderungen an, und prüfen Sie den Kontext, der an default_t zurückgegeben wird.

    sudo restorecon -R -v /web; ls -ldZ /web; ls -lZ /web
    

Sehen Sie sich die man-Seiten für die angezeigten Utilitys an. Dann nutzen Sie, was Sie gelernt haben, um SELinux im Enforcing-Modus zu halten.

Weitere Informationen

Weitere zugehörige Ressourcen anzeigen:

Weitere Lernressourcen

Sehen Sie sich andere Übungen auf der Website docs.oracle.com/learn an, oder greifen Sie auf Inhalte zu, die Sie über den Oracle Learning-Kanal YouTube benötigen. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie unter Oracle Help Center.